Skip to content

CLI: 参数枚举化,消除 agent 幻觉参数空间 #6

@KenyonY

Description

@KenyonY

问题

多个参数在 help 中只写 `TEXT`,但实际只接受有限值域。agent 解析 help 时容易幻觉参数值或格式。

参数 当前类型 实际值域
`--thinking` TEXT `true/false/low/medium/high` 或整数 budget_tokens
`--save-input` TEXT `true/last/false`
`--format`(新增) - `json/table/ndjson/csv`
`--schema` TEXT 三种不同格式混用:`json` / `@file.json` / JSON 字符串

目标

  1. `--thinking`:改用 `ThinkingMode` 枚举 + 额外的数值校验(接受 `low|medium|high|true|false` 或 `int >= 1`)
  2. `--save-input`:改为 `SaveInputStrategy` 枚举 `full|last|none`(原值保留为 deprecated alias)
  3. 新增统一 `--format` 枚举 `json|table|ndjson`
  4. `--schema` 拆分为两个语义清晰的参数:
    • `--schema json`(内置 json 模式) → 改为 `--json-mode` 或 `--schema-mode json`
    • 文件路径 → `--schema-file path.json`
    • 裸 JSON 字符串 → 保留 `--schema `
    • 或者统一保留 `--schema`,但在 help 中用 `|` 语法明确三种输入形式

验收

  • `--help` 中枚举值自动渲染(Typer Choice)
  • 输入非法枚举值退出码 2 + JSON 错误
  • 旧写法保持兼容,deprecated warning 通过 stderr 输出
  • 单测覆盖所有合法/非法输入

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions