// TODO
正在教一个 while 循环学会使用工具。当前进度:它已经会自己读文件和跑命令了。
Agent 不是一次性的。你让它重构一个模块,做到一半网断了;你让它写测试,写了三个文件突然要开会;你让它调一个 bug,调到一半想明天再继续。这些场景下,如果关掉终端就意味着所有上下文全丢,那这个 Agent 就只能做"五分钟能搞定"的小事。 传统 CLI 工具没有"会话"概念——grep 不需要
代理工具的配置是一种很反人类的体验。YAML 嵌套三四层,字段名靠记忆,改错一个端口号全局断网,加条规则要先搞清楚 DOMAIN-SUFFIX 和 DOMAIN-KEYWORD 的区别。对新手来说,光是理解 proxy-groups 里 select 和 url-test 的差异就够喝一壶的。 所以
Agent 的 bug 和传统软件不一样。传统软件出了问题,你看 traceback、加断点、print 几下基本就能定位。但 Agent 的 bug 往往不是代码报错——代码跑得好好的,是模型做了一个莫名其妙的决策。 比如你让 Agent 改一个配置文件,它先 read_file 读了内容,然后突
Agent 系统有一个不那么光鲜但极其实际的问题:对话越来越长了怎么办? 一个 Agent 在做稍微复杂点的任务时,轻轻松松就能产生几十轮工具调用。每次 read_file 返回几百行代码,每次 grep 返回几十条搜索结果,每次 bash 返回一屏命令输出。这些东西累积在消息历史里,token 数
"多 Agent"大概是 AI 领域目前最被高估的概念之一。 每次看到"多智能体协作完成复杂任务"的 demo,我都会想:你确定这不是一个 Agent 跑三遍、中间加了几条 system prompt 就能搞定的事吗? 但话说回来,在做 BareAgent 的过程中,确实遇到了一些场景让我觉得"拆分
Agent 系统有一个根本性矛盾:你希望它自动化程度够高,这样才好用;但你又知道 LLM 会犯错,不能什么都让它自动做。 给 Agent 跑 git status 完全没问题,但如果它突然要跑 rm -rf /,你肯定想先被问一句。问题是,这条线画在哪里? BareAgent 的权限系统就是在处理这
一个 Agent 到底有多"能干",不取决于模型多聪明,取决于你给了它什么工具。 模型再厉害,不给它 bash 工具就跑不了命令,不给它 write_file 就写不了文件。工具定义了 Agent 能力的硬边界。所以 BareAgent 的工具系统设计,本质上就是在回答一个问题:怎么告诉模型"你能做
做 Agent 系统时,一个绕不开的问题是:你到底要绑死在哪家模型上? BareAgent 一开始就想支持多家 LLM——至少 Anthropic 和 OpenAI 要能切换。听上去不难,不就是封装个接口嘛。但真正动手之后才发现,两家的 API 差异比我预想的要大得多,而且"差异在哪里"这件事本身就
最近在做 BareAgent 这个项目的时候,最大的一个感受是:Agent 系统的核心其实没有大家想象的那么复杂。剥掉所有花哨的外壳,它就是一个循环——调模型、拿工具调用、执行、把结果塞回去,然后再调一次模型。 听起来很简单,但在实际工程里把这个循环做得稳定,比做得"聪明"重要得多。 循环的本质 如