00 · 样卡(每章照这个结构写)

本章 3 句话
  1. 整个项目只有一个 Agent。它循环做三件事:思考、调工具、看结果,下文叫它主环。
  2. 需要并行时,在同一轮里发多条工具调用。
  3. 子 Agent 以前做过,数据显示基本没被用上,所以删掉了。
L2

为什么只用一个 Agent,不用多 Agent?

单环三数:440 / 60 / 0
数据显示子 Agent 基本没被用上,所以删掉了;并行改成同一轮发多条工具调用。
我们最后只保留了一个 Agent,这个决定是看数据做的。交易子 Agent 在 440 个会话里一次都没被调用。检索子 Agent 被调用了 60 次,但每次只做一次搜索就返回,等于多了一层没有价值的转发。所以我把子 Agent 删掉了。现在跨平台检索由这一个 Agent 在同一轮里发 3 到 5 条搜索,框架并发执行。
展开:原理、对比、代码出处

三个数字分别是什么

  • 440:交易子 Agent 经历的会话数,期间被调用 0 次。
  • 60:检索子 Agent 被调用的次数,每次都只调一次 item_search 就返回。
  • 0:删掉之后用真模型验收了 4 遍,task_dispatch 出现 0 次。

单环 vs 多 Agent

单环 + 同轮多发主从多 Agent
并行方式一轮发多条工具调用派发给子 Agent
额外模型调用没有每次派发至少多 1 次
上下文一份,全程可见要打包传给子 Agent
什么时候值得子任务一步就完子任务要跑多步、上下文需要隔离

写安全靠什么

不靠拆角色,靠三个写在代码里的机制:每个工具标好是不是只读(is_read_only);PermissionEngine 只给点了名的写工具开门;下单工具只弹一张确认卡,用户自己点按钮、走 HTTP 接口才真下单。

出处:app/agent/agents.py:100(build_main_agent)、app/agent/limits.py:23(MAIN_MAX_ITERS 默认 30)、CLAUDE.md §2.2

追问链:面试官接着会问什么
那什么时候你会用多 Agent?
两种情况:子任务自己要跑很多步,或者中间结果很大、不适合放进主上下文。我们的子任务一步就结束,两条都不满足。
一个 Agent 挂十几个工具,模型不会选错吗?
有这个风险。所以提示词里专门有一段 <tool_policy>,讲同类工具该选谁。模型外面还套了一层检查代码(Harness),会查调用顺序、查是不是在重复调。
同轮多发,怎么保证不互相踩?
只有标了 is_concurrency_safe=True 的只读工具才会并发执行。写工具不直接写数据,只返回一张确认卡。
删之前的方案白做了吗?
没有白做。当时的数据都保留在 docs/milestones/,这次能下决心删,依据就是那些数据。
合上页面自测 3 题
  1. 440、60、0 各是什么?
  2. 什么条件下你会改回多 Agent?
  3. 写安全靠哪三样机制?