把 opencode 会话导入为可续聊日志,自动处理压缩点
32.4/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/16 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
自动兼容检查未通过:仓库根目录及浅层子目录均无 dsh 插件清单,无法用 dsh 插件安装命令安装。以下命令仍可尝试,但可能失败。
无法用 dsh 插件命令安装(仓库内无 dsh 插件清单)
git clone https://github.com/wang-xudong/opencode-dsh-importer.git按该仓库 README 的原生方式安装;若作者另行发布了 DSH 插件包,请以其文档为准
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:需留意
是什么
dsh 原生插件 · chat
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 81 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
⚠︎ 实装验证未通过(unknown · 2026/10/29) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装仓库根目录及浅层子目录均无 dsh 插件清单,无法用 dsh 插件安装命令安装
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包opencode-dsh-importer(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✗入口文件缺少入口声明
源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/21 14:32:46
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令
查看扫描证据(共 1 处,展示前 1 条)
- 执行外部命令固定命令validate.mjs:16
bin = execFileSync('which', ['dsh'], { encoding: 'utf8' }).trim().split('\n')[0]
扫描于 2026/11/2(1 天前) · 范围 全包扫描 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 导入会话为可续聊日志
- 压缩点感知尾部窗口
- 自动摘要前缀
把 opencode 会话完整导入 DeepSeek Harness:压缩点感知的尾部窗口、自动摘要前缀、五层校验,一条命令完成迁移。
README
由 DeepSeek 最新模型翻译生成opencode-to-dsh
将 opencode 的会话导出导入到 DeepSeek Harness(DSH)中,成为原生可浏览、可续聊的会话。
它能做什么
- 读取 opencode export 导出的 JSON,生成 DSH 会话日志(session.jsonl.zstd),DSH 可以直接列出、打开、续聊。
- 把用户/助手消息、推理文本、工具调用(调用 + 结果配对)映射为 DSH 的事件溯源日志格式。
- 处理在 opencode 中压缩过(compact)的长会话:自动识别 compaction 标记,只导入最后一次压缩之后的"尾部窗口",并用助手在压缩前自己写的交接总结拼成摘要前缀——让导入后的上下文保持在模型上下文窗口内。
- 可选的五层校验(--validate),直接复用 DSH 自带的读取与校验函数,安装前先把关。
文件说明
| 文件 | 用途 |
| opencode-to-dsh.py | 导入器本体(独立可用,只需 Python 3 + zstd 命令) |
| validate.mjs | 可选质检脚本(五层校验,需要 Node.js + 已安装 DSH) |
环境要求
- Python 3 与 zstd 命令行工具(转换必需)。
展开完整文档(README 剩余 1 节)
opencode-to-dsh
将 opencode 的会话导出导入到 DeepSeek Harness(DSH)中,成为原生可浏览、可续聊的会话。
它能做什么
- 读取 opencode export 导出的 JSON,生成 DSH 会话日志(session.jsonl.zstd),DSH 可以直接列出、打开、续聊。
- 把用户/助手消息、推理文本、工具调用(调用 + 结果配对)映射为 DSH 的事件溯源日志格式。
- 处理在 opencode 中压缩过(compact)的长会话:自动识别 compaction 标记,只导入最后一次压缩之后的"尾部窗口",并用助手在压缩前自己写的交接总结拼成摘要前缀——让导入后的上下文保持在模型上下文窗口内。
- 可选的五层校验(--validate),直接复用 DSH 自带的读取与校验函数,安装前先把关。
文件说明
| 文件 | 用途 |
| opencode-to-dsh.py | 导入器本体(独立可用,只需 Python 3 + zstd 命令) |
| validate.mjs | 可选质检脚本(五层校验,需要 Node.js + 已安装 DSH) |
环境要求
- Python 3 与 zstd 命令行工具(转换必需)。
- --validate 额外需要 Node.js,且 dsh 在 PATH 中(自动探测;也可用环境变量 DSH_PKG_ROOT 指向 @deepseek-ai/dsh 包目录)。
用自带示例快速上手
full 模式(小会话)
python3 opencode-to-dsh.py examples/sample-full.json ./out --validate
tail 模式(含压缩点的会话,自动识别)
python3 opencode-to-dsh.py examples/sample-compacted.json ./out --validate
两个示例都能通过五层校验;生成的日志在 ./out/sessions/ 下。
用法
仅转换(不校验)
python3 opencode-to-dsh.py 会话导出.json ./out
转换 + 五层校验(安装前推荐)
python3 opencode-to-dsh.py 会话导出.json ./out --validate
参数
| 参数 | 说明 |
| --mode full\|tail\|compact | 导入模式。默认:导出含 compaction 标记则 tail,否则 full。 |
| --sid session-xxx | 固定会话 ID(默认随机)。便于原位替换。 |
| --cwd /path | 覆盖工作目录(默认取导出的 directory,再兜底当前目录)。 |
| --title 标题 | 覆盖会话标题(tail 自动加 "(续聊版)",compact 自动加 "(压缩版)")。 |
| --tz 时区 | 用户消息 source 中的时区(默认自动探测本机)。 |
| --model 模型ID | 覆盖模型标识(默认取导出的 model.id)。 |
| --provider 提供方 | 覆盖 provider 标识(默认 deepseek-official)。 |
| --validate | 转换后运行 validate.mjs(需与本脚本同目录)。 |
| --export-out 路径 | 额外写出过滤后的中间导出 JSON。 |
三种模式
- full:导入全部历史。适合小会话或只读归档。
- tail:用于在 opencode 中压缩过的长会话。找到最后一次压缩的 tail_start_id,只导入其后的消息,并在开头插入一条合成的用户消息,内容为压缩前的助手总结(每个压缩点向前最多 10 条消息内找最近的助手总结文本,每条上限 800 字符)。这复刻了模型在 opencode 中实际看到的上下文,续聊不会撑爆上下文窗口。
- compact:全保真版本——导入全部历史(UI 里可浏览完整记录),并为每个 opencode 压缩点在压缩发生的原位置插入一组与 DSH 原生一致的 compaction 事务:compaction/start → compaction/summary → 携带 surfaceOp: {op: 'replace'} 的 checkpoint user/message → compaction/end,与 dsh-compaction-basic 的事件编排完全一致。每个 checkpoint 阴影掉当时折叠面上的前置节点:模型上下文 = [最后一个摘要 checkpoint + 尾部],UI 转录保留全部消息、每个"上下文已压缩"标记出现在正确位置。摘要优先复用 opencode 自身的相邻摘要消息(## Objective …),老导出无此消息时退化为拼合的压缩前总结;阴影价与 dsh-token-meter 同一定价器,上下文投影恒非负。真实数据(24.7 MB 导出、2,861 条消息、4 次压缩)实测:4 个 checkpoint,派生上下文 10.7 MB → 1.5 MB(13.8%)。
导出格式兼容
按压缩标记自动识别两种 opencode 导出格式:
- opencode 1.17:compaction part 带 tail_start_id(保留窗口首条消息);边界从它开始,忠实于 opencode 的实际保留行为。
- opencode 1.18:无 tail_start_id;标记后的相邻 assistant 消息即真实摘要,尾部从摘要之后开始。
纯压缩标记消息(无文本内容)在所有模式下跳过。
工具名映射
导入时把 opencode 工具名映射为 DSH 命名:websearch → web_search、webfetch → web_fetch、question → ask_user_question、todowrite → todo_write、task → subagent。两侧同名的(read、write、edit、bash、grep、glob 等)原样保留,未知名保持原样。
安装到 DSH
输出目录结构与 DSH 自身存储一致:
/sessions///session.jsonl.zstd
由会话的 cwd 派生(如 /home/user/project → --home-user-project--)。
示例:安装到当前工作区
mkdir -p ~/.dsh/sessions/--home-user-project--/
cp /sessions/--home-user-project--//session.jsonl.zstd \
~/.dsh/sessions/--home-user-project--//
然后重启 dsh web(或刷新浏览器),打开会话即可。会话按 cwd 归入对应工作区;如不在当前工作区,在侧边栏切换即可。
五层校验(validate.mjs)
| 层 | 校验内容 |
| ① loadStored | zstd 解码、header 形状、seq 连续性(DSH 官方 JsonlSessionPersistence) |
| ② adoptSessionEvent | 消息形状:id/role/source/content(DSH 官方校验函数,逐事件调用) |
| ③ foldSurface | surfaceOp 标记与 surface 折叠(DSH 官方函数) |
| ④ 收件箱回放 | agent/inbox/spliced 边界与重复消息 id(镜像 Inbox.apply) |
| ⑤ 派生历史配对 | 每个 tool/result 前必须有携带匹配 tool-call 的助手消息(API 的硬性要求) |
①–③ 直接调用你本机已安装 DSH 包里的真实函数,通过即代表真实加载路径可以接受该日志。
常见问题
| 现象 | 原因 |
| lacks an identified message | 消息事件缺 id/role(本导入器已生成)。 |
| requires a surfaceOp marker | 消息事件缺 surfaceOp(本导入器已生成)。 |
| invalid persisted inbox splice | 收件箱事件删除了从未插入的消息(本导入器成对生成 append + claim)。 |
| Messages with role 'tool' must... | 工具结果没有前置的助手 tool_calls(本导入器已在助手消息中嵌入 tool-call 块)。 |
| maximum context length | full 模式导入超大会话导致超限;改用 tail 模式。 |
| 无法定位 DSH 安装 | dsh 不在 PATH 且未设置 DSH_PKG_ROOT(仅校验时需要)。 |
已知限制
- DSH 会话格式为版本 0,无兼容性承诺;DSH 升级后旧导入可能无法读取,需要重新导出转换。
- 工具卡片只能查看、不能重新执行:opencode 的工具输出以静态结果导入。
- 支持续聊,续聊新产生的事件会追加到导入的日志中,摘要/尾部结构保持不变。
- 未知的 opencode part 类型(如 patch、snapshot)会被跳过,它们不含模型可见内容。
隐私说明
- 不读取、不写入任何凭据、API Key 或配置。
- 路径全部来自导出文件本身,脚本不硬编码任何机器特定信息(工作目录兜底为当前目录,时区自动探测,均可通过参数覆盖)。
致谢
本项目在 DeepSeek Harness(DSH)的智能体会话中,由 DeepSeek 模型协助完成,需求与设计由用户主导。本工具用于将 opencode 的会话导出导入 DSH;opencode 与 DeepSeek Harness 均为 MIT 协议的开源项目。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
wang-xudong/opencode-dsh-importer
把 opencode 会话导入为可续聊日志,自动处理压缩点
相关插件 · 对话 / 记忆
上下文中枢oceanbase/powercontext
上下文跟着工作走 —— 跨会话、跨智能体、跨人。
★ 1,487已汉化DSH
73
智能体记忆库plastic-labs/honcho
Honcho 是记忆基础设施,用来构建有状态的智能体。这些智能体能理解不断变化的人、智能体、群组、项目和想法。
★ 7,894已汉化DSH
71.7
长程智能体控制面loopx-project/loopx
给 Agent 一个目标,让工作持续向前。
★ 6,358已汉化DSH
71.3
智能体上下文数据库volcengine/OpenViking
给 AI 智能体用的上下文数据库
★ 41,379已汉化DSH
71.3
长效机器人团队Fei2411/DS-Bot
DS Bot 是一个基于 DeepSeek Harness简称 dsh的 bot 插件,插件将 dsh 改造为 bot…
★ 5,084已汉化DSH
71.1
可携带记忆层EverMind-AI/EverOS
为什么选择 EverOS
★ 13,778已汉化DSH
71.1