控制价审核CLI化实战
🏗️ 控制价审核 CLI 化实战 · 4 方评测
Section titled “🏗️ 控制价审核 CLI 化实战 · 4 方评测”案例定位:在一个真实业务场景(深圳湾一号·信宏城片区一期),把「设计」与「治理」两套方法论压一遍,用 2 模型 × 脚本/CLI = 4 方实测看效果。是 设计指南/CLI设计 与 评测与改进/失败分析与治理 的「应用现场」。
📎 来源:dev_cli 分支 + 总结报告 + four-way-comparison 评测。
同一项目、同一审核目标(方式一 9 步 + 工作台展示):
| 脚本模式(旧) | CLI 重构(新) | 变化 | |
|---|---|---|---|
| Qwen3.6 | 80m42s / 错误率 23.9% / 16.66M token / 45 次补丁 | 28m49s / 20.8% / 5.09M / 23 次 | 时间 ↓2.8x · token ↓3.3x |
| GPT-5.5 | 79m31s / 11.0% / 13.08M / 6 次补丁 | 15m06s / 0.0% / 2.87M / 0 次补丁 | 时间 ↓5.3x · token ↓4.6x · production-ready |
一句话:Skill 治理的杠杆不在「写更好的 prompt」,在把「AI 不该决策的事」从指令系统里搬出去,装进 CLI。
1 · 业务背景:控制价审核 9 步
Section titled “1 · 业务背景:控制价审核 9 步”审控制价 = 判断招标方算的控制价合不合理。展开 9 步:定位清单 → 选审核模式 → 选对标历史项目 → 设采样范围 → 扫造价指标 → 异常归因 → 单价核查 → 生成报告 → 工作台展示。原架构是 4 个 Skill 拼起来,每个各带一坨 scripts/,SKILL.md 描述「模型该调 python .../scripts/xxx.py」。
2 · Before:旧架构 4 类病根
Section titled “2 · Before:旧架构 4 类病根”GPT-5.5 勉强跑通(6 次补丁、6 次介入);Qwen3.6 暴雷(80 分钟、45 次补丁、168 次 Bash)。归为 4 类结构性病根(对应 评测与改进/失败分析与治理 的层):
- 路径猜测(L5/L6) —— 脚本相对路径在不同 cwd/沙箱/OS 错位;Windows 引号、GBK 解码爆错。
- 数据契约不稳(L5) —— 多 Skill 间传 JSON,字段名
BusinessTypevsProductType不一致;画布mcpInvocation结构拼错。 - 漂移到手工修补(L7) —— 一报错就自救:写临时脚本兜底、想改 Skill 源码;GPT-5.5 也读了 96 次
.py源码。本质是 AI 越权进了工程实现层,因为它物理上能看到这些文件。 - 异步状态机误触发 ——
price是异步任务(创建→轮询→拉结果),模型说「拉结果」时误触发新建。
3 · After:CLI 化重构
Section titled “3 · After:CLI 化重构”核心判断——加文档解决不了:SKILL.md 越厚模型越不读;「约定 AI 不要读脚本」是软约定,长链路下漏一条就崩。这是结构性 bug。真正杠杆是把判断权挪个地方:
凡是「AI 不该决策」的固定流程,从 SKILL.md 搬到 CLI 里。Skill 退回本职:业务流程 + 领域知识 + 决策提示,不再兼任「调用手册」。
3 个关键设计:
- 包体在
cost-audit域内,但在skills/之外 —— 这一刀是核心。Skill 是给 AI 读的,出了skills/就是 AI 视野盲区:模型 PATH 上可调report-gen,但看不到源码、改不了源码、猜不到路径(物理隔离 > 文档约定)。 pip install -e .后report-gen全局可用,标准工具链。- 4 套脚本逻辑原样迁入不重写,迁移期只打包不改算法,风险面最小。
减负的真义:看到「19 个子命令」想合并成 9 个是误区——那是把「过度设计」和「必要业务步骤」搅在一起。减负 = 去掉过度设计(编排脚手架、双份镜像产物、637 行播报规范),不是砍合法业务步骤。判断什么进 CLI 的唯一标尺:
| 该进 CLI(固定业务流程) | 不该进 CLI(AI 决策/交互) |
|---|---|
| 调后端取数、解析返回、拼数据契约 | 异常指标归因、选哪个对标项目 |
| 编码兜底、路径解析、画布拼装 | 报告结论怎么措辞 |
| 异步任务状态机管理 | 用户歧义输入消歧(应让用户确认) |
3 个定向补充:① init-session 调后端 fuzzy 匹配,0/多命中写候选 + 退出码 2 阻断;② price 拆 create-task/poll-task/fetch-result,无 taskGuid 直接 return 1 绝不创建;③ report 完成后吐现成的 mcpInvocation,模型原样复制不自拼。
4 · 评测:4 方完整对比
Section titled “4 · 评测:4 方完整对比”方法论见 评测与改进/评测(会话 JSONL → 8 客观指标)。同剧本 6 场景 × 真后端真画布,2 模型 × 2 架构:
| 维度 | Qwen+脚本 | Qwen+CLI | GPT-5.5+脚本(基线) | GPT-5.5+CLI |
|---|---|---|---|---|
| 实际用时 | 80m42s | 28m49s | 79m31s | 15m06s |
| 错误率 | 23.9% | 20.8% | 11.0% | 0.0% |
| python 补丁 | 45 | 23 | 6 | 0 |
| 合计 token | 16.66M | 5.09M | 13.08M | 2.87M |
读 .py 源码 | 找不到 scripts/ | — | 96 | 0(物理不可见) |
| 评级 | 重度手工 | 显著降本有天花板 | 基线 | production-ready |
3 个发现:
- CLI 化对两模型都降本 3–5 倍 —— 收益来自结构性消除,不是「补能力」,强模型同样显著。
- 脚本模式下两模型实际用时几乎相同(80m vs 79m) —— 总时长瓶颈不在推理速度,在「用户等待 + 纠错循环」;强模型错得少但每次错也得绕一圈。CLI 化把这条天花板拆掉(根本不进纠错循环)。
- CLI 化结构性消除 4 类病根:路径猜测(读源码 96→0)、数据契约(错误率 11%→0%)、手工修补(补丁 6→0)、异步状态机(硬前置守卫)。
结论同口径:4 方审核业务结论一致——CLI 化不改逻辑、不改结论,只把「得到结论的过程」从 80 分钟几十次报错,压成 15 分钟零报错零手工。
5 · 可复用沉淀(8 条)
Section titled “5 · 可复用沉淀(8 条)”设计:① 只有「固定业务流程」才进 CLI;② 物理隔离 > 文档约定;③ 必要业务步骤不折叠(合并=隐藏判断);④ 任何「模型可见的字符串」都是契约面(stdout/错误/help/next-action)。 工程:⑤ 脚本迁移要列清运行时数据依赖(references/config/隐性常量);⑥ 跨脚本调用单独列。 评测:⑦ 多 Agent 协作先核对环境(分支/CLI/SKILL.md 来源,一条不对结果都不算数);⑧ 量化指标拿同项目跨基线对比 + 把 CC 会话 JSONL 当评测源。
- 方法论:设计指南/CLI设计/CLI设计规范 · 评测与改进/失败分析与治理 · 评测与改进/评测
- 同源理论分享:实践分享/SKILL-CLI-本体-AUI设计