libGDX 老兵的 60K star 反潮流:1000 token 内核撑起 9 协议编码 Agent
一句话总结
Pi 是一款**「故意克制到极致」**的终端 AI 编码 Agent:系统提示词 + 4 个工具合计 < 1 000 token,runtime 依赖 0,却在 9.9 个月内统一了 9 种 LLM 协议、跑出 60K stars 和 100 个 release,把 Claude Code 一类「功能堆叠」产品反向拆回了「极简内核 + 自扩展」。
值得关注的理由
- 极简哲学罕见地跑通了:17.6 万行 TS、零 runtime 依赖、281 tag、每 3 天一个版本,月度 commit 稳定在 400-500,证明「不内建 MCP / Plan / Sub-agents / TODO」的产品克制是能 scale 的。
- 跨 9 协议统一 API 的工程硬功夫:
Model<TApi>泛型 + 条件compat字段 +satisfies三连,把 Anthropic / OpenAI Responses / OpenAI Completions / Google / Bedrock 等 wire-format 异构性收口到 TS 类型层。 - 真实训练数据飞轮:
pi-share-hf+ Hugging Facebadlogicgames/pi-mono(2 069 月下载)让 Pi 跑出「真实编码 Agent 会话 → 公开数据 → 第三方微调(Qwen3.5-9B-Pi-Agent)」的完整闭环。
项目展示
第三方截屏与演示
— 类型: hero。把「Pi 不只是 CLI,它是个可装 Doom 的终端宿主」打到屏幕上(来源:pi.dev/press-kit)。
— 类型: architecture。展示「树状 session 历史 + 分支 / 书签 / 过滤」这一非传统竞品的关键能力(来源:pi.dev/press-kit)。— 类型: brand。来自 README 的官方 logo。
— 类型: screenshot。来自 README,exe.dev捐赠pi.dev域名的致谢。- 官方主页内联演示 GIF 集合:pi.dev — 类型: demo。中途
/model切模型、运行中 steer 跟车、Crooked UI 切换、build a custom extension、session tree 分支分享等动图集中在主页段落,公众号发布时可由作者站点直接引用。
项目画像
| 维度 | 数据 |
|---|---|
| GitHub | https://github.com/earendil-works/pi |
| Star / Fork | 60 333 / 7 242(2026-06-06 快照) |
| Watcher / Open Issue / Open PR | 209 / 49 / 5 |
| 代码行数 | 176 155 行(注释 24 233 行,注释比 13.8%) |
| 语言分布 | TypeScript 89.9% / JSON 5.6% / JavaScript 3.5% / CSS 0.5% / Shell 0.3% |
| 文件数 | 781 |
| 运行时依赖 | 0(dev 依赖 10:biome、esbuild、husky、jiti、tsx、tsgo 等) |
| 项目年龄 | 9.9 个月(2025-08-09 → 2026-06-05) |
| 总 commit | 4 429(近 30 天 437 / 近 90 天 1 287) |
| Release | 100 个 / 281 tag / 最新 v0.78.1 / 节奏 ≈ 每 3 天一版 |
| 开发阶段 | 密集开发(已进入高频打磨期,非爆发成长期) |
| 开发模式 | 职业项目(周末 25% + 夜间 44%,月度稳态 400-500 commit) |
| 贡献模式 | 核心少数 + 社区:Mario Zechner 73.4% 占比、Top3 80.5%、总计 229 位贡献者 |
| 热度定位 | 大众热门(60K stars / 半年内 TS 项目第一梯队) |
| 许可证 | MIT |
| 质量评级 | 代码[优秀] 文档[优秀] 测试[充分] 治理[完善] |
作者视角:为什么存在这个项目
创始人/作者背景
Mario Zechner(GitHub badlogic,奥地利 Graz)—— 15+ 年跨 ML / 数据科学 / 编译器 / 图形学经验,libGDX 与 RoboVM 作者。其个人站 mariozechner.at 2025 年 6-11 月连续发 5 篇前置博文:Claude Code 系统提示漂移分析 → Patching Claude Code for /cost → MCP vs CLI benchmark → What if you don’t need MCP(2025-11-02)→ What I learned building an opinionated and minimal coding agent(2025-11-30),是 Pi 的直接思想源流。Earendil Inc.(奥地利)为公司主体,旗下 Pi + Lefos 双产品线,pi.dev 域名由 exe.dev 捐赠。
次重要合作者:Armin Ronacher(mitsuhiko,Flask / Rye 作者,176 commits)从 Vercel AI SDK 短板(自托管模型、工具调用)切入;Helmut Januschka / Aliou Diallo / Markus Ylisiurunen / Nico Bailon 等 4-5 人稳定协作者 + 长尾 PR 构成外围;github-actions[bot] 105 commits 跑自动发版。
治理风格:.github/APPROVED_CONTRIBUTORS 白名单(117 次更新) + 新人 issue/PR 默认 auto-close(maintainer 每日 review)—— 一种「反 slop 优先于实时 PR review」的非常规开源治理。
问题判断
2025 下半年 Claude Code 凭借「内置一切」登顶 AI 编码 Agent 市场,但 Mario 在自己的博文中反复揭示其隐性代价:
- 系统提示词臃肿到数千行,Mario 多次发文分析其 prompt drift 现象(甚至专门写了一篇《Patching Claude Code for /cost》—— 给 Claude Code 打补丁显示成本失控)。
- MCP(Model Context Protocol)被当作「AI Agent 的 HTTP」普遍接入,但 Mario 用 benchmark 论证「多数 MCP 工具的调用其实可以直接走 bash + file read」—— MCP 是过度抽象。
- 闭源商业 Agent 把 provider 锁死,单协议栈无法跨 OpenAI / Anthropic / Bedrock / 本地模型自由切换。
时机:2025-12 → 2026-Q2 是「Claude Code 臃肿化反扑窗口」 + 「OpenAI 兼容协议 + Claude Code 协议 + Anthropic Messages 协议三家割据」双重红利的交汇点 —— 极简 + 跨协议的「中间层」恰好踩中。
解法哲学
Pi 的「设计哲学」不是 feature list,而是一组显式的负面承诺:
- 不内建 MCP(Mario 2025-11-02 博文主题)
- 不内建 Plan mode / Sub-agents / Built-in TODO / Background bash / Permission 弹窗(Mario 2025-11-30 博文)
- 不补全 LLM 协议差异 —— 4 协议全部用 < 1 000 token 系统提示词统一表达
- 默认 YOLO(拿到调用者全部权限),主张「安全护栏在 Agent 能读+能执行的现实下多半是 theatre」,容器化(Gondolin micro-VM / OpenShell / Docker)外移
- 「If I don’t need it, it won’t be built」(Mario 自述)
「系统的所有功能」通过外部化策略达成:扩展、容器、prompt 模板、技能(Skills)、主题、Pi 包。
战略意图
badlogicgames/pi-mono Hugging Face 数据集 + pi-share-hf 真实会话上传工具 + 第三方基于该数据集微调 Qwen3.5-9B-Pi-Agent 等模型 —— 这是 Pi 项目的真实护城河:
跑出 Anthropic 训练自家模型用的那种「真实编码 Agent 会话」飞轮,让 Pi 用户每一次共享会话都反哺公开数据集,反过来又让第三方小模型能在 Pi 上跑得更好 —— 形成「使用 → 共享 → 微调 → 更好模型 → 更多使用」的正向循环。
Earendil Inc. 的商业化路径推测是「Pi 核心开源 + Lefos 商业化(猜测是云端 SaaS / 企业版)+ Hugging Face 生态影响力」。
核心价值提炼
创新之处
按新颖度 × 实用性排序:
-
泛型
Model<TApi>+ 条件类型compat字段做「编译时协议隔离」(packages/ai/src/types.ts:566-596)。把 9 种 Api 的 wire-format 异构性压到compatinterface 上:调用方拿Model<"openai-responses">时compat自动是OpenAIResponsesCompat,写compat.thinkingFormat不会被允许到 Anthropic 字段。Provider 内部代码(anthropic.ts/openai-responses.ts/openai-codex-responses.ts)各自读自己compat字段,没有交叉。models.generated.ts16 939 行全靠satisfies Model<"...">在构建时验证 metadata 合法。这是 TS 类型系统被工程化用足的项目里极少数之一。 -
Pull-push 混合流
EventStream<T, R>(packages/ai/src/utils/event-stream.ts:4-88,仅 88 行)。push 端push(event)把事件入队或直接递给等待 consumer;end(result?)终结 + 解析 final result promise。调用方用for await (const e of stream)拉取,同时可以await stream.result()拿终止态。失败不抛,必须emiterror事件 +AssistantMessage.stopReason = "error"/"aborted"+errorMessage。整个 agent loop 因此可以全异步、无 catch 块地写完。 -
4 层 timeout 架构(transport / SSE header / WS connect / idle stream / retry-backoff)。
openai-codex-responses.ts:1190-1201显式命名idleTimeoutMs,http-dispatcher.ts:38-55控制 undici dispatcher 的headersTimeout/bodyTimeout/allowH2: false。每层 timeout 是单独一层的,issue 定位能精确定位到哪一层失效。 -
极简 + 可自扩展组合:系统提示词 < 1 000 token + 4 工具(read / bash / edit / write)vs Claude Code 17+ 工具的 4-5× 差距,换来 prompt cache 命中率 + 用户自定义时的「可解释性」。
grep/find/ls(tools/index.ts:147-154)被刻意拆出为 read-only 集合,默认不带。 -
扩展可声明 provider/model —— 第三方「软官方」补位:
registerProvider(name, config)(extensions/types.ts:1301-1316)让 extension 注册全新 provider(不仅是 model)。Ollama / LM Studio / vLLM 等本地 LLM 不进KnownProvider,让第三方 extension 用registerProvider填位。Issue #3357「官方 local LLM provider」22 评论 0 维护者回复 —— Pi 故意不背书,由生态补位。
可复用的模式与技巧
-
「负面承诺」做产品定位:把「不做什么」写进 README / CONTRIBUTING.md / 官方博文的硬规则,比 feature list 更能吸引「不想被工具栈绑架」的核心用户群。
-
AGENTS.md用第二人称对 LLM agent 下规则:AGENTS.md:14-15显式「Read files in full before wide-ranging changes… Do not rely on search snippets for broad changes.」+AGENTS.md:18「No inline imports」+AGENTS.md:23「Never hardcode key checks」 —— 把「反 LLM slop」做硬规则,对应CONTRIBUTING.md:7的「The One Rule: You must understand your code. Using AI to write code is fine. Submitting AI-generated slop without understanding it is not.」。 -
测试前自动备份
~/.pi/agent/auth.json+ unset 30+ API key(test.sh:1-77)—— 防「开发本地凭据污染 CI」的反 slop 实践,可直接迁移到任何需要多 API key 的项目。 -
issue 编号命名的回归测试:
packages/coding-agent/test/suite/regressions/19 个 issue-编号命名的回归测试(AGENTS.md:33 规范<issue-number>-<short-slug>.test.ts),可迁移到任何 monorepo。 -
.npmrc设min-release-age=2+ 直接依赖钉死精确版本 + CI 跑npm audit signatures(scripts/check-pinned-deps.mjs)—— 供应链加固的标准范式,可零成本迁移到任何 npm 项目。 -
「核心少数 + 社区」 monorepo 治理:1 个绝对主力(71.7%) + 4-5 个稳定外部协作者 + 长尾 PR —— 对应「
.github/APPROVED_CONTRIBUTORS白名单 + 新人 issue/PR auto-close + maintainer 每日 review」,适合「核心质量优先于社区规模」的开源项目。
关键设计决策
决策 A:泛型 Model<TApi> + 条件类型 compat 字段做「编译时协议隔离」
- 问题:要在一个 SDK 里支持 9 种
Api,每种协议在「tool call id 字符集」「tool_choice 格式」「cache_control 字段名」「thinking 参数」上都是异构的。union + 判别式 → 调用方每个分支都要重新if (api === "anthropic-messages") { ... },switch hell;基类继承 → 行为差异变成 virtual override,无法在 TS 类型系统里精确定位。 - 方案:
Model<TApi>是泛型(types.ts:566-596),compat字段定义为条件类型(types.ts:589-595)—— 写Model<"openai-responses">时compat自动是OpenAIResponsesCompat,跨字段误用根本编译不过。models.generated.ts每个 entry 用satisfies Model<"bedrock-converse-stream">形式声明,metadata 写入时 TS 已把字段合法性验证过一遍。 - Trade-off:写 provider 的人必须为每种 api 写独立
Compatinterface(AnthropicMessagesCompat在types.ts:431-476已 ~45 行)—— 新增 provider 意味着新 interface。但换来的好处是:每条 wire-format 异构性都被收口在「compat field + provider 内部」两处,没有运行时 type assertion。 - 可迁移性:高。任何做「跨协议 SDK」的 TS 项目都能用。关键是「把字段异构性的全部复杂性提前到类型层、在 compat interface 一次性收口」。
决策 B:把 agent 状态机收口到 runAgentLoop,用 8 个回调钩子暴露扩展点
- 问题:agent loop 一般有多个「我想加一段逻辑」的入口点:上下文转换前/后、tool call 前/后、steering、follow-up、决定 stop 等。如果做成可继承的 virtual method,扩展者必须继承整个 class 才能改一处;如果做成 event bus,扩展者会反复注册 listener,listener 之间的 priority 又是新问题。
- 方案:
AgentLoopConfig(types.ts:135-277)是纯数据 interface,8 个回调钩子签名被 JSDoc 严格说明「不抛不拒,返回 safe fallback」(types.ts:144-146/182-185/194/206/228/241)。runAgentLoop(agent-loop.ts:95-269)内部只有 ~170 行 pure function:外层 while 循环处理「agent 走完一圈后看是否有 follow-up」,内层 while 处理「一个 turn 内的 tool call + steering」。扩展点 = 改config.beforeToolCall一个 lambda,不需要 class 继承。 - Trade-off:8 个回调对简单 case 显啰嗦;中途改 config 的语义(
prepareNextTurn返回新 model)需要接受 partial override 的 merge 规则(agent-loop.ts:226-239)。但「不抛不拒、返回 safe fallback」是这一设计的灵魂 —— 任何一个钩子写错了不会 crash loop,只会「某次 turn 行为偏一次」。 - 可迁移性:高。JS/TS 任何 agent 框架都能用这套 pattern,但关键不是「回调」本身,而是 JSDoc 里写死的「contract」:每个钩子都被明确说明「不能 throw」「返回什么算 noop」「何时被调用」。
决策 C:扩展加载用 jiti + 虚拟模块映射,不做 plugin classloader
- 问题:让 extension 在 Bun 二进制和 Node 源码两种模式下都工作,且 extension 可以
import整套 pi 包(@earendil-works/pi-ai/typebox等),传统做法是给 extension 一个独立 module loader + 自定义 resolver。会导致:① 路径解析在不同 runtime 行为不一致;② 调试时 extension 的 stack trace 路径错位;③ 第三方 extension 可能 import 了一个 runtime 不存在的包。 - 方案:
extension/loader.ts:44-116维护两个路径:- Bun binary 模式:
VIRTUAL_MODULES字典(loader.ts:44-61),把typebox/@earendil-works/pi-coding-agent等映射到已经静态 import 过的 namespace 对象。Bun bundle 时把它们塞进 bundle,extension import 时完全不走 node_modules 解析。 - Node 模式:
getAliases()(loader.ts:71-116)解析到node_modules里的 dist 文件或 workspace 软链,作为 jiti 的 alias。 - 注释直白说明(
loader.ts:16-18):「These MUST be static so Bun bundles them into the compiled binary.」
- Bun binary 模式:
- Trade-off:每次加新 package 都要同时改
VIRTUAL_MODULES和getAliases()两处 —— 重复 boilerplate。但消除了运行时 resolver 的不确定性。 - 可迁移性:中。任何做「app + plugin」的项目都能用,但关键 insight 是**「把 import target 锁死在 build 时刻」**比「让 plugin 自己写 import 路径」更安全。
竞品格局与定位
竞品对比矩阵
| 维度 | Pi (earendil-works/pi) | Claude Code | OpenAI Codex CLI | OpenCode | Aider |
|---|---|---|---|---|---|
| 工具集 | 4(read / bash / edit / write) | 17+ | 单一 | 自带丰富 | 偏 git / 文件 diff |
| 系统提示词 | < 1 000 token | 数千行(Mario 多次发文分析其 prompt drift) | 单一 | 较丰富 | 较精简 |
| MCP | 故意不内建 | 原生 | 原生 | 原生 | 有限 |
| Plan mode | 故意不内建 | 原生 | 无 | 自带 | 无 |
| 跨 provider | 9 种 Api + 30+ providers | 仅 Anthropic + Bedrock + Vertex | 仅 OpenAI Responses / Codex Responses | 多 provider | 多 provider |
| 协议统一抽象 | 4 协议统一(Anthropic Messages / OpenAI Completions / OpenAI Responses / Google GenAI) | 单一自家 | 单一 | 多 | 多 |
| 容器化安全 | 外部(Gondolin / OpenShell / Docker) | 工具级 permission 弹窗 | 单一 | 自带 | 较轻 |
| 扩展生态 | 第三方 Pi 包生态(pi.dev/packages 3 672 个,Top 5 月下载 50K-130K) | 无(闭源) | 弱 | 弱 | 配置 + repo map |
| 训练数据飞轮 | pi-share-hf → Hugging Face badlogicgames/pi-mono(2 069 月下载)→ 第三方微调 | 闭源 | 闭源 | 弱 | 弱 |
| 商业模式 | MIT 开源 + 第三方扩展生态 | 闭源 + 订阅 | 闭源 + 订阅 | MIT 开源 | MIT 开源 |
| 基准成绩 | Terminal-Bench 2.0 与 Codex / Cursor / Windsurf 同台 | 同上 | 同上 | 较弱 | 同上 |
差异化护城河
- 心智模式壁垒:「极简内核 + 显式反对 MCP 列入」是信念问题不是技术问题 —— 任何想做同样定位的人都要先回答「为什么需要 MCP / Plan mode / Sub-agents」。
- 真实训练数据飞轮:
pi-share-hf→ Hugging Face 公开数据 → 第三方微调(Qwen3.5-9B-Pi-Agent) → 更好小模型能在 Pi 上跑。这是其他竞品都没有的生态资产。 - 跨 9 协议统一 API 的工程硬功夫:4 协议 wire-format 异构性收口到 TS 类型层 +
compat条件类型,可读可审。models.generated.ts16 939 行 metadata 全部satisfies静态校验,新增 provider 只需写 1 个Compatinterface。
竞争风险
- 最可能被 Claude Code 替代:当 Claude Code 团队(Anthropic)决定做「精简模式」时,闭源 + 订阅的商业产品可以快速复制 Pi 的产品哲学。Pi 的差异化「开源 + 极简」对部分用户不可替代。
- 可能被 OpenCode 替代:当 OpenCode 决定「显式拒绝 MCP / Plan」时,开源同行 + 自带功能齐全可能比 Pi 更有竞争力。OpenCode 已经在 Pi 的 CHANGELOG 里作为兼容性 fix 出现(0.78.1 修复 OpenCode Go Kimi K2.6 thinking requests)。
- 多 Provider 抽象的债务:#4945 / #4251 / #5089 共同暴露「多 provider × 多 transport 的横切关注点(超时、模型发现、协议兼容)尚未完全收敛」—— 这是技术债,但 Mario 71.7% 单核占比意味着短期只能让 issue 自然消化。
生态定位
Pi 填补了**「多 provider + 极简内核 + 可自扩展」三角的生态空白 —— 整个 AI 编码 Agent 赛道里唯一**以这三角为定位的项目。其他产品在至少一个轴上妥协:Claude Code 选「功能齐全」;Codex CLI 选「单协议栈」;Aider 选「git-first」;OpenCode 选「功能齐全」。
套利机会分析
- 信息差:60K stars / 100 release / 4 429 commits + libGDX 老兵作者 + 真实训练数据飞轮 = 「公开信息 + 但工程深度被严重低估」。多数中文技术社区还在把 Pi 当成「又一个 Claude Code 替代品」,没看到其类型系统级的工程贡献。
- 技术借鉴:
- 跨协议 SDK 的
Model<TApi>+ 条件compat+satisfies三连 —— 可迁移到任何多供应商适配场景(云厂商 SDK、支付 SDK、消息队列 SDK)。 EventStream<T, R>pull-push 混合流 —— 失败不抛、用 protocol 事件编码的「错误即数据」哲学,可迁移到任何长连接 / 流式 SDK。AGENTS.md用第二人称对 LLM agent 下规则 —— 可作为「AI 编码 agent 友好的项目文档」范式直接借鉴。
- 跨协议 SDK 的
- 生态位:填补了「真正想自己掌控 prompt + 上下文的硬核开发者」这一长期被商业产品忽视的用户群;同时填补了「多 provider + 极简 + 跨协议」的技术生态位。
- 趋势判断:2025-12 → 2026-Q2 是「Claude Code 臃肿化反扑窗口」 + 「跨 provider 切换需求爆发」双重红利的交汇期。Pi 在正确的时间踩中了正确的产品克制。Mario 71.7% 单核占比是最大风险也是最大优势 —— 没有公司化决策稀释,每 3 天一版的迭代节奏让 Pi 在 Terminal-Bench 2.0 上保持竞争力。
风险与不足
- 单核作者风险(bus factor = 1):Mario Zechner 73.4% 占比 + 周末 25% + 夜间 44% 的高强度投入 = 项目可持续性高度依赖 Mario 个人节奏。任何人身/职业变故都会直接传导到项目。
- 超大单文件未拆分:
packages/coding-agent/src/modes/interactive/interactive-mode.ts5 678 行(402 次变更) +packages/ai/src/models.generated.ts16 939 行(397 次变更)—— 是项目两大 hot file,9.9 个月里没有把它拆出去。 - 200 采样 commit 里
refactor仅 0.5%(1 次):4 429 commit 的项目只显式 refactor 1 次非常反常,与 17.6 万行代码体量是显著反差。项目处于「feature 优先 + 后期 debt 累积」阶段,下半年大概率需要一波系统性 refactor。 packages/agent-old仍有 36 次修改:意味着重构有遗留,对潜在贡献者是入场门槛。- 多 Provider 抽象的横切关注点尚未完全收敛:Issue #4945(Codex hang on Working…)53 评论、#4251(OpenCode Go Kimi K2.6 协议错误)、#5089(timeoutMs 大值被静默截断)—— 三者共同指向「多 provider × 多 transport 的超时 / 模型发现 / 协议兼容」架构债务。
- 默认 YOLO 安全姿态:项目立场是「安全护栏在 Agent 能读+能执行的现实下多半是 theatre」,容器化建议外移。对企业用户来说这是一个明确的合规阻力。
- 核心抽象层 0 处
as any,但openai-completions.ts单文件 20 处:provider 差异兜底集中在openai-completions.ts,需要后续关注。 - 第三方生态依赖冷启动:「核心不提供 / 官方生态提供」的反向工作模型(Ollama / 本地 LLM 不进
KnownProvider)依赖扩展生态,已有 3 672 个第三方包但「软官方」地位尚未稳定。
行动建议
-
如果你要用它:
- 适合「多 provider 切换 + 跨协议调试」的重度用户(OpenAI / Anthropic / Bedrock / Google / 本地 LLM 自由切)。
- 适合「想自己掌控 prompt + 上下文」的硬核开发者(4 工具 + < 1 000 token 系统提示词 + extension)。
- 适合「真实训练数据飞轮」研究 / 微调工作(Qwen3.5-9B-Pi-Agent 等小模型反哺)。
- 不适合:纯商业闭源需求(请直接用 Claude Code);不想写 extension 的轻度用户(pi 的 4 工具极简需要你接受「先写 extension 再用」心智)。
-
如果你要学它:重点关注
packages/ai/src/types.ts:566-596——Model<TApi>+ 条件compat字段的「编译时协议隔离」范式packages/ai/src/utils/event-stream.ts:4-88—— 88 行实现 pull-push 混合流packages/agent/src/agent-loop.ts:31-269—— 8 个回调钩子替代 class 继承的 agent 状态机packages/coding-agent/src/core/extensions/loader.ts:44-116——jiti+ 虚拟模块映射的 Bun / Node 双 runtime 扩展加载packages/ai/src/providers/openai-codex-responses.ts:1190-1201—— 4 层 timeout 架构的实战样例AGENTS.md+CONTRIBUTING.md—— 反 LLM slop 的工程文化(The One Rule + Read files in full + No inline imports)
-
如果你要 fork 它:可以改进的方向
- 把
interactive-mode.ts5 678 行拆为「TUI 渲染 / 模式分发 / 用户输入处理」三个模块 - 引入「显式 refactor」commit 规约,把现有 4 429 commit 中的「隐式重构」(
chore:/feat:内的重构) 显式化 - 补齐 Ollama / LM Studio / vLLM 的「官方级」
registerProvider示例(Issue #3357 22 评论 0 维护者回复) - 给
pi-ai添加 OpenTelemetry / structured logging hooks(目前telemetry不在产品定位内) - 把
models.generated.ts16 939 行从「自动生成 metadata」升级为「自动生成 metadata + 静态校验 + 文档生成」三连
- 把
知识入口
| 资源 | 链接 |
|---|---|
| DeepWiki | deepwiki.com/earendil-works/pi(已索引,最近同步 2026-06-03) |
| Zread.ai | 未收录(403) |
| 关联论文 | 无 |
| 在线 Demo | pi.dev(官网 + 演示 GIF 集合) + pi.dev/packages(3 672 个第三方 Pi 包) |
| 官方博文 | What I learned building an opinionated and minimal coding agent(2025-11-30) · What if you don’t need MCP(2025-11-02) · MCP vs CLI benchmark(2025-08-15) · Patching Claude Code for /cost(2025-08-06) · Prompts are code(2025-06-02) |
| 训练数据 | huggingface.co/datasets/badlogicgames/pi-mono(146 喜欢 / 2 069 月下载) |
| 关键 Issue | #4945 openai-codex hang on Working… · #3357 Official local LLM provider extension · #5089 Doesn’t respect timeoutMs past a certain value |
| 演示视频 | Mario 演示 pi-share-hf 发布会话(X/Twitter) |
| 官方媒体素材 | pi.dev/press-kit |