DSH Unified Context:把多 Harness 会话与上下文迁进一份 dsh

前言

在 DeepSeek Harness(dsh)生态里,插件可以扩展会话、命令和 UI。实际开发中很多人会同时在 pi、opencode、OpenAI Codex、Claude Code 或 WorkBuddy 里积累聊天记录、AGENTS.md / CLAUDE.md / CODEBUDDY.md、skills 和自动化任务。换到 dsh 时,如果只拷贝 JSONL 或 SQLite 里的对话,模型往往仍缺另一半上下文:指令文件、技能架、项目记忆和定时任务并不会自动跟过来。

下面介绍维护者 Chang-Tong 发布的 DSH Unified Context(npm 包名 dsh-unified-context,社区目录归类为工作流)。它把上述五类来源迁入 dsh,并用符号链接让各 Harness 读同一份真文件,而不是每个工具各存一份副本。

这是什么

DSH Unified Context 面向「要从其它 Agent Harness 迁到 dsh,且希望会话可继续、上下文不分裂」的开发者。插件在 dsh 内提供斜杠命令、composer 里的 同步 按钮,以及可选的 CLI(import.mjs);运行时主要依赖 Node 内置模块(含 node:sqlite、node:zlib 的 zstd)和 dsh 平台模块,无额外运行时依赖。

当前 npm 发布版本为 0.5.0,许可证 MIT,要求 Node ≥ 22.19(与 dsh 一致)。

核心能力

五种来源,一次迁入

插件支持从以下来源导入可恢复的 dsh 会话(格式在 README 中写明:pi / codex / claude-code / WorkBuddy 为 JSONL,opencode 为 SQLite):

Harness 迁移内容(据官方文档)
pi 会话;agent / 模式提示词 → dsh skills;指令与技能上下文
opencode 会话;agent → dsh skills;指令与技能上下文
OpenAI Codex 会话;AGENTS.md 上下文;自动化
Claude Code 会话;CLAUDE.md 上下文;项目与 Agent 记忆
WorkBuddy(腾讯) 含真实工具结果的会话;CODEBUDDY.md 与 skills;项目记忆;自动化

会话 id 设计为稳定前缀(如 pi-<uuid>、oc-<id> 等),重复导入会跳过已存在项。

上下文用链接共享,而不是复制

/link-context 让各 Harness 通过符号链接读同一份 AGENTS.md / CLAUDE.md / CODEBUDDY.md 和同一个 skill hub。内容相同的副本会折叠为链接;内容不同的副本会报告冲突,默认不覆盖。项目记忆收敛到 <项目>/.agents/memory/,Agent 记忆收敛到 ~/.agents/agent-memory/<agent>/;默认策略为 authority,可选 merge 生成引用索引。

自动化与 Agent 形态转换

Codex 与 WorkBuddy 的自动化会翻译成 dsh 定时任务(RRULE 翻译),默认以暂停状态导入,便于先在来源侧停用再启用。dsh 内用 /import-automations,CLI 的 node import.mjs automations 仅打印计划,真正创建任务需要运行中的 dsh。

pi / opencode 的 agent 与模式提示词会落到 $DSH_AGENTS_HOME/skills,并在 frontmatter 记录 metadata.source / metadata.kind。

交互入口

  • composer 工具行的 同步 按钮:等价于执行 /import-all,内联展示结果。
  • 新的顶层会话:若检测到未导入历史,会询问是否迁移(可按项目记住决定,状态写在 $DSH_HOME/unified-context-state.json)。

安装与启用

插件已发布到 npm,并声明 dsh.bundle,通过官方 dsh plugin add 安装后会自动进入 profile 的 bundle 列表。

推荐一键安装:

dsh plugin --profile web add dsh-unified-context

安装后需 重启 dsh web 并刷新页面(旧页面 RPC 会断开)。验证方式:composer 出现 同步 按钮,且 /import-all 有响应。

