dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
把 MiMo Studio / VS Code Copilot Chat 的历史对话迁移进 DeepSeek Harness 的技能与工具链
把外部平台的对话历史迁移进 DeepSeek Harness(DSH)的一套可迁移技能 + 工具链。
GitHub 话题:
dsh-plugin| 许可:MIT | 依赖:Node 24+(无需第三方包)
| 能力 | 说明 |
|---|---|
| 四条来源 | ① VS Code Copilot Chat 本地 chatSessions(最完整,含 AI 回复)② MiMo Studio 桌面版(文件快照 / 产物 / 任务卡 / 日志元数据)③ MiMo AI Studio 网页版(userscript 导出,拿到正文的唯一路径)④ opencode 本地 SQLite(opencode.db 直读 user/assistant 正文,--top-only 只取主会话) |
| 抽取 → 生成 → 登记 → 校验 | 一条流水线把任意来源变成 DSH 可打开的会话 |
| 自带校验器 | dsh headless --session-id <id> 即可判定格式,不依赖 UI |
| 自带隐私扫描器 | privacy-scan.mjs 交付前一键自查(真实用户名/路径/会话 id/密钥) |
| 格式自适应导入 | import-mimo-export.mjs 自动识别 4 种导出排版 |
| 顺带扩展 DSH 模型 | mimo/ 提供 MiMo 提供商补丁(端点 / 协议 / 模型齐备,密钥留空) |
| 演示录像 | demo/demo.mp4:140 秒,原理 + 能力 + 真实实测 |
# 0) 抽取
node scripts/export-vscode-chat.mjs <chatSessions 目录> out/ # VS Code
node scripts/import-mimo-export.mjs <mimo导出.md> --out out/ # MiMo 网页导出(自适应 4 种格式)
node scripts/export-opencode.mjs --db <opencode.db> --out out/ --top-only # opencode 本地库(先拷贝 db 再读)
# 1) 生成 DSH 会话(out/ 里是 [{user, assistant}] 的 turns.json)
node scripts/build-dsh-session.mjs --home "$env:USERPROFILE\.dsh" --cwd "<工作区路径>" \
--title "<标题>" --input out/turns.json
# 2) 登记侧栏缓存
node scripts/generate-dsh-cache.mjs --home "$env:USERPROFILE\.dsh" --session <session-id>
# 3) 校验(报 “agent preset … does not compose” = 格式已通过)
node scripts/verify-dsh-session.mjs --in <session.v4.jsonl.zstd> --require-cache --run-dsh --dsh <dsh 启动器>
# 4) 改标题(已有会话;只追加事件,不重排 seq)
node scripts/retitle-dsh-session.mjs --home "$env:USERPROFILE\.dsh" --session-id <session-id> --title "新标题"
| 步骤 | 脚本 | 产出 |
|---|---|---|
| 抽取 | export-vscode-chat.mjs / import-mimo-export.mjs / export-mimo.mjs / export-opencode.mjs | turns.json、vscode-sessions.json、MiMo 三份 Markdown、<session-id>.turns.json + opencode-index.json |
| 生成 | build-dsh-session.mjs | session.v4.jsonl.zstd(首帧仅 header、每事件一帧、seq 连续、逐轮 turn 配对) |
| 登记 | generate-dsh-cache.mjs + 手改 workspace.json 的 sessionIds | 侧栏可见 |
| 改名/整理 | retitle-dsh-session.mjs(追加 session/title,不重排 seq) | 侧栏标题更新 |
| 校验 | verify-dsh-session.mjs / list-dsh-sessions.mjs / selftest.mjs | PASS / FAIL |
| # | 要求 | 违反时报错 |
|---|---|---|
| R1 | header.cwd 与工作区规范路径逐字符相等(Windows 用反斜杠) | UI 显示「工作文件夹未分组」 |
| R2 | session id 必须写进该工作区 workspace.json 的 sessionIds | 会话不归属任何工作区 |
| R3 | 首帧恰好只装 header 一行,其后每事件一帧 | first frame is not exactly one header line |
| R4 | seq 从 0 连续递增 | has seq gap (expected n, got m) |
| R5 | assistant/message 必须带完整模型流 stream(最小形态:block-start → text-delta → block-end → finish) | invalid settlement fields |
| R6 | 事件 source 形状合法(模型来源需 kind/provider/model) | message must have model source |
| R7 | 必须有投影缓存 storages/session_projcache/sessions/<id>.json(version 7) | 侧栏看不到该会话 |
| R8 | agentPreset 要在目标 profile 组装范围内(headless 不组装 standard) | runs under agent preset … not composed |
| R9 | 每轮自成一对 turn/start … turn/end,turn 递增 | turn/start does not open the expected turn |
| R10 | assistant/message 的 stream 最小形态:block-start → text-delta → block-end → finish | invalid settlement fields |
| R11 | seq 只许末尾追加,绝不许重排(sourceEventSeqs/throughSeq/headerSeq/startSeq/endSeq/shadowedSeqs/messageSeqs 存的全是旧编号引用) | corrupt … sourceEventSeqs ranges must contain unique earlier seqs |
[{user, assistant}] 的 turns.json 即可接入流水线。参照 import-mimo-export.mjs——它是纯解析器,加一种排版只需加一个 parseXxx();直读本地数据库的完整范例见 export-opencode.mjs(node:sqlite 只读打开)。verify-dsh-session.mjs 与 selftest.mjs 的检查项都是独立断言,照抄一条即可扩展(例如「必须带 tool/result 配对」)。mimo/cordis.patch.yml 是模板,改 providers.<id> 的 baseURL / api / models 就能接任意 OpenAI 兼容端点;DSH 侧落在 $DSH_HOME/profiles/<profile>/cordis.patch.yml。--home / --cwd / --dsh 全部参数化,不写死路径,可在 CI 或别的机器上跑。scripts/lib/dsh-session.mjs 封装 zstd 帧分割/编码、工作区目录编码、参数解析,被所有脚本复用——扩功能优先改库,而不是复制代码。| 路径 | 内容 |
|---|---|
SKILL.md / SKILL-single.md | 技能本体(单文件版可直接丢进 skills 目录) |
references/dsh-session-format.md | DSH 会话存储格式参考 |
scripts/ | 工具链 + 共享库 + selftest(见其 README) |
mimo/ | 给 DSH 加 MiMo 提供商(密钥留空) |
demo/ | 演示片、分镜、可复跑渲染脚本、真实运行的 captured/ |
privacy-scan.mjs | 交付前隐私扫描 |
项目说明.md | 迁移范围、不能迁移的边界、事故教训 |
demo/demo.mp4 —— 140 秒 1080p30(15 屏):原理 6 + 能力 2 + 实测 6 + 收尾。实测段是现场真跑:8 条坏 → 修好 → 9/9 通过 → 补 AI 回复 → 仍 9/9 通过,并附 selftest 19/19、verify 11 checks、privacy hits 0。可用 demo/render.ps1 复跑重制。
<DSH_HOME> / <workspace> / <session-id> 占位;$DSH_HOME/.credentials.yaml 永不复制、永不上传;node privacy-scan.mjs . → 0 命中才推;<workspace>、临时目录→<tmp>、启动器→<cli>、真实 id→session-<id>)。MIT。