开源工具 / From daily friction to public tools

Pi 开源扩展

从每天和 AI 协作时遇到的摩擦里找机会,再把值得长期解决的问题做成开源工具。

时间
2026 至今
我的角色
产品设计与开源维护
当前状态
持续维护

先找到真正的问题,再决定产品应该长成什么。

长任务会中断,多个 AI 分工后容易混乱,用户取消了但主代理不知道,中文界面只翻译了一部分。这些问题反复出现以后,就不能再靠一句“请继续”或更长的提示词解决。

这 17 个扩展不是先列好功能清单,再去寻找用途。我会先判断问题是偶发失误,还是别人也会遇到的结构性缺口;再区分应该改提示词、工作流、上游宿主,还是做成一个长期维护的扩展。

每次真正的改动,都从一个已经看见的问题开始。

01

dteam 已经做出来了,我却发现自己不敢把它放进真实开发流程。

我的判断
问题不是功能不够,而是五种角色、对抗式合议、积分制和 batch 把工具做得太重,使用场景也没有说清。
具体改动
推翻旧定位,改成 T1/T2/T3 模型分级执行层;任务与 worker 分开,依赖、工具选择和最终收口仍由主代理判断。

02

模型连续报错后,正在进行的 Task Plan 会暂停,甚至在后续回合被清掉。

我的判断
这不是提醒模型“继续”就能解决的问题,而是任务状态、完成合同和恢复时机需要成为产品能力。
具体改动
让计划保留目标、阶段、证据和恢复状态;模型错误后暂停原计划,只由下一条真实用户输入恢复。

03

复杂对齐时,AI 常把多个问题塞进一段文字,或者只给一个推荐答案。

我的判断
这里缺的是可以同时承载单选、多选和多个并列问题的交互,不应该继续依赖自由文本。
具体改动
做出 dask:一轮平铺多个问题,每题可以单选或多选;单题最多 12 项,更多就要求拆解,并与 grill 保持松耦合。

04

中文界面改了一部分,命令说明、会话摘要和模型看到的工具描述仍然是英文。

我的判断
本地化不只是翻译按钮,而是要同时照顾人看到的界面、模型读到的工具说明和压缩后的会话记忆。
具体改动
pi-di18n 分成界面、模型工具描述和摘要三条链路,覆盖 12 种语言,并为运行时翻译保留缓存和回退。

项目有什么,和我在其中做了什么,是两件事。

  • 从自己的真实使用中记录反复摩擦,判断问题应该由提示词、工作流、上游宿主还是独立扩展解决。
  • 在动手前检查上游实现和已有扩展,明确产品边界、非目标和可以被验证的使用结果。
  • 设计任务状态、权限门禁、用户取消、失败恢复和体面退出等产品规则。
  • 组织 AI Agent 完成实现、测试、文档与发布,并逐项验收。
  • 把扩展放回真实工作中持续使用,遇到下一次失效时继续调整或推翻。

我更愿意展示取舍,而不是给自己贴能力标签。

  • 一个问题反复出现、不能靠一次提示解决,并且具有共用价值时,才值得被做成扩展。
  • 任务不等于执行者;一个 task 可以由多个 worker 协助,dgoal 与 dteam 可以组合但彼此独立。
  • 主代理负责理解依赖、选择工具和最终判断,worker 只在明确授权的范围内执行。
  • 用户取消、模型报错、超时和恢复必须成为系统状态,不能靠模型临场猜测。

AI 是协作者,不是成果归属的替身。

代码主要通过 AI 协作完成,但需求边界、异常行为、测试方法和是否发布由我负责。我的工作重点不是“让 AI 多写代码”,而是让它在可检查的边界里工作。

写完不是完成,能被检查才接近完成。

  • 扩展已经公开发布并在日常工作中持续使用。
  • 发布前分别检查本地行为、自动化测试、包内容和版本状态。
  • 公开下载数据按 npm 官方统计口径记录。

截至 2026 年 7 月,npm 账号下有 22 个公开包,累计 26,081 次下载;其中 17 个是围绕 Pi 工作流制作的扩展。

17个 Pi 扩展
26,081次 npm 下载截至 2026-07-30
下一个案例器物册 Curio