
DSH Chat 是一组运行在 DeepSeek Harness Web 中的协作插件。它没有另建一套拥有特权的聊天内核,而是把身份、组织、私聊、工作项、通知和审计拆成可以独立装载、独立卸载的 Cordis 插件。
从 2026 年 8 月 29 日到 31 日,我在主仓库完成并合并了 37 个 PR,另在独立 Relay 仓库完成 1 个开户与设备会话 PR。数量不是项目价值本身,但这些小步 PR 留下了一条可以逐段复查的实现路径:先锁定契约和状态机,再接持久化与 Host API,最后进入真实 Desktop、Relay 和多进程验收。
先让文档、契约和代码说同一种语言
PR #4 建立 Yarn 4 workspace 与固定来源的 DSH 运行时;随后 PR #6 和 PR #7 把错误码目录与 11 组领域状态集合变成测试可校验的契约。
这样做是为了避免实现过程中最常见的一类漂移:文档写着一种状态,服务端接受另一种值,客户端又按第三种分支渲染。协议变更必须先改唯一设计依据,再通过契约测试把差异暴露出来。
把消息之外的协作行为放进同一条证据链
- PR #13 完成联系人准入与私聊投递。
- PR #14 加入工作项、依赖成环检测和通知收件箱。
- PR #15 将审计事件作为仅追加记录写入。
- PR #25 与 PR #26 补齐消息编辑、撤回、发送状态、outbox 消费与 SSE 通知。
关键约束是“业务写入与审计同事务”。如果消息已经修改、审计却因第二次写入失败而缺失,系统就无法回答谁在什么时候改变了什么。通知也不直接依赖一次在线推送:outbox 与游标补拉保留恢复路径,SSE 只负责降低实时延迟。
从能运行到真实接通
PR #28 用一个 Relay 和两个拥有独立本地库的 Host 完成三进程集成验收;PR #30 到 PR #32 则把自建客户端包、真实会话数据和可伸缩聊天抽屉装进 DSH Desktop。页面配图就是这轮真实装载留下的界面证据。
最后,PR #35 接通 Plugin 与 Relay,PR #37 和 Relay 的 PR #1 完成邀请码、设备凭据和 token 认证闭环。设备侧同时保留 Ed25519 请求签名、nonce 去重与时间偏移窗口,避免把一个可复制的会话 token 当成全部身份依据。
当前边界
仓库仍处于未发布阶段。P0-a 的骨架与验收清单已经覆盖,但 P0-b 以及群聊、附件、企业治理和端到端加密仍是后续阶段;会话列表也还有聚合查询缺口。项目页记录的是已经合并并验收的部分,不把路线图上的入口写成可用功能。
这次实现让我更确定:协作产品的难点不在聊天气泡,而在身份、状态、恢复、审计和跨进程边界能否共同成立。界面只是最后一层证据。