---
title: 分配助手
description: 主管说一句话，它把几十次操作做完 —— 选人、分人、确认、确认之后。
icon: Bot
---

主管说清这一批要召回谁，助手挑人、排客服、出确认单。**他只要看一眼、点确认。**

功能本身见 [召回分配](./batch-assignment)。本文讲**那个助手**：它怎么走、谁做决定、哪些事它绝对不做。

---

## 一、分配决策树

整条线只有四步：**① 选人 → ② 分人 → ③ 确认 → ④ 确认之后**。

其中「选人」不是一次动作，而是**两个人各答一半**：主管先定运营意图，助手再用全景数据把它落成一版具体的人。

```mermaid
flowchart TD
  S(["召回策略<br/>一批召回要回答的四个问题"]) --> A1

  A1["① 选人 · 主管初选<br/>1 做哪一类还没启动的治疗<br/>2 找多久没来的人<br/>—— 凭运营经验,他张口就来"] --> A2

  A2["① 选人 · 助手精选<br/>3 要不要只挑高价值的 —— 先摆这批人的全景<br/>4 团队还吃得下多少 —— 先摆在岗人手与在手量<br/>—— · —— · —— · —— · —— · ——<br/>不等他给全,先按这几条默认出一版:<br/>没联系过的排前面,其余按优先级<br/>每人每天 15 通 · 时效 1 天<br/>这批多大 = 在岗人数 × 15 × 时效"]

  A2 --> D1{"这批人对吗？"}
  D1 --> G1["助手摆出的引导 —— 满足条件才出现<br/>① 能加个条件:这一格 ≥50 人 · 他还没加过 · 切完还剩 ≥10 人<br/>　　消费高于本格平均 / 转介绍达人 / 权益身份 / 获客渠道<br/>② 这批多大:人数是系统估的(他没自己指定过)<br/>　　可改 每人每天几通 · 时效几天"]
  G1 --> R1["重新选一版<br/>⚠️ 已经排好的分法一并作废"]
  R1 --> A2

  D1 ==>|"人定了 —— 这一关过了才谈怎么分"| B

  B["② 分人 —— 谁去打<br/>先算目标水位 = (团队在手 + 本批人数) ÷ 在岗人数<br/>一趟:有专属的回自己人,到水位为止<br/>二趟:无专属的补给当前手上最少的<br/>三趟:专属这轮排满的单列成一组,交他定"]

  B --> D2{"这么分行吗？"}
  D2 --> G2["助手摆出的引导 —— 满足条件才出现<br/>③ 专属排满了:第三趟真有人排不进去<br/>　　换无专属的补上(池子还有人时才给,走重排)<br/>　　铺平给在岗 / 各自归专属 / 移出本批<br/>④ 最忙的那位:分完后的量 > 每天通数 × 时效<br/>　　报最忙那位 + 另有几位也超<br/>　　整批时效改成 N 天(一个算好的数)"]
  G2 --> R2["就在这一版上改<br/>人不变,不重出"]
  R2 --> D2

  D2 ==>|"行"| K["③ 确认<br/>点下去，这一刻才真的分下去"]
  K --> L["④ 确认之后<br/>限时撤销 · 补挂福利 · 跟踪进度"]

  style S fill:#fef3c7,stroke:#f59e0b
  style A1 fill:#fef3c7,stroke:#f59e0b
  style A2 fill:#e0e7ff,stroke:#6366f1
  style D1 fill:#fee2e2,stroke:#ef4444,stroke-width:2px
  style G1 fill:#fce7f3,stroke:#ec4899
  style R1 fill:#fee2e2,stroke:#ef4444
  style B fill:#e0e7ff,stroke:#6366f1
  style D2 fill:#fff,stroke:#94a3b8
  style G2 fill:#fce7f3,stroke:#ec4899
  style R2 fill:#ede9fe,stroke:#8b5cf6
  style K fill:#fef3c7,stroke:#f59e0b
  style L fill:#d1fae5,stroke:#10b981
```

**两个环的代价不一样，这是全图最要紧的一点：**

