前言¶
DeepSeek Harness(DSH)把智能体能力拆成可插拔模块,开发时往往在桌面或 CLI 里跑 Host。若要在手机上收会话、回消息、处理审批或 todo,需要一条稳定、可核对的「手机通道」,而不是只靠历史记录或临时推送。社区插件 dsh-cindy-host 由 chanyuenpang 维护,定位是 Host 侧适配器:把当前 Cindy 客户端接到 DSH,覆盖会话、消息、审批、todo、goal 等能力,并配套实测定案与项目记忆相关能力(以仓库说明为准)。
这是什么¶
dsh-cindy-host 是 DSH 生态中的客户端类插件(Cordis / Cindy device-link)。它只在 Host 进程内工作,不要求改 Cindy 或 DSH 核心;握手兼容标识与插件版本、显式 v1 能力声明是分开的。不支持的可选能力会被拒绝,文档也未承诺覆盖全部原生 Cindy 特性或外部工具的严格 exactly-once。
维护与源码:GitHub — chanyuenpang/dsh-cindy-host;社区目录页:skillhub.cn/plugins/chanyuenpang/dsh-cindy-host(独立站点,与 DeepSeek / 幻方无官方从属关系)。
核心功能¶
下面只列 README 与 package 描述中可核对的能力。
手机通道与 Host 适配¶
插件在 Host 侧桥接 Cindy 与 DSH:会话、消息、审批、todo、goal 走手机通道;package 描述中还提到配套的设置卡片(dsh.client.platform 为 web)。
durable 输入投递(input-delivery v1)¶
当前实现是 input-delivery v1,不是仅依赖历史的旧式回退:
- 完整文本与附件字节在 enqueue 确认之前 写入私有、FULL 同步的 SQLite 账本。
- 按
clientId提供 pending / accepted / removed / unknown 回执,以及按时间序的 around / around-client-id 历史;accepted 表示真实用户事件已通过公开持久化存储刷盘并校验,而不是空 inbox 或内存事件。 - 投递与变更串行化,持久化取消边界与 clear 边界,编辑后的载荷可恢复;保留可编辑的 Host 名称与桌面端纯文本队列修复(自 0.1.26 起)。
- 丢失 ACK、同进程重载时不会盲目重放不确定的 admission;经核实的死进程恢复可重建缺失输入;冷 inbox 唤醒需核实所有权并保持 FIFO。混合或不确定的恢复保持 pending 并带诊断,不伪造成功或重复输入。
账本位于当前 DSH profile 的状态目录。pending 载荷与附件会保留到用户历史持久化验证或 sealed 取消;终端身份 fence 不会静默过期。不要用删状态来修不确定的发送;回滚前请备份该状态——更旧的 Host 版本无法重放此账本。
队列与 Android / 桌面修复(0.1.28 起)¶
真实的 DSH pending inbox 条目在 enqueue 回复、推送与轮询中会一直留在 pendingQueue(或 steeringQueueClientIds),直到被 claim 或 commit。把输入交给 DSH 不等于已送达用户轮次;该行为修复了 0.1.27 在 Android 与桌面上「空 follow-up 投影覆盖 busy 队列确认」的问题。
媒体与文件(0.1.31)¶
0.1.31 在 0.2.1 载体上合并 main 后,媒体与 file-peer 拉取接受 Cindy 原生 URL 形态(例如项目目录导出只带 path 与可选 v、不带目录根)。目录 containment 仅在 controller 显式命名 roots 时 enforced;never-serve 拒绝列表、常规文件检查、25 MiB 上限及独立 authenticated-controller 策略未改。
版本与运行环境¶
文档写明 0.1.31 针对已验证的 DSH 0.2.1-rc.5 服务契约(亦接受 0.2.1-rc.3、0.2.1-rc.4),peer 版本与上述载体钉死,避免安装器把更新的 prerelease SDK 混进运行中的 Host。Node.js >= 22.16;已验证的 Desktop 运行时内含 Node.js 24.21。许可证:MIT。
安装与启用¶
优先通过 Desktop 的 DSH 插件管理器安装。若使用 CLI 管理的 profile,官方命令为:
dsh plugin --profile <profile> add dsh-cindy-host@0.1.31
安装后需要 Reload Host 插件;完整重启 DSH 是另一回事。保留现有 Cindy 登录、设备身份与设置;不要用同一身份跑两个 Host 进程。
回滚注意:可重装 0.1.26(可编辑 Host 名、桌面安全纯文本队列),但应先暂停输入并保留 0.1.27 起的 ledger;降级会禁用 durable-input 恢复,直到回到 0.1.27 及以上。
典型用法与仓库脚本¶
README 面向集成与验收,未给出「一键对话」式业务教程;开发与自测可参考 package.json 中的脚本(需在克隆仓库后于本地使用,本文不引导 git clone)。常见入口包括:
npm run host/node src/host.js:Host 进程相关开发入口(见scripts.host)。npm run login/npm run logout:Cindy 登录登出辅助。npm run verify:测试、通道审计与 acceptance 串联。npm run acceptance:sandbox:对本地 sandbox(默认http://127.0.0.1:3081)做 acceptance。
生产路径仍是:Desktop 插件管理器或上述 dsh plugin add 命令,再在 DSH 中 reload Host 插件,手机端继续使用已配置的 Cindy 客户端连接同一 Host 身份。
适用场景与注意¶
适合:已在用或计划用 Cindy 手机 / Web 客户端,希望在 DSH Host 上统一处理会话、消息、审批、todo、goal,并需要 v1 级 durable 输入账本与队列语义一致性的开发者。
务必知晓:
- 插件以当前 dsh 进程权限运行;安装前请自行查看 源码 与 MIT 许可证,评估凭据与会话状态(包内说明
.sandbox/等不进 npm 包,但运行态仍可能写入 profile 状态目录)。 - README 强调 latest 上游 mobile outbox 在 Host RPC 与 SQLite 上做过练习(含同 session FIFO、ACK 丢失、取消、强制 history-cache 门),这不等于已声明所有真机型号均已验收。
- 不支持的可选特性会被拒绝;不要假设与原生 Cindy 每一能力一一对应。
结尾¶
dsh-cindy-host 把 Cindy 客户端接到 DSH 的工作放在 Host 侧完成:手机通道、input-delivery v1 账本、队列确认与媒体拉取等行为在文档中有明确版本边界。若你要在 DSH 0.2.1-rc 系载体上接 Cindy,可按官方版本号安装并在改插件后 reload Host。
- 目录页:https://www.skillhub.cn/plugins/chanyuenpang/dsh-cindy-host
- 源码与变更说明:https://github.com/chanyuenpang/dsh-cindy-host