Files
claude-code/docs/internals/opus-4-7-model-integration-checklist.md
unraid 95fece4b51 feat: 整合功能恢复与技能学习闭环(含 ECC v2.1 parity + Opus 4.7 接入 + prompt 工程优化)
主要变更:
- Skill Learning 闭环系统 (9/9 AC)
- Opus 4.7 模型层接入 + adaptive thinking
- Prompt 工程优化 (64 审计测试)
- Agent Teams 简化门控 (默认启用)
- Windows Terminal 后端修复 (EncodedCommand/WT_SESSION)
- TF-IDF 技能搜索精准化 (字段加权/CJK 优化)
- Autonomy 系统 (/autonomy 命令)
- ACP 协议完整实现
- mock.module 泄漏修复 (CI 全绿)
- 152+ lint/type 修复
2026-04-22 16:07:42 +08:00

15 KiB
Raw Blame History

Claude Opus 4.7 Model Integration Checklist

本文档整理 Claude-Opus-4.7.txtsrc/constants/prompts.ts 的关联点,以及将 Claude Opus 4.7 正式接入当前项目时需要联动的模型层清单。

当前判断:如果仅依赖授权文件登录,但不显式指定 claude-opus-4-7,当前项目大概率仍会落到 Opus 4.6,因为默认 Opus、opus alias、模型选择器、系统提示和能力映射均仍硬编码在 4.6。授权文件只影响认证和账号权限,不会自动更新本地模型表。

参考输入

  • 本地参考文件:Claude-Opus-4.7.txt
  • 关键模型 IDclaude-opus-4-7
  • 当前项目默认 Opusclaude-opus-4-6
  • 需要优先验证的测试路径:显式运行 --model claude-opus-4-7区分本地拦截、服务端权限拒绝、provider 不支持三类问题。

P0: prompts.ts 直接相关清单

这些项只覆盖 src/constants/prompts.ts。它们会影响系统提示里的模型自我认知、最新模型推荐、知识截止信息和用户可见说明。

文件位置 当前问题 建议动作 验收点
src/constants/prompts.ts:119 FRONTIER_MODEL_NAME 仍为 Claude Opus 4.6 更新为 Claude Opus 4.7 Fast mode 文案不再声称最新 frontier 是 4.6
src/constants/prompts.ts:122 CLAUDE_4_5_OR_4_6_MODEL_IDS 名称和内容仍绑定 4.5/4.6 改名为更通用的最新模型 ID 常量,或扩展为 CLAUDE_LATEST_MODEL_IDS 常量中 Opus 指向 claude-opus-4-7
src/constants/prompts.ts:123 opus ID 仍为 claude-opus-4-6 改为 claude-opus-4-7 系统提示推荐的 Opus ID 是 4.7
src/constants/prompts.ts:671 环境提示写死 “Claude 4.5/4.6” 更新为包含 Opus 4.7 的最新模型家族说明 # Environment 中不再把 4.6 说成最新 Opus
src/constants/prompts.ts:671 模型 ID 列表只列 Opus 4.6、Sonnet 4.6、Haiku 4.5 把 Opus 4.7 放到最新/默认推荐位置,保留 Sonnet 4.6 和 Haiku 4.5 AI 应用构建建议默认引用 Opus 4.7
src/constants/prompts.ts:687 getKnowledgeCutoff() 没有 Opus 4.7 分支 新增 claude-opus-4-7 分支,并放在泛化 claude-opus-4 判断之前 claude-opus-4-7 不会落入旧 Opus 4 fallback
src/constants/prompts.ts:690-703 当前匹配顺序只特殊处理 4.6、4.5、Haiku 4再泛化 Opus 4/Sonnet 4 为 4.7 增加明确 cutoff避免返回 January 2025 prompt 中显示的 cutoff 与 Opus 4.7 资料一致
src/constants/prompts.ts:582-623 computeEnvInfo() 输出模型描述和 knowledge cutoff依赖模型层映射 在模型层补齐 4.7 后确认这里输出正确 You are powered by... 能显示 Opus 4.7
src/constants/prompts.ts:627-684 computeSimpleEnvInfo() 同样依赖模型层映射和 latest family 文案 在 4.7 接入后做一次 prompt 快照/断言 simple env 和 full env 都一致