| | 引导节点 | 代价 |
|---|---|---|
| **选人环**（红） | ① 能加个条件　② 这批多大 | **重新选一版**（几十秒）—— 人变了，已经排好的分法一并作废 |
| **分人环**（紫） | ③ 专属排满了　④ 最忙的那位 | **就地改**（同步）—— 人不变，只动这一版的分法 |

所以顺序不能颠倒：**人先定下来，才谈怎么分**。先排分法再让他改人群，前面那趟排班就白做了。

⚠️ 三处例外和细节，都是实际会绊人的：

- **图里只画了引导节点。** 主管随口说的（「换成正畸」「改成 200 人」「只要今年来过的」）同样能触发重出 —— 那条路不走按钮，靠助手听懂 + 调工具，⛔ 不在这张图上。
- **「换无专属客服的患者补上」挂在③下面，但它换的是人** —— 走重排（几秒），不是就地改。它是四个节点里唯一一个"长在分人环、代价却在选人环"的选项。
- **「改时效」有两条路，代价不一样**：从②「这批多大」改，会连人数一起重估（**重出**）；从④「最忙的那位」改，只延长这一批的期限、人不变（**就地改**）。
- **符合条件的人比这批还少时，②照样给他**：往上调确实不会更多，但**往下调可以少发一些** —— 那句话据实写清方向，⛔ 不把入口藏起来。

### 召回策略：一批召回要回答的四个问题

**这一环在「选人」之前** —— 先把问题摆清楚，再看谁答得了。

| | 要回答的 | 谁答 | **为什么是他 / 为什么要助手先摆** |
|---|---|---|---|
| **1** | 做哪一类还没启动的治疗（种植 / 正畸 / 拔牙…） | **主管** | 这是诊所这个季度的经营重点 —— 医生排期、设备耗材、话术准备都围着它转。**这件事只有他知道**，系统里没有任何数据能推出来 |
| **2** | 找多久没来的人（三个月内 … 三年以上） | **主管** | **他能从这个时间估出大概能回来多少** —— 见下，这一条是整套策略里最值钱的判断 |
| **3** | 要不要只挑高价值的（消费额、商保、意向） | 主管定，**助手先摆数据** | **他答不了**：不看数据，他不知道这批里有多少是高价值的，也不知道切完还剩几个 —— 可能一刀下去只剩三个人 |
| **4** | 团队还吃得下多少、几天内打完 | 主管定，**助手先摆数据** | **捞太多打不完，到期回池等于白发一轮**。而"还吃得下多少"要看在岗几人、各自手上压着多少 —— 这些数在系统里，不在他脑子里 |

**1、2 是运营意图，问他就有；3、4 问他他也说不出**，得先把全景摆到他面前。这就是为什么选人要拆成两半。

{/* ⚠️ 多段落的 Callout：开闭标签必须**各自独占一行**，且与正文之间留空行。
    写成 `<Callout>正文…` 再空行，MDX 会把它当成段落内的行内 JSX，
    要求在同一段里闭合 → Build Error: Expected a closing tag before the end of `paragraph`。 */}
<Callout type="info">

**「多久没来」不只是一个筛选条件 —— 它是这套策略里最值钱的那个判断。**

有经验的主管能从它估出这批大概能回来多少：一两年没来的和三年以上的，回头率不是一个量级。

而这个估算往下游走一步，就是**诊所的排班**：预计能回来多少人、其中多少要做种植，医生和科室要不要提前留出位置。**捞回来了却没人接诊，比没捞更伤客户。**

⇒ 所以这一项必须由主管拍，⛔ 系统不代劳、也不推荐 —— 它算得出人数，算不出诊所那边接得住多少。

</Callout>

### 选人 = 主管初选 + 助手精选

| | 主管初选 | 助手精选 |
|---|---|---|
| **答哪几问** | 1 做哪类治疗 · 2 多久没来 | 3 要不要挑高价值 · 4 团队吃得下多少 |
| **他给的是** | 运营意图（一句话） | —— |
| **助手给的是** | —— | **全景数据 + 一版已经分好的方案** |
| **结果** | 一批候选人 | 一批确定的人 + 谁打给谁 |

助手在这一步不是"等他再下一个指令"，而是**先把该看的摆出来、顺手把方案做出来**：这批人的画像构成、消费分布、在岗几人、各自手上压着多少、这批发下去谁最忙。主管看着这些改，或者直接确认。

