400行Shell干翻万行框架,Pu.sh重新定义AI编码Agent

一个名为 Pu.sh 的开源项目用不到400行纯Shell脚本实现了完整的AI编码Agent框架,在AI Agent工具链日益臃肿的当下,用极简主义给行业提了个醒。
当 AI Agent 框架卷到几十万行代码,有人只用了400行 Shell
最近,一个叫 Pu.sh 的开源项目在 Hacker News 上冒了出来,做的事情很简单也很炸裂——用不到400行纯 Bash 脚本,搭出了一个功能完整的 AI 编码 Agent 框架。
没有 Python,没有 Node.js,没有任何外部依赖框架。就是 Shell。
这事放在2026年的今天来看,多少有点行为艺术的意思。毕竟隔壁那些工业级 AI Coding Agent 动辄几十万行代码、上千个文件,光一个配置系统就能写出一篇论文。而 Pu.sh 的作者选择了一条完全相反的路:把所有东西压缩到一个你用 cat 就能读完的脚本里。
但仔细看下去,你会发现这不是玩具。它是一个认真的、可用的工程选择。
Pu.sh 到底做了什么
Pu.sh(项目主页 pu.dev)自称是一个 "full coding-agent harness",翻译过来就是「完整的编码Agent运行框架」。它的核心能力包括:
- 对话循环管理:维护与大模型的多轮对话上下文
- 工具调用(Tool Use):支持让模型调用本地命令行工具,比如读写文件、执行命令、搜索代码
- 沙箱执行:对模型发起的命令做基本的安全隔离
- 流式输出:实时展示模型的思考和操作过程
- 多模型支持:兼容 OpenAI API 格式的各类模型
这些能力,恰好是 Claude Code、Cursor Agent、Aider 这类工具的核心功能集。区别在于,别人用几万到几十万行代码实现,Pu.sh 用了不到400行。

