返回 DeepSeek-Reasonix
REASONING_CONTRACT.zh-CN.md
根目录 / docs / REASONING_CONTRACT.zh-CN.md
1 # 适配器拥有的思考选项
2
3 每个协议适配器随工厂注册纯函数 `ReasoningForConfig`,返回当前连接和模型可用的
4 选项、顺序、显示名称及默认值。核心不定义统一的力度枚举。已创建客户端通过
5 `ReasoningProvider` 返回独立的能力副本,外部修改不会改变客户端行为。
6
7 配置、桌面菜单、CLI 补全、本地模型目录和请求校验使用同一套声明。查询能力前必须
8 先解析模型级覆盖。扩展供应商的选项由其 `Efforts` 声明提供,在 sidecar 请求前校验。
9
10 显式选择必须与声明的 ID 完全一致。不支持的值在网络请求前返回
11 `UNSUPPORTED_REASONING_EFFORT`,不再转换到相邻档位。能力元数据缺失时,显式选择
12 返回 `UNKNOWN_MODEL_REASONING`,提示使用 `auto` 或配置协议及档位。空列表本身不能
13 证明模型不支持思考;显式 `reasoning_protocol = "none"` 才声明不支持这些控制。
14 非法能力声明也会报错。
15 只有开关能力的协议,不能通过填写 `supported_efforts` 虚构低、中、高能力。
16
17 `auto` 保留原有“清除覆盖、使用默认”的界面与 CLI 含义,不等于自适应思考。
18 请求级 override 使用空字符串表示继承,而不是发送字面值 `auto`。保留旧配置加载时
19 对大小写及已退役 `off` 的兼容处理;已有合法 ID 和 TOML 字段名不变。未声明自定义
20 档位时,已保存的 DeepSeek `medium`、`xhigh` 沿用历史请求值 `high`,不重写配置。
21 新的显式选择和请求覆盖仍拒绝未声明的别名。其他非法值明确报错;非法默认值保留供校验,不替换为第一档。
22
23 | 边界 | 兼容行为 |
24 | --- | --- |
25 | Provider TOML | 旧字段与合法 ID 继续可读,加载时不重写文件 |
26 | 桌面 `EffortInfo.options` | 新增可选元数据,同时保留旧 `levels` |
27 | 新前端连接旧后端 | 回退读取 `levels` |
28 | 远程模型目录 | 继续使用原有 `Efforts` 声明 |
29 | 模型历史 | 不改提示词、工具定义或历史思考内容 |
30
31 默认请求保留原有序列化。主动修改力度仍可能影响服务端缓存;契约本身不增加提示词
32 内容。实验性 governor 在自动使用 low 前检查适配器声明。本次不移植 Harness 的请求日志架构。
33
34 `ResolveReasoningEntry` 按“模型覆盖、连接覆盖、当前内置声明”的优先级统一解析。
35 内置声明精确匹配实际请求 URL、API 类型和模型 ID,包括 Token Rhythm 的
36 `deepseek-flash` 别名;重命名连接不影响匹配。用户显式选择其他思考协议时,使用该
37 协议的档位,不混入内置协议的档位。界面、启动校验和适配器构造共用解析结果。
38 原始配置只保留用户声明,继承值随内置目录更新。无法判断来源的历史声明仍按显式
39 配置保留,避免覆盖用户修改。
40
41 完整写入配置时生成旧版本可读的模型能力快照。可选 `reasoning_defaults` 标记记录
42 自动生成的字段及声明摘要;新版本只剥离未经修改的自动字段,继续继承最新默认值。
43 旧版本仍可读取原有协议、列表和默认值。旧编辑器删除标记或修改声明但保留旧摘要时,
44 这些值转为显式配置。设置页增量保存保留无关及未知字段,不写入未变更的继承值。
45
46 | 字段或格式 | 旧数据 | 新版本读取 | 旧版本读写 | 结论 |
47 | --- | --- | --- | --- | --- |
48 | `reasoning_defaults` | 无标记视为显式配置 | 未修改的标记字段继承当前默认 | 忽略标记、读取快照;丢失标记后值视为显式 | 降级可读 |
49 | 模型能力 `reasoning.state` | 可缺省 | 区分支持、不支持、未知 | 忽略新增元数据 | 旧界面继续使用原字段 |
50 | 远程目录 `ReasoningUnknown` | 缺省保留原声明语义 | 传递适配器的未知状态 | 忽略新增标记 | 原 `Efforts` 仍有效 |
51 | 会话模型和 effort | 原存储字段 | 模型变更时作为整体重新绑定 | 存储格式不变 | 无需迁移会话 |
52
53 会话 effort 属于具体供应商和模型。切换模型时清除继承的 effort,即使两者都支持
54 同名档位;同模型的显式非法选择仍报错,不静默降档。新草稿仅从同模型继承 effort。
55 启动参数通过仅运行时存在的 `EffortModel` 标识继承来源;CLI、桌面、ACP 和 serve
56 遵循同一边界。元数据未知时仍可通过 `auto` 清除覆盖。
57
58 参考 [DeepSeek Harness 设计](https://github.com/deepseek-ai/deepseek-harness/blob/d347e703908d0406b7a7ef80e3a0e594d86b2215/.agents/notes/implemented/architecture/2026-07-24-adapter-owned-reasoning-effort-capabilities.zh.md)
59 独立实现,未复制上游代码。
60
60 lines MARKDOWN