P0: 模型注册和别名解析

这些项决定用户输入 opusbestdefault 或不指定模型时,最终实际请求哪个模型。

文件位置 当前问题 建议动作 验收点
src/utils/model/configs.ts:99 只存在 CLAUDE_OPUS_4_6_CONFIG 新增 CLAUDE_OPUS_4_7_CONFIG ALL_MODEL_CONFIGS 可派生 opus47
src/utils/model/configs.ts:119-132 ALL_MODEL_CONFIGSopus46 结束 注册 opus47: CLAUDE_OPUS_4_7_CONFIG getModelStrings().opus47 类型可用
src/utils/model/model.ts:50-56 isNonCustomOpusModel() 未包含 4.7 加入 getModelStrings().opus47 Opus 4.7 能走 Opus 相关逻辑
src/utils/model/model.ts:115-135 getDefaultOpusModel() 返回 Opus 4.6 first-party 默认切到 4.73P 是否切换需按 provider availability 决定 /model opusbest 能解析到预期模型
src/utils/model/model.ts:250-285 firstPartyNameToCanonical() 未识别 4.7 新增 claude-opus-4-7,顺序在 4.6 和泛化 claude-opus-4 canonical 返回 claude-opus-4-7
src/utils/model/model.ts:485-545 parseUserSpecifiedModel('opus') 间接落到 4.6 依赖 getDefaultOpusModel() 更新 opus alias 解析为 4.7
src/utils/model/model.ts:609-653 getMarketingNameForModel() 没有 Opus 4.7 增加 Opus 4.7 显示名 UI 和 prompt 都能显示友好名称
src/utils/model/model.ts:384-423 getPublicModelDisplayName() 没有 Opus 4.7 增加 base 和如适用的 [1m] 显示名 /model 当前模型显示正确
src/utils/model/model.ts:325-347 默认模型描述和价格后缀函数仍是 Opus 4.6 更新描述,必要时重命名 getOpus46PricingSuffix 或兼容包装 Default option 描述不再出现过期 Opus 4.6

P0: 模型选择器和用户可见选项

这些项决定 /model 菜单是否能看到 Opus 4.7。

文件位置 当前问题 建议动作 验收点
src/utils/model/modelOptions.ts:113-180 只有 getOpus46Option() 新增 getOpus47Option() 或把 Opus option 改为当前默认 Opus /model 菜单显示 Opus 4.7
src/utils/model/modelOptions.ts:191-201 1M Opus option 绑定 opus46 如 Opus 4.7 支持 1M新增/替换 4.7 1M option 1M option 不再误指 4.6
src/utils/model/modelOptions.ts:266-300 Max/merged Opus option 文案仍是 4.6 更新 Max 用户和 merged 1M 文案 Max/Team Premium 默认说明正确
src/utils/model/modelOptions.ts:324-424 picker 列表显式 push 4.6 option 按用户类型和 provider 调整 4.7/4.6 顺序或替换关系 first-party 可选项包含 4.7
src/utils/model/modelOptions.ts:486-514 已知模型展示依赖 marketing name 补 4.7 marketing name 后确认这里能识别 显式 claude-opus-4-7 不显示成 Custom model
src/commands/model/model.tsx:130-145 1M 不可用提示写死 Opus 4.6/Sonnet 4.6 如支持 4.7 1M更新文案和检查函数 错误提示不误导用户
src/main.tsx:1349-1352 --model 帮助示例仍是 Sonnet 4.6 更新示例,或使用稳定 alias 示例优先 CLI help 不展示过期主推模型

P0: 本地拦截和可用性判断

这些项用于判断“为什么授权文件拿不到 4.7”。

