Agent 工程对照
← 返回框架对照

earendil-works

快速演进

Pi

四工具极简内核,其余皆为扩展

极简终端编码 Agent 工具箱:统一多厂商 LLM API、Agent 循环、TUI 与 coding agent CLI。核心只保留 Read / Write / Edit / Bash 四个工具,沙箱与子代理都放在示例扩展里。

语言 / 许可

TypeScript · MIT

跟踪分支

main

跟踪 commit

bfb004d4418f

核实日期

2026-08-24

项目辨析:指 earendil-works/pi(亦见 badlogic/pi-mono);GitHub 上同名的 tibormester/pi-harness 是另一个项目。

核心主张

Harness 的内核应当小到能被完整读懂;隔离与编排交给扩展和运行环境,而不是塞进内核。

单一维护者主导的高频迭代项目,接口仍在变化。

对照列

Pi 在每个设计问题上的选择

周报点名

durable 运行时新增崩溃循环保护:任务被崩溃中断的次数累计到 restartLimit(默认 5)即挂起为 blocked,需 retryTask 重新放行;任务提交新状态时计数清零。另用持久化的 sleeping 状态替代 runtime.sleep,休眠截止时间可跨重启。

原格只描述技能列表的披露方式。durable 包新增 deferred 工具:加载前不提供给模型,由 tool_search 扩展(BM25 排序名称、描述与参数)按需加载,加载只追加在已有工具之后以保住缓存前缀;code mode 段落同样不列出未加载的工具。

durable 包新增可重放的 code mode:脚本在虚拟时钟与固定随机种子下运行,每个工具结果先写日志再交付,重启后按日志重放到断点再继续。原格描述的是 coding-agent 从当前上下文续跑,这是 durable 运行时里另一条恢复路径。

不再是「不支持」:coding-agent 内置独立的 MCP 客户端(stdio 与 streamable HTTP,带 OAuth),服务器来自 mcp.json 或 pi.registerMcpServer(),首次使用时才加载。实现是内置扩展而非内核功能,可被替换。

内核新增通用机制:工具暴露级别、prepareLoadout() 与经过校验和钩子的嵌套调用 ctx.executeTool();codemode、tool_search、MCP 以内置扩展形式提供。「内核不内置 MCP」仍成立,但默认发行版已经带上它。

按需暴露从技能扩展到工具:codemode 描述只列 MCP 服务器名,工具由脚本用 searchTools() 和 describeNamespace() 查询;deferred 级别的工具不进入声明。

系统提示词文本变化和工具可用性变化,从悄悄重写会话起点改为写入 transcript 本身(#9548),恢复会话或切换分支时据此还原当时的运行条件,并在上游支持时保留被缓存的提示词前缀。本格此前描述 Pi 的会话是带 parentId 的树,本周变化说明这棵树的节点不仅记录消息,也记录了运行时配置的时间线。

本格描述的「按线路 compat schema 声明缓存能力」新增一例:Fireworks Messages 线路打开 supportsToolReferences 以启用延迟工具加载。文档同时点明该收益的脆弱处——加载器名必须是 ToolSearch 或 tool_search,否则 Fireworks 会把加载的 schema 并回初始工具前缀,缓存收益消失。

本格此前只记到单文件 harness/skills.ts。本周变更显示 Pi 的按需暴露实际落在 packages/ai 的线路兼容层:延迟工具加载(defer_loading 定义 + tool_reference 加载点)新增 Fireworks Messages 通道,与 Anthropic、OpenAI 并列,且三条线路的原生表示方式各不相同。

内置工具 bash/edit/read/write 的严格采样由实验开关转为默认启用,实验位与对应测试一并移除。

官方来源

相关章节