CLI 参考 · /boss
/boss 是判断流水线的用户面 slash command (与 /mba 同范式), 内部委派给 tian-judgement-orchestrator。
参照 skills/tian/SKILL.md (~600 行解析 + 路由 + 委派) 与 scripts/run_pipeline_local.py (CLI 等价路径)。
一次性安装
# 在 boss-vault repo 根目录跑一次, 把 vault skill symlink 到 ~/.claude/skills/boss/
bash scripts/install_tian_skill.sh
# 安装模式选择:
bash scripts/install_tian_skill.sh # 默认 symlink (本机开发)
bash scripts/install_tian_skill.sh --copy # 拷贝模式 (远程主机, 无 vault 路径)
bash scripts/install_tian_skill.sh --check # 查看 install 状态
bash scripts/install_tian_skill.sh --remove # 删除 symlink (vault source 保留)安装后 Claude Code 内立即可用 /boss <议题>。
主命令
/boss <议题或 brand-slug>- 若
reports/<brand-slug>/report.md已存在 + 未传--refresh→ EVOLUTION 模式 (只重判变化维度) - 否则 → FRESH 模式 (完整 Phase 1-5)
主流 flags
| Flag | 含义 |
|---|---|
--quick | 跳过 raw_evidence WebSearch leg, 仅本地 Wiki + raw |
--refresh | 强制 EVOLUTION (即使 brand 已有 report) |
--no-judges | Phase 4 跳过 (仅 Phase 3 synthesis 出) |
--focus 1,3,5 | 只调研指定调研维度 (7 维度中挑) |
--panel <name> | 用指定 panels/<name>.yaml 而非 default |
--panel-add <slug> | 临时加挂评委 (默认 panel 之外) |
--panel-drop <slug> | 临时跳过某评委 (利益冲突等) |
--full-panel | 6 dim 评委全上 (而非 auto-select 3-4) |
--lock-framework-prediction | ★ 90d 盲测专用, 锁 framework v0.1 预判 (chmod 444) |
--lock-framework v0.2 | 同上, 指定 v0.2 opt-in |
--diff-only <dims> | EVOLUTION: 只重跑指定维度 (逗号分隔), 其余沿用上版 review |
--no-diff-plan | EVOLUTION: 禁用 Phase 1E 自动 diff plan, 强制全维度重跑 (v0.6) |
Phase 6 export flags
Phase 6 生成 3 套报告 (Set A 内部完整版 / Set B 公开脱敏版 / Set C 内部可视化版):
| Flag | 含义 |
|---|---|
--export | Set A confidential 完整合并 (一键, 默认 set) |
--export-full | 全 3 套 (A + B Light + C v2) |
--export-set <a|b|c|all> | 显式选 set |
--export-redact <level> | Set B 脱敏强度: light / strict / meta-only |
--export-skip-pdf | 仅 md/html, 跳 Chrome PDF |
--export-only | 跳 Phase 1-5, 仅跑 Phase 6 (brand 已有 report 时用) |
子命令
| 子命令 | 含义 |
|---|---|
/boss list | 列出已判断议题 + version 计数 |
/boss panels | 列出 panel + 评委身份 |
/boss panels show <name> | 打印 panels/<name>.yaml 内容 |
/boss panels new <name> | 克隆 default.yaml 作为新 panel |
CLI 等价 · run_pipeline_local.py
CLI 端可直接选择 LLM provider:
python3 scripts/run_pipeline_local.py "议题" \
--brand <brand-slug> \
--llm-provider codex-cli \
--export-full支持的 provider: codex-cli · kimi-cli · anthropic · anthropic-compatible · openai-compatible (智谱 / Kimi / OpenAI / 各类网关通过 base_url + API key 接入; kimi-cli 直接 spawn 本地 Kimi CLI)。
LLM provider / 模型 一键切换 (v1.3.1)
部署后频繁切换 LLM(不同 provider、不同模型)不必手敲 5 个 BOSS_LLM_* 环境变量。scripts/llm_switch.py 按 profile 一条命令切换:
python3 scripts/llm_switch.py list # 列所有 profile + 当前激活
python3 scripts/llm_switch.py use gpt # 切到某 provider (profile 默认模型)
python3 scripts/llm_switch.py use gpt --model <model> # 切 provider + 指定模型 (端点上任意)
python3 scripts/llm_switch.py use gpt --model-fast <m1> --model-deep <m2> # 快/慢分开
python3 scripts/llm_switch.py show # 复核当前配置 (key 打码)- profile 定义在
config/llm_profiles.yaml(无密钥,可入库):每个 profile 存provider/base_url/model_fast/model_deep/api_key_env。 - 密钥与私有端点留在
.env:profile 的api_key_env现读现写到BOSS_LLM_API_KEY;base_url/model_*支持${VAR}引用.env变量(私有端点不入库)。 - 切换只改
.env的BOSS_LLM_*5 行,其余行不动;改完重启 worker 生效。 - 加新模型 = 加一个 yaml 段,不改代码;
--model让端点上任意模型即时可用。
实践:对结构化输出敏感的步骤(Phase 0 文档解析 =
model_fast)用指令遵循稳的模型(如gpt-4o);评委打分(model_deep)可换更强的模型。选模型时确认网关确实有该模型的通道(有的名字在/models列表里却无后端,会 503)。
对"模型偶发犯浑"的韧性兜底
接入指令遵循较弱 / 较新的模型时,偶发的格式问题不再让整篇报告报废 —— 流水线四层兜底,不靠运气:
| 阶段 | 偶发问题 | 兜底 |
|---|---|---|
| Phase 0 文档解析 | 模型把"解析"当成"评审"(返回评分字段而非解析 schema) | 缺必填字段自动重试 + 强化 reprompt 拉回 |
| Phase 5 §B 合议 | 整段输出被包进 ``` 代码围栏 | 自动剥最外层围栏 |
| Phase 5 §B 合议 | 长合成偶发退化为 token 汤(中英文碎片粘连) | 退化检测 + 重跑,取最干净一版 |
| §C 评委建议 | 单边孤立代码围栏残留 | 按奇偶剥孤立围栏(成对代码块不动) |
这些兜底是"重试 / 修剪",不改判断内容;模型选型仍是质量的主要杠杆。
交互菜单与短命令 (v1.5)
list / use 适合脚本;日常人工切换走交互菜单更省事——先选网关,再列出该网关上真实可用的模型来选:
python3 scripts/llm_switch.py # 无子命令 = 进交互菜单
python3 scripts/llm_switch.py menu # 同上
python3 scripts/llm_switch.py models # 直接列当前网关的模型(GET {base_url}/models)菜单第一步列所有 profile(标 "默认 <model>"、当前激活标 "当前实跑: <model>");选定网关后第二步实时拉该网关 /models 端点列出全部模型号,选一个即写回 .env。网关临时没有 /models(部分自建网关未实现)时,回退到手敲 --model。
安装一次 scripts/install_cli_commands.sh,把 bin/llm、bin/boss-eval 软链到 ~/.local/bin,之后可直接:
llm # = python3 scripts/llm_switch.py(交互菜单)
llm models # 列当前网关模型
boss-eval --help # 模型对比评测(下节)模型客观评测 boss-eval (v1.5)
换模型前想知道"换了到底好不好",scripts/model_eval.py 用同一份脱敏样本提案跑多个模型、产出可比对的成本 / 结果表:
python3 scripts/model_eval.py --models gpt-4o,gpt-5.5 --repeat 2 # 两个模型各跑 2 次
python3 scripts/model_eval.py --doc <自定义提案.md> --panel <panel> # 换样本 / 换 panel
python3 scripts/model_eval.py --models ... --dry-run # 只打印将要跑的矩阵
boss-eval --models gpt-4o,gpt-5.5 # 软链短命令- 默认样本是仓内全合成、可复现的脱敏提案(
eval/docs/sample-proposal.md),不含任何真实客户数据,放心反复跑。 - 输出一张对比表(每模型每次:总成本、Verify 是否通过、产出报告的关键指标)+ CSV,便于横向比较。
- 评测只切
BOSS_LLM_MODEL_FAST/DEEP,不动其它配置;跑完不改激活 profile。
飞书运维命令 (v1.5)
部署后不必每次回服务器敲命令——管理员可直接在飞书里给机器人发命令切模型、查状态:
| 命令 | 作用 |
|---|---|
/help | 列出全部命令、参数、区别与注意事项(所有人可发) |
/model | 查看当前网关 / 模型 + 可切换的网关清单 |
/model <网关> | 切到某网关(用其默认模型) |
/model <模型号> | 在当前网关上切到指定模型 |
/models [网关] | 列出某网关上真实可用的模型号 |
- 单聊直接发命令;群里需 @机器人 再带命令(
@机器人 /help)。 /model//models等改动类命令仅管理员可用(白名单BOSS_ADMIN_WHITELIST,逗号分隔 open_id,fail-close:名单空则一律拒绝);/help对所有人开放。- 切换热生效不重启:worker 每次起新评审任务时现读
.env的BOSS_LLM_*,下一单即用新模型。 - 同一个人在不同机器人下 open_id 不同——配白名单要用对应机器人的 open_id(机器人日志里能看到发命令者的 open_id)。
anchor research 工具链 (v0.6)
锚点心智模型从占位走向 agent-derived 的工程链 (详见仓内 docs/v0.6/usage.md §1):
| 命令 | 含义 |
|---|---|
python3 scripts/anchor_research_elicit.py --anchor <slug> | S1 · 从已有语料抽候选片段 (带 source link) 生成 6 份 worksheet |
python3 scripts/skill_lint.py --check-anchor-research --anchor <slug> | S3 · 校验 research 6 文件 (占位/字数/引用/provenance) |
python3 scripts/monthly_review.py | 月报含 anchor model drift 段 (delta 统计 + 修订提醒) |
anchor 评委 confidence 上限随 research 状态自动分级: 占位 ≤0.4 / agent-derived 未签收 ≤0.6 / anchor 签收后解除。
方法论闭环与脚手架工具 (v0.9)
| 命令 | 含义 |
|---|---|
bash scripts/t10_local_driver.sh [--anchor <slug>] | T10 一键驱动: 语料预检 → holdout 闸 → S1 → S2 派发指令; --verify 跑 S3 校验 (需本地语料) |
python3 scripts/framework_compare.py --case-id <id> [--actual-direction bet|wait|follow] [--write] | 90d 盲测比对: 锁定预判 vs 实际决策, §E 命中判定; --write 落 90d checkpoint |
python3 scripts/add_anchor.py --slug <slug> [--dry-run] | 加锚点三步一条命令 (CLAUDE.md §2.4): 目录树 + perspective 模板 + panel 克隆 + 闭环验证 |
python3 scripts/monthly_review.py | 月报含 framework 盲测记分板 (§E 累计命中率) |
自动行为 (v0.9 起): checkpoint 落 falsified/部分证伪时自动按 6 类决策树分类并写 Failure Card (卡内 classifier_confidence < 0.6 时人工复核改判); 盲测议题的 90d checkpoint 自动比对锁定预判。
run_pipeline_local.py 与 /boss 是完全等价的两条入口, 适合不同场景:
| 场景 | 推荐入口 |
|---|---|
| Claude Code 内交互 | /boss (UI 与 Skill 联动) |
| Codex CLI / 终端脚本 | python3 scripts/run_pipeline_local.py |
| CI/CD 自动跑 | python3 scripts/run_pipeline_local.py (cron 友好) |
| 远程云 VM | 同上, 走 hermes 或 systemd |
EVOLUTION 模式行为
EVOLUTION 跳过 Phase 1 起草, 执行:
- Phase 1E · Diff Plan — 列出"自上版以来可能变了什么"; 调
mcp__sage-wiki__query拉最近变化的 entities; 通常涉及 1-3 个维度 - Phase 2E — 只重跑变化的维度
- Phase 4E — 让评委只在变化维度上重打分; 其他维度沿用上版
- Phase 5E — 版本号 +1, 写新快照, 保留旧 reviews
Phase 出错怎么办
如果 /boss 跑到一半挂掉, 不要直接 --refresh 重跑 (会浪费 Phase 1-3 的 LLM 成本):
# 1. 看挂在哪个 Phase
cat cases/<case-id>/.status
ls cases/<case-id>/raw_evidence/
# 2. 从挂的 Phase 继续 (CLI 支持)
python3 scripts/run_pipeline_local.py "议题" \
--brand <brand> \
--resume-from phase-4
# 3. 如果 Phase 4 评委独立打分某位挂了, 单独重跑那位
python3 scripts/run_pipeline_local.py "议题" \
--brand <brand> \
--resume-judge industry-trend详见 故障排查。
场景管理
多场景评委体系 (v1.2.0) 引入 Scene 作为 Panel 的上层部署单元 — 详见 多场景评委体系。
# 列出所有已定义场景 (slug / scene_type / total_max)
python3 scripts/scene_loader.py list
# 某场景全链路静态校验 (不调 LLM, 不写磁盘)
python3 scripts/smoke_e2e.py smoke-scene <scene-slug>
# 或通过 Makefile:
make smoke-scene SCENE=<scene-slug>smoke-scene 校验项:
| 检查 | 说明 |
|---|---|
| scene.yaml 加载 | 字段完整性 + scene_type 合法 |
| competition 约束 | anchor_judge: null + show_scores_publicly: true |
| panel 继承链展开 | extends 字段解析 + judges/lenses 覆写 |
| skill_path 文件存在 | 所有 judge 的 SKILL.md 存在于 vault |
| 总分汇总 | sum_max_score 模式下维度 max_score 之和 |
| anchor_judge 一致性 | scene.yaml vs panel.yaml 一致 |
适合在 CI 门控或 VM 联调前跑。
定性总结场景 (meeting_summary)
output_format: meeting_summary 的场景 (会议总结评审) 产出多视角会议总结 deck 而非打分报告, 走平行的定性流水线 (worker 按 output_format 自动分派; 下列命令供联调 / 手动补跑):
# 跑一场会议总结: 读会议材料 → 每评委产出 [判断逻辑+3亮点+3不足+一句话] → 渲 deck
python3 scripts/meeting_summary_pipeline.py --doc <会议材料> --brand <brand> --scene meeting-review
# 把已有 deck 单独渲成 4:1 大屏 PPTX (会议现场大屏展示用)
python3 scripts/meeting_summary_pptx.py <brand>
# → reports/<brand>/meeting-summary.pptx详见 多场景评委体系 · 技术参考 §2.6 与概念页「输出形态」。
反共识 flags
某些 flag 是反默认的, 需要谨慎使用:
--full-panel— 默认 auto-select 是有原因的 (节省 LLM + 避免噪音). 用这个 flag 意味"我准备好读 6 份独立 review 而非 3 份"--no-judges— 仅出 synthesis, 不是判断. 适合早期探索, 不适合正式议题--lock-framework-prediction— 90d 盲测专用, 锁后不可改 prediction. 用chmod 444物理保护
与 panel.yaml 的关系
/boss --panel <name> 不会改 reports/<brand>/panel.yaml; 后者只在 FRESH 模式首次运行时写入 (绑定该议题的 panel)。
EVOLUTION 模式默认沿用绑定的 panel, 除非 --panel-add/--panel-drop 临时调整。