让 Claude Code 24小时自主运行的最稳定方案。
┌────────────────────────────────────────────────────────────┐
│ Orchestrator │
│ (轻量级调度器,永远不会崩溃) │
│ • 健康检查 • 成本监控 • 智能终止 │
├────────────────────────────────────────────────────────────┤
│ Memory Layer │
│ (Markdown 文件,跨会话共享) │
│ TASKS.md → CONTEXT.md → DONE.md │
├────────────────────────────────────────────────────────────┤
│ Worker (Claude CLI) │
│ (单次任务后退出) │
│ Claude Code + --dangerously-skip-permissions │
└────────────────────────────────────────────────────────────┘
# 如果还没登录,先运行一次
claude项目目录需要包含 memory/、workspace/、logs/,Orchestrator 会自动创建:
project/
├── memory/
├── workspace/
└── logs/
vim project/memory/TASKS.md添加你的任务:
## 高优先级
- [ ] 为 src/auth.ts 添加单元测试
- [ ] 修复登录页面的类型错误
## 中优先级
- [ ] 重构 UserService 类vim project/memory/CONTEXT.md描述你的项目,帮助 Claude 理解背景。
chmod +x run.sh
./run.sh 100 50 8 /path/to/project./run.sh # 默认: 100 次, $50, 8 小时, 项目目录为当前目录
./run.sh 10 5 2 /path/to/project
# 也可直接运行二进制
./orchestrator --dir /path/to/project --max-iterations 10 --max-cost 5 --max-duration 2在项目目录放置 config.yaml(可选):
# 安全限制
max_iterations: 100 # 最大迭代次数
max_cost_usd: 50.0 # 最大成本 (美元)
max_duration: 8h # 最大运行时长 (Go duration)
consecutive_no_progress: 3 # 连续无进展后停止
stop_when_empty: true # 任务为空时停止
# 执行配置
cooldown_duration: 10s # 迭代间隔
worker_timeout: 30m # 单次 worker 超时
# 进展检测
use_git_detection: true # 基于 workspace 的 Git 变化检测autonomous-runner/
├── cmd/orchestrator/ # 主入口
├── internal/ # 核心逻辑
├── run.sh # 启动脚本
└── (project dir) # 运行时项目目录
├── memory/ # 外部记忆(Claude 读写)
├── workspace/ # 工作目录(代码在这里)
└── logs/ # 运行日志
| 设计决策 | 解决的问题 |
|---|---|
| Worker 短命 | Context window 永不耗尽 |
| 进程短命 | Context window 永不耗尽 |
| Markdown 记忆 | 人可读、可编辑、可版本控制 |
| 多重终止条件 | 防止无限循环和成本失控 |
| 无进展检测 | 防止重复劳动 |
Orchestrator 启动
↓
┌→ 检查是否继续 (成本/时间/迭代/任务)
│ ↓ (继续)
│ 启动 Worker (Claude CLI)
│ ↓
│ Worker 读取 TASKS.md + CONTEXT.md
│ ↓
│ Worker 执行任务
│ ↓
│ Worker 更新 .md 文件
│ ↓
│ Worker 退出
│ ↓
│ Orchestrator 检测进展
│ ↓
│ 冷却等待
│ ↓
└──────────────────┘
↓ (停止)
打印摘要,退出
# 方式1: 克隆到 workspace
git clone https://github.com/your/repo /path/to/project/workspace
# 方式2: 软链接已有项目
ln -s /path/to/your/project /path/to/project/workspace# 使用 tmux
tmux new -s claude
./run.sh 100 50 8 /path/to/project
# Ctrl+B, D 分离
# 使用 nohup
nohup ./run.sh 100 50 8 /path/to/project > /dev/null 2>&1 &# 实时查看日志
tail -f logs/orchestrator_*.log
# 查看状态
tail -f /path/to/project/logs/orchestrator_*.log- 成本限制:
max_cost_usd硬限制 API 支出 - 时间限制:
max_duration防止无限运行 - 无进展检测:连续无变化自动停止
- 优雅退出:Ctrl+C 会完成当前任务后停止
- 权限提示:使用
--dangerously-skip-permissions,建议在受控目录运行
# 查看完成历史
cat memory/DONE.md
# 查看日志
tail -100 logs/orchestrator_*.log- 直接编辑
memory/TASKS.md添加紧急任务 - 下一次迭代 Claude 会看到新任务
目前通过 Claude Code 的 JSON 输出解析成本。如果解析失败,建议监控 Anthropic 控制台。
可以,默认开启 use_git_detection: true,会检测 workspace/ 内的变更。
MIT