Skip to content

Latest commit

 

History

96 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Pi × EvoX Lab — 给编码智能体装上「经验继承」闭环

License: MIT Node Pi 0.74.2 / Evolver 2.0.30 Upstream issues

Turn one agent's failures into the next run's head start — measured, not vibes.

一个把 Pi(极简编码智能体)的任务执行轨迹接入 Evolver(GEP 自进化引擎)、并通过受控实验量化「经验继承收益」的完整 Harness 与实证报告。

一句话结论:在确定性陷阱任务上,把「已验证修法」注入下一轮 system prompt,可复现地带来 token -55.3%(扣除重复执行基线后净收益约 -30pp)陷阱特异错误 11→4;该结论跨陷阱类别(编码/数据格式)与跨模型(agnes-2.5-flash / deepseek-v4-flash)复现。


为什么值得看

Agent 自进化(self-evolving agents)领域概念多、实证少。本项目不做概念堆叠,而是用受控实验回答三个问题:

  1. 继承真的有效吗? —— 有效,但前提苛刻(见结论 3)。
  2. 瓶颈在哪? —— 不在链路,在两处隐蔽缺口(见结论 1、2)。
  3. 怎么把它变成机制保证而非运气? —— 守卫 + LLM 重写(见结论 5)。

五条实证方法论结论(摘要)

  1. 注入通道可能只传标签不传修法——自建策略注入层是闭环生效的前提;
  2. 可靠陷阱必须是「环境必然失败」(而非「模型可能犯错」);
  3. 注入内容质量是决定变量——只注入标签比不注入更差(+36pp);
  4. token 指标必须配对解读(重复执行基线 ≈ -22%);
  5. 守卫把继承从「运气」变「机制」

完整论证、数据与逐条出处见 SKILL.mddocs/experiment-report.md(避免两处维护重复内容)。

关键实验数据

同一 GBK 陷阱(无效 UTF-8 字节)、同一模型(agnes-2.5-flash)、同任务,注入通道为唯一变量:

注入通道 N 陷阱错误 R1→R2 token Δ 均值
只注入标签(官方默认行为) 5 4→6(无收益) +13.8%
策略注入(本项目) 5 11→4 -55.3%
策略注入(Pi 原生扩展钩子) 3 受蒸馏质量方差影响 守卫后与 CLI 等价

跨陷阱与跨模型复现见报告 §17/§18:非法 JSON 陷阱 14→3(3/3 避坑)、deepseek-v4-flash 9→5(3/3 方向性避坑)。

仓库结构

├── SKILL.md                 # Agent Skill 封装(一句话跑闭环实验)
├── code/
│   ├── pi_evolve.mjs        # 一站式闭环编排器(Pi R1 → 适配 → 蒸馏 → 审核 → 策略注入 → Pi R2)
│   ├── pi_session_adapter.js# Pi session v3 → generic-chat transcript 适配器(含 is_error 契约修复)
│   ├── evolver-bridge.ts    # Pi 原生扩展:before_agent_start 动态注入已审核修法(含质量守卫)
│   └── sum_tokens.js        # session token/工具调用/错误数聚合
├── traps/                   # 确定性陷阱生成器(含一个「失败陷阱」样本作反面教材)
├── examples/                # 任务文本样例
└── docs/
    ├── experiment-report.md # 21 节完整实测报告(含每一步的失败与排查)
    └── adapter-design.md    # 适配器设计草案 + Pi Extensions API 预研

运维与度量:本仓库在 code/ 下附带 3 个零依赖运维脚本(metrics_collect.mjs / distill_sessions.mjs / evox-weekly.sh)与周常 cron 接线,用于观测「经验继承」是否真正生效。详见 SKILL.md 的「运维与度量」小节

快速开始

依赖:Node ≥ 22(召回/沉淀零 npm 依赖);流程 C 实验另需一个 OpenAI 兼容 LLM key、Pi CLI(随 npm install 可选安装)与 Python 3(陷阱生成器)。

# 0.(可选)安装上游依赖——仅流程 C 实验(Pi CLI)或启用 evolver 集成时需要;A/B 流程可跳过
npm install   # 即 @earendil-works/pi-coding-agent@0.74.2 + @evomap/evolver@2.0.30

# 1. 生成确定性陷阱 fixture(无效 UTF-8 字节)
python traps/make_encoding_trap.py

