# 命令组合用法（工作流）

单个命令的用法看 [COMMANDS.md](COMMANDS.md)。这页讲**它们怎么串起来干活**——在一条对话里，哪几条命令该连用、先后顺序、以及为什么。

## 一条原则：命令分工

| 命令 | 角色 | 是否消耗模型 |
|---|---|---|
| `/search` | **获取信息**：搜索、抓正文、写成概述 | ✅ 会（规划 + 成稿） |
| `/share` | **交付文件**：把工作区的文件变成限时链接 | ❌ 不会 |
| `/model` | **换引擎**：改当前会话的模型和思考强度 | ❌ 不会 |
| `/token` | **看账**：本会话用量、今日累计、账户余额 | ❌ 不会 |
| `/persona` `/whale` `/normal` | **换口吻**：只改说话方式，不改能力 | ❌ 不会 |
| `/style` | **定时问候的风格**（早/晚两档） | ❌ 不会 |
| `/sessions` `/load` | **找回上下文**：列历史、载入某段 | ❌ 不会 |
| `/version` | **自诊断**：版本、通道补丁状态 | ❌ 不会 |

除 `/search` 外，其余命令都由宿主进程直接执行，**不经过模型、不花 token**。所以“多试几次”基本免费。

---

## 场景一：从一句话到一份可交付的报告

这是最常用的组合，四步：

```
1) /model deepseek-v4-pro          ← 调研用强模型，别用轻量模型省这点
2) /search 主题 deep               ← 超深度调研，得到带出处的概述
3) （让助手把概述整理成报告文件）  ← 输出在微信里是长文本，成文要落盘
4) /share 报告.md 120 5            ← 变成 2 小时 / 5 次的限时链接，手机点开就下
```

关键点：

- **`deep` 值得用**：标准模式 3 轮查询，`deep` 会先判时效、中英各搜一遍，再从结果里挖关键词补搜一层。调研类任务差距明显。
- **`/share` 是交付的最后一环**：微信单文件 30MB 上限、大文件常失败，`/share` 的链接不受这个限制。
- **`/token` 可以随时插在中间**：`/search deep` 是这条流程里唯一花钱的命令，跑完看一眼花费很安心。

---

## 场景二：查“今天发生了什么”（时效敏感）

```
1) /search 今天A股最新情况 deep
```

看头部那行元信息：

```
（5 轮查询 · 时效 1d · 窗口内 4 条 · …）
```

- `时效 1d` = 它判断这是“今天”的问题
- `窗口内 4 条` = 只有 4 条资料落在今天，其余被过滤掉
- 如果显示 `时效 1d 内仅 1 条 → 放宽到 3d`，说明今天的信息量不够，它逐级放宽过——**这时候概述里的“现状”要打个折扣**

如果它还是把上周的事当现状，就用 `brief` 看原始资料自己判断：

```
2) /search 今天A股最新情况 brief    ← 只要资料，不要它总结
```

---

## 场景三：给人设 + 用命令

人设只影响**说话方式**，不影响命令结果：

```
1) /persona 3          ← 换个口吻（不影响 /search 的事实档案）
2) /search 某个话题    ← 概述仍是中性事实风格，不会变成角色扮演
3) /style random       ← 明早的问候换风格
```

注意：`/search` 的概述是“事实档案”，**故意不跟人设走**——调研结果要能直接给别人看。

---

## 场景四：找回上次的调研

```
1) /sessions           ← 列出最近 5 个对话（标题/时间/提问数）
2) /load 2             ← 把那段的最近上下文载进来
3) /search 继续之前的主题 deep   ← 接着往下挖
```

`/load` 默认只注入上下文；想真的切过去要用 `--hard`（需要通道补丁，见 [COMPATIBILITY.md](COMPATIBILITY.md)）。

---

## 场景五：分享文件的最小闭环

```
1) /share 文件.pdf            ← 默认 30 分钟 / 3 次
2) /share list                ← 看进行中的，确认链接和剩余次数
3) /share stop <id>           ← 提前作废（例如发错人了）
```

三个细节：

- 同一文件重复 `/share` 会**复用**未过期的链接，不会建一堆
- 想给更多时间/次数：`/share 文件.pdf 120 10`（120 分钟 / 10 次）
- `/share status` 看服务在不在跑（daemon 空闲 15 分钟会自动退出，下次 `add` 会自己拉起）

---

## 场景六：排障

命令出问题时按这个顺序：

```
1) /version            ← 插件版本 + 通道补丁状态
2) /token              ← 模型配置对不对（顺便看余额）
3) /help all           ← 命令到底在不在（不在=没挂上）
```

仍然不对 → [TROUBLESHOOTING.md](TROUBLESHOOTING.md)。

---

## 命令搭配速查

| 想做的事 | 命令组合 |
|---|---|
| 深度调研 + 交付 | `/model` → `/search deep` → 成文 → `/share` |
| 只看原始资料 | `/search brief` |
| 确认时效 | `/search <话题> deep`，看头部的「时效 Xd · 窗口内 N 条」 |
| 省钱跑调研 | `/model <轻量模型>` → `/search` → `/token` |
| 换个语气聊天 | `/persona <id>`；`/normal` 或 `/whale` 退出/纪念 |
| 找回旧上下文 | `/sessions` → `/load <n>` |
| 发文件给人 | `/share <文件> [分钟] [次数]` |
| 命令没反应 | `/version` → `/help all` → TROUBLESHOOTING |

---

## 几个容易踩的点

1. **命令名冲突会静默失效**：两个插件注册同名命令时，后注册的那条会安静消失，不报错。`/help all` 里看不到就是没挂上。
2. **`/search` 是唯一会调模型的命令**：其他命令随时发都不心疼；`/search deep` 一次会调用模型 2~3 次。
3. **命令结果不会被模型“二次加工”**：命令的返回直接发到微信，不经过 agent 改写——所以你看到的就是插件给的原文。
4. **微信里命令必须整条发**：不要在一句话里夹 `/search`，要单独一条消息。

---

## 想自己加命令

见 [DEVELOPING.md](DEVELOPING.md)：新增一条命令 = 在 `src/impl.mjs` 里 `register({ name, description, handler })` + 跑一次 `sync-version.sh`。
handler 同步返回 `{ kind: 'success' | 'error', text }`；要调模型/搜索就参考 `/search` 的三段式写法。