### 主管只说了 1 和 2，剩下的助手拿默认值先跑通

| 默认的是 | 取值 | 他想改，说一句就行 |
|---|---|---|
| **谁排前面** | 没联系过的排前面，其余按优先级从高到低 | 「先打消费高的」 |
| **每人每天打几通** | 15 通 | 「按 20 通算」 |
| **多久要打完** | 1 天 | 「给 5 天」 |
| **这批发多大** | 在岗人数 × 每天通数 × 时效 | 「改成 200 人」 |

<Callout type="warn">**默认值一个都不许藏。** 出方案时式子摊开写：「本批 405 人 = 在岗 27 人 × 每天 15 通 × 1 天」。
一个他看不见的默认值，等于系统替他做了一个他不知道的决定 —— 而这批人是真发下去了。
⇒ 摆出来他才有得改；⛔ 不摆，他连"原来还能改这个"都不知道。</Callout>

⚠️ 人手这件事在**两个地方**主动摆给他看，⛔ 不用他去找：

| 什么时候 | 他看到什么 |
|---|---|
| **出方案时** | 「本批 405 人 = 在岗 27 人 × 每天 15 通 × 1 天」—— 式子和每个数都摊开，他改哪个都行 |
| **确认单上** | 每位客服一行「约 3 天」，算的是**分完之后他手上的总量**（在手 + 本批），⛔ 不只是本批那几条 |

超出本批时效的用**颜色**提示，⛔ 不写「打不完 / 超了 / 过载」—— 几乎每批都会有人超，说成故障主管就会开始怀疑系统，而不是做他该做的判断。

### 能加哪几个条件

助手只在**这批人还值得再切一刀**时才提，一次给四条，每条都直接写清切完还剩多少人：

| 加什么条件 | 门槛怎么来的 | 这条什么时候不给 |
|---|---|---|
| **只选消费高于这一格平均的** | 门槛是**这一格自己的平均**，⛔ 不是全库分位 —— 全库平均 ¥4,442，而某一格实测 ¥0 起，用全库的数会一刀切光 | 高于平均的不足 10 人 |
| **只选转介绍达人** | 推荐过 ≥3 人**且带来成交**（家庭型和社交型合并成一条 —— 主管要的是"有没有这个能力"，不是哪一型） | 不足 10 人 |
| **只选某个权益身份的** | 取这一格里**人最多的那一项** | 最多的那项不足 10 人 |
| **只选某个获客渠道的** | 同上 | 同上 |
| ＋ **按别的条件选** | 兜底：助手把其余十几个维度各多少人报一遍，他再挑 | 始终给 |

<Callout type="warn">**加条件 = 重新选一版**，⛔ 不是在已经排好的那些人里再挑一遍。
点下去之后这一格重新选进来多少人、这批发多大，都会跟着重算。
按钮上那个数字是**换完之后这一格还剩多少**，不是"从本批里筛掉几个"。</Callout>

### 引导什么时候才冒出来

⛔ 不是每次都全给 —— 每一条都有自己的出场条件，不满足就不出现：

| 引导 | 满足什么才出 | 为什么卡这个条件 |
|---|---|---|
| **专属排满了** | 这一版真有人排不进去 | 它是唯一「不处理就真的有人被漏掉」的一条 |
| **能加个条件** | 这一格 ≥ 50 人 · 他还没加过条件 · 切完至少还剩 10 人 | 人太少时「平均数」「最多的那一项」本身就是噪音；已经加过就不再层层套娃 |
| **这批多大** | 人数是系统估的（他没自己指定过） | 他自己说过「就发 200 人」就不必再解释这个数哪来的 |
| **最忙的那位** | 最忙的人分完之后的量 > 每天通数 × 时效 | 没超就不提，⛔ 不制造无谓的告警 |

### ② 分人怎么分：又满又平，三趟走完

不是简单的"谁空给谁"。先算一条**目标水位**，再走三趟：

```
目标水位 = ⌈ (团队现有在手总量 + 本批人数) ÷ 在岗人数 ⌉      至少 1
```

⭐ 水位**不是新旋钮** —— 完全由「这批多大」推出来。它存在的唯一理由是**给第一趟封顶**。

