dsh-checklists:让智能体在会话内维护清单,模型每轮都能看到摘要

前言

在 DeepSeek Harness(DSH)里跑智能体,常见做法是用对话提醒它「别忘了还有这几步」。新会话一开,同样的清单往往要再说一遍;就算同一会话里,模型也未必每轮都记得当前进度。DSH 的生态思路是「一切皆插件」:能力通过插件挂到 Harness 上,社区目录在 SkillHub 等站点展示,与 DeepSeek / 幻方无官方从属关系。

下面介绍维护者 manny333 的客户端插件 dsh-checklists(GitHub:manny333/dsh-checklists)。它要解决的不是「有没有一张清单」,而是不必每个会话重复口述清单:清单在会话内创建一次,每轮组装提示词时注入紧凑摘要,随工作更新;右侧边栏另有只读页签与之一致。

这是什么

dsh-checklists 是面向 DSH 的 Session-scoped 清单插件:智能体把任务维护成树形结构,模型在每次 prompt 组装时总能看到各清单的 digest,侧边栏 Checklist 页签每约 2 秒轮询镜像同一棵树(状态只读)。分类上属于客户端插件(dsh.client 注入侧边栏等)。

若智能体漏勾选项,你可以在聊天里指出,由它调用工具修正。

工作方式概览

按 README 描述的顺序,流程可以概括为:

  1. 智能体创建清单(checklist_create),可选用模板。
  2. 每次组装提示词时,为每张清单注入一段紧凑 digest,模型始终知道待办情况。
  3. 完成项时由智能体标记(checklist_check)。
  4. 侧边栏页签展示同一棵树,只读,挂载后约每 2 秒刷新。

智能体工具

清单项是纯字符串;每级嵌套在行首加两个空格。例如:

["Deploy to staging", "  Smoke tests", "  Rollback plan"]
工具 作用
checklist_create 新建清单,可从模板(release、feature、debug、review)创建
checklist_add 向已有清单追加项,可挂在指定项下
checklist_check 将一项或多项设为 todo · doing · done · blocked
checklist_next 返回下一个可执行的叶子项、路径及剩余数量
checklist_edit 修改项文案(不改状态)
checklist_list 带 id 与状态的完整树(digest 被截断时用)
checklist_delete 按 id 或精确标题删除清单
checklist_remove_item 删除一项及其子树
checklist_rename 重命名清单;会话内标题唯一
checklist_template_save 将当前清单存为可复用模板

安装与启用

官方从目录安装(README 原文,web profile):

dsh plugin --profile web add dsh-checklists

本地构建或 tarball 安装示例(README 中的 dev profile 与版本号):

npm install
npm run build
npm pack
dsh plugin --profile dev add ./dsh-checklists-0.6.0.tgz
dsh --profile dev --dump-config        # the tool-checklist row should appear

建议先在测试 profile 安装。web、headless 与桌面应用的 desktop profile 彼此独立,装在哪套 profile 就只在那套生效。

插件以当前 DSH 进程权限运行;安装前请自行查看 仓库源码 与 MIT 许可证,确认符合你的安全与合规要求。

配置

在对应 profile 的 cordis.patch.yml 里覆盖插件项默认值(插件 id 为 tool-checklist,name 为 dsh-checklists):

- id: tool-checklist
  name: dsh-checklists
  config:
    maxDigestLines: 12      # lines of the injected digest
    maxItemsPerList: 200    # per-list item cap
    pruneDays: 14           # prune untouched sessions after N days (0 = never)
    nudge: steer            # steer | observe | off — see "Turn-end gate"
    # storageRoot: "D:/data/dsh-checklists"
    # templates:
    #   my-flow: ["Step 1", "  Sub-step", "Step 2"]

数据落盘

数据目录(包名是 dsh-checklists,存储目录前缀仍为 dsh-checklist):

$DSH_HOME/storages/dsh-checklist/
├─ sessions/<sessionId>.json    one document per session
└─ templates.json               templates shared across sessions

写入采用临时文件加 rename,按会话串行;文档损坏时会降级为空清单而不是整轮失败。

侧边栏 Checklist 页签

打开右侧边栏,在 guide(+)里选择 Checklist。

操作 方式
折叠 点击清单标题,或带子项的 ▾
新清单出现时 其余清单自动折叠,新清单展开
隐藏已完成 有完成项时显示「Hide done」
复制为 Markdown 「Copy」,可贴到 PR 或 issue
编辑项文案 双击文字;Enter 保存,Esc 取消

项的状态只能由智能体改;页签不能勾选完成。唯一写路径是文案编辑,经 POST /dsh-checklist/item 且带 expectedText;若与智能体刚改过的内容冲突,宿主返回 409,避免覆盖。

相关 HTTP 路由(只读状态为 no-store):

路由 方法 用途
/dsh-checklist/state GET 单会话状态
/dsh-checklist/item POST 带冲突保护的文案编辑
/dsh-checklist/nudge GET 近期 turn-end gate 决策
/dsh-checklist/client-probe GET 客户端加载诊断

Turn-end gate(回合结束提醒)

清单只有在与事实一致时才有用。回合即将结束时,插件会检查三件事:本回合是否执行了会改动工作区的工具(如 bash、edit、write 等);是否完全未写清单;是否仍有 doing 项。三者同时成立时,回合结束前会给智能体一条短提示,要求用 checklist_check 更新仍标为 doing 的项并说明依据,或明确未做完则保持状态。

nudge: steer 为上述打断式提示;observe 只记录不打断;off 关闭。可通过 GET /dsh-checklist/nudge 查看近期记录。

界面语言与提示词语言

面板跟随 Harness 的 locale:es 开头为西班牙语,其余为英语;locale 服务不可用则回退英语。面向模型的工具描述、结果与 digest 固定为英语,作为 prompt 材料不翻译。

典型用法(可复现思路)

  1. 在会话开始让智能体 checklist_create,例如从 feature 模板拉一份发布前检查项。
  2. 开发过程中用 checklist_add 补子步骤,用 checklist_check 把当前项标为 doing / done / blocked。
  3. 需要「下一步做什么」时调用 checklist_next。
  4. 你在侧边栏看树形进度;若与聊天里实际进度不一致,在对话里说明,由智能体更新状态。
  5. 稳定流程可用 checklist_template_save 存模板,下一会话再 checklist_create 引用。

适用场景与限制

适合:多步骤功能开发、发布检查、调试与 review 等需要同一会话内持续对齐进度的场景;希望模型每轮自动看到待办摘要、人眼在侧边栏核对。

注意:

  • 插件随 DSH 进程权限访问工作区与存储;安装前审源码与 MIT 许可。
  • README 列出的已知限制:无拖拽排序;无「谁何时勾选」历史;面板不能新增清单项(仅智能体与文案双击编辑);文档格式 version: 1,变更需迁移;页签挂载期间约 2 秒轮询(路由只读,属设计选择)。
  • Node 引擎要求见包声明:^22.19.0 || >=24.0.0。

结尾

dsh-checklists 把清单绑在会话上:智能体维护树形任务,模型每轮读 digest,侧边栏只读同步。若你已在用 DSH 并希望减少「每轮重复提醒清单」的成本,可按上文命令在对应 profile 安装,并从 cordis.patch.yml 按需调整 digest 行数、nudge 等行为。

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

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

小夜