并行工具调用与流式执行如何降低延迟?
- 传统模式: 串行——生成一个工具调用、执行完、拿到结果、再决定下一步,严格的排队等待浪费时间;
- 流式执行: 第一个工具调用的参数一经完整生成并通过校验即可立即执行,无需等模型生成后续调用;
- 例证: 模型一次推理要输出搜索代码、查配置、读日志三个调用时,第一个调用的执行与后两个的生成重叠进行;
- 并行: 彼此独立的调用可并行执行而非排队;
- 效果: 重叠执行显著降低端到端延迟;
并行调用失败如何级联中止?
- 声明: 每个工具定义应声明自己是否支持并发执行,默认为否(失败安全);
- 机制: 某个调用失败时,级联中止同一批并行启动且依赖该结果的其他调用;
- 边界: 不波及独立的调用与父级操作;
- 对应: 这是 Harness 实践 中“故障边界控制”原则的具体实现;
大文件读取如何节省上下文?
- 现状: 代码库通常很大,模型上下文窗口有限,整体塞入既不经济也没必要;
- 手段一: 工具支持按行号范围读取特定片段,例如只读第 100 到 150 行;
- 手段二: 返回内容时附加行号标注,每行代码以实际行号作为前缀;
- 收益: 模型可精确引用“
src/main.py 第 42 行”,减少歧义并使后续编辑更可靠;
长命令输出如何处理?
- 问题: 编译或测试可能产生数千行输出,全部注入会迅速耗尽预算;
- 做法: 保留前若干行(通常含错误上下文)与后若干行(通常含错误总结),中间以一行提示替代,并说明完整输出已保存到临时文件供按需查看;
环境信息如何动态注入?
- 定位: 这是 Agent 状态栏技术在 Coding Agent 中的集中体现;
- 注入内容一: 当前工作目录,确保路径引用不出错;
- 注入内容二: git 分支,知道自己站在主分支还是特性分支;
- 注入内容三: 最近提交记录,了解项目演化脉络;
- 注入内容四: 未暂存与已暂存的变更概览,清楚已做了哪些修改;
- 形式: 每次推理前在上下文末尾以 Agent 状态栏追加注入;
- 禁忌: 不应硬编码在静态系统提示词中,那会破坏 KV Cache 效率;
- 效果: Agent 获得“环境感知”能力,每个决策基于当前状态而非过时假设;
为什么命令执行环境需要状态持久化?
- 依赖状态的操作: 切换目录、激活虚拟环境、设置环境变量、启动后台服务;
- 全新 shell 的问题: 状态全部丢失——刚
cd 到项目目录,下一条命令又回到根目录;部分操作(如激活 Python 虚拟环境)效果只在当前会话有效,无法跨会话传递;
- 做法: 维护一个持久化终端会话,Agent 启动时创建并全程保持活跃,每条命令都在共享终端中执行;
- 对齐: 这更符合人类开发者在一个长期终端窗口中工作的习惯;
- 例外: 保留启动隔离终端的能力以支持并行任务,但持久化会话应是默认模式;
即时语法反馈为什么有效?
- 做法: 文件写入操作一完成,工具层就自动运行对应的 linter 或语法检查器,把结果作为工具返回值的一部分呈现给 Agent;
- 效果: 语法错误在下一轮推理中立即可见,Agent 在错误引入的那一刻就能修正,而不必等到运行测试;
- 类比: 就像 IDE 中打错一个括号编辑器立刻画红线;
- 共性: 五项技巧相互配合,指向同一目标——让 Agent 像经验丰富的开发者那样流畅工作;