文件位置 当前问题 建议动作 验收点
src/utils/model/modelAllowlist.ts:100-170 如果 settings availableModels 没包含 4.7,显式 4.7 会被本地拒绝 检查用户配置,必要时加入 opusclaude-opus-4-7 /model claude-opus-4-7 不被本地 allowlist 拦截
src/utils/model/validateModel.ts:20-80 显式模型会先检查 allowlist再请求 API 验证 用它区分本地拒绝和服务端拒绝 错误信息可分类为 allowlist、404、invalid model、auth
src/utils/model/validateModel.ts:139-155 fallback 建议链只有 4.6 到旧模型 加 4.7 到 4.6 的 fallback 建议 3P 不支持 4.7 时提示 4.6
src/services/api/errors.ts:735-745 Pro plan invalid model 逻辑依赖 isNonCustomOpusModel() 加入 Opus 4.7 后确认错误文案仍准确 Pro 用户错误提示不漏判
src/services/api/errors.ts:902-910 404 模型不可用错误会提示换模型 加 4.7 fallback 建议 3P/权限问题提示可操作
src/services/api/Claude.ts:1771 最终请求直接发送 options.model 去掉 [1m] 后的值 确认显式 claude-opus-4-7 能传到这里 抓包/日志中 model 是 claude-opus-4-7

P1: 能力、beta、上下文和输出控制

这些项影响 4.7 的高级能力是否启用,或是否错误沿用 4.6 能力。

文件位置 当前问题 建议动作 验收点
src/utils/context.ts:43 1M context 匹配规则未确认 4.7 按官方/API 探测结果加入 4.7 getContextWindowForModel('claude-opus-4-7') 正确
src/utils/model/check1mAccess.ts:45 1M access 检查未确认 4.7 如支持,加入 Opus 4.7 1M 权限检查不误报
src/utils/model/contextWindowUpgradeCheck.ts:4 upgrade path 未覆盖 4.7 如支持 1M upgrade补分支 超 200K 时提示正确
src/utils/effort.ts:24 effort allowlist 未确认 4.7 加入支持项 --effort 对 4.7 不被错误忽略
src/utils/effort.ts:53-54 max effort 注释写 Opus 4.6 only 确认 4.7 是否支持 max再更新 文案和 API 行为一致
src/utils/thinking.ts:113 adaptive thinking allowlist 未确认 4.7 加入或明确不支持 thinking 参数不导致 400
src/utils/betas.ts:138-156 structured outputs、auto mode 支持列表未确认 4.7 按 API 能力加入 相关 beta 不漏发也不错发
src/utils/advisor.ts:87-98 advisor 支持列表未确认 4.7 按服务端能力加入 advisor tool 对 4.7 行为正确
src/services/compact/cachedMCConfig.ts:35-36 cached microcompact 支持模型只到 4.6 如 4.7 支持,加入列表 cache editing gate 不误关
src/utils/fastMode.ts:142-143 Fast Mode 显示为 Opus 4.6 确认 4.7 支持后更新 /fast 文案和实际模型一致
src/utils/extraUsage.ts:17-22 extra usage 判断可能只识别 Opus 4.6 扩展到 Opus 4.7 账单提示正确

P1: provider 映射和第三方路径

这些项影响 OpenAI/Gemini/Grok/Bedrock/Vertex/Foundry 兼容层。

文件位置 当前问题 建议动作 验收点
src/services/api/openai/modelMapping.ts:8-12 OpenAI 兼容层只映射到 Opus 4.6 claude-opus-4-7 映射,或确认透传策略 OpenAI provider 不因未知 Anthropic ID 失败
src/services/api/grok/modelMapping.ts:11-15 Grok 兼容层只映射到 Opus 4.6 加 4.7 映射或 fallback Grok provider 行为明确
src/services/api/gemini/modelMapping.ts 未在搜索中看到 Opus 4.6 命中 确认是否通用规则覆盖 4.7 Gemini provider 有明确策略
src/utils/model/configs.ts:99-107 3P provider ID 是否已发布未确认 对 Bedrock/Vertex/Foundry 分别确认 ID 格式 3P 配置不使用错误 model ID
src/utils/envUtils.ts:149-162 Vertex region override 只列现有模型 如 4.7 需要 region env补映射 Vertex 用户可覆盖 region
src/utils/model/modelStrings.ts:45-53 Bedrock profile 匹配基于 firstParty ID 4.7 注册后确认 inference profile 可匹配 Bedrock 自动发现可用 profile

P1: 成本、显示、归因和内置文档

这些项不一定阻塞请求,但会影响用户体验、账单提示和输出元数据。

