前言¶
在 DeepSeek Harness(DSH)的插件化工作流里,聊天记录本身并不适合作为任务交接的权威证据。真正需要被检查、比较和保留的,通常是一个结构化的 task.origin.json 状态文件。
dsh-2origin 是一个面向 DSH 的插件,它把 2Origin 状态文件作为证据对象来处理:先查看状态投影,再对完整候选 JSON 做只读语义 diff,最后把已观察到的版本冻结为不可变快照。
DeepSeek Harness 强调插件化扩展;这里的 dsh-2origin 属于第三方插件扩展,不等同于官方应用商店。
这是什么¶
dsh-2origin 的定位是:Evidence-first 2Origin state projection, diff and immutable freeze for DeepSeek Harness。
它由 dongsheng123132 维护,MIT 许可。v0.2 提供正式 Codex 插件表面,同时带有独立的 proof-only MCP surface。
它解决的主要问题有三个:
- 状态检查:输出紧凑投影、计数、已验证事实数,以及记录哈希与计算哈希的一致性。
- 语义比较:对完整候选 JSON 文档做只读 diff,不把版本、时间、actor 或存储哈希误认为内容变化。
- 不可变冻结:基于刚观察到的哈希创建内容寻址快照,要求独占创建并读回验证。
它不是通用记忆存储、插件信任扫描器或活动日志。
核心功能¶
下面按插件暴露的主要能力分开说明。
状态投影¶
dsh_2origin_status 用于查看当前 2Origin 状态的摘要信息。
它会提供:
- compact projection
- counts
- verified-fact count
- recorded-vs-computed hash integrity
这一步的目的,是在后续 diff 或 freeze 之前,先确认当前状态是否可读、哈希是否一致。
语义 diff¶
dsh_2origin_diff 用于对完整候选 JSON 文档做只读语义 diff。
它的比较目标是语义内容,而不是机械地比较所有字段。内容哈希兼容 2origin/0.2:对稳定 canonical JSON 计算 SHA-256,并排除以下字段:
versionupdated_atcontent_hashactor
这样可以避免来源元数据造成“伪变化”。
不可变 freeze¶
dsh_2origin_freeze 是唯一写动作。
它会做这些事:
- 要求传入刚从
status观察到的哈希 - 拒绝过期状态
- 创建内容寻址快照
- 使用 exclusive creation
- 读取回写内容进行验证
- 对重复相同请求保持幂等
freeze 的目标是独立快照目录,不会更新 live state。
CLI¶
插件提供三个 CLI 命令:
statusdifffreeze
这三个命令分别对应状态查看、候选比较和版本冻结。
Codex 与 MCP 表面¶
仓库包含正式 Codex 插件表面,其中有 .codex-plugin/plugin.json。
它同时提供一个独立的 stdio MCP server,暴露两个工具:
state_proof:验证一个有界 inline state document,只返回完整性、哈希、计数和违规项。state_diff_proof:比较两个有界 inline documents,返回变更字段以及内容寻址的 value/item hashes。
这个 MCP server 不读写文件系统,拒绝 secret-shaped keys,每个文档上限为 1 MiB,并且不会 echo state prose。
MCP 表面也故意不暴露 freeze。文件系统写入仍然保留在显式配置的 DSH/CLI 表面。
安装与启用¶
运行环境要求 Node.js >=22。
安装命令如下:
dsh plugin --profile <name> add github:dongsheng123132/dsh-2origin
安装后需要显式配置工作区。配置项包括:
workspaceRoot: <absolute project path>
stateFile: <relative state path>
freezeDir: <relative snapshot directory>
所有配置的文件路径都相对于 workspaceRoot。路径穿越和 symlink escape 会被拒绝。
@deepseek-ai/dsh-tools 被声明为可选 peer dependency。
典型用法¶
下面示例使用相对 workspaceRoot 的状态路径。
先查看状态:
dsh-2origin status --root C:/project --state demo/task/task.origin.json
这一步用于确认当前状态的可读性、计数、已验证事实数和哈希一致性。
再比较候选文档:
dsh-2origin diff --root C:/project --state demo/task/task.origin.json --candidate next.json
这一步对 next.json 做只读语义 diff。
最后冻结当前观察版本:
dsh-2origin freeze --root C:/project --state demo/task/task.origin.json --expect <sha256>
这里的 <sha256> 应来自前面 status 命令中观察到的哈希。freeze 会写入独立快照目录,而不是修改 live state。
适用场景与注意¶
适合谁:
- 需要在 DSH agent 或 CLI 中检查
2origin/0.2任务状态的团队 - 需要比较完整候选 JSON 并冻结已观察版本的场景
- 希望把状态文件作为证据对象处理,而不是把聊天上下文当作交接凭据的场景
不适合谁:
- 需要通用记忆存储的场景
- 需要插件信任扫描或活动日志的场景
- 希望插件直接维护业务状态生命周期、或替代原系统 live-state writer 的场景
需要注意:
- 插件以当前
dsh进程权限运行。安装前应检查源码、许可证与依赖。 - 许可证为 MIT。
- 插件不会更新 live state。
freeze是唯一写动作,且只写入独立快照目录。- MCP 表面只用于 proof,不暴露
freeze。 - 本文不引用未确认的星标数或分类信息。
结尾¶
dsh-2origin 的价值,是把 task.origin.json 从“上下文文本”还原为可校验的证据对象:先 status,再 diff,最后用 freeze 保留精确版本。
GitHub:https://github.com/dongsheng123132/dsh-2origin