dsh-verify-judge:让智能体在完成目标前证明自己

前言

在 DeepSeek Harness(DSH)中,当智能体运行长时间任务并宣布“完成”时,这通常只是基于自身判断的自我声明。模型容易在测试未通过的情况下就关闭目标,或者试图跳过验证直接结束回合。

dsh-verify-judge 插件通过拦截 update_goal(complete) 调用,将“完成”变为一个有条件的动作:在目标关闭前,必须先运行项目的测试套件。如果测试失败,插件会拒绝关闭目标并将失败信息反馈给智能体。此外,它还会在回合边界时检查并强制重新验证,确保智能体持续工作直到真正完成。

插件定位

这是一个用于 DeepSeek Harness 的验证插件,由 zriyox 维护。它通过运行工作区的验证命令(通常是测试套件)来验证智能体是否真正完成了任务,而不是仅仅在日志中声明完成。

核心功能

该插件主要实现以下能力:

  1. 拦截与验证:拦截 update_goal(complete) 调用,在目标关闭前执行项目测试套件。
  2. 回合边界检查:在回合结束时检查并强制重新验证,防止智能体通过在聊天中仅说“完成”来跳过测试。
  3. 命令自动检测:自动检测测试命令。
    • package.json 中的 scripts.test。
    • go.mod 文件(运行 go test ./...)。
    • Cargo.toml 文件(运行 cargo test)。
  4. 自定义配置:支持配置自定义的验证命令。
  5. 未检测命令处理:当未检测到命令时,支持 allow(默认)或 deny 策略。
  6. 超时与反馈:支持命令超时控制,并在失败时截取输出尾部作为反馈信息。

安装与启用

使用官方提供的命令安装插件。安装后需要重启 dsh web 或等待补丁重载。

dsh plugin --profile web add github:zriyox/dsh-verify-judge

配置说明

在插件的配置行(profile 或 home cordis.patch.yml)中添加以下内容:

- id: verify-judge
  config:
    commands: ['pnpm test', 'pnpm run lint']  # 指定运行命令
    onUndetected: deny                        # 未找到命令时拒绝完成
    timeoutMs: 300000                        # 单个命令超时时间
    outputTailChars: 4000                    # 失败输出截取字符数
    gateTurnEnd: true                         # 在回合结束时重新验证
    maxTurnEndRetries: 2                      # 每回合最大重试次数

配置项说明

  • commands:显式指定的验证命令,优先级高于自动检测。必须在会话工作区中运行。
  • onUndetected:当未检测到命令时的策略,默认为 allow。
  • timeoutMs:单个验证命令的超时时间限制。
  • outputTailChars:验证失败时发送给智能体的输出尾部最大字符数。
  • gateTurnEnd:当目标激活时,是否在回合结束时触发重新验证。
  • maxTurnEndRetries:在回合内因验证失败而强制继续工作的最大次数。

依赖与要求

插件运行需要满足以下依赖条件:

  • Node.js 版本:^22.19.0 或 >=24.0.0
  • 核心依赖:
    • @deepseek-ai/cordis (^4.0.1)
    • @deepseek-ai/dsh-agent (^0.1.0-rc.6)
    • @deepseek-ai/dsh-goal (^0.0.1-rc.1)
    • @deepseek-ai/dsh-llm (^0.0.1-rc.1)
    • @deepseek-ai/dsh-session (^0.0.1-rc.1)
    • @deepseek-ai/dsh-shell (^0.1.0-rc.5)
    • @deepseek-ai/dsh-tools (^0.0.1-rc.1)
  • 开发依赖:@types/node (^22.20.0), typescript (^5.9.3)

插件通过 tools/pre-execute waterfall 拦截调用,不修改非 update_goal 调用。

适用场景

该插件适合需要严格验证智能体工作成果的场景,特别是使用 DSH 的 autonomous goal loop(自主目标循环)时。它确保智能体不能通过“自我声明”来结束任务,而是必须通过实际代码验证(如测试通过)。

总结

dsh-verify-judge 将智能体从“自我声明完成”转变为“证明完成”。通过运行测试套件和回合边界检查,它提供了强制的验证机制。如果配置得当,插件对诚实的工作流是透明的;只有在验证失败时才会介入。

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

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

小夜