Harness 长时任务代理框架
让代理任务跨多个会话持续运行:自动存档进度、恢复中断、回滚失败并按依赖顺序调度子任务。
无红线风险:无网络外传、无凭证读取,钩子均有 .harness-active 标记门控且退出码安全。但扣分点在于:git reset --hard + git clean -fd 回滚会销毁未提交工作,未要求用户显式确认;/harness init 询问 .gitignore 仅是事后提示;发布者身份未经验证,溯源仅一句 'Synthesized from Anthropic and OpenAI engineering practices' 无法核实。权限范围总体克制(本地文件+git),故给中等分。
脚本自洽性较好:锁协议处理陈旧锁与 PID 存活检查,原子写入含 .bak 备份,停止钩子有 MAX_CONSECUTIVE_BLOCKS 防无限循环。但扣分:仓库内未提交覆盖关键路径的测试套件;harness-init.sh 示例用 '|| true' 吞错(npm install 失败静默通过); Recovery Protocol 决策矩阵对 checkpoint 与文件状态不一致的情形仍依赖代理自行判断,行为有不确定性。静态上限为10。
触发描述较清晰(/harness 命令、多会话持久化场景),并发/独占模式边界、工具依赖(Bash/git)已声明。扣分:未说明不适用范围(如非 git 项目直接不适用,需更早声明);核心场景完全绑定 Claude Code hooks 生态,钩子配置文件指向 self-reflect-stop.py 但该文件未在证据中出现,存在缺失依赖的疑点;中文提示已部分覆盖(stop 钩子输出中文),但文档无中文版本。
SKILL.md 结构良好、渐进披露合理(原则→协议→错误表→恢复矩阵),错误分类与日志格式标准化。扣分:无独立版本号或 changelog 跟踪此技能;'Synthesized from Anthropic and OpenAI engineering practices' 属未注明的二手来源;维护责任与更新路径仅隐含于仓库层面;hooks. 引用 self-reflect-stop.py 未在证据文件中给出,安装完整性存疑。
协议设计针对真实痛点(上下文窗口丢失、过早宣告完成),双文件持久化+回滚方案直接可用,边际价值明确。扣分:静态审阅无法验证任何实际执行结果;hook 强制继续机制依赖代理对长协议的忠实遵循,实际效果未经证实;无代表性输出样例可核。
可审计一手材料充分:SKILL.md 伪代码与 Python 钩子实现相互印证,锁/原子写/租约逻辑可交叉核对。扣分:无已提交测试、无 CI 覆盖证据、无第三方运行验证;'Anthropic/OpenAI 工程实践' 来源无法追溯;静态上限为5,覆盖率有限故低于上限。
- 回滚策略会执行 git reset --hard 与 git clean -fd,将销毁未提交的工作和未跟踪文件;在使用前请确保工作区已提交或已备份。
- 使用该技能前应完整审查 hooks 配置;钩子会阻止代理停止,可能消耗较多 token 与时间,注意设置 max_tasks_per_session 与 max_sessions 上限。
- hooks. 引用了 self-reflect-stop.py,但该文件未在本次评估材料中出现,安装前请核实钩子文件完整性。
- 发布者未经 FollowSkills 企业注册表验证;'源自 Anthropic/OpenAI 工程实践' 的说法无法核实,属作者自述。
- 完全依赖 Claude Code hooks 生态及 Bash/git,非 git 项目不适用。
这个 Skill 能做什么,适合哪些场景?
Harness 是 stellarlinkco/myclaude 仓库中的一个技能,提供一套可执行的协议,使任意代理任务能跨越多个会话(乃至上下文窗口重置)连续运行。它通过追加式日志 harness-progress.txt 和结构化状态文件 harness-tasks. 双文件系统持久化进度,会话重启时结合 git 历史和检查点恢复中断任务。任务执行遵循严格的领取—执行—验证—回滚循环,失败时通过 git reset 回滚到任务起始提交。它还内置基于 mkdir 的原子锁实现独占或并发模式,并按优先级和依赖关系自动选择下一个任务。该技能合成自 Anthropic 与 OpenAI 关于长时运行代理的工程实践。
提供 /harness init、/harness run、/harness status、/harness add 四个命令:初始化时创建进度日志、任务 JSON 和可选的 harness-init.sh 环境脚本,并创建 .harness-active 激活标记(任务全部完成后移除)。运行时循环执行:读取最近 200 行日志与完整任务 JSON、检查 git 状态、获取文件锁、检测循环依赖与阻塞传播、按优先级领取任务、执行工作并写检查点、运行 validation.command(带超时)验证、失败时 git reset --hard 回滚到 started_at_commit 并执行 on_failure.cleanup、最后追加 STATS 统计行。日志采用单行 grep 友好格式(INIT/Starting/Completed/ERROR/CHECKPOINT/ROLLBACK/RECOVERY/STATS 等类型),JSON 写入前先备份 .bak 并以 .tmp 原子替换,损坏时从备份恢复。
- 需要一次性处理数十个子任务的开发者,希望上下文窗口用尽后新会话能从检查点无损续跑
- 管理多任务依赖的项目维护者,希望 P0/P1 优先级排序和任务阻塞自动传播,避免手动排期
- 在 CI 式无人值守场景运行的工程师,需要失败任务自动 git 回滚、限定重试次数(默认 3 次)防止反复破坏代码
- 多个代理并行处理的团队,可启用并发模式,通过原子任务认领(claimed_by + 租约时间戳)和独立 worktree 安全分工
- 任务常在中途被中断的用户,依赖恢复决策矩阵根据未提交改动、任务提交和检查点判断是续跑、完成还是回滚标记失败
这个 Skill 有哪些优点和局限?
- 进度持久化设计完善:双文件系统 + .bak 备份 + 原子写入 + JSON 损坏恢复路径
- 失败处理严谨:回滚前验证提交存在、限定重试次数、七类错误各有明确的默认恢复策略
- 并发模式通过 mkdir 原子锁、任务认领租约和陈旧锁回收实现,跨 macOS/Linux 可移植
- 所有输出格式统一且可 grep,便于人工审计会话历史和错误
- 任务必须有非空 validation.command,否则直接 STOP——对验证方式不明确的任务使用成本较高
- 并发模式强制要求隔离的 git worktree 或独立克隆,同一工作目录跑两个 worker 会互相破坏回滚
- 回滚使用 git reset --hard 和 git clean -fd,未提交或未跟踪的无关文件会被清除
- README 未单独文档化 harness 技能的安装入口,也未见独立测试套件验证该协议
如何安装这个 Skill?
该技能属于 stellarlinkco/myclaude 技能集,仓库路径为 skills/harness/SKILL.md。可通过 npx github:stellarlinkco/myclaude --list 查看可安装项并使用 npx github:stellarlinkco/myclaude 交互安装到 ~/.claude。注意:README 列出的技能清单中未单独提及 harness,其确切安装入口未在文档中说明;安装后技能文件应位于技能目录(如 ~/.claude/skills/)下的 harness 文件夹。
如何使用这个 Skill?
在项目根目录触发 /harness init <project-path> 初始化(会询问是否将 harness 文件加入 .gitignore);用 /harness add "任务描述" 添加任务(可交互补充 priority、depends_on、validation.command 等字段——任务必须有验证命令才能标记完成);然后执行 /harness run 启动或恢复无限循环,/harness status 查看进度摘要、各任务状态和最近 5 行日志。会话开始时若发现 in_progress 任务会自动走恢复协议。