文件位置 当前问题 建议动作 验收点
src/utils/modelCost.ts:13-152 成本函数和映射以 Opus 4.6 命名 添加 Opus 4.7 cost tier必要时重命名公共函数 价格显示和成本计算正确
src/constants/figures.ts:13 max effort 注释写 Opus 4.6 only 按 4.7 支持情况更新注释 注释不过期
src/utils/commitAttribution.ts:149-160 commit trailer 映射缺 4.7 claude-opus-4-7 git attribution 显示公共模型名
src/skills/bundled/claudeApiContent.ts:37-41 Claude API skill 中 Opus ID/名称仍是 4.6 更新为 Opus 4.7,保留 Sonnet/Haiku 当前值 生成 API 示例时使用 4.7
src/utils/settings/types.ts:402 settings 示例仍是 Opus 4.6 更新示例或增加 4.7 示例 文档化配置不误导
src/utils/swarm/teammateModel.ts:1-9 teammate fallback model 用 Opus 4.6 config 评估切到 Opus 4.7 swarm/teammate 默认符合最新模型策略
scripts/probe-api-capabilities.ts:182 claude-opus-4-7 标为猜测模型 移到正式配置/已知模型列表 探测脚本不再把已发布模型当猜测

P2: 运行时动态补充模型的现状

当前项目有两个动态来源,但它们不能替代正式接入:

  1. src/services/api/bootstrap.ts 会从 /api/claude_cli/bootstrap 拉取 additional_model_options 并写入 additionalModelOptionsCache。这可以让 /model 菜单临时出现额外模型,但不会更新 opus alias、默认模型、prompt 文案、成本、能力、thinking、effort 或 provider 映射。
  2. src/utils/model/modelCapabilities.ts 会调用 /v1/models 缓存模型能力。它能帮助上下文窗口和 token 上限动态化,但同样不会改变默认模型或别名解析。

因此,授权文件或 bootstrap 结果即使能看到 Opus 4.7,也不能替代上述 P0/P1 的本地代码接入。

最小判定流程

用于定位“获取不到 Opus 4.7”到底是哪一层问题。

  1. 显式运行:--model claude-opus-4-7
  2. 如果报 not in available modelsorganization restricts model selection,优先检查 settings.availableModelsmodelAllowlist.ts
  3. 如果能发出请求但 API 返回 invalid model name、404 或 not available优先检查账号权限、OAuth/API key 来源、base URL、provider 类型和服务端 gating。
  4. 如果显式模型成功,但默认仍是 4.6说明主要是本地默认模型、alias、picker 和 prompt 未更新。
  5. 如果 /model 菜单不显示 4.7,但显式 --model claude-opus-4-7 成功,说明 picker/bootstrap 未更新,不是权限问题。

推荐实施顺序

  1. 先补 configs.tsmodel.tsprompts.ts,让 opusbest、默认 Opus 和系统提示都认识 4.7。
  2. 再补 modelOptions.ts/model 命令文案,让用户能选择和看懂 4.7。
  3. 然后补 validateModel.tserrors.tsmodelAllowlist.ts 相关测试,让失败路径能区分本地拦截和服务端拒绝。
  4. 最后补能力层、beta、thinking、effort、cost、provider 映射和文档示例。

测试清单

  • bun test src/utils/model/__tests__/model.test.ts
  • bun test src/services/api/openai/__tests__/modelMapping.test.ts
  • bun test src/services/api/grok/__tests__/modelMapping.test.ts
  • bun test src/services/api/gemini/__tests__/modelMapping.test.ts
  • bun test src/utils/__tests__/modelCost.test.ts
  • 增加或更新 prompt 相关断言,覆盖 getKnowledgeCutoff('claude-opus-4-7') 和 environment prompt。
  • 运行 bunx tsc --noEmit,确保新增 opus47 key 后类型全部收敛。

完成标准

  • claude-opus-4-7 在模型配置中是正式条目,不再只出现在探测脚本的猜测列表。
  • opus alias、best、Max/Team Premium 默认 Opus 都按设计解析到 Opus 4.7。
  • /model 菜单能显示 Opus 4.7,显式 --model claude-opus-4-7 能通过本地校验。
  • src/constants/prompts.ts 不再把 Opus 4.6 描述为最新 frontier。
  • Opus 4.7 的 knowledge cutoff、marketing name、public display name、cost、effort、thinking、context window 和 beta 支持都有明确实现或明确不支持分支。
  • 失败路径能区分:本地 allowlist、账号权限、provider 不支持、服务端模型不存在。