把工作组织成目标看板的 DeepSeek Harness(DSH)插件 —— 基于图的目标管理(Graph-based Goal Management)。
当前版本 v0.17.0 —— npm 包名 dsh-graph,一个包同时提供面向 Agent 的 49 个 graph_* 工具(含 /api/dsh-graph* REST 端点)与内嵌 DSH Web 的二维泳道看板。
最新亮点(v0.17.0)
- 支持 DSH 0.2.0 系宿主:宿主兼容范围放宽为
>=0.1.5-rc.2 <0.2.1-0,并在隔离实例上实测0.2.0-rc.1/0.2.0-rc.2。 - 目标完成摘要:目标弹窗新增只读「完成摘要」页签,子代理每次执行的输出自动落盘(零额外 token),也支持一键更新为 LLM 详情级摘要。
- 窄档搜索按版本/分区分组:窄档(<480px)搜索命中在聚合泳道内按版本/分区加组头与计数,仍保持单列纵向、零横向溢出。
- 隔离实例与看板数据互不污染:修正「仓库内子目录被误判为 linked worktree」,隔离实例、门禁与测试不再写真实看板数据;并修复 pnpm 12 下无法从零新建隔离实例。
- 文档面机器守卫:工具表六面一致性、工具计数、记忆上限取值与 CHANGELOG 版本节结构由测试钉住(改坏即红)。
变更史见 CHANGELOG.md;逐版本门禁结论见 docs/release-checklist-v0.17.0.md,平台门禁运行手册见 docs/platform-gate.md。
| 平台 | 本版状态 |
|---|---|
| Linux / WSL2 | ✅ 已实测通过 |
| 原生 Windows | ✅ 已实测通过(原生 win32/x64,宿主 @deepseek-ai/dsh@0.2.0-rc.2;本版包 T1–T5 通过 10 / 失败 0 / 告警 0,见 v0.17.0 清单 §3.1) |
| macOS |
三平台共用同一安装包。已知限制:macOS 上经显式传入且含符号链接的工作区路径(如位于 /tmp、/var 之下)会被拒绝并报 graph root symlink is not allowed;由 process.cwd() 推导的路径不受影响。
dsh plugin --profile <name> add dsh-graph需要 Node ≥ 22。依赖说明、宿主兼容范围(engines.dsh 声明与实测宿主)、侧边栏用法、数据目录等完整内容,见 dsh-graph-host/README.md(即 npm 包内 README)。
- 基于图的目标管理:目标是自足实体 —— 自然语言任务 + 动态生成的取证计划与质量判据;任务类型不预先模板化,结构化的是生命周期与求值语义。
- 四阶段生命周期:
描述 → 收集 → 执行 → 确认,由引擎强制的状态机:draft → planning → collecting → ready → in_progress → review → delivered(任意阶段可进入blocked)。 - 判据先于执行:进入执行前先登记质量判据,评审按逐条判据核验产出物。
- 上下文卡片:目标 Runner 的种子上下文,生命周期
empty → collecting → filled → reviewed;形态分文本 / 文件 / 图片 / 数据。 - 排期:Backlog(暂存池)↔ Version(批量质量管理)↔ 独立目标(standalone);看板泳道顺序是展示态,可拖拽调整。
- 换会话交接:
graph_handoff生成交接文档(board 投影 + 长期记忆 + 环境事实),graph_claim_supervisor由新会话幂等接管。
49 个 graph_* 工具,按功能分组(逐个说明见 dsh-graph-host/README.md 或 graph_help):
| 分组 | 工具 |
|---|---|
| 目标生命周期 | graph_create_goal · graph_rename_goal · graph_set_description · graph_set_goal_type · graph_set_goal_tags · graph_amend_goal · graph_transition · graph_postpone_goal · graph_archive_goal · graph_unarchive_goal · graph_delete_goal · graph_clean_worktree · graph_list_worktrees |
| 质量判据 | graph_set_criteria |
| 上下文卡片 | graph_add_card · graph_fill_card · graph_review_card · graph_bind_collect_card · graph_delete_card · graph_convert_card_to_shared · graph_convert_card_to_owned · graph_attach_shared_card · graph_detach_shared_card · graph_list_shared_cards |
| 附件 | graph_store_attachment · graph_delete_attachment |
| 排期 | graph_move_goal |
| 执行派发 | graph_start_attempt · graph_set_directive · graph_record_attempt_handoff · graph_unbind_goal_child · graph_abandon_attempt |
| 记忆 | graph_memory_add · graph_memory_recall · graph_memory_remove · graph_memory_replace |
| 配置管理 | graph_get_settings · graph_update_settings |
| 校验 / 对账 | graph_validate · graph_rebuild |
| 状态汇报 | graph_report_status · graph_report_supervisor_status |
| 评审裁决 | graph_resolve_accept |
| 历史讨论 | graph_add_comment |
| 完成摘要 | graph_write_results · graph_refresh_results |
| 换会话 | graph_handoff · graph_claim_supervisor |
| 帮助 | graph_help |
浏览器二维泳道看板:横向为生命周期阶段列(描述 / 收集 / 执行 / 确认 / 交付 / 阻塞),每个版本一条泳道,另有 Backlog 与独立目标区;支持拖拽排期、判据 / 上下文卡片抽屉、实时状态显示、阻塞折叠等。以下为虚构演示数据(nebula-notes)截图:
侧边栏入口、窄档(<480px)分档行为与「怎么把看板放进窄档」的实测说明,以及数据目录 <workspace>/.dsh-graph(纯文本 + 只追加 events.jsonl,git 友好、可 graph_rebuild 对账)的完整说明,均见 dsh-graph-host/README.md。
core/—— 核心层源码(唯一事实源),经scripts/sync-core.sh编译成dist/core/*.js进发布包;核心层不依赖 DSH。dsh-graph-host/—— 单包发布物源码:index.js(工具 + REST 端点)、lib/client/*.js(看板源模块,构建产物为dist/lib/client.js)、cordis.patch.yml、supervisor-guide.{zh,en}.md、README.md、LICENSE。schema/、docs/、scripts/—— 数据 / 设计文档 / 构建脚本;一切构建产物落在dist/(gitignored)。
bash scripts/build.sh # 同步 core + 客户端产物 + 复制发布资产到 dist/
node --test core/tests/*.test.ts # 全量测试
./node_modules/.bin/tsc --noEmit -p tsconfig.json
# 隔离测试实例(不碰主 GUI):DSH_HOME 与 workspace 均在 ./tmp/dsh-test/ 下
bash scripts/dsh-test-web.sh <DSH版本> [--port PORT]构建与实验一律在隔离 worktree(.worktrees/<goal>-att-<NN>)内进行;约定见 AGENTS.md,隔离实例参数与开发回路见 docs/dev-instance-guide.md。README 截图用 scripts/dsh-graph-mock-seed.mjs 生成虚构演示数据后复现。
MIT(Copyright © 2026 miuzel)—— 见 dsh-graph-host/LICENSE。



