一个每天消耗700万token的重度用户,最终选择自己动手造轮子。这数字相当于持续调用GPT-4写300万字小说,或者让Claude-3.5-Sonnet连续工作48小时不停歇。
Jean2的作者不是没试过现成的。Cursor、OpenCode、GLM、Minimax、GPT全家桶、OpenRouter上所有新鲜货——他全用过。但越用越发现一件事:这些工具像精装房,拎包入住很爽,想砸墙改格局就麻烦了。
2024年初,他想要一个能跨设备无缝衔接的agent。手机起草需求,电脑执行,中途能随时接管权限。听起来基础,但当时没有稳定方案。于是他开了个新项目,取名Jean2——因为第一个版本"不太行"。
精装房的隐形天花板
主流coding agent有个共同设计:出厂自带"性格"。系统prompt里塞满了预设倾向,比如优先写测试、偏好特定代码风格、自动触发某些工具链。
这对开箱即用的用户是福音,对想精细控制的人是枷锁。你可以追加自定义prompt,但只能"补充"不能"覆盖"。就像给自动驾驶汽车写驾驶建议,方向盘始终在车手里。
内置工具同理。文件读写、代码搜索、终端执行——这些功能封装得严严实实,你不能改它们的prompt,不能调整行为逻辑,甚至不知道它们具体怎么跟模型交互。想要额外能力?官方途径是接MCP(模型上下文协议)或Skill,但体验总差一截。
Jean2作者的解决方式很直接:零预设prompt,零内置工具。系统消息只由用户提供的AGENT.md和对话历史构成。工具完全外置,用任何语言写都行,通过JSON stdin/stdout通信,启动前要经过用户定义的安全检查。
这种设计把"agent"从特定场景解放出来。你可以搭编程助手,也可以搭旅行规划师、合同审查员、游戏NPC——只要写对应的工具集和系统提示。
80MB内存跑三个项目
架构上,Jean2跑成守护进程,同时暴露socket和HTTP接口。桌面客户端、手机客户端、甚至命令行,都能随时连上来。
一个典型场景:通勤路上用手机语音起草产品需求文档,到公司打开笔记本,agent已经在根据需求生成技术方案。中途需要确认数据库权限,手机弹通知,点一下放行。整个过程不需要保持客户端常驻——后台进程占用80到100MB内存,同时处理三个不同项目。
这个数字值得对比。VS Code+Copilot插件通常吃掉500MB以上,Cursor独立客户端更夸张。Jean2的轻量化来自两个取舍:不做内置UI渲染(纯数据协议),工具按需spawn而非常驻。
工具系统的设计尤其讲究。每个工具必须声明自己的可视化类型:diff、code、markdown、table、todo list……这些元数据只给客户端看,不会塞进LLM的上下文窗口。换句话说,模型只需要处理干净的JSON,显示层自己决定怎么呈现。
工具定义和描述完全由用户掌控。这意味着你可以让同一个"搜索"工具,在A项目里返回精简摘要,在B项目里输出完整引用。没有平台方强加的"最佳实践"。
乐高哲学的代价
这种自由度不是没有成本。Jean2不提供一键安装的体验,你需要自己写AGENT.md、配置工具目录、定义安全检查规则。作者的原话是:「这不是给想要"设置好就不用管"的人用的。」
但恰恰是这种"不讨好",切中了一批用户的需求。MCP生态2024年爆发式增长,本质上是市场对"可组合AI"的投票。Jean2走得更极端——连MCP的通信层都不预设,只给最基础的进程管理+JSON管道。
有个细节能说明设计倾向:工具的安全检查是"显式且前置"的。不是运行完再审计,而是启动前就必须通过用户定义的校验。这增加了开发者的负担,但避免了"agent突然删了生产数据库"这类事后追责的困境。
作者提到自己同时用多个模型——GLM、Minimax、GPT系列、OpenRouter上的新实验品。Jean2的架构允许为不同项目绑定不同模型,甚至让子agent调用不同供应商的API。这种"模型无关"在商业化agent里很难见到,因为平台通常绑定自家或合作方的模型。
从700万到零预设
回看那个700万token的日均消耗,它既是使用强度的证明,也是挫败感的来源。当平台预设和你的工作流冲突时,每多一层抽象,就多一层摩擦。
Jean2的解法是把抽象层剥到最薄。没有"智能体框架",没有"最佳实践封装",只有进程、协议、JSON。这种设计哲学在软件史上反复出现:Unix管道、Docker容器、WASM模块——把复杂问题拆成可组合的简单单元,让用户自己搭。
作者没有公布用户数量,但项目开源后收到了一类特定反馈:来自其他agent开发者的issue和PR。他们不是在用Jean2替代自己的产品,而是参考它的进程管理和工具协议设计。
这或许是"乐高化"agent的终极验证——当工具制造者自己也想拆开看看时,说明模块化做到了位。
热门跟贴