关于 harness-subagent
harness-subagent 是供父级 Agent 使用的技能,可将单项有限任务交给用户指定的 CLI,再评估其报告。它规定了启动、限制处理、健康检查和结果捕获流程。
主要功能
- 01委派给指定的 CLI 和模型
- 02创建任务简报并在后台启动
- 03处理使用限制及恢复运行
- 04检查 CLI 健康状态和登录
- 05捕获报告与会话信息
适用场景
- 01将有限任务交给指定 CLI
- 02检查 CLI 安装和登录状态
- 03在已知使用限制后恢复运行
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ realspqrk/ harness-subagent --skill harness-subagent安装后在 Claude Code 中输入/harness-subagent确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
.gitattributes.gitignoreLICENSEREADME.mdevals/evals.jsonreferences/models.mdscripts/health.shregistry.jsonharness_registry.pysession_capture.pyspawn.shtests/hello_world.shlib.shspawn_test.sh详细介绍
Harness 子 Agent
你是父级。子 CLI 会完成一项范围明确的任务并返回报告。你负责判断报告是否可信。子级不是预言机。
宿主决定使用哪个 CLI、哪个模型以及投入多少精力。此技能不会对任务排序或选择角色。
委派
- 从用户处获取 CLI 和模型。口头名称见 references/models.md。如果用户两者都没指定,只询问一次。除非用户在本轮指定,否则不要启动你自己的 CLI 系列。Cursor、cursor-agent 和 Grok Bot 属于
cursor系列。Grok Build 属于grok。Claude Code 属于claude。Codex 属于codex。Antigravity 属于agy。 - 当任务规模大到厂商默认值可能不合适时,根据 references/models.md 中的表格选择
--effort。省略--effort可使用 CLI 默认值。价格按 token 计费。投入越多,同等费率下消耗的 token 越多。 - 在新的临时运行目录中编写
brief.md。使用下面的格式。 - 在后台运行
scripts/spawn.sh。在 Windows 上,将脚本路径作为参数传给 Git Bash。不要把 brief 放进 PowerShell 双引号字符串中。将brief.md写为 UTF-8。 - 等待该进程退出。读取
report.md或last.md、capture-status.txt以及退出代码。 - 说明你认同哪些内容、不认同哪些内容,以及你将采取什么行动。不要把报告原样作为完整答复。
& "$env:ProgramFiles\Git\bin\bash.exe" -- "<skill-dir>\scripts\spawn.sh" --backend codex --model Astra --effort high --project "D:/Code/app" --run "C:/Users/<you>/AppData/Local/Temp/harness-subagent/<id>"
如果模型名称只对应一个 CLI,可以省略 --backend。--resume-id 可继续同一个子级。不要使用 --continue 或 --last。
子级不得委派任务。spawn.sh 会设置 HARNESS_SUBAGENT_RUN,并拒绝再次启动。
Brief
# YOU ARE THE WORKER. DO NOT SPAWN.
Do not load harness-subagent. Do not run scripts/spawn.sh.
## Task
One sentence.
## Where to look
Paths, commands, and exclusions.
## Already tried
## Done when
写明路径。不要粘贴仓库内容。spawn.sh 会追加 report.md 的路径。子级会在退出前写入该文件。第一行是 VERDICT,后接结果。
不能指望 Grok 读取临时运行目录。spawn.sh 会在该次启动时将提示词复制到项目中,并在退出时删除副本。
子级遇到限制时
spawn.sh 会读取 CLI 文本以获取重置时间。
- 已知重置时间且在 24 小时内。脚本会等待,然后恢复同一会话一次。Claude Code 自带的自动继续功能不会等待超过 24 小时(文档查阅于 2026-09-22)。此技能将该时限用于所有 CLI。
- 没有重置时间、重置时间更晚、出现信用额度或消费限制消息,或再次遇到限制时,脚本会停止。随之停止。告知用户相关证据以及时间(如有)。等待指示。不要切换 CLI 或模型。不要臆造重置时间。
健康状态
scripts/health.sh 会为每个 CLI 打印一行。列分别为名称、版本、登录状态、更新。--update 会运行各厂商的更新命令。当所有已安装且支持登录检查的 CLI 均已登录时,退出代码为 0。缺少 CLI 时,该行显示失败。broken 表示二进制文件位于 PATH 中,但版本检查失败。登录检查失败时会重试一次,因为 grok 在 token 过期后首次调用时会报告未登录,同时在后台刷新。
| CLI | 登录检查 | 更新 |
|---|---|---|
| claude | claude auth status | claude update |
| codex | codex login status | codex update |
| grok | grok models 必须显示已登录 | grok update |
| agy | 无登录命令 | agy update |
| cursor-agent | cursor-agent status | cursor-agent update |
捕获
spawn.sh 会写入 last.md、capture-status.txt(ok、ok-report、usage-limit 或 no-verdict)和 session.json。包含 VERDICT 的报告优先于最终 stdout,因为 Claude 的最后一条消息只是最后一轮的内容。ok 表示已捕获文本,并不表示任务已成功。退出码为 0 且状态为 no-verdict 不代表成功。在 Windows 上,运行目录会以 C:/...(cygpath -m)的形式传给子进程,而不会使用 Git Bash 的 /tmp/...;原生 CLI 会将后者读取为 <drive>:\tmp。
恢复运行需要该次运行的会话 ID。将 session-id 和 session.json 复制到新的运行目录,写一份简短的续接说明 brief.md,并传入 --resume-id。自动等待路径会自行执行一次此操作。