Uloboros/dsh-design-ledger ↗★ 0
dsh-design-ledger
把设计文档变成可实时更新的开发进度树,并分层注入 DSH 会话上下文,使新会话在大项目上下文耗尽后仍能接上进度。 适合超大项目开发,防止新会话因上下文耗尽而丢失开发进度。
Install
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:Uloboros/dsh-design-ledgerREADME
Read the full README ↗改这个插件时的验证顺序(本节供改代码的人看,使用者可跳过)
只想用插件的话,看到这里就够了 —— 直接跳到下面的「界面语言」或「设计文档的解析规则」。 下面这些命令在本仓库开发时用,需要 Node;其中带 ⭐ 的探针需要本机装了 DSH(见目录结构后的说明)。
npm run verify # 语法 + 单测 + 文档体检 + 客户端体检 + 契约自检(推荐,一条命令跑完)
node --import ./probe/register.mjs probe/import-probe.mjs # 能 import 吗
node --test test/core.test.js test/agents-md.test.js # 13 个单测
node probe/client-ui-test.mjs # ⭐ 客户端:按钮对比度 / 字典完整性 / 语言接线(不需要 DSH)
node --import ./probe/register.mjs probe/contract-test.mjs # ⭐ 契约自检(崩溃 5/6 + 路由注册)
node --import ./probe/register.mjs probe/panel-list-test.mjs # ⭐ 面板取数(崩溃 7 + 越界拒绝)
node --import ./probe/register.mjs probe/table-tree.mjs # ⭐ 方案 A:表格行 → 功能节点(只读)
node --import ./probe/register.mjs probe/host-smoke.mjs # 宿主端到端
node --import ./probe/register.mjs probe/route-test.mjs # 路由与路径安全
probe/client-ui-test.mjs 与 probe/readme-check.mjs 零依赖(只用 Node),所以它们同时跑在 CI 上;
其余探针需要本机 DSH 依赖层,只在本地跑。
probe/contract-test.mjs 是回归护栏,把三个"静默毁掉功能"的契约钉死了:
| 断言 | 守的是哪个崩溃 |
|---|---|
section.text() 同步返回 string,且宿主式 interpolate 不抛 | 崩溃 5(对话瘫痪) |
6 个工具全部注册,且 parameters 是 object-rooted schema | 崩溃 6(工具静默失效) |
ctx.inject(['webServer']) 注册 3 条路由;服务未就绪时不误判、就绪后由重试兜底补上 | 面板 Unexpected end of JSON input |
会话工作区被记录后 list/status 都用它;部署根/越界/node_modules 一律 400 | 崩溃 7(弹窗空白 + 根切不回来) |
无台账 / 台账 JSON 损坏时,注入退化为 '' 且不抛 | 崩溃 5 的边界情况 |
probe/client-ui-test.mjs 则守住界面这一侧:
| 断言 | 防的是什么 |
|---|---|
交互底色不使用 --dsw-alias-bg-layer-2(浅色主题下 = 纯白) | hover 白底白字 |
普通/列表 hover 用 --dsw-alias-interactive-bg-hover | 同上 |
| 主按钮用 button-primary 三件套,且 hover 有独立规则 | 主按钮变色后文字消失 |
主按钮文字不再是硬编码 #fff | 深色/浅色主题下对比度失配 |
zh / en 键集一致,且代码用到的每个 key 都有翻译 | 界面出现原始 key |
槽位声明了 locale 命名空间、且不再自注入 t | 语言不跟随 DSH + 重复 prop 导致槽位装配抛错 |