项目起源
项目起源
一开始:两个十几年的老项目
手里攥着两个做了十几年的老家伙:
- TestAgent:Java 后端运行时调试工具——热更新、JVM 内任意修改、Mock/SQL 拦截模拟,现在进化成「给 AI 用的 Arthas++」。
- JustDB:所见即所得数据库开发套件——只需写期望的 Schema 和字典数据,工具自动管理数据库创建与升级;MySQL / PostgreSQL / Oracle / SQLite / H2 等 100+ 数据库,增量迁移、智能 UPSERT、JDBC 4.2、Spring Boot / Solon Starter 全套。
项目是老项目,进展却一直快不起来——说是「体力有限」,其实是摊子铺得太大:两个项目的目标都远远超出一个人能 cover 的范围,下班后的夜晚和周末撑不起十几年的长跑。
AI 时代来了,开始「AI 考古」:把这两个老家伙翻出来,让 AI 帮着读代码、补测试、修老 bug,继续完善。
被处境逼出来的需求
aiti 的全部功能,都不是凭空设计出来的,而是被真实处境逼出来的。
碎片时间与随身设备。 主力项目要开发要调试,人不可能总坐在电脑前:上下班路上、外出、休息间隙,都是可用的开发时间;手机、平板,都是可用的设备。怎么在碎片时间和随身设备上把活干完?
蹭 token、省 token。 好模型贵,免费模型限流。哪个模型便宜用哪个,哪个 key 活着用哪个。
换工具:从其它 AI agent 到 pi-web
最早用了一些其它的 AI agent 写代码。各有各的顺手和不顺手,但总觉得差一点:想要的工具链、想要的界面、想要的工作方式,都隔着一层。
再后来看到了 pi 和 pi-web。实话实说,看上它们就两点:pi 简单——系统提示词少;pi-web 简单、好改。做得确实优秀,我们才用上了。于是把日常开发搬了过来,缺什么就照着自己的需要补一点,边用边改。
越加越多,回不去了
用着用着,补的东西越来越多。
为了随时随地干活:服务端口映射与隧道,把本地服务安全地暴露到路上也能访问;全功能小屏适配 + 语音输入,手机上真的能开发(就是费电,记得配充电宝);终端 / VNC / RDP,远程机器随手可进;IM 渠道接入,人在路上,群里发句话 AI 照样干活交差。
为了省 token:模型添加向导(目录搜索 / 反向匹配 / 自动探测)、多 key 粘性轮转、模型聚合(组合模型拼着用)、可用性探测(429 限流识别与恢复预测)。
再加上会话面板、tag 管理、页面内调试注入、MCP 桥……每加一个,就离上游远一点。直到某一天发现:改动已经面目全非,代码合不回去,PR 也提不上了。与其守着"fork"的身份,不如按自己的方式发版,做自己的产品。
aiti 就这么开始了——基于 pi-web 的开源代码,加上我们自己积累的扩展,以独立品牌和独立发行版的形式维护。
边用边改,先服务自己
开发方式一直是「边用边改」:一边忍受着开发过程中的 bug,一边持续演进主力项目和这个 AI 项目——工具自己就是自己的第一个用户,你看到的每个功能,都是先拿自己开刀验证过的。
这个发行版首先是做给自己用的:自己喜欢、自己顺手的 AI 开发工具。因为自己天天用,所以坏得快、修得也快;因为需求真实,所以不做花架子。
如果你也觉得顺手,欢迎一起用。
欢迎贡献
- 提交代码:修 bug、补文档、提改进,都欢迎。
- 创建扩展:aiti 的扩展框架是开放的,业务功能全部以扩展形式实现,可以基于它做自己的东西。见 aiti-agent 扩展点。
- 需要新的扩展点:现有插槽不够用时,开 PR 到 aiti-agent 加扩展点(改
lib/ext/types.ts的插槽与契约 +components/ExtSlots.tsx的挂载位置),扩展本身仍然在你的仓库里写。