| 趟 | 分给谁 | 为什么是这个顺序 |
|---|---|---|
| **一趟** | 有专属客服的**回自己人手上**，但他手上（在手 + 本批已给）**到了水位就不再给** | 不封顶的话，专属集中的诊所会「一个人吃掉整批」 |
| **二趟** | 无专属的，给**当前手上最少的**那个 | 无专属患者没有关系要顾，拿他们填坑**零代价** —— 用完了才轮到去动有主的 |
| **三趟** | 专属这轮排满的，**单列成一组交主管定** —— 这一组就是引导③「专属排满了」 | ⛔ 不自动改派 |

<Callout type="warn">

**为什么必须三趟、不能合成两趟。** 二、三趟都是水位法、都填最空的人，合并起来总量一模一样 —— 但**被拆散的专属关系数不一样**。先用无专属的去补空手的人，能少动一个有主患者；合成一趟，系统就会随机地把某个有主患者改派出去，而同时某个无专属患者落给了别人。

**为什么第一趟要封顶。** 本地实测：池子 1,081 人里 **755 人（70%）挂在同一个客服名下**。不封顶，他一批拿走 248 条；而 17 位在岗客服里有 10 位名下一个患者都没有，只能靠 119 个自由患者过活。

**为什么第三趟不自动改派。** 把患者从他的专属客服手里挪走，是**关系层面的决定，助手没资格替主管做**。所以这些人不是被丢掉，是原地不动、单列出来交他定 —— 关系还在，只是这轮没轮到。主管自己拖一下当然可以，那条会标成「他手动改的」。

</Callout>

⚠️ 同水位时按客服 id 打破平局 —— **同样的输入两次必须算出同样的分法**，这是主管敢按确认键的前提。

### 后三步

| 步 | 主管在决定什么 | 谁来做 |
|---|---|---|
| **② 分人** | 上面那三趟是默认；他可以移出某几个人、改派给谁、单独给某位少分点（「李莉这周带教，这批最多给 5 条」） | 程序按规则落，主管微调 |
| **③ 确认** | **要不要就这么发下去** —— 他点下去这一刻才真的分下去 | 只有主管 |
| **④ 确认之后** | **发出去之后怎么管**：发错了限时撤回、临时加个福利、跟踪这批打得怎么样 | 主管发起，程序执行 |

### 红色那个菱形，是助手在这条线上**唯一实质的判断**

主管说一句话，助手要判断他动的是哪一层：

| 他说 | 动的是 | 走 |
|---|---|---|
| 「王强移出这批」「待分配都还给专属」「给 5 天」「带个福利」 | **② 分人** | 就地改，同一版 |
| 「只要商保直付的」「改成 200 人」「换成一两年没来的」 | **① 选人**（初选那两问、精选那两问，都算） | 重跑，出新版 |

<Callout type="warn">**代价不对称**：把「① 选人」误判成「② 分人」→ 主管以为条件生效了、其实没有（**看不出来的错**）；反过来只是多算一次。⇒ **拿不准时一律走重跑。**</Callout>

### 两条闭合的环

- **改分法** → 回到同一版：人没变，分法变了
- **改人群** → 回到新的一版：**旧版当场作废**，确认按钮禁用

⚠️ 作废发生在**新版生成时**，不是确认时 —— 主管要能看见自己出过几版、哪一版才是当前的。

### 助手讲这一版时，也按这个顺序讲

`① 选人 → ② 分人 → ③ 确认`。**顺序不能反**：选人那一档他一动，整版重出；先讲分法，他动一下就全白讲。

---

## 二、提示词怎么搭的

助手的行为由一段系统提示词决定。它不是一篇散文，是**五层拼起来的**，装配顺序就是模型的阅读顺序：**通用 → 特殊**。

### 分层的判据是「什么会让它变」

⛔ 不是按话题分。同一个话题的话可能分属两层，只因为它们变化的原因不同。

| | 层 | 管什么 | 什么会让它变 | 占篇幅 |
|---|---|---|---|---|
| **①** | **装置** | 你是谁、和使用者什么关系、**你看不见什么** | 产品形态变才变 | 9% |
| **②** | **诚实** | 数从哪来、什么不许编、怎么忠于工具返回值 | 几乎不变 | 20% |
| **③** | **人设语气** | 衔接、顺序、分寸、排版 | **可换**（配一套人设即可） | 32% |
| **④** | **角色** | 他有什么权责、你不许替他决定什么 | 登录人的权限变 | 7% |
| **⑤** | **现场** | 他此刻在做的那条业务线 | 加一条新业务线 | 32% |

