LAYER 03 · 追踪 Agent 主干
Inbox、Turn 与 Step
一个用户任务如何包含多次模型请求、并行工具和中途 steering
turn ⊃ step → tool debt → next step为什么“用户发了一条消息”不等于“系统只会请求一次模型”?
先建立直觉
Turn 像一张尚未结清的工单,Step 是工单上的一次处理回合。工具结果、新 steering 或 turn-stopping 义务会让同一工单继续下一回合。
MECHANISM
机制拆解
followup 创建普通下一轮输入,steer 面向最近 Step 边界,inject 只排队上下文且不会唤醒空闲 Agent。Driver 每次只认领下一 Step 批次。
工具调用按 executionMode 分类为 barrier 或有界滚动并发池;模型顺序的结果仍按权威次序后处理与记日志。
第 1 步 / 共 6 步
打开 Turn
在认领输入前先写持久边界。
INVARIANTS
无论怎么扩展,都不能破坏
- Turn 在首次认领前打开,即使被拒绝也要闭合
- Step 是一次模型请求边界
- 自然停止前必须经过 agent/turn-stopping
FAILURE MODES
最容易踩中的坑
- ×用消息数量推算 Step 数量
- ×steer 与 followup 混为一谈
- ×并行工具完成顺序直接决定模型历史顺序
VERIFY IN SOURCE
不要相信结论,去源码里复核
以下链接固定到官方 deepseek-harness@47f9438;查看当前上游时请留意后续 breaking changes。
KNOWLEDGE CHECK
先停十秒,再揭晓答案
inject 为什么默认不唤醒空闲 Agent?
为什么下一章紧接在这里
每个 Step 在请求模型前都要重新装配完整请求头。下一章拆解 Prompt Assembly。