dsh-design-ledger:把设计文档变成可注入 DSH 的开发进度树

前言

在 DeepSeek Harness(DSH)里长期做一个大项目时,常见做法是堆 Markdown 设计文档,再靠 AGENTS.md 和会话记忆告诉模型「做到哪了」。单轮上下文有限,整份设计文档动辄十万级 token,既塞不进系统提示,也会在换会话后丢进度。社区插件 dsh-design-ledger(维护者 Uloboros,分类:记忆)走另一条路:解析设计文档,生成并维护一棵开发进度树,再按层注入 DSH 会话上下文,让新会话从索引和当前聚焦节点接着干,细节用工具按需读取。

这是什么

dsh-design-ledger 把「设计文档 → 进度清单 → 代码索引」落成工作区内的结构化台账(README 中示意为 index.json、systems/、state/ 等分片),并通过 system-prompt/assemble 与 dsh-agent-instructions 注入 AGENTS.md 使用同一接缝。英文简介为:Turn design documents into a live development progress tree and inject it into DSH session context, so new sessions can pick up where the last one left off.

台账明细默认落在 DEVPLAN/(与 AGENTS.md 分工:AGENTS.md 放摘要与指针,台账供机器与分层注入)。插件为纯 ESM,当前 package 版本 0.1.1,许可证 MIT,要求 Node >= 20。

核心功能

分层注入,而不是整库灌上下文

README 用一份真实设计文档做过体量测算:19 个 .md / 588 KB / 226,885 字符 ≈ 133,000 tokens,整份文档无法每次注入。插件采用分层策略(用户已确认的 L0–L4):

层 内容 时机
L0 任务开启提示词(完整) 会话首次装配时注入一次
L1 索引:系统清单 + 完成度 + 文件指针 每次会话注入
L2 当前聚焦子树(优先 marked 节点) 每次会话注入
L3 其余子树、代码索引、bug 明细 不注入,由 design_ledger_read 按需取
L4 设计文档原文分片 不注入,由 design_doc_read 按需取

进度树数据模型

每个节点字段固定,便于工具解析或手改,主要包括:id、name、kind(system / subsystem / feature / subfeature / task)、status(todo / doing / done / blocked / dropped)、父子关系、designRefs、codeRefs(仅 文件 + 符号名,不记行号)、interfaces、bugs、notes、marked(当前聚焦)。

设计文档解析

  1. 单个 .md:按 Markdown 标题层级建树。
  2. 文件夹(递归):按目录命名推断层级(如 S0N_<名称>/ 为系统、SNN_<名称>/ 为子系统,design.md 为设计正文等)。
  3. 功能表行(expandTableRows):首列为 PREFIX_数字 型 ID 的表格可展开为功能节点;普通表格不建节点。台账记录的是实际开发进度,设计里有但本轮不做的条目可以先不建节点,避免完成度被空节点稀释。

宿主工具与 Web 面板

宿主侧注册 6 个工具:

工具 作用
design_ledger_status 绑定状态、台账位置、节点数 / 完成度 / 待办 bug
design_ledger_init 绑定设计文档并生成初始进度树
design_ledger_read 按需读索引、子树、节点详情或 bug 列表
design_ledger_update 更新状态、代码索引、接口、bug、备注、mark
design_doc_read 按需读设计文档原文
design_doc_list 列出设计文档树与各文件体量

客户端半区提供侧栏「设计文档包含」:图形化选择工作区内的目录或 .md,通过 POST bind.json 建台账;路径校验限制在工作区内。配套技能见仓库 skills/design-ledger/SKILL.md。

安装与启用

DSH 桌面端 profile 由 Electron 独占,不能用 dsh plugin --profile desktop(CLI 会拒绝)。README 要求通过 plugin_manager 安装 bundle,示例为 link 到本机插件目录:

plugin_manager  install_bundle  target = link:E:\program\dsh\dsh-design-ledger

将 link: 后的路径换成你本机上的 dsh-design-ledger 目录即可。安装后必须重开桌面客户端,bundle 的 fiberPhase 才会从 null 变为 active。可用 plugin_manager list_plugins 查看是否出现 include:design-ledger 且 fiberPhase: active;profile 的 package.json 里 dsh.profile.bundles 也需登记该 bundle,否则插件可能未激活。

说明:plugin_manager 偶报 application: failed / ambiguous-install 时,README 记录为假报情形,以磁盘状态与 fiberPhase、工具是否出现为准。link 安装时 peer 依赖当前仅声明 @deepseek-ai/dsh-tools(>=0.2.0-rc.1 <0.3.0-0,optional meta)。

典型用法

经过上面的安装与重启,可按下面顺序在工作区里用起来。

  1. 绑定设计文档
    在侧栏打开「设计文档包含」,用「选择设计文档」浏览工作区(面包屑、目录下 .md 数量提示),选中后「载入为设计文档」触发绑定;或让代理调用 design_ledger_init / design_doc_list 选路径。已存在台账时 bind 会返回 409 ledger-exists,避免覆盖进度。

  2. 开干并标记聚焦
    本轮要做的功能若尚无节点,用 design_ledger_update 新建并设 status:"doing"、mark:true。示例形态(字段以工具 schema 为准):

   design_ledger_update { parent_id, node_name, status: "doing", mark: true }
  1. 随开发更新台账
    完成后设 status:"done",并补充 code_refs、interfaces;问题记入 bugs。其余子树与设计原文不在上下文里常驻,需要时用 design_ledger_read、design_doc_read 拉取。

  2. 新会话接续
    新开会话后,L1 索引与 L2 聚焦子树会自动注入;README 实测中,上一轮 mark:true 的节点会在下一轮上下文里以「聚焦:…」形式出现(含代码索引与接口摘要)。

插件还会幂等维护 AGENTS.md 托管块,与台账注入互补,不覆盖块外用户内容。

适用场景与注意

适合谁:同一工作区长期开发的游戏或软件项目;设计文档是 .md 或按 S0X_ 等目录组织;需要在多次 DSH 会话之间保持「做到哪、代码在哪、当前在做什么」而不把整份设计文档塞进 prompt。

权限与安全:插件以当前 DSH 进程权限读写工作区;面板与路由在宿主侧做工作区边界校验,拒绝绝对路径与 .. 越界。安装前应自行阅读 GitHub 源码 与 MIT 许可证,确认符合你的合规要求。

生态说明:DSH 采用「一切皆插件」的扩展方式;SkillHub 目录页 是社区收录站点,与 DeepSeek / 幻方无官方从属关系,也不是官方应用商店。

链接

  • 目录页:https://www.skillhub.cn/plugins/Uloboros/dsh-design-ledger
  • 仓库:https://github.com/Uloboros/dsh-design-ledger

若你的痛点是「设计文档很大、会话换就忘进度」,dsh-design-ledger 提供的是可查询、可分层注入的进度树,而不是把 README 全文复制进每一轮对话。

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

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

Xiaoye