前三层**所有人一样**；④⑤ 与工具清单**跟着登录账号走**。

<Callout type="info">**一个开关驱动三样东西。** 同一个权限位同时决定 **④ 角色、⑤ 现场、工具清单** —— 换个账号登录，这三样一起换。⛔ 不会出现「给了主管的话术，却没给主管的工具」这种半拉子状态。</Callout>

将来加排班、加复盘，就是加第 ⑥ 条现场，**前面四层一个字不动** —— 这就是分层的收益。

### 三种加载方式：常驻的位置很贵

常驻的成本不是「多几百字」，是**每条业务线都常驻之后的总和**。分配、追踪、排班、复盘、盘点 —— 每加一条，其余所有会话都在为它白付上下文，而**规则越多，每条被遵守的概率越低**。

| 方式 | 装什么 | 怎么到模型手上 | 为什么是这一种 |
|---|---|---|---|
| **常驻** | 上面那五层 | 每一轮都发 | 只配给**主职责**。主管多数时候就在分配 |
| **push** | 随返回值下发的说明 | 调完工具**必然到达**，零往返 | 答的是「**这批数怎么读**」—— 有了数才需要 |
| **pull** | 单独成篇的做法 | 模型**自己发现、主动去取** | 答的是「**这件活怎么干**」—— 那要在它动手**之前**知道，来不及等返回值 |

**分配追踪就是 pull 的**：做法写成单独一篇，常驻里只留一行索引。实测问「我前面分下去那两批怎么样了」，模型第一步就自己去取了做法，然后才查批次 —— 提示词里**没有一句**叫它这么做。

---

## 三、三者分工

```mermaid
flowchart LR
  H["👤 主管<br/>做决定"] -->|说一句话| A["🤖 助手<br/>组织语言 · 调工具"]
  A -->|调用| P["⚙️ 程序<br/>算数 · 取数 · 落库"]
  P -->|事实| A
  A -->|一段话 + 一张确认单| H
  H -->|点确认| P

  style H fill:#fef3c7,stroke:#f59e0b
  style A fill:#e0e7ff,stroke:#6366f1
  style P fill:#d1fae5,stroke:#10b981
```

| | 负责 | ⛔ 不负责 |
|---|---|---|
| **主管** | 所有决定 | —— |
| **助手** | 理解他的话、组织成人话、把决定翻译成动作 | **任何数字**、谁分给谁、要不要落库 |
| **程序** | 挑人、落人、算判据、写库 | 措辞 |

**一条铁律**：凡是能算的，都由程序算。助手只转述。

---

## 四、要他定的事，做成按钮

程序算出「这一版还有什么没定」，**摆成按钮**，不让主管打字。

| 节点 | 它对主管说什么 | 不处理会怎样 |
|---|---|---|
| **专属排满了** | 「182 人的专属客服这轮已排满」——**第三趟那一组**，四个选择：换无专属的补上（池子还有人时才给）/ 铺平给在岗 / 各自归专属客服 / 移出本批 | 这批不发给他们 |
| **能加个条件** | 「这一格 2,663 人，也可以只选其中一类」+ 四个带人数的选项（见 §1） | 就按这一格全部人来 |
| **这批多大** | 「本批 405 人 = 在岗 27 人 × 每天 15 通 × 1 天」，式子摊开给他看 | 就按这个数发 |
| **最忙的那位** | 「这批发下去，最忙的是王强：手上共 45 条，约 3 天的量；**另有 2 位也超过 1 天**」 | 就按这个时效发，到期没打完的自动回池 |

⚠️ **④ 为什么要报「另有几位」**：只说最忙的一个，主管分不出两种局面 —— 而这两种局面该做的事相反：

| 局面 | 他该做的 |
|---|---|
| 只有王强超 | 给王强少分点、改派几个 |
| 全队都超 | 减少这批、延长时效 |

