DeepSeek Harness 源码教程
DEEPSEEK HARNESS · OFFLINE TUTORIAL

04 · Session

事件溯源、Surface、Step / Turn

1. Session 不是 Message[]

不是:
messages = state

而是:
events = truth
messages = projection(events)

完整 interaction facts 才是 source of truth。模型历史只是从这些事实投影出来的一种视图。

2. 典型事件序列

turn/start
step/start
user/message
assistant/chunk
assistant/chunk
assistant/message
tool/call
tool/result
step/end
turn/end

3. 模型可见即已记录

关键不变量:真正进入模型 request 的上下文,应当能从 Session Log 重建。

否则 replay、恢复、fork、debug、telemetry 都会出现“模型看过但日志里不存在”的幽灵状态。

4. Raw Log 与 Surface

Raw Event Log
      │
      ▼
Surface Projection
      │
      ▼
deriveMessages()
      │
      ▼
LLM messages

Raw Log append-only;Surface 决定“模型当前如何看历史”。Compaction 就建立在这层分离之上。

5. Step 与 Turn

概念含义
Step一次模型请求 + 这次请求产生的工具工作
Turn围绕首输入展开的完整工作周期,可包含多个 Step
USER: “帮我看看 package.json”

TURN START
├─ STEP 1
│   ├─ LLM
│   └─ read_file
├─ STEP 2
│   ├─ LLM
│   └─ grep
└─ STEP 3
    └─ final answer
TURN END