dsh-janitor:为 DeepSeek Harness 提供可审查的工作区清理计划

前言

在 DeepSeek Harness(DSH)里跑智能体会话,工作区里常会留下计划文档、临时脚本、一次性 fixture 等「会话 debris」。若清理交给另一个智能体,规则和依据往往不透明,人也难以逐项核对。社区里已有插件侧重快照与回滚(例如 @goodandready/dsh-time-machine 回答「能否撤销」),而「哪些文件在规则下可以删、依据是什么」这条链路,在资料所述的 DSH 生态里仍缺少确定性的方案。下面介绍维护者 zhengqiuyang 发布的 dsh-janitor:用确定性规则扫描工作区,输出可审查的清理计划,且 janitor 本身不是 agent。

这是什么

dsh-janitor 是 DSH 上的工作流类插件(社区目录:zhengqiuyang/dsh-janitor)。它向 Harness 注册 janitor_scan 工具,在 workspace 上运行 agent-janitor 引擎,返回一份 reviewable cleanup plan:每个候选文件带有固定顺序下的确定性 verdict,以及支撑该结论的证据(引用分析、git 元数据、年龄阈值等)。当前 0.1.0 版本 不会删除任何文件;是否在审查后执行删除,由上游 CLI 或开发者自行决定。

插件与 read-guard、pr-gate、attest、mcp-test 等同属一族能力线:janitor 管的是会话结束后留在工作区里的东西。

核心功能

janitor_scan 与「非 agent」原则

扫描与裁决完全由确定性规则完成,不引入 agent 判断。README 明确:v0.1 只做扫描与计划,不做自动删除。

Verdict 类型(固定顺序,先匹配先生效)

verdict 含义
protected 在 protected 列表中的精确文件或目录前缀
keep 被任意代码文件引用
recent 文件年龄小于 minAgeDays(优先用 git commit 时间)
needs-review 被文档等引用,或情况模糊
safe-to-remove 已合并任务相关的 plan 且无引用,或无引用且足够旧

与 time-machine 的关系

资料对比:dsh-time-machine 做 checkpoint 与 rollback(快照安全);dsh-janitor 回答「什么可以安全移除」。二者互补。推荐流程是:确定性扫描 → 人工审查计划 → 再按自己的方式 apply,中间不交给 agent 做清理决策。

安装与启用

安装前请自行查看 GitHub 仓库 源码与 MIT 许可证。插件以当前 DSH 进程权限访问工作区,安装与启用前应确认是否符合你的安全策略。

官方 README 给出的安装方式如下(npm 分发,无需 build、无需 allowBuilds 授权;仓库内已带预构建 lib/):

dsh plugin --profile default add dsh-janitor

兼容性说明(资料原文):已在 DSH 0.2.x 线验证(源码快照 0.2.1-alpha.2);Node >= 20(CI 矩阵含 Node 20/22/24,Ubuntu 与 Windows)。 disposable-profile 实测中,安装后 boot 会出现 [dsh-janitor] active: … 一类日志。

配置

在 profile 插件配置中增加 dsh-janitor 条目,例如:

- id: dsh-janitor
  name: dsh-janitor
  config:
    minAgeDays: 14
    protectedPaths: ["plans", "docs/decisions"]   # exact file or directory prefix
  • minAgeDays:与 recent / 旧文件判定相关的年龄阈值(天)。
  • protectedPaths:精确文件路径或目录前缀,命中则 verdict 为 protected。

典型用法

资料中的可复现路径是按三步理解,而非「一键清空」:

  1. 在已启用插件的 DSH 会话中,通过 Harness 暴露的工具调用 janitor_scan(具体调用方式随你使用的 profile 与 Cordis 工具注册而定)。
  2. 阅读返回计划:每个候选路径的 verdict 及证据,按上表顺序理解优先级。
  3. 0.1 不执行删除;审查通过后,由上游 CLI 或你本地脚本/手工方式移除 safe-to-remove 等项(路线图提到未来的 janitor_apply 仍会保持确定性、需显式 per-path 确认,且仍非 agent 裁决)。

开发者在仓库内自测引擎时可执行:

npm install
npm test   # syncs the vendored agent-janitor engine, builds, runs fixture tests

扫描/verdict 核心来自 sibling 项目 agent-janitor,经 npm run sync vendoring 进本仓库。

适用场景与注意

适合谁:长期用 DSH 跑 agent、工作区积累 plan/scratch 文件,又希望清理依据可审计、可逐项 review 的团队或个人。

注意:

  • 裁决是规则性的,ambiguous 文件会落在 needs-review,不能替代人工判断。
  • 与官方或第三方「工作区卫生」能力重叠时,维护者在 README 中写了 kill criteria:若 DSH 官方或类似插件提供确定性 removal planning,本插件可能冻结在最后可用版本;引擎仍由 agent-janitor 项目维护。
  • 社区插件目录 SkillHub 为独立站点,与 DeepSeek / 幻方无官方从属关系;星标与版本以仓库为准(当前 package 0.1.0,GitHub 星标 0)。

结尾

dsh-janitor 把「会话 debris」变成 可审查的确定性清理计划,把删除权 deliberately 留在 scan 之外。若要安装或读完整说明,见社区目录页与 GitHub:

  • 目录页:https://www.skillhub.cn/plugins/zhengqiuyang/dsh-janitor
  • 仓库:https://github.com/zhengqiuyang/dsh-janitor
羽毛球分组比赛记分
小程序二维码

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

Xiaoye