# 2. 一条命令跑完整闭环(R1 踩坑 → 内置引擎蒸馏 → 审核 → 修法注入 → R2 避坑 → 跨轮对比)
export AGNES_CN_API_KEY="<your-key>"   # 你的 OpenAI 兼容 key
# (可选)LLM 精修端点——未配置时 --llm-refine 自动禁用(外发必须显式授权)
export EVOLVER_REFINE_URL="https://<你的端点>/v1/chat/completions" EVOLVER_REFINE_MODEL="<model>"
node code/pi_evolve.mjs <含陷阱data的模板目录> <任务文本文件> \
    --provider agnes-cn --model agnes-2.5-flash \
    --api-key "$AGNES_CN_API_KEY" --rounds 2 --fresh --auto-approve --llm-refine

关键开关:--fresh(备份并清空资产库,保证单变量)、--auto-approve(跳过人工审核门,默认保留人工审核)、--llm-refine(蒸馏摘录无修法信号时自动 LLM 重写)、--ext-inject(改用 Pi 原生扩展钩子注入)。

FAQ

常见问题(空库、$ENV 插值、--fresh 恢复、国内镜像、Node 版本)见 SKILL.md 的 FAQ 节

引用与文档

  • 其他 Agent 宿主接入指南:docs/other-agents.md(Claude Code / IDE / 自建智能体的注入模式)

  • 完整实验过程(包括踩过的坑:注入缺口、BOM 陷阱失效、蒸馏质量方差、官方 cycle 路线 fail-closed):docs/experiment-report.md

  • Pi Extensions API 预研与适配器设计:docs/adapter-design.md

立足于两个上游项目(Acknowledgements)

本项目不是 Pi 或 Evolver 的一部分,也不代表其官方观点——它是一个独立的研究 Harness,站在两个优秀开源项目的肩膀上:

上游项目 在本研究中的角色
pi-coding-agent(Pi, 0.74.2) 被测的极简编码智能体。任务执行、session v3 格式、before_agent_start 扩展钩子均来自 Pi;其包内 docs/extensions.md 是本机权威资料。
@evomap/evolver(Evolver, 2.0.30) GEP(Genome Evolution Protocol)自进化引擎:Gene/Capsule/EvolutionEvent 资产模型、ingest --distill → review → inject 链路、fail-closed 审核治理。感谢其严格的治理设计,使"发现缺口"成为可能。

本研究回馈给上游的缺口清单(均已提交为官方 issue,详见报告对应章节):

  1. evolver inject session-start 只输出基因 summary 标签,不携带可执行的 strategy 字段——修法无法抵达下一轮(§16.1)→ EvoMap/evolver#624
  2. auto-distill 的 strategy 摘录偏向 session 末尾成功叙述,且在关键信息处截断,质量随错误密度波动(§20.3)→ EvoMap/evolver#625
  3. evolver cycle 的 execute/verify 对全部 runtime fail-closed(设计内),Pi 不在 runner 白名单(§19)→ EvoMap/evolver#627
  4. 适配器契约缺口:generic-chat transcript 需显式 is_error 标志才能产生 strong 信号(§13,已在本仓库 adapter 中修复)→ EvoMap/evolver#626
  5. pi 侧编排 DX 两则:models.json $ENV 插值不生效(401 字面量)+ ./package.json 未导出 → earendil-works/pi#9258

如果本研究对你的工作有帮助,也请给上面两个上游项目点 star——它们是真正的主角。

项目状态(2026-09-14)

状态
当前版本 0.13.1(版本轨迹:0.3.0 首发 → 0.13.1,共 15 个发布)
引擎 默认内置 light 引擎(零 npm 依赖,MIT);evolver 为可选集成
ClawHub moderation clean;clawscan 剩余 findings 均为功能固有(已文档化)
skillhub TRACE「优秀」;科恩实验室 benign;云鼎剩余 1 项动态检测(密钥形态值出现在运行输出——LLM 工具普遍特征,已做全局输出脱敏,详见安全文档)
上游 4+1 项缺口已提交官方 issue(evolver #624-#627、pi #9258);核心运行时不依赖其回应

许可提示

本包为 MIT 全栈(默认后端是内置 light 引擎,零外部依赖)。@evomap/evolver(GPL-3.0-or-later)为可选集成,仅在你主动安装并使用 --engine evolver 时涉及。pi-coding-agent 为 MIT,仅流程 C 实验需要。

License

MIT — 见 LICENSE。实验基于 pi-coding-agent 与 @evomap/evolver,其各自许可适用于对应组件;本仓库代码与文档仅覆盖本研究原创部分。

About

Closed-loop experience inheritance between the Pi coding agent and the Evolver (GEP) engine — controlled experiments, harness, and full measurement report.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages