目标驱动的自主迭代 Skill——制定一个可量化的标准,由 Agent 无人值守地反复迭代、自评、剪枝、探索、验证,逐轮逼近,直到达成目标。
名字取自皮格马利翁神话里的少女像 Galatea——工匠依照心中的理想反复打磨象牙像,直到她足够完美。
让 Agent 对一个开放/主观目标长时间自动跑,最大的坑不是模型不够强,而是没有合格的裁判:当 Agent 既当运动员又当裁判,它会倾向于宣告虚假进展来满足循环,越跑越偏(经典的自主 agent 漂移)。
Galatea 把 Agent 对用户的依赖压缩到一开始的任务目标制定,锁定目标后,就启动多 Agent 自主探索、优化、评估、对抗验证,直到达成目标。
- 两阶段:Phase 0 与你共创并冻结 rubric;Phase 1 无人值守循环,只读这份冻结标准。
- 裁判与执行分离:每轮由一个独立裁判 agent 按 rubric 打分,做改动的 agent 不给自己打分,杜绝放水。
- 每轮全新上下文 + 落盘记忆:循环由外层引擎重启进程(fresh context,抗上下文污染),跨轮记忆全靠磁盘上的
state.md/log.md。 - 不打断:需要决策的写入
pending.md继续,绝不挂起等人。 - 四个旋钮:自主度(只提案 / 客观自改 / 全自动)、影响边界(禁碰的目录与操作)、运行配置(由用户显式指定后端 / 模型模式 / flags;模型模式可选默认模型或显式模型,不自动推断)、收敛后行为(停 / 精修 / 转目标)。
- 停滞熔断:连续多轮无进展(无新 commit)自动停机,防止空转烧光预算。
- 关键事件通知:收敛 / 需你决策 / 熔断 / 连续失败时,通过你配置的通道(如邮件)主动通知——无人值守也不脱节。
- rubric 冻结前质量自检:烂标准 = 烂裁判 = 整轮白烧,所以冻结前先过一遍 rubric 自身的质量清单。
- 分级对抗机制:高风险节点(判达标 / 宣告收敛 / 卡死)才升级多 sub-agent 对抗——验收用 Prosecutor 红队 vs Defender 仲裁防假进展,规划用 2 Planner 互挑刺防钻牛角尖;普通小步轮次保持轻量,不烧冤枉钱。
- 资源最大化 + 安全红线:鼓励充分调动算力(并行子 agent)、已装 skill、MCP、工具,不重复造轮子;同时设一条凌驾一切的环境安全红线——无人值守 + 跳过权限下,绝不做破坏性 / 不可逆 / 越界 / 外发操作,拿不准就交还用户。
- 运行总览:任何方式结束(收敛 / 熔断 / 轮数耗尽 / 失败)后自动生成
run-report.md(markdown 流程视角总览:任务流转图 + 逐轮状态变化 + rubric 状态流转 + 关键决策),无人值守跑完一张流转图看清全程。
适用:有目标、能定义「合格」、可迭代有反馈的任务——把一批文档优化到符合规范、把模块测试全部跑绿、产出一份覆盖到位的调研报告、定位并修掉一个可复现 bug、把一份方案迭代到能支撑决策。
不适用:一次性小改;标准根本写不出来的纯主观任务(审美/文风,应改用「生成 N 个变体让人挑」);高破坏性不可回退的操作。
把下面对应的一段话复制给你的 Agent,它会自动克隆并装好这个 skill:
Claude Code:
帮我安装 Galatea skill:把 https://github.com/hesorchen/galatea.git 克隆到
~/.claude/skills/galatea,完成后提醒我重启会话即可调用。
Codex:
帮我安装 Galatea skill:把 https://github.com/hesorchen/galatea.git 克隆到
~/.codex/skills/galatea,完成后提醒我重启会话即可调用。
Claude Code 手动安装:
git clone https://github.com/hesorchen/galatea.git ~/.claude/skills/galateaCodex 手动安装:
git clone https://github.com/hesorchen/galatea.git ~/.codex/skills/galatea装完重启会话(skill 列表在启动时扫描目录),之后说「galatea」或直接描述一个目标即可触发。
-
发起调用并说明目标。
-
Phase 0:Skill 会为本目标新建一个 git 管理的专属任务目录,然后和你一起把目标拆成可裁判的 rubric,确认并冻结,生成单轮指令
iterate-prompt.md。(若目标是改造已有仓库,则在该仓库内工作。) -
Phase 1:用 Phase 0 生成的
galatea-run.sh启动无人值守循环(建议跑在常驻环境 / tmux 里,断连不影响)。这个脚本会固化你显式选择的后端、模型模式、flags 与 PATH 修正;不要依赖引擎自动猜。模型模式有两种:
default:不传--model,使用claude/codexCLI 当前配置的默认模型,适合不知道可用模型列表时使用。explicit:在 flags 中追加--model <模型名>,适合已经知道要固定哪个模型时使用。
Codex 默认模型示例:
export GALATEA_AGENT_BACKEND=codex export GALATEA_CODEX_FLAGS='--dangerously-bypass-approvals-and-sandbox' bash engine/loop.sh <目标专属目录> [最大轮数]
Codex 显式模型示例:
export GALATEA_AGENT_BACKEND=codex export GALATEA_CODEX_FLAGS='--dangerously-bypass-approvals-and-sandbox --model gpt-5.5' bash engine/loop.sh <目标专属目录> [最大轮数]
Claude Code 默认模型示例:
export GALATEA_AGENT_BACKEND=claude export GALATEA_CLAUDE_FLAGS='--dangerously-skip-permissions' bash engine/loop.sh <目标专属目录> [最大轮数]
Claude Code 显式模型示例:
export GALATEA_AGENT_BACKEND=claude export GALATEA_CLAUDE_FLAGS='--dangerously-skip-permissions --model claude-opus-4-8' bash engine/loop.sh <目标专属目录> [最大轮数]
如果后端命令不在默认
PATH,把用户指定的export PATH=...:$PATH写进galatea-run.sh。引擎会反复以全新上下文执行单轮指令;撞用量上限自动指数退避,连续多轮无进展自动熔断停机,收敛后自动退出。每轮输出落<目标专属目录>/logs/便于复盘。 关键事件通知:设环境变量GALATEA_NOTIFY_CMD指向你的通知命令即可(见engine/notify.sh内的邮件示例)。
- 无人值守循环依赖跳过交互式确认:Claude 默认用
--dangerously-skip-permissions,Codex 默认用codex exec --dangerously-bypass-approvals-and-sandbox。务必先在 Phase 0 划清影响边界(禁 push / 禁删 / 禁碰的目录),并在隔离环境中运行。 - 默认每轮通过的改动会
git commit作为 checkpoint,跑坏了可回退。
galatea/
├─ SKILL.md # 核心:Phase 0 共创协议 + Phase 1 循环规范 + 行为约束
├─ engine/
│ ├─ loop.sh # 外层循环引擎(fresh context 重启 + 用量退避 + 收敛退出)
│ ├─ circuit_breaker.sh # 停滞熔断:连续多轮无进展自动停机
│ └─ notify.sh # 关键事件通知(GALATEA_NOTIFY_CMD,内含邮件示例)
├─ templates/ # 各产出文件的初始模板
│ ├─ rubric.template.md # 可裁判标准(Phase 0 冻结)
│ ├─ iterate-prompt.template.md # 单轮指令(Phase 1 反复执行)
│ ├─ finalize-prompt.template.md # 收敛后收尾指令
│ ├─ galatea-run.template.sh # 启动脚本(固化后端 / 模型模式 / flags)
│ ├─ state.template.md # 跨轮记忆:当前状态
│ ├─ log.template.md # 跨轮记忆:逐轮日志
│ ├─ pending.template.md # 需你决策的事项
│ ├─ run-report.template.md # 运行总览报告
│ └─ gitignore.template # 任务目录的 .gitignore
├─ README.md
├─ README.en.md # 英文版
└─ LICENSE
v1.0.0。欢迎 issue / PR。
MIT