也可指定版本或从 GitHub 安装(文档中的示例):

dsh plugin --profile web add dsh-unified-context@0.5.0
dsh plugin --profile web add github:Chang-Tong/dsh-unified-context

卸载示例:

dsh plugin --profile web remove dsh-unified-context

典型用法

Web 内快速迁移

  1. 重启 dsh web 后刷新页面。
  2. 点击 同步,或输入 /import-all。
  3. 在会话列表中按工作区查看导入会话;在 Automation tasks 页面查看迁移任务(默认暂停,确认来源侧已停后再恢复)。

完整迁移幂等:已导入会话、已有链接和相同自动化任务不会重复创建。

按需执行的斜杠命令

命令 作用
/import-pi … /import-workbuddy 按来源导入会话
/import-agents pi / opencode agent → skills
/link-context 共享指令文件、skill hub、长期记忆(可加 --dry-run、--push、--memory=authority\|merge\|off 等)
/import-automations 迁移 Codex / WorkBuddy 自动化(默认暂停)
/import-all 会话 + agents + 上下文链接 + 暂停的自动化
/attach-workspaces 为已导入会话补挂与原始 cwd 匹配的工作区

常用选项包括 --limit N、--project 子串、--since、--no-tools、--activate 等,详见仓库中文 README。

不启动 dsh 时的 CLI 预览

在项目包目录可用 import.mjs 做 dry-run 或局部写入(自动化创建仍依赖运行中的 dsh):

node import.mjs all                    # dry-run 预览
node import.mjs all --apply            # 会话 + skills + 共享上下文链接
node import.mjs sessions codex --apply --limit 20
node import.mjs context --apply

配置要点

可在插件插入行覆盖默认值。文档列出的部分键如下:

键 默认值 含义
offerOnStart true 新顶层会话是否询问迁移
piRoot ~/.pi/agent/sessions pi 会话根目录
opencodeDb ~/.local/share/opencode/opencode.db opencode SQLite
codexRoot ~/.codex/sessions codex 会话
claudeRoot ~/.claude/projects claude-code 项目
workbuddyRoot ~/.workbuddy WorkBuddy 数据根
timeZone Asia/Shanghai 自动化 RRULE 翻译时区
skillsRoot $DSH_AGENTS_HOME/skills skills 输出目录
toolTruncate 1000 工具参数截断长度

关闭启动时迁移询问示例:config: { offerOnStart: false }。

适用场景与注意

适合:已在 pi、opencode、Codex、Claude Code 或 WorkBuddy 中有大量历史,计划以 dsh 为主界面,并希望 同一份项目上下文 仍被多个 Harness 读取的场景。

需要注意:

  • 插件随 当前 dsh 进程权限 读取本机会话目录、数据库和项目文件。安装前应阅读 GitHub 源码 与 MIT 许可证,确认路径与行为符合你的安全策略。
  • pi、opencode、codex、claude-code 的来源通常只保存工具调用,不含真实 tool result;WorkBuddy 在来源记录了结果时会原样导入。FAQ 中说明了占位 result 的处理方式。
  • WorkBuddy 的 SOUL.md / MEMORY.md 等全局身份文件 不会 并入共享指令;MCP、provider 配置等也保持各 Harness 原生,不在此插件统一范围内。
  • 社区目录 SkillHub 上的插件页 与 DeepSeek / 幻方无官方从属关系,属于社区收录;DSH 本身贯彻「一切皆插件」的扩展方式。

结尾

DSH Unified Context 解决的是 Harness 切换时的「半套上下文」问题:会话、指令、skills、记忆和自动化尽量一次迁入 dsh,并用符号链接维持单一真源。若你正在评估迁移,可从 dsh plugin --profile web add dsh-unified-context 装起,用 /import-all 或 同步 按钮跑一遍幂等导入,再按需细化 /link-context 与 /import-automations。

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

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

小夜