只有他一个人超时，那半句**不出现** —— ⛔ 不制造无谓噪音。⛔ 也不在这里铺开每个人：确认单上每位客服那一行已经写着「约 N 天」，分布本来就在眼皮底下，引导只负责**点出要他定的事**，不负责展示数据。

⚠️ **④ 只给一个选项，而且必须带数**：「整批时效改成 **3** 天」—— 那个 3 是按最忙那位的量算出来的。
曾经还有「改每人每天打几通」「减少本批人数」两个，删掉了：它们**一个数都不带**，点下去等于替主管说了句「减少一些」——
**一个不带数的按钮，严格弱于他自己开口说一句。**

⚠️ 注意最后两条的措辞：**它们只报数，不下判断**。⛔ 不说「打不完」「人太多了」「建议减到 200」—— 那是替主管做决定。

每条按钮都带三样：**是什么**、**为什么**、**不处理等于什么**。三条设计原则：

| | |
|---|---|
| **只陈述事实** | ⛔ 不写「建议你铺平」—— 给建议就是替主管做决定 |
| **默认永远是"不动"** | 一条不点、直接确认，**在任何情况下都安全** |
| **有后果的全亮** | ⛔ 不许省、不许弱化成「另有若干」—— 藏一条，他就不知道有东西卡着 |

按钮和说话**走同一套动作**：他点按钮，和他开口说「把待分配的都还给专属客服」，落到程序里是同一件事。

---

## 五、它手上的工具

工具是助手唯一能做事的通道。**没有对应工具的事，它做不了，也不会假装做了。**

<Callout type="info">**两个人拿到的清单不一样** —— 不是靠提示词叮嘱它"别看别人的"，是那些工具**根本没发给它**。</Callout>

| | 两种人都有 | 只有主管有 |
|---|---|---|
| **查** | 我是谁 · 查患者 · 看召回池 | 看人手 · 看这批人构成 · 看当前确认单 |
| **做** | —— | 出方案 · 改确认单 · 决定确认单和选项出现在哪一句之后 · 撤销 |
| **追** | —— | 我分过哪几批 · 某批怎么样了 · 这个人为什么分给了他 |

主管 21 个，客服 9 个。

---

## 六、红线

| ⛔ 绝不 | 为什么 |
|---|---|
| 报没查过的数字 | 曾对主管说「共 70 人，重要价值 4 人」，而工具一次没调，真值 278 / 97 |
| 说「已撤销」而没真撤 | 那 9 个患者还挂在客服名下，主管以为人已回池、不会再补救 |
| 说「已经分配好了」 | **点确认的是他的手**，助手只是把方案摆出来 |
| 把患者从他的专属客服手里挪走 | 关系层面的决定，只有主管能拍板 |
| 讲「成功率 / 转化率」 | 本系统**不统计成功与否**，那个结论编不出来 |
| 替他加福利的条件、期限、承诺 | 他说什么就原样写进去 |
| 说「我做不到」「你先自己弄完再说」 | 他能改的东西助手手上都有工具；把几十次手工操作推回去不是保护，是甩锅 |

---

## 七、怎么知道它没变坏

助手这层**天生有波动** —— 同一句话问两次，它未必走同一条路。所以验收分三层：

| 层 | 测什么 | 判据 |
|---|---|---|
| **算法与取数** | 挑人 · 落人 · 判据 | 单元测试，过 / 不过 |
| **交接** | 谁传什么、谁压过谁 | 契约测试，过 / 不过 |
| **助手行为** | 该调的工具调没调 | 用例集跑批，**通过率** |

**第三层的判据是「动作」，不是「文字」。** 同一个意思十种说法都对；而最贵的那类失败恰恰是**话说得挺好、工具一次没调**。

<Callout type="warn">**跑一次不算数。** 同一份配置跑 3 轮得到 1/3、跑 10 轮得到 9/10 —— 是同一个行为。判断"它是不是退步了"必须看多轮通过率。</Callout>

用例全部来自**真实踩过的坑**，每条都写明由来 —— 没有一条是设想出来的场景。

---

**一句话**：主管做决定，助手把决定落成动作，程序保证数是真的。三者边界不靠自觉，靠**结构** —— 算得出来的不让它算，看不到的不发给它，做不了的不给工具。
