做 Agent 最耗人的环节,从来不是写第一版,而是写完之后没完没了的手动调优:改一版提示词、跑一遍用例、看着准确率上上下下,再改一版。2026 年 8 月 4 日,LlamaFactory 作者郑耀威开源了 PenguinHarness——一个原生支持自进化的 Agent Harness,主打把「构建 → 评测 → 改进」这条链路交给 Agent 自己跑。
先搞懂:Harness 到底是什么?
很多人把 Agent 框架和 Harness 混为一谈,其实分工完全不同。用一句话区分:框架决定 Agent 怎么跑,Harness 决定 Agent 怎么变强。
| 层次 | 负责什么 | 典型代表 |
|---|---|---|
| 大模型 | 推理与生成能力本身 | DeepSeek V4、GPT-5.6 |
| Agent 框架 | 循环、工具调用、记忆编排 | LangGraph、Agents SDK |
| Harness | 构建 + 评测 + 持续改进的外壳 | PenguinHarness |
为什么这件事值得关注?它踩在 2026 年最热的 AI4AI / 递归自我进化(RSI)方向上。田渊栋创立的 Recursive 已验证 Agent 能训练模型、优化 GPU 算子;PenguinHarness 的目标更朴素——把自进化做成开箱即用,不再需要人肉调参。
Step 1:安装并配置模型
PenguinHarness 主打轻量,不依赖重型运行时。官方宣称支持 1000 多种模型,国内用 DeepSeek 成本最低:
# 1. 拉代码
git clone https://github.com/Prism-Shadow/penguin-harness
cd penguin-harness
# 2. 建独立虚拟环境(强烈建议,别污染全局)
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
# 3. 安装
pip install -e .
# 4. 配置模型(写进 .env)
PENGUIN_MODEL=deepseek-chat
PENGUIN_API_KEY=sk-xxxxxxxxxxxxxxxx
PENGUIN_BASE_URL=https://api.deepseek.com/v1
Step 2:让它自动生成第一个 Agent
PenguinHarness 的招牌能力是让 Agent 自动构建另一个 Agent。官方拿来对标 Codex 的经典案例是「生成一个 RAG 应用」,你可以直接复现:
penguin build \
--task "生成一个 RAG 应用,实现分块检索,
流式返回通俗易懂的答案,并带上引用" \
--output ./my-rag-agent
# 运行过程中你会看到:
# [plan] 拆解需求 → 6 个子任务
# [code] 生成检索层 / 生成流式输出层 ...
# [test] 自动跑一遍,失败则回补
# [done] 成本 ¥0.19 耗时 4m12s
Step 3:给 Agent 建一套评测集
这一步是自进化能不能生效的关键。Agent 的「变强」必须有一把尺子,否则模型只是在换着花样重写提示词。评测集不需要很大,20-50 条真实用例就足够:
# eval/cases.jsonl —— 每行一个用例
{"input": "公司差旅报销上限是多少?", "expect_contains": ["800", "住宿"]}
{"input": "上季度华东区营收多少?", "expect_contains": ["营收", "华东"]}
{"input": "今天天气怎么样?", "expect": "拒答并说明超出知识范围"}
# 挂上评测
penguin eval --agent ./my-rag-agent --cases eval/cases.jsonl
新手最容易偷懒的地方:只写「正常能答对」的用例。真正拉开差距的是边界用例——超范围问题该不该拒答、资料冲突时选哪条、用户问得含糊时会不会瞎编。这三类各写几条,评测才有区分度。
Step 4:跑自进化循环
有了尺子,就能开自进化。官方给出的典型效果是:无需手动微调,准确率从 50% 提升到 90%,花费不到一元钱。
penguin evolve \
--agent ./my-rag-agent \
--cases eval/cases.jsonl \
--rounds 5 \
--target 0.9
# 每轮它做四件事:
# 1) 跑评测,找出失败用例
# 2) 归因:是提示词问题?工具描述问题?还是检索策略问题?
# 3) 改一版,只改归因指向的那部分
# 4) 回归测试,退步就回滚
Step 5:看轨迹和成本,别当黑盒
PenguinHarness 内置了轨迹观测与成本对比,这在自进化场景里特别重要——因为循环跑起来后,账单是会自己长的:
penguin trace --run <run_id> # 看完整执行轨迹
penguin cost --run <run_id> # 看这一轮花了多少
# 典型输出
Round 1 acc 52% ¥0.04 ← 初版
Round 2 acc 68% ¥0.05 ← 修了工具描述
Round 3 acc 61% ¥0.05 ← 退步,已回滚
Round 4 acc 84% ¥0.06 ← 改了检索分块
Round 5 acc 91% ¥0.06 ← 达标,停止
务必设预算上限。自进化本质是循环调 API,忘了设 --rounds 或预算阈值,跑一夜的账单能让人清醒。建议第一次只跑 3 轮试水。
Step 6:多 Agent 与并发场景
PenguinHarness 官方定位是全球首个支持多 Agent 自进化的 Harness,同时支持多模态与多用户并发。团队场景下这么用:
# 一次进化一组协作 Agent(各自有各自的评测集)
penguin evolve --team ./team.yaml --rounds 5
# team.yaml 示意
agents:
- name: retriever # 负责检索
cases: eval/retrieve.jsonl
- name: writer # 负责成文
cases: eval/write.jsonl
- name: reviewer # 负责校对
cases: eval/review.jsonl
常见问题速查
| 你遇到的现象 | 大概率原因 & 解决 |
|---|---|
| 进化跑了 5 轮准确率没动 | 评测集太简单,全是能答对的用例,没有区分度 |
| 准确率越跑越低 | 没开回滚,或评测集有互相矛盾的期望值 |
| 成本远超预期 | 忘了设 rounds 上限;换便宜模型跑进化、贵模型跑生产 |
| 生成的 Agent 跑不起来 | 需求描述太抽象,把输入输出格式写具体再重跑 |
| 模型接不上 | base_url 与 Key 不匹配,国内模型注意用兼容 endpoint |