Commit edbbe4f5 by luoqi

docs(站点): 只删与图重复的,提示词和工具原样保留 —— 470 → 415 行

上一版(已回退)把 §2 提示词、§3 工具整节删掉了,那是砍错地方:
产品要的是「能在图里说明的就不另开篇幅」,不是删掉这两节。

删的全是与决策树图重复的表:
- 《选人 = 主管初选 + 助手精选》整表 —— 图上 A1/A2 就是这个结构,
  只留下面那段「助手不等指令、先把方案做出来」
- 《引导什么时候才冒出来》的「满足什么才出」列 —— 触发条件写在 G1/G2 节点上,
  表只留「为什么卡那个条件」(这一列图里没有)
- 分人三趟表 —— 图上 B 节点已逐趟写清,只留水位公式和三条「为什么」
- 「人手在两个地方摆给他看」两行表 → 一句话
- 《③ 确认 · ④ 确认之后》表 → 两句话
- §5「另有几位」的两局面表 → 一句话(该做的事正好相反)

合并:
- 《代价不对称》整节上提到图下 —— 它是读图的钥匙,本来就该紧跟着图,
  放章末等于让人看完全章再回头理解开头那两个环

§2 §3 内容一句没删,只压掉工程细节的铺陈:
- 四条硬规则的分条罗列 → 一行(判据那句引言保留,它才是要点)
- 《只有主职责常驻》两段并一段

