Repository navigation
dsh-go 手机端原生记忆库面板:做成包内模块(愿意长期维护) #563
SternChiri
started this conversation in
Ideas
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
已阅读 CONTRIBUTING 的 Scope 部分。本项目属于平台适配类,按其中说明不在优先范围,故在此说明情况。
项目
在 dsh-mneme 包内增加一块 dsh-go(DSH 的 Android 客户端:Flutter 原生壳,手机本机跑引擎,也能遥控电脑)原生面板(
src/dsh-go/),随@modusensus/dsh-mneme一起发布,不另起第三方包。背景
dsh-go 把插件面板画进原生界面,插件通过宿主提供的
dshGo服务注册视图,它不挂载 Web 客户端。因此「记忆库设置」面板在手机上没有任何出口,只能通过 11 个memory_*工具读写:看不到库里有多少条、改不了功能开关,也裁决不了冲突。记忆库的口径
记忆库按宿主独立存放:面板读写的是它所在那台宿主的
memory.db,手机与电脑两端各一份,互不连通,也没有在线同步。目前跨设备只能靠分享包mneme.share/v1(dsh-mneme share/receive)手动迁移,是一次性交接,不是实时同步。所以这个面板解决的是「在手机上就地读写本机那份库」,不承担把两端合并成一份的职责。
与 mneme 的关系
不是 fork,也不是独立插件。
package.json增加dshGo清单,src/index.js在已有的webServer分支里ctx.inject(["dshGo"], (dshCtx) => mountDshGoPanel(dshCtx))挂载。没有 dsh-go 桥的宿主(桌面、headless)里该服务不存在,回调不会被调度,src/dsh-go/**不加载,对现有平台没有影响。取数与写回不新开口径:
src/dsh-go/host.js用ctx.get("webServer").match(pathname)取出src/api.js已注册的 handler,再用一对伪造的 req/res 在进程内调用。没有新端口,没有第二套鉴权(apiToken/open/token-write策略照旧),不直连 SQLite,也不复制 service 逻辑——对应仓库「两张皮只许剩鉴权与路径不同」那条纪律。呈现层
三个原生页签:记忆 / 实体 / 设置。
「状态」并入设置页,用两格开关切「设置 | 状态」。dsh-go 的页签条每格有 80dp 下限,四个页签在手机上会折行,所以不硬塞第四个。
功能开关直接铺在设置页正文(不再收进子页面),改完即时写回
/features。文案取lib/client.js里memory.settings.*Hint、conflictQueue.applyHint的原有中文,自造的解释性小字都删掉了。dsh-go 的面板数据是推送式:
data()每个面板实例只跑一次,refresh只重画视图。所以每个动作结束由面板自己把新 payload 推给所有打开的 feed。另外不读GET /external-api,它会顺带生成并落库 Bearer token;面板只做开关、端口、监听三项。验证
test/dsh-go-panel.test.js:视图预算、三个页签的结构、功能开关内联、文案回归、dshGo清单合法性。node scripts/check-sync.js一致(src/与lib/94 个文件)。docs/DSH-GO.md,写清职责边界、对外接口与已知坑。维护
Scope 部分提到此类项目需要贡献者承诺长期维护,这一点可以承担:dsh-go 侧的
dshGo服务或视图 schema 变更引发的兼容问题,由我跟进修复;面板与后端 API 口径不一致也由我处理。对应的 feature issue 与 PR 已按 CONTRIBUTING 的流程提出。若这个形态不合适,或对命名与文件切分有要求,请直接指出。
All reactions