400行怎么够用?关键在于「不造轮子」
第一反应肯定是:400行能干什么?连个像样的 JSON 解析器都写不完吧?
没错,所以 Pu.sh 的设计哲学就是——不自己解析,让 Unix 工具链干活。
Shell 脚本天然就是一个胶水层。Pu.sh 的做法是:
- 用
curl处理 HTTP 请求和 SSE 流式响应 - 用
jq做 JSON 的解析和构造 - 用管道(pipe)串联整个数据流
- 用 Shell 函数组织对话状态机
这套组合拳打下来,你会发现 Shell 其实是做 API 胶水层的理想选择。HTTP 请求、JSON 处理、进程管理、文件操作——这些全是 Unix 系统的原生能力,根本不需要引入额外的运行时。
换个角度想:一个 AI Agent 框架的核心逻辑是什么?
- 把用户输入 + 上下文拼成 prompt,发给模型
- 解析模型返回的内容,判断是文本回复还是工具调用
- 如果是工具调用,执行对应命令,把结果喂回模型
- 循环往复,直到任务完成
这个循环本身并不复杂。复杂的是围绕它的工程化包装——UI、插件系统、权限管理、多语言支持、IDE 集成等等。Pu.sh 的选择是:只做循环本身,其他的交给操作系统。
极简背后的工程判断
这不是偷懒,这是一种工程判断。
我们可以做个对比。根据公开资料,一个工业级 AI Coding Agent 的完整实现大约需要1900个文件、51万行以上的代码。这些代码里,真正处理「模型对话循环」的核心逻辑可能只占很小一部分,大量代码花在了:
- 跨平台兼容
- 多种 IDE 的插件适配
- 复杂的权限和安全模型
- 配置系统和规则引擎
- UI 渲染和交互
- 遥测和分析
这些东西重不重要?当然重要,尤其是做商业产品的时候。但如果你只是想在终端里跑一个能帮你写代码的 Agent,这些东西全是噪音。
Pu.sh 的价值就在于它把信噪比拉到了极致。
放在 AI Agent 生态碎片化的背景下看
2025到2026年,AI 编码工具的生态碎片化问题越来越严重。每个工具都有自己的一套配置体系:
| 工具 | 配置方式 | 格式 |
|------|---------|------|
| Cursor | .cursor/rules/ | Markdown |
| Claude Code | claude.md | Markdown |
| Gemini CLI | GEMINI.md + settings.json | Markdown + JSON |
| Amp | settings.json | JSON |
| Kilo Code | .roo/rules/ | Markdown |
OpenAI 发起了 AGENTS.md 规范试图统一这个局面,Google 的 Jules、Cursor 等工具也开始跟进。但现实是,每个工具仍然在维护自己的一套东西。
而 Pu.sh 的做法相当于绕过了这个问题:我就是一个 Shell 脚本,你想怎么配就怎么配。没有专有格式,没有配置文件规范之争。你的 system prompt 就是一个文本文件,你的工具定义就是可执行的 Shell 命令。Unix 哲学里「一切皆文件」的理念,在这里得到了最直接的体现。
安全性:简单反而更透明
AI Agent 的安全问题是个大话题。前段时间 Amp Code 就被曝出一个严重漏洞——攻击者可以通过提示注入修改 Agent 的配置文件,把恶意命令加入白名单,最终实现任意代码执行。
这类漏洞的根源在于:Agent 的操作范围和配置管理范围没有做好隔离。当一个系统足够复杂,攻击面就会指数级增长。
Pu.sh 的安全模型则简单得多:
- 脚本本身是只读的,模型无法修改框架代码
- 工具调用走的是标准 Shell 命令,权限由操作系统控制
- 整个代码量小到你可以逐行审计
400行代码意味着什么?意味着一个有经验的开发者花半小时就能把整个框架读完、理解透。任何隐藏的后门或安全隐患都无处藏身。
当然,这不意味着 Pu.sh 就是安全的——模型本身的提示注入风险依然存在,Shell 命令执行也需要谨慎处理。但至少在框架层面,简单就是最好的安全策略。
它适合谁?不适合谁?
说清楚:Pu.sh 不是要取代 Cursor 或 Claude Code。
适合的场景:
- 你在服务器上工作,没有 GUI,只有终端
- 你想快速搭一个自定义的 Agent 工作流,不想被框架绑架
- 你在做 Agent 相关的研究或教学,需要一个足够简单的参考实现
- 你想理解 AI Agent 的核心原理,而不是被几十万行代码淹没
- 你是 Unix/Shell 重度用户,偏好管道式的工作方式
不适合的场景:
- 你需要 IDE 集成和图形界面
- 你的团队需要企业级的权限管理和审计
- 你需要复杂的多 Agent 协作
- 你不熟悉 Shell,看到
#!/bin/bash就头疼
一个更深层的问题:AI Agent 框架是不是过度工程化了?
这才是 Pu.sh 真正值得讨论的地方。
过去两年,AI Agent 框架经历了一轮疯狂的复杂化。LangChain、LangGraph、CrewAI、AutoGen……每个框架都在往里面塞更多的抽象层、更多的概念、更多的配置项。结果是,很多开发者花在「学框架」上的时间比花在「解决问题」上的时间还多。
一个 AI Agent 的核心循环,本质上就是:
while true; do
response=$(call_model "$context")
if is_tool_call "$response"; then
result=$(execute_tool "$response")
context+="$result"
else
echo "$response"
break
fi
done
这段伪代码,大概就是 Pu.sh 的核心逻辑。当然实际实现要处理更多边界情况,但主干就是这么简单。
那些几万行的框架,多出来的代码在做什么?很大一部分是在处理「如果你想用这个框架做任何事情」的通用性。但通用性是有代价的——它让简单的事情变复杂了。
这让人想起 Rob Pike 的那句话:"A little copying is better than a little dependency."(一点复制好过一点依赖。)
Pu.sh 的存在证明了:如果你清楚自己要什么,400行就够了。
对开发者的启示
不管你用不用 Pu.sh,这个项目都值得看一看。原因有三:
第一,它是最好的 AI Agent 教学材料。 想理解 Agent 的工具调用是怎么工作的?看那些大框架的源码可能需要几天,看 Pu.sh 只需要半小时。核心概念一目了然:对话管理、工具定义、执行循环、上下文拼接。
第二,它提醒我们重新审视依赖。 下次引入一个新框架之前,先问问自己:我真的需要它的全部功能吗?还是只需要其中5%的核心能力?如果是后者,也许自己写反而更快、更可控。
第三,它展示了 Shell 在 AI 时代的生命力。 很多人觉得 Shell 脚本是上个时代的东西,但在 AI API 调用这个场景下,Shell 的管道模型、进程管理、文本处理能力反而是天然适配的。curl | jq | while read 这套组合,处理流式 API 响应比很多高级语言的方案都优雅。
写在最后
在 AI 工具链越来越重、越来越复杂的今天,Pu.sh 像一股清流。它不会改变行业格局,也不会取代任何主流工具。但它用400行代码证明了一件事:AI Agent 的核心并不复杂,复杂的是我们加在它上面的东西。
有时候,少即是多。
对于那些想要快速接入各种大模型来测试自己 Agent 工作流的开发者来说,像 OpenAI Hub 这样兼容 OpenAI 格式的 API 聚合服务配合 Pu.sh 这类轻量工具,几行 curl 命令就能把 Agent 跑起来,连 SDK 都省了。
这大概就是 Unix 哲学在 AI 时代最好的注脚。
参考来源
- 技术教科书:顶级开发团队设计的 Harness 工程项目源码什么样 - 知乎:分析工业级 AI Coding Agent 的代码规模与架构复杂度
- 从 Cursor 到 Claude Code,告别 AI 编程工具 Agent 配置烦恼 - 掘金:系统梳理主流 AI 编程工具的配置机制与 AGENTS.md 规范

