Skip to content

思考模式默认未强制开启/关闭,走 SDK 原生默认 —— 待决策是否强制 #383

Description

@scottzx

背景

排查聊天里的 thinking(思考过程)消息块链路时,确认了链路是端到端打通的(ACP agent_thought_chunk → 1acp bridge text_delta type:thought → 后端无损透传 → 前端 foldTextDelta 折叠成思考气泡)。

但进一步查「默认是否开启思考模式」的结论是:没有任何一层显式开或关,完全 fall-through 到 Claude Code SDK / 所选模型的原生默认。

现状(默认 = 既不强制开、也不强制关)

1. maxThinkingTokens(思考 token 上限)—— 从未设置

  • claude-agent-acp 只从环境变量 MAX_THINKING_TOKENS 读取;没设就是 undefined,且 undefined 时根本不传给 SDK。
  • 全仓库(app / backend / 1acp)grep MAX_THINKING_TOKENS:一处都没有。

2. effort(思考力度 config option)—— 默认 "default" → 映射成 null(不覆盖)

  • effort 选项仅对 supportsEffort 的模型出现,出现时默认 currentValue = "default"。
  • toSdkEffortLevel("default") 返回 null,即不对 SDK 做任何 effort 覆盖。

3. 上游两层都不插手

  • 后端建会话时 sessionOptions 只带 systemPrompt + mcpServers(modules/1acp/bridge-server.js:562),无 thinking/effort。
  • 1acp 不注入默认,只在收到名为 thinking 的 config 时翻译成 effort(src/runtime/engine/manager.ts:443),但没人主动发这个 config。

结论:能否看到思考内容,取决于底层模型在 "default" 力度下自身是否产出;我们这侧没做任何拔高,也没做任何抑制。

待决策

回头评估是否要强制开启/统一配置思考模式。如果要,有两个入口:

  1. env 注入:后端 spawn acpx 子进程时注入 MAX_THINKING_TOKENS(给思考一个 token 预算)。
  2. config option:前端/后端发一个 effort(或 thinking,1acp 会自动转 effort)的 set,把力度从 default 调到具体档位;同时可考虑在前端把 effort 档位暴露给用户(SessionModePicker)。

需要考虑的点:是否只对支持推理的模型生效、是否让用户可切换、默认档位定多少、思考块默认展开还是折叠。

参考代码位置

  • 链路转发(无损透传,不过滤 thought 给浏览器):backend/internal/agent/acpx_client.go:436
  • thought 仅从工单时间线写回中排除(这是对的,别误改):backend/internal/agent/acpx_client.go:440、backend/internal/agent/runner.go:166
  • 前端折叠思考块:frontend/packages/core/protocol/reducer.ts:150
  • thinking 上限 env 读取(adapter):@agentclientprotocol/claude-agent-acp@0.37.0 dist/acp-agent.js:1467
  • effort 默认值 / 映射:同上 :1894 / :1844

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestepic:agent-roles智能体角色 / 模板配置questionFurther information is requested

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions