Skip to content

Pi (earendil-works/pi) — 技术研究

本报告基于 /tmp/pi-snap 受控副本工作树,固定 Snapshot-A = main HEAD 2a9b4ebc680053c64e31f635b0b22d5e22564001,发布日期 2026-08-11。 交叉引用 release v0.84.1 = 53fa77ccd8a279eb87e92294ef3687b03ff80112(2026-08-07)。 当前为「待验证版本」——一切结论须经用户确认后才能晋升为稳定版本、向 Cloudflare 部署。

一、研究对象

Pi (earendil-works/pi) 是一个面向开发者终端的 统一 LLM 编程代理 框架。 它把"和 LLM 对话"封装为"和 coding agent 对话",交付标准化能力:

  • 跨 provider 的统一接口(Anthropic / OpenAI / Google / Bedrock / Azure / Mistral / Codex / OpenAI-compat 等)
  • 内建工具集:read / bash / edit / write / grep / find / ls
  • 扩展点(hook / 扩展 / 技能 / 远程 RPC)
  • Session 持久化 + 模型回放 + thinking level 控制
  • 可审计 telemetry(零依赖 schema)
  • 终端 TUI、JSON 输出、RPC 三种运行模式

二、本次研究目标

# 目标 状态 文档
1 它解决什么问题 核心架构 §1.1
2 当前核心架构与主要调用流程 核心架构 + 调用链
3 最早形成 MVP 的 commit ⏸ 用户决议取消
4 主要历史演进 演进时间线
5 哪些实现值得复用 复用清单

三、关键事实(直读源码)

  • 仓库寿命:12 天(2025-08-09 创建;2026-08-11 锁定)
  • 代码量:259,066 行 / 17 种语言,以 TypeScript 为主(209,631 行 / 1125 文件)
  • 包数量:10 个 @earendil-works/* 包(README 只列 5 个;另外 5 个 session-backends / server / client / evals / protocol 在 README 未列)
  • 提交密度:~470 commit/day · 5,650 commit 总数(按 release v0.5.3–v0.84.1)
  • 首发 releasev0.5.3(2025-08-09;从单仓库炸到 monorepo 时继承的版本号)
  • 次发 releasev0.7.16(2025-11-17;中间 ≈ 3 个月停顿)
  • 当前 releasev0.84.1(2026-08-07)
  • 协议:MIT License(仓库根 LICENSE 文件)
  • 未做:npm install / build / test / pre-commit / 扫描器

四、触发 Skill 的来源

本次研究由 technical-research-toolkit Skill(第 4–10 步)驱动,所有动作可追溯到该 Skill 的固定流程:

  1. 第 4 步:受控副本 → /tmp/pi-snap(git clone --no-checkout --filter=blob:none);后来 --unshallow 获取完整历史
  2. 第 5 步:scripts/inspect_repository.sh/tmp/pi-inspect/ (1325 文件 / 56905 符号 / cloc / history.tsv)
  3. 第 6 步:模块视图(10 个包 + 依赖方向 + 主链静态阅读)
  4. 第 8–10 步:技术问题初步 + 完整演进时间线

下一次研究时,复用相同流程,新增的研究产物放进 research/<新仓库>/ 目录后重新构建部署。

五、阅读顺序建议

  1. 研究对象确认卡 — 知道我们锁定了什么
  2. Monorepo 拓扑 — 知道 10 个包怎么组织
  3. 核心架构 — 理解"Pi 是什么"
  4. 调用链 — 跟着走一遍"用户键入 → 最终输出"
  5. 演进时间线 — 看它怎么走到现在
  6. 复用清单 — 拿走对你有用的部分
  7. 索引产出附录 — 检查点的 hash 一致性 + cloc 数据