LAYER 03 · 追踪 Agent 主干

Inbox、Turn 与 Step

一个用户任务如何包含多次模型请求、并行工具和中途 steering

20 min3 处源码锚点upstream@47f9438
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。

Learn DeepSeek Harness

独立教学项目。解释力来自源码,判断边界以官方仓库为准。