关于 autonomous-skill
autonomous-skill 通过多个 Claude Code 会话执行复杂任务,提供无头与会话内模式,以及结构化或轻量迭代。它适用于需要跟踪进度和明确完成条件的长期或多阶段工作。
主要功能
- 01无头与 Hook 执行模式
- 02结构化与轻量策略
- 03会话进度日志
- 04承诺标记与清单完成检测
- 05会话、预算和模型限制
适用场景
- 01执行多阶段应用构建
- 02迭代修复失败测试或重构
- 03继续无人值守的后台任务
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ feiskyer/ claude-code-settings --skill autonomous-skill安装后在 Claude Code 中输入/autonomous-skill确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
hooks/hooks.jsonstop-hook.shscripts/run-session.shsetup-loop.shtemplates/executor-prompt.mdinitializer-prompt.mdtask-list-template.md详细介绍
自主技能 - 多会话任务执行
跨多个 Claude Code 会话执行复杂任务,并支持自动续接、进度跟踪和两种完成机制(承诺标签 + 复选框计数)。
两种执行模式
无头模式(默认)
在 bash 循环中启动 claude -p 子会话。最适合后台或无人值守工作。
bash <skill-dir>/scripts/run-session.sh "Build a REST API" --max-sessions 10
Hook 模式(会话内)
使用 Stop hook 拦截会话退出,并将提示词重新传入。在当前交互式会话中运行,不会出现嵌套问题。
bash <skill-dir>/scripts/setup-loop.sh "Build a REST API" --max-iterations 10
两种任务策略
结构化(默认)
完整拆解任务:Initializer 创建包含分阶段子任务的 task_list.md,Executor 逐一领取并完成任务。最适合复杂的多阶段项目。
bash <skill-dir>/scripts/run-session.sh "Build a REST API for todo app"
轻量级(--lightweight)
Ralph 式迭代:每个会话重复使用相同的提示词,不拆解任务。最适合成功标准明确的迭代任务(TDD、修复错误、重构)。
bash <skill-dir>/scripts/run-session.sh "Fix all failing tests in src/" --lightweight
完成检测
两种互补机制——任一机制先触发即视为完成:
-
承诺标签(两种模式均适用):任务确实完成时,Agent 会输出
<promise>DONE</promise>。默认承诺内容为DONE;可使用--completion-promise自定义。系统会指示 Agent 仅在工作真正完成时输出承诺,不得借此逃出循环。 -
复选框计数(仅结构化模式):
task_list.md中所有[ ]项均已标记为[x]。
目录布局
project-root/
├── .autonomous/
│ └── <task-name>/
│ ├── task_list.md # Master checklist (structured mode)
│ ├── progress.md # Per-session progress log
│ ├── .mode # "structured" or "lightweight"
│ ├── sessions/ # Transcript logs per session
│ │ ├── session-001.log
│ │ └── session-002.log
│ └── run.lock # Prevents concurrent runs
└── .claude/
└── autonomous-loop.local.md # Hook mode state (when active)
无头模式 — CLI 参考
bash <skill-dir>/scripts/run-session.sh "task description" [OPTIONS]
| 标志 | 说明 | 默认值 |
|---|---|---|
--lightweight | Ralph 式迭代(不拆解任务) | structured |
--task-name <name> | 显式指定任务名称 | 自动生成 |
--continue, -c | 继续最近的任务或指定名称的任务 | — |
--list, -l | 列出所有任务及其进度 | — |
--completion-promise TEXT | 完成时使用的承诺短语 | DONE |
--max-sessions N | 达到 N 个会话后停止 | 不限 |
--max-budget N.NN | 每个会话的美元预算 | 5.00 |
--model <model> | 模型别名或完整名称 | sonnet |
--fallback-model <m> | 主模型过载时使用的备用模型 | — |
--effort <level> | 思考力度(low/medium/high) | high |
--no-auto-continue | 仅运行一个会话 | — |
--permission-mode <m> | 权限模式 | auto |
--add-dir <dirs> | 额外允许访问的目录 | — |
Hook 模式 — 设置
用于会话内循环(不启动子进程):
bash <skill-dir>/scripts/setup-loop.sh "task description" [OPTIONS]
| 标志 | 说明 | 默认值 |
|---|---|---|
--mode structured|lightweight | 任务策略 | structured |
--max-iterations N | 最大循环迭代次数 | 不限 |
--completion-promise TEXT | 承诺短语 | DONE |
--task-name NAME | 显式指定任务名称 | 自动生成 |
Hook 已在 hooks/hooks.json 中注册。启用后,Stop hook 会读取
.claude/autonomous-loop.local.md,并阻止退出,直到检测到承诺或达到最大迭代次数。
取消正在运行的 Hook 模式循环:rm .claude/autonomous-loop.local.md
工作流详情
结构化模式
- Initializer Agent — 分析任务、创建分阶段的
task_list.md,并开始工作 - Executor Agent — 读取任务列表和进度、验证之前的工作,并完成下一个任务
- 自动续接 — 检查承诺标签和复选框;如果尚未完成,则启动下一个会话
轻量级模式
- 每次迭代都传入相同的提示词
- Agent 可通过文件和 git 历史查看之前的工作
- 持续迭代,直到工作完成并输出承诺标签
- 不使用 task_list.md——完成状态完全由承诺标签决定
如何选择
| 场景 | 策略 | 模式 |
|---|---|---|
| 构建完整应用 | 结构化 | 无头 |
| 修复所有失败的测试 | 轻量级 | 任一 |
| 重构模块 | 轻量级 | 任一 |
| 多阶段项目 | 结构化 | 无头 |
| 快速迭代修复 | 轻量级 | Hook |
| 通宵批量处理 | 结构化 | 无头 |
重要约束
- task_list.md 中的完成项只能追加:只将
[ ]改为[x] - 每个任务只运行一个实例:锁文件可防止同一任务同时运行多个会话
- 项目文件留在项目根目录中:
.autonomous/仅用于跟踪 - 承诺必须真实可靠:只有在真正完成后,Agent 才能输出
<promise>DONE</promise> - 关注成本:每个会话的默认预算为 $5。使用
--max-budget调整
故障排除
| 问题 | 解决方案 |
|---|---|
| "Lock file exists" | 上次运行崩溃了。删除 .autonomous/<task>/run.lock |
| 会话持续失败 | 检查 sessions/session-NNN.log 中的错误 |
| 嵌套会话错误 | 脚本会自动取消设置 CLAUDECODE;也可改用钩子模式 |
| 钩子循环无法停止 | 删除 .claude/autonomous-loop.local.md |
| 找不到任务 | 运行 --list 查看可用任务 |
| 想要重新开始 | 删除任务目录,然后重新开始 |
| 成本过高 | 降低 --max-budget,或使用 --model sonnet |