八节结构不变。验证:pnpm --filter pac-docs build 通过。
parent af291464
...@@ -55,9 +55,21 @@ flowchart TD ...@@ -55,9 +55,21 @@ flowchart TD
style L fill:#d1fae5,stroke:#10b981 style L fill:#d1fae5,stroke:#10b981
``` ```
图上有两个环,**代价差一个数量级** —— 红环(改人群)要重新选一版,几十秒,已经排好的分法一并作废;紫环(改分法)人不变,秒级返回 图上两个环,**代价差一个数量级 —— 这是全图最要紧的一点**。红色那个菱形也是助手在这条线上**唯一实质的判断**:主管说一句话,它得先判断他动的是哪一层
所以顺序不能颠倒:**人先定下来,才谈怎么分**。先排分法再让他改人群,前面那趟排班就白做了。两个环各自的触发条件见下文《引导什么时候才冒出来》,代价的完整分档见本章最后一节。 | 他动的是 | 比如他说 | 代价 |
|---|---|---|
| **分法** | 「王强移出这批」「待分配都还给专属」「给 5 天」「带个福利」 | **就地改**(同步)—— 同一版上动 |
| **这一版里的人** | 「换无专属客服的患者补上」 | **重排**(几秒)—— 重排一遍分法,不重新选人 |
| **人群** | 「只要商保直付的」「改成 200 人」「换成一两年没来的」 | **重出**(几十秒)—— 重新选一版,旧版当场作废 |
所以顺序不能颠倒:**人先定下来,才谈怎么分。** 先排分法再让他改人群,前面那趟排班就白做了 —— 助手讲这一版时也按这个顺序讲,理由一样。
三档里最容易看走眼的是中间那条:**「换无专属的补上」摆在分人环里,换的却是人。**「改时效」也有两条路 —— 从「这批多大」改会连人数一起重估(重出),从「最忙的那位」改只延长期限、人不变(就地改)。
<Callout type="warn">**代价不对称,判断也要跟着不对称**:把「改人群」误判成「改分法」→ 主管以为条件生效了、其实没有(**看不出来的错**);反过来只是多算一次。⇒ **拿不准时一律走重出。**</Callout>
⚠️ 图里只画了按钮。主管随口说的(「换成正畸」「改成 200 人」「只要今年来过的」)同样能触发重出 —— 那条路不走按钮,靠助手听懂。旧版作废发生在**新版生成时**,不是确认时:主管要能看见自己出过几版、哪一版才是当前的。
### 召回策略:一批召回要回答的四个问题 ### 召回策略:一批召回要回答的四个问题
...@@ -89,19 +101,10 @@ flowchart TD ...@@ -89,19 +101,10 @@ flowchart TD
</Callout> </Callout>
### 选人 = 主管初选 + 助手精选 ### 主管只说了 1 和 2,剩下的助手拿默认值先跑通
| | 主管初选 | 助手精选 |
|---|---|---|
| **答哪几问** | 1 做哪类治疗 · 2 多久没来 | 3 要不要挑高价值 · 4 团队吃得下多少 |
| **他给的是** | 运营意图(一句话) | —— |
| **助手给的是** | —— | **全景数据 + 一版已经分好的方案** |
| **结果** | 一批候选人 | 一批确定的人 + 谁打给谁 |
助手在这一步不是等他再下一个指令,而是**先把该看的摆出来、顺手把方案做出来**:这批人的画像构成、消费分布、在岗几人、各自手上压着多少、这批发下去谁最忙。主管看着这些改,或者直接确认。 助手在这一步不是等他再下一个指令,而是**先把该看的摆出来、顺手把方案做出来**:这批人的画像构成、消费分布、在岗几人、各自手上压着多少、这批发下去谁最忙。主管看着这些改,或者直接确认。
### 主管只说了 1 和 2,剩下的助手拿默认值先跑通
| 默认的是 | 取值 | 他想改,说一句就行 | | 默认的是 | 取值 | 他想改,说一句就行 |
|---|---|---| |---|---|---|
| **谁排前面** | 没联系过的排前面,其余按优先级从高到低 | 「先打消费高的」 | | **谁排前面** | 没联系过的排前面,其余按优先级从高到低 | 「先打消费高的」 |
...@@ -113,14 +116,7 @@ flowchart TD ...@@ -113,14 +116,7 @@ flowchart TD
一个他看不见的默认值,等于系统替他做了一个他不知道的决定 —— 而这批人是真发下去了。 一个他看不见的默认值,等于系统替他做了一个他不知道的决定 —— 而这批人是真发下去了。
⇒ 摆出来他才有得改;不摆,他连「原来还能改这个」都不知道。</Callout> ⇒ 摆出来他才有得改;不摆,他连「原来还能改这个」都不知道。</Callout>
人手这件事在**两个地方**主动摆给他看,不用他去找: 人手在**两个地方**主动摆给他看,不用他去找:出方案时是上面那个式子;确认单上是每位客服一行「约 3 天」,算的是**分完之后他手上的总量**(在手 + 本批),不只是本批那几条。超出时效的用**颜色**提示,⛔ 不写「打不完 / 超了 / 过载」—— 几乎每批都会有人超,说成故障主管就会开始怀疑系统,而不是做他该做的判断。
| 什么时候 | 他看到什么 |
|---|---|
| **出方案时** | 「本批 405 人 = 在岗 27 人 × 每天 15 通 × 1 天」—— 式子和每个数都摊开,他改哪个都行 |
| **确认单上** | 每位客服一行「约 3 天」,算的是**分完之后他手上的总量**(在手 + 本批),不只是本批那几条 |
超出本批时效的用**颜色**提示,⛔ 不写「打不完 / 超了 / 过载」—— 几乎每批都会有人超,说成故障主管就会开始怀疑系统,而不是做他该做的判断。
### 能加哪几个条件 ### 能加哪几个条件
...@@ -140,35 +136,25 @@ flowchart TD ...@@ -140,35 +136,25 @@ flowchart TD
### 引导什么时候才冒出来 ### 引导什么时候才冒出来
⛔ 不是每次都全给 —— 每一条都有自己的出场条件,不满足就不出现 ⛔ 不是每次都全给 —— 出场条件写在图上,卡这些条件的理由是
| 引导 | 满足什么才出 | 为什么卡这个条件 | | 引导 | 为什么卡那个条件 |
|---|---|---| |---|---|
| **专属排满了** | 这一版真有人排不进去 | 它是唯一「不处理就真的有人被漏掉」的一条 | | **专属排满了** | 它是唯一「不处理就真的有人被漏掉」的一条,所以只要真排不进去就必出 |
| **能加个条件** | 候选 ≥ 50 人 · 他还没加过条件 · 切完至少还剩 10 人 | 人太少时「平均数」「最多的那一项」本身就是噪音;已经加过就不再一层层往下切 | | **能加个条件** | 人太少时「平均数」「最多的那一项」本身就是噪音;已经加过就不再一层层往下切 |
| **这批多大** | 人数是系统估的(他没自己指定过) | 他自己说过「就发 200 人」,就不必再解释这个数哪来的 | | **这批多大** | 他自己说过「就发 200 人」,就不必再解释这个数哪来的 |
| **最忙的那位** | 最忙的人分完之后的量 > 每天通数 × 时效 | 没超就不提,⛔ 不制造无谓的告警 | | **最忙的那位** | 没超就不提,⛔ 不制造无谓的告警 |
⚠️ **图里只画了引导节点。** 主管随口说的(「换成正畸」「改成 200 人」「只要今年来过的」)同样能触发重出 —— 那条路不走按钮,靠助手听懂 + 调工具,⛔ 不在这张图上。
⚠️ **符合条件的人比这批还少时,「这批多大」照样给他**:往上调确实不会更多,但**往下调可以少发一些** —— 那句话据实写清方向,⛔ 不把入口藏起来。 ⚠️ **符合条件的人比这批还少时,「这批多大」照样给他**:往上调确实不会更多,但**往下调可以少发一些** —— 那句话据实写清方向,⛔ 不把入口藏起来。
### ② 分人怎么分:又满又平,三趟走完 ### ② 分人怎么分:又满又平,三趟走完
不是简单的「谁空给谁」。先算一条**目标水位**,再走三趟 三趟怎么走见图。先按「这批多大」算出一条**目标水位**给第一趟封顶 —— ⭐ 它**不是一个新的可调项**,完全由「这批多大」推出来
``` ```
目标水位 = ⌈(团队现有在手总量 + 本批人数)÷ 在岗人数 ⌉ 至少 1 目标水位 = ⌈(团队现有在手总量 + 本批人数)÷ 在岗人数 ⌉ 至少 1
``` ```
⭐ 水位**不是一个新的可调项** —— 完全由「这批多大」推出来。它存在的唯一理由是**给第一趟封顶**。
| 趟 | 分给谁 | 为什么是这个顺序 |
|---|---|---|
| **一趟** | 有专属客服的**回自己人手上**,但他手上(在手 + 本批已给)**到了水位就不再给** | 不封顶的话,专属集中的诊所会「一个人吃掉整批」 |
| **二趟** | 无专属的,给**当前手上最少的**那位 | 无专属患者没有关系要顾,拿他们填坑**零代价** —— 用完了才轮到去动有主的 |
| **三趟** | 专属这轮排满的,**单列成一组交主管定** —— 这一组就是引导「专属排满了」 | ⛔ 不自动改派 |
<Callout type="warn"> <Callout type="warn">
**为什么必须三趟、不能合成两趟。** 二、三趟都是水位法、都填最空的人,合并起来总量一模一样 —— 但**被拆散的专属关系数不一样**。先用无专属的去补空手的人,能少动一个有主患者;合成一趟,系统就会随机地把某个有主患者改派出去,而同时某个无专属患者落给了别人。 **为什么必须三趟、不能合成两趟。** 二、三趟都是水位法、都填最空的人,合并起来总量一模一样 —— 但**被拆散的专属关系数不一样**。先用无专属的去补空手的人,能少动一个有主患者;合成一趟,系统就会随机地把某个有主患者改派出去,而同时某个无专属患者落给了别人。
...@@ -185,30 +171,7 @@ flowchart TD ...@@ -185,30 +171,7 @@ flowchart TD
### ③ 确认 · ④ 确认之后 ### ③ 确认 · ④ 确认之后
| 步 | 主管在决定什么 | 谁来做 | **③ 确认**只有主管能做 —— 他点下去这一刻才真的分下去。**④ 确认之后**是发出去怎么管:发错了限时撤回、临时加个福利、跟踪这批打得怎么样,主管发起、程序执行。
|---|---|---|
| **③ 确认** | **要不要就这么发下去** —— 他点下去这一刻才真的分下去 | 只有主管 |
| **④ 确认之后** | **发出去之后怎么管**:发错了限时撤回、临时加个福利、跟踪这批打得怎么样 | 主管发起,程序执行 |
### 代价不对称:什么时候重来,什么时候就地改
红色那个菱形,是助手在这条线上**唯一实质的判断** —— 主管说一句话,它要判断他动的是哪一层:
| 他说 | 动的是 | 代价 |
|---|---|---|
| 「王强移出这批」「待分配都还给专属」「给 5 天」「带个福利」 | **分法** | **就地改**(同步)—— 同一版上动,人和分法都不重算 |
| 「换无专属客服的患者补上」 | **人**(但只换这一版里的人) | **重排**(几秒)—— 重新排一遍分法,不重新选人 |
| 「只要商保直付的」「改成 200 人」「换成一两年没来的」 | **人群**(初选那两问、精选那两问,都算) | **重出**(几十秒)—— 重新选一版,旧版当场作废 |
三档里最容易看走眼的是中间那条:**「换无专属的补上」摆在分人环里,换的却是人** —— 它是四个引导节点中唯一一个「长在分人环、代价却偏向选人环」的选项。
「改时效」也有两条路,代价不一样:从**「这批多大」**改,会连人数一起重估(**重出**);从**「最忙的那位」**改,只延长这一批的期限、人不变(**就地改**)。
<Callout type="warn">**代价不对称,判断也要跟着不对称**:把「改人群」误判成「改分法」→ 主管以为条件生效了、其实没有(**看不出来的错**);反过来只是多算一次。⇒ **拿不准时一律走重出。**</Callout>
⚠️ 旧版作废发生在**新版生成时**,不是确认时 —— 主管要能看见自己出过几版、哪一版才是当前的。
助手讲这一版时,也按 `① 选人 → ② 分人 → ③ 确认` 的顺序讲。**顺序不能反**:选人那一档他一动,整版重出;先讲分法,他动一下就全白讲。
--- ---
...@@ -246,14 +209,9 @@ flowchart TD ...@@ -246,14 +209,9 @@ flowchart TD
</Callout> </Callout>
所以「主管一个 agent、客服一个 agent」这个说法要拆开看:**同一套实现,按身份参数化**。这不是「多 agent 编排」—— 编排指 agent 之间互相调用,而不同身份之间**不需要通信**;真要协作,走业务对象,⛔ 不走 agent 消息 所以「主管一个 agent、客服一个 agent」这个说法要拆开看:**同一套实现,按身份参数化**。这不是「多 agent 编排」—— 编排指 agent 之间互相调用,而不同身份之间**不需要通信**。
四条硬规则,都落在结构上而非嘴上: 边界全都落在结构上而非嘴上:身份随每次调用传递、授权在工具内部执行、数据范围写进查询条件、工具清单按身份下发。
1. **身份随每次调用传递**,⛔ 不随连接建立 —— 一个连接可能服务多个用户
2. **授权在工具内部执行**,⛔ 不在助手这一层
3. **数据范围下推到查询语句** —— 「查全量再过滤」漏一处就泄露;「条件里就带范围」漏一处只是查不到,**失败方向不同**
4. **工具清单本身按身份下发**
> **判据:如果模型不传某个参数,越权就不可能发生 —— 那这个参数就不该是参数。** > **判据:如果模型不传某个参数,越权就不可能发生 —— 那这个参数就不该是参数。**
> 顺带的好处:模型不用猜,少一个必错的空格。 > 顺带的好处:模型不用猜,少一个必错的空格。
...@@ -278,9 +236,7 @@ flowchart TD ...@@ -278,9 +236,7 @@ flowchart TD
### 只有主职责常驻 ### 只有主职责常驻
常驻的成本不是「多几百字」,是**每条业务线都常驻之后的总和** —— 分配、追踪、排班、复盘、盘点,每加一条,其余所有会话都在白白背着它的篇幅,而**规则越多,每条被遵守的概率越低**。 常驻的成本不是「多几百字」,是**每条业务线都常驻之后的总和** —— 分配、追踪、排班、复盘、盘点,每加一条,其余所有会话都在白白背着它的篇幅,而**规则越多,每条被遵守的概率越低**。所以只有**主职责**(分配)常驻,次要的活写成单独一篇,常驻里**只留一行索引**。
所以只有**主职责**(分配)常驻。次要的活(比如分配追踪)写成单独一篇,常驻里**只留一行索引**,助手要用时自己去取。
⭐ 实测问「我前面分下去那两批现在怎么样了」,模型**第一步就自己去把做法取了**,然后才查批次 —— 提示词里没有一句叫它这么做。 ⭐ 实测问「我前面分下去那两批现在怎么样了」,模型**第一步就自己去把做法取了**,然后才查批次 —— 提示词里没有一句叫它这么做。
...@@ -389,26 +345,15 @@ flowchart LR ...@@ -389,26 +345,15 @@ flowchart LR
| **这批多大** | 「本批 405 人 = 在岗 27 人 × 每天 15 通 × 1 天」,式子摊开给他看 | 就按这个数发 | | **这批多大** | 「本批 405 人 = 在岗 27 人 × 每天 15 通 × 1 天」,式子摊开给他看 | 就按这个数发 |
| **最忙的那位** | 「这批发下去,最忙的是王强:手上共 45 条,约 3 天的量;**另有 2 位也超过 1 天**」 | 就按这个时效发,到期没打完的自动回池 | | **最忙的那位** | 「这批发下去,最忙的是王强:手上共 45 条,约 3 天的量;**另有 2 位也超过 1 天**」 | 就按这个时效发,到期没打完的自动回池 |
⚠️ **为什么要报「另有几位」**:只说最忙的一个,主管分不出两种局面 —— 而这两种局面该做的事相反: ⚠️ **为什么要报「另有几位」**:只说最忙的一个,主管分不出两种局面 —— 而这两种局面该做的事**正好相反**:只有王强超,就给他少分点、改派几个;全队都超,就得减少这批、延长时效。只有他一个人超时那半句不出现,⛔ 不制造无谓噪音;也⛔ 不在这里铺开每个人 —— 确认单上每位客服那一行已经写着「约 N 天」,引导只负责**点出要他定的事**,不负责展示数据。
| 局面 | 他该做的 |
|---|---|
| 只有王强超 | 给王强少分点、改派几个 |
| 全队都超 | 减少这批、延长时效 |
只有他一个人超时,那半句**不出现** —— ⛔ 不制造无谓噪音。⛔ 也不在这里铺开每个人:确认单上每位客服那一行已经写着「约 N 天」,分布本来就在眼皮底下,引导只负责**点出要他定的事**,不负责展示数据。
⚠️ **「最忙的那位」只给一个选项,而且必须带数**:「整批时效改成 **3** 天」—— 那个 3 是按最忙那位的量算出来的。
曾经还有「改每人每天打几通」「减少本批人数」两个,删掉了:它们**一个数都不带**,点下去等于替主管说了句「减少一些」——
**一个不带数的按钮,严格弱于他自己开口说一句。**
⚠️ 注意最后两条的措辞:**它们只报数,不下判断**。⛔ 不说「打不完」「人太多了」「建议减到 200」—— 那是替主管做决定。 ⚠️ **「最忙的那位」只给一个选项,而且必须带数**:「整批时效改成 **3** 天」—— 那个 3 是按最忙那位的量算出来的。曾经还有「改每人每天打几通」「减少本批人数」两个,删掉了:它们**一个数都不带**,点下去等于替主管说了句「减少一些」—— **一个不带数的按钮,严格弱于他自己开口说一句。**
每条按钮都带三样:**是什么**、**为什么**、**不处理等于什么**。三条设计原则: 每条按钮都带三样:**是什么**、**为什么**、**不处理等于什么**。三条设计原则:
| | | | | |
|---|---| |---|---|
| **只陈述事实** | ⛔ 不写「建议你铺平」—— 给建议就是替主管做决定 | | **只陈述事实** | ⛔ 不写「建议你铺平」「打不完」「人太多了」「建议减到 200」—— 给建议就是替主管做决定 |
| **默认永远是「不动」** | 一条不点、直接确认,**在任何情况下都安全** | | **默认永远是「不动」** | 一条不点、直接确认,**在任何情况下都安全** |
| **有后果的全亮** | ⛔ 不许省、不许弱化成「另有若干」—— 藏一条,他就不知道有东西卡着 | | **有后果的全亮** | ⛔ 不许省、不许弱化成「另有若干」—— 藏一条,他就不知道有东西卡着 |
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment