Skip to content

feat(config): 支持 AskUserQuestion 选项数量上限可配置 - #51

Open
LIUXIN557 wants to merge 5 commits into
masterfrom
feat/ask-configurable-option-limit
Open

LIUXIN557 wants to merge 5 commits into
masterfrom
feat/ask-configurable-option-limit

Conversation

@LIUXIN557

Copy link
Copy Markdown
Collaborator

概述

为 AskUserQuestion 工具新增选项数量上限可配置能力:选项数量上限可通过配置 ask.max_options 调整,支持在 4 到 8 之间的整数(默认 6),替代原先硬编码的 4 选项上限。

设计要点(ADR-0001)

  • ask.max_options:默认 6,合法范围 [4, 8];非整数忽略,越界整数 clamp 到边界并记录告警日志(与既有 ask.max_questions 的处理方式一致)。
  • 选项数量下限固定为 2options 数组长度须在 [2, max_options],超出上限硬报错,错误文案为 between 2 and N (got M)
  • schema 动态同步:工具 JSON schema 的 options.maxItems 随配置生成,模型侧看到的约束与实际校验一致。
  • 全端生效:TUI / daemon / headless(-p)三个入口统一从 AppConfig::ask.max_options 取数(create_ask_user_question_tool_async(max_questions, max_options)),TUI 与 daemon 共用同一配置。

改动文件(18)

  • 配置src/config/config.hpp / src/config/config.cpp(新增 ask.max_options 字段、解析 clamp、校验、序列化)
  • 工具src/tool/ask_user_question_tool.hpp / .cpp(参数透传、校验、schema maxItems 动态化)
  • 注册点src/main.cpp / src/daemon/worker.cpp / src/headless/headless_runner.cpp
  • 测试tests/config/config_ask_test.cpptests/tool/ask_user_question_tool_test.cpp(覆盖默认值、越界 clamp、边界值、schema 同步)
  • 文档:CONTEXT.md、docs/adr/0001-configurable-ask-option-limit.mddocs/help/configuration.html、openspec change 全套

验证

  • 合并最新 master 后构建成功(273/273 编译单元)
  • 单元测试过滤既有环境问题套件后:485 跑 → 483 过、1 跳过(Windows-only)、1 失败(TaskSuggestionServiceTest,上游既有缺陷、与本次改动无关,文件与远端逐字节一致)

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant