证据等级:A1 + A0/E3 + B
- A1:固定实现源码可确认部分 Harness 和编码逻辑会条件保留或删除 reasoning 内容。
- A0/E3(限定 Endpoint、账户和时间窗口):本项目协议实验表明普通多轮与 Tool Loop 的行为可能不同,且 HTTP 200 不代表字段语义生效。
- B:删除 reasoning 对质量、成本和 Cache 的净收益,需要按 Provider、模型、模式和任务复现。
请先阅读 研究方法与事实校准。创新点索引:I-14
系列:LLM + Harness = Agent
关联:I-13 Byte-Stable Prefix
推理模型的响应可能包含:
visible content
tool calls
reasoning / thinking content
provider metadata
signatures or encrypted blocks
下一轮是否需要回传 reasoning,不存在跨 Provider 的统一答案。可能出现:
因此 Harness 不应使用全局 strip_reasoning=true,而应使用版本化 Replay Policy:
Provider Capability
+ Response Shape
+ Tool State
+ Thinking Mode
+ Endpoint Evidence
→ Replay / Drop / Summarize / Reject Unknown
早期版本把回传 reasoning 写成纯浪费,并给出固定 Token 和金额示例。该表述过强。
Reasoning 可能:
只有在确认协议允许删除、任务质量不下降且 Usage 显示实际收益后,才能称为优化。
reasoning_content、thinking block、encrypted content、reasoning item 不是同一协议。内部 Runtime 应统一抽象,但 Wire Adapter 必须保留 Provider-specific 规则。
encoding_dsv4.py 中的 _drop_thinking_messages 可以证明编码实现存在相应预处理逻辑,但不能单独证明:
删除字段后请求成功,只能证明服务端接受。还必须确认:
type AssistantTurn = {
visibleContent?: string;
toolCalls?: ToolCall[];
reasoning?: ReasoningPayload;
providerMetadata?: Record<string, unknown>;
};
用于用户对话连续性,可以保留、摘要或在 Compaction 中重写,但需要遵守产品语义。
通常必须与 Tool Results 保持 ID、顺序和状态一致。不得为了省 Token 删除关键调用记录。
Provider-specific:
type ReasoningPayload = {
format: "plain_text" | "signed_block" | "encrypted" | "provider_item";
rawRef: string;
replayRequirement: "required" | "optional" | "forbidden" | "unknown";
sensitivity: "restricted";
};
可能包含 ID、签名、状态和序列号。Adapter 不能随意丢弃未知字段后继续执行高风险流程。
policy_id: deepseek-thinking-tools-v3
provider: deepseek
endpoint_capability_version: 2026-07-27
conditions:
thinking: true
has_tools: true
action: replay_required_fields
fields:
- role
- content
- reasoning_content
- tool_calls
fallback_on_unknown: stop_and_probe
| Action | 含义 |
|---|---|
replay_exact |
原样回传 Provider 要求结构 |
replay_required_fields |
只保留能力矩阵确认必需字段 |
drop_reasoning |
删除 reasoning,保留可见内容和工具状态 |
summarize_visible_content |
只压缩可见对话,不碰协议状态 |
stop_and_probe |
未知协议时停止或运行安全探针 |
协议未知 + Tool Side Effect
→ 不尝试激进删除
→ 保留服务端原始结构或停止
成本优化不能优先于 Tool Loop 正确性。
provider: deepseek
model: deepseek-v4-pro
endpoint: <redacted-endpoint-id>
observed_at: 2026-07-27
modes:
ordinary_thinking:
replay_reasoning:
accepted: true
semantic_effect: unverified
drop_reasoning:
accepted: true
continuity: observed_in_test_window
tool_thinking:
replay_reasoning:
accepted: true
drop_reasoning:
accepted: inconsistent_or_unverified
limitations:
- endpoint/account/time scoped
- hosted API behavior may differ from encoding source
每条结论必须绑定:
Session Store
→ Provider-neutral AssistantTurn
→ Replay Policy
→ Provider Wire Builder
→ Raw Request Fingerprint
→ Response Recorder
可以保存受限引用,但不应默认把完整 reasoning 暴露给普通 UI、日志或 Diagnostics。
只在发送时应用 Policy,避免为了某个 Provider 永久破坏 Session 原始结构。
Provider 返回新字段时:
Reasoning 可能包含:
默认:
Provider 要求回传,不代表必须向用户展示;用户可查看的解释应是经过产品设计的简明依据,而不是原始隐藏推理。
Reasoning 中出现的命令或 Tool 建议不具有执行权。Tool Calls 仍需 Schema、Policy、Permission 和 Approval。
Compaction 应分别处理:
visible conversation
protocol-required tool state
evidence refs
reasoning payload
如果协议要求和历史结构无法兼容,创建明确的 Compaction/Reset 点,并记录:
old session ref
summary artifact
retained evidence
provider reset reason
cache reset reason
ordinary / tools
thinking / non-thinking
replay / drop / modified
stream / non-stream
Flash / Pro
SDK / raw HTTP
HTTP success
next-turn continuity
tool-call completion
first-pass task success
incorrect tool association
input tokens
cache hit/miss
latency
cost per successful task
允许 drop_reasoning 进入默认策略,至少满足:
因此需要 Capability Version、保守默认、Telemetry 和回滚。
Reasoning Content 处理不是“全部回传”与“全部删除”的二选一。
可靠 Harness 应:
每个 Token 都应证明价值,但协议正确性必须先证明。
← 返回全部 18 篇研究