dsh-2origin:为 DeepSeek Harness 提供 2Origin 状态投影、语义 diff 与不可变 freeze

前言

在 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,并排除以下字段:

  • version
  • updated_at
  • content_hash
  • actor

这样可以避免来源元数据造成“伪变化”。

不可变 freeze

dsh_2origin_freeze 是唯一写动作。

它会做这些事:

  • 要求传入刚从 status 观察到的哈希
  • 拒绝过期状态
  • 创建内容寻址快照
  • 使用 exclusive creation
  • 读取回写内容进行验证
  • 对重复相同请求保持幂等

freeze 的目标是独立快照目录,不会更新 live state。

CLI

插件提供三个 CLI 命令:

  • status
  • diff
  • freeze

这三个命令分别对应状态查看、候选比较和版本冻结。

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

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