当前推荐先读:沿 generate 走完一次 Agent 任务。 先按完整任务顺序进入各职责组件,讲完回到主线,再用下面的动作页展开具体交接。

读过 generate() 和 _run_turn() 后,进入 Trajectory Management 专题,专门理解历史接续、改写、分叉与训练片段。正文与下载文件来自 slime_photo 中的同一份笔记。

按任务阶段阅读

阶段从这里读这一段在做什么
1 启动条件Pre-4. 启动前准备Adapter 入口、任务、Session、执行环境和题目准备好,走到 Harness.run 前
2 Agent 启动4. Launch Agent → 5. Manage Sandbox / 6. Exec Commands配置和命令怎样形成,环境怎样落实,CLI 怎样启动并等待
3 模型请求循环7. Make API Calls → 2. Translate & Forward → 3. Generate Tokens → 3.5. 完成一次模型请求CLI 已在运行;一次请求从回连、转换到生成、响应和轨迹,可能重复多轮
4 回到任务收尾完整任务主线的第 7、8 步CLI 结束后收集 diff,独立评估,返回结果或导出训练轨迹,再清理

Pre-4 在目录中放于 3.5 后、4 前,表示给动作 4 增加前置阅读。真实执行先准备和启动,再发生模型请求;组件动作编号不表示这个时间顺序。

先看项目开头的任务生命周期总览,再从各动作页的定位图进入具体数据流。

下面保留 CodeWiki 原图作为组件导航。原图的启动调用实际由外层 generate() 发起;本例的直接 HTTP 客户端是沙箱中的 CLI,没有独立 External Platforms 实现。原图动作 1 的接收入口与动作 7 一起说明,动作 8 的响应返回在 3.5 展开。

CodeWiki 组件关系概览,用于选择阅读主题

每章正在跟随哪一层调用

generate() 编排一次样本任务。进入 Harness 后,运行中的 CLI 可以多次发起模型请求;2 → 3 → 3.5 展开的是每次请求内部的 _run_turn()。5 提供环境能力,6 组合这些能力执行长命令;它们会被任务中的多个位置调用。

因此,同一个文件可以出现在多个章节中,阅读时只展开当前职责。各章的“本章主要源码文件与入口”可以点开查看文件、符号和行号。

章节当前主线本章展开读完返回
2. Translate & ForwardBaseAdapter._run_turn()将客户端的消息历史与可用工具定义整理成共享格式;本章不生成 token。回到 _run_turn(),将 translated 与 tools_schema 交给动作 3 编码。
3. Generate TokensBaseAdapter._run_turn() → call_sglang_generate()模板编码、采样参数、生成请求及 TurnRecord 封装。回到 _run_turn(),动作 3.5 从 turn.output_ids 开始解码与收尾。
3.5 完成一次模型请求BaseAdapter._run_turn()解码、解析、协议回复、轨迹记录与请求退出;区别响应对象构造和实际网络发送。请求返回运行中的 CLI;会话仍可继续。本章不结束整个 Agent 任务,也不导出训练样本。
Pre-4. 启动前准备generate()准备 Adapter 服务、任务信息、会话、执行环境、CLI 和题目文件。在 generate() 中调用 Harness.run(),把已经准备好的六项输入交给动作 4。
4. Launch Agentgenerate() → BaseHarness.run()确认用户、建立 HarnessContext、写配置、形成命令与环境、委派运行并接回状态。退出状态沿 run_agent()/Harness.run() 返回 generate();外层继续收集 diff 与独立评分。
5. Manage SandboxSandbox 接口 → E2BSandbox 后端命令和文件 API 如何落实到后端、返回结果与错误,按需回看环境创建和回收。回到调用 sb.exec/read_file/write_file 的位置,继续原来的任务;本章不是启动之后单独发生的一阶段。
6. Exec Commandsrun_agent() → exec_and_wait()用动作 5 的文件/命令能力写脚本、后台启动、检查完成标记、读取输出与处理等待预算。返回 (exit_code, output) 给 run_agent();后者只把整数状态继续交还 Harness 与 generate()。
7. Make API Calls运行中的 CLI → Adapter HTTP 入口地址与凭据如何对应 HTTP 路由、请求 JSON 和会话身份;CLI 内部组装历史和执行工具属于外部程序。进入 _run_turn() 的输入转换,即动作 2;随后 3 和 3.5 完成本轮并响应 CLI。

阅读材料

CodeWiki 原始章节 · 本节资料文件夹