为智能体的测试、类型检查、lint 与构建结论提供新鲜度检查:每次验证运行在 tools/post-execute 上记录为凭据,文件修改被跟踪;在 agent/turn-stopping 时,若结论对应的最新凭据已过期、失败或没有可读结果,则引导再走一步,并指出凭据与其后被修改的文件。
安装
# npm 包(预构建)
dsh plugin --profile web add dsh-plugin-stalegreen
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:pavangupta352/stalegreen#path:/dsh-plugin-stalegreen
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
English | 中文
stalegreen 的新鲜度检查,以 DeepSeek Harness 插件的形式提供。验证命令(pytest、pnpm test、tsc、eslint、cargo test、next build 等约八十种)会被记录为凭据,文件修改会被记录为编辑事件;当智能体以"所有测试通过"、"tsc 无错误"或"构建成功"结束一轮时,这个说法会与该类别最近的一条凭据对照:
| 证据 | 判定 | 结果 |
|---|---|---|
| 通过的运行,之后没有修改 | FRESH | 本轮正常结束 |
| 通过的运行,之后文件被修改过 | STALE | 再走一步,附上凭据和被修改的文件 |
| 失败的运行 | FAILED | 再走一步 |
| 结果被管道或后缀隐藏的运行 | MASKED | 再走一步,要求不加管道重新运行 |
| 完全没有运行 | NONE | 本轮正常结束(strict 模式下再走一步) |
DeepSeek Harness 自己的目标系统说明它没有独立的评估者。这个插件就是一个:确定性的、本地的,每个判定都引用一条凭据。零 token,零网络,零遥测。
安装
dsh plugin add dsh-plugin-stalegreen
包已发布到 npm,并收录于 awesome-dsh-plugin。这个组合包会在 profile 中插入一行名为 stalegreen 的插件。选项写在 profile 的 cordis.patch.yml 里:
- id: stalegreen
config:
policy: advisory # 只记录判定,不引导下一步
mode: strict # 拒绝被掩盖结果的验证命令
凭据、编辑事件和判定保存在 ~/.stalegreen/sessions/<会话 id>/,与 stalegreen 命令行工具读取的是同一个存储:npx stalegreen check 显示最近一次会话的说法与证据,npx stalegreen receipt r-0017 显示某次运行的凭据和日志末尾。
接入方式
tools/pre-execute:验证命令会得到一条待定凭据;strict 模式下,被掩盖结果的命令(| tail -5、|| true、2>/dev/null)会被拒绝,并要求去掉管道重新运行。Harness 的 pre-execute 瀑布不能改写工具调用,所以与 Claude Code 和 Codex 的钩子不同,这里不做改写;bash 工具会把长输出完整保存到文件,管道能隐藏的内容因此有限。tools/post-execute:bash 工具的输出根据运行器自己的汇总行和[exit code: N]标记变成一条凭据;edit、write和str_replace_editor调用变成编辑事件。agent/turn-stopping:读取本轮最后一条助手消息中的"绿色"说法。过期、失败或被掩盖的说法会引导再走一步,消息形如:
stalegreen: "all tests pass" is stale. Receipt r-0017 (`pnpm test`, 41 passed, 14:02:11) predates 3 later edits:
src/routes/pay.ts (14:05:40), src/lib/hold.ts (14:06:02), src/lib/hold.test.ts (14:06:31)
Rerun `pnpm test` and report the result, or state explicitly that the tests were not rerun after these edits.
同一类别每轮最多引导一次,智能体不会被困住。
它不是什么
它不判断意图,只检查说法背后的证据是否新鲜、完整。也不取代运行器的判断:通过与否以运行器自己的汇总为准,从不仅凭沉默推断。
许可
MIT。版权所有 (c) 2026 Pavan Gupta。
链接
同类插件
yjh051108/dsh-routing-suite★ 6997
一个仓库三件套:DSH 插件包的运行时注入器(注入、热重载、卸载、开发侧挂区一键转正、路由自愈,外带设置页插件管理:列出、卸载、拖入文件夹内化)、任务感知的思维模式路由 agent 预设(router-standard / router-spec / router-react)、以及分级两级任务协议(commit_star / lock_stage / revise_do / edit_plan / mark_task / redteam_verdict 六个工具,任务状态落盘)。注入器实现直接在库内,安装的是它自己的行为而不是一份依赖清单。
strukto-ai/mirage#dsh★ 3696
把文件系统与 bash 提供者换成 mirage 虚拟工作区:文件工具与 shell 命令作用于挂载的资源(RAM、S3、Redis、Slack、Gmail、Notion、Postgres)而非宿主磁盘,支持按挂载点设置读/写/执行模式、按命令选择沙箱(进程内 monty、pyodide、quickjs;远程 docker、e2b、daytona),并可在虚拟终端中安装 CLI(git、gh、slack、linear、ntn、gws,或自行注册的程序树)作为命令头词。
first-fluke/oh-my-agent#dsh★ 1344
在工具执行前后以及尝试结束当前轮次时运行项目 OMA 检查。随插件安装 OMA CLI 依赖,并在首次使用时初始化未配置的项目。需要 Node.js 22+;首次初始化需要网络连接和项目目录写入权限。
hust-open-atom-club/oh-dsh★ 322
社区发行版:TUI、桌面端与 Web UI 统一体验,分层安装、一步到位。
weijiafu14/pi2dsh★ 217
Pi Host ABI 兼容引擎:装一次之后,npm 上的 Pi 扩展原包经 `dsh plugin add <pi-package>` 直接作为 DSH 原生插件挂载。已在官方 DSH 上端到端验证 pi-mcp-adapter(完整 MCP 管理面:OAuth、resources、prompts、MCP Apps、elicitation、sampling)、@tintinweb/pi-subagents、pi-code、pi-hermes-memory、pi-background-tasks;`pi2dsh inspect` 在安装前报告一个包的兼容情况。
Fishquito7/dsh-skill-mcp-panel★ 207
在 DSH Web 设置中管理技能与 MCP 服务器:技能卡片热启停、工作区作用域、分组、批量迁移与拖拽导入,以及 stdio/HTTP MCP 增删改查、连接测试、密钥脱敏,并附带统一 dsh-panel 命令行。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。