
《Agent Runtime 工程化》第二章 TypeScript / Node Runtime 基础:2.5 背压:不要让日志淹没上下文
背压是很多 Agent Demo 不谈、生产系统绕不开的问题。工具输出可能非常大,例如 npm test 打出几万行日志,grep 搜索整个仓库,构建工具输出长堆栈。Runtime 不能把所有内容原样塞进模型上下文。 正确做法是分两层处理: 第一层是执行层限流。命令执行器记录完整日志到文件或 tra

背压是很多 Agent Demo 不谈、生产系统绕不开的问题。工具输出可能非常大,例如 npm test 打出几万行日志,grep 搜索整个仓库,构建工具输出长堆栈。Runtime 不能把所有内容原样塞进模型上下文。 正确做法是分两层处理: 第一层是执行层限流。命令执行器记录完整日志到文件或 tra

coding agent 迟早会执行 shell 命令。读目录、跑测试、安装依赖、生成文件、调用 CLI,都会经过子进程。这里必须谨慎,因为 shell 是副作用入口。 一个最低限度的命令执行器应当具备: 明确的工作目录; 环境变量白名单或脱敏策略; stdout/stderr 流式输出; 超时;

一个成熟 runtime 必须支持取消。取消不是'UI 不显示了',而是从用户操作一路传播到模型请求、工具执行、子进程和资源清理。 这段代码只是开始。上线后的 runtime 需要把 AbortSignal 传给 HTTP client、模型 SDK、工具 executor、子进程管理器。任何一层吞

Agent 产品喜欢流式输出,主要是为了降低用户等待的不确定性,也让 runtime 更早看见模型意图。炫技排在很后面。 模型流可能先返回解释文字,再返回工具调用片段。工具执行也可能先输出日志,再最终退出。统一处理这些事件,最自然的接口是 async iterator: 事件流的好处是前端、CLI、
很多人学会 async/await 后,会误以为异步编程已经结束。对普通 Web API 来说,这通常够用;对 Agent Runtime 来说,不够。 Runtime 面对的不是一次请求一次响应,而是长时间过程: 模型流式吐出 token 和 tool call delta; shell 命令持续

写 Agent Runtime 之前,先补一门不太体面的课:异步任务和进程控制。 Agent Runtime 表面上是在调用模型,实际上是在管理一串可能很慢、会失败、有副作用、需要取消的异步任务。模型请求会流式返回,shell 命令会持续输出,文件系统可能被修改,用户可能中途按下取消,工具可能超时,

读完本章,你应该能清楚解释 Agent、Workflow、Tool、Runtime 的边界;能说出 step、turn、run、trace、session、checkpoint 的区别;能解释一个 Agent 为什么会卡死、乱调工具、爆 token;也能看懂本书后续所有章节围绕的是同一个运行闭环,而

选三个项目:Cline、Codex CLI、aider。分别画出一次用户请求如何走到工具调用的链路图。你不需要读完整个仓库,但要回答: 1. 用户输入进入哪里? 2. 模型调用在哪里发生? 3. 工具在哪里注册? 4. 工具调用结果如何回到模型? 5. 权限审批或确认在哪里发生? 6. 日志或 tr

写一个能演示的 Agent 很快。写一个能稳定跑的 Agent 很慢。慢在三件事上。 第一,模型输出不是普通函数返回值。它可能少字段、多字段、把 JSON 写坏、重复调用工具、误解工具描述,或者在工具失败后编一个像真的观察结果。Runtime 要把模型输出当作不可信输入处理。 第二,工具不是纯计算。

本书统一使用以下术语。 turn 是一次用户与系统的交互轮次。用户提出一个任务,是一个 turn 的开始。 step 是 runtime 在一个 turn 内的一次模型决策或工具执行推进。一次 turn 可以有很多 step。 run 是一次完整执行,从收到用户请求到最终回答、失败或取消。长任务中,

一个最小 Agent Loop 可以写成这样: 这段伪代码故意没有把逻辑藏进框架名里。runtime 的关键责任全在其中:构建上下文、调用模型、校验工具、审批权限、执行工具、记录观察、判断停止。如果其中任何一步被省略,demo 仍然可能成功,生产系统却会变脆。 图 12:Agent Runtime

ReAct 论文提出把 reasoning 与 acting 交错起来:模型可以在最终答案之前产生行动,行动结果再反过来影响后续推理。这个思想后来进入了工具调用产品形态:模型输出结构化 tool call,应用执行工具,再把 tool result 或 observation 传回模型。 但要注意,
先把四个词分清楚。 Agent 是面向目标的执行体。它可以根据上下文选择下一步,可能调用工具,也可能直接回复。Agent 的核心不是'像人',而是'根据状态作决策'。 Workflow 是预先编排好的流程。它可以包含模型节点,但节点顺序通常由工程师写死或由状态机明确控制。很多可靠系统会把 Agent

先把地基打准:Agent Runtime 到底比普通 LLM App 多负责了什么? 很多团队第一次做 Agent,架构图都很相似:用户输入,调用模型,模型说要用工具,程序执行工具,再把结果塞回模型。这个图没有错,但它像把报社写成'记者采访,编辑发稿'。编辑部还要选题、核实、排版、审稿、撤稿、归档、

从普通 LLM App 走向 Agent Runtime 工程化的系列教程导读,介绍学习路径、适合读者和全书实践闭环。


综述由AI生成对于在两个有序数组中找中位数的问题,转换为寻找第 k 小元素,利用二分切割或递归剔除一半数据来达到 O(log(m+n)) 要求。给出了五种 Java 实现:标准的二分分割法、递归版和迭代版寻找第 k 小、朴素的合并归并以及另一种基于中位数性质的二分,并对比了时间、空间和适用场景。核心建议是面试优先用二分分割法,工程中偶有第 k 小通用查询需求时可选用迭代版。
综述由AI生成从 C11 的 _Generic 类型分派讲起,过渡到 C++17 几个让泛型编程更自然的特性:if constexpr 终结了冗长的 SFINAE 重载,结构化绑定简化多返回值解包,类模板参数推导省去显式类型声明,constexpr lambda 实现编译期计算,内联变量方便常量集中管理。在这些基础之上,讨论了策略模式的泛型实现、类型擦除的性能开销、从 SFINAE 到 if constexpr 的迁移路径,以及大型工程中泛型组件的版…

综述由AI生成Openclaw是基于猫爪被动适应性原理的开源仿生机械爪,采用欠驱动与变刚度设计,通过机械结构自适应物体形状,大幅降低控制难度与成本。它深度集成ROS 2,支持MoveIt 2仿真,已在仓储分拣(成功率92%)、果蔬采摘(损伤率<3%)和家庭服务等场景验证,工具链覆盖设计、仿真与控制。优势在于成本可控制在500元以内,但负载、精度及长期耐用性仍不及工业伺服抓手,产业化亦面临质量控制与供应链挑战。