Akke · 个人微信自动代回 · 人设治理设计稿

个微人设隔离与分配:手机自己建,电脑端后台分

个人微信的人设改为服务端一张表。手机由本人填,电脑端由管理员分。机器从心跳回包里知道自己是谁,没分配就不回。人设 key 就是工作台的接待号,一个人设只绑一台机器。

范围 只讲个人微信(手机 APK · Windows 销售机 · 云电脑个微)。企微人设本次不动。 日期 2026-09-03

01现在 vs 之后

现在 企微云电脑 Windows 个微端 手机 APK × 7 企微九人表SALES_PERSONAS 三端都借这九个 key 说话 xiawei:客户名五台手机 + 云电脑混一池 之后 手机本人填表 Windows / 云电脑管理员分配 个微人设表 wx_xiaoxia_01 ↔ 手机A wx_xiawei_01 ↔ 销售机B 一个 key 只绑一台机 wx_xiaoxia_01:客户名一机一池,工作台按前缀看
左边是今天:三个执行端都从企微的九个人设里挑 key,七台手机里五台选了夏伟,会话全写成 xiawei:客户名,和云电脑企微的混在一起。右边是要做成的样子:个微有自己的一张人设表,一台机器对应一个 wx_ key,会话按 key 分池。
今天的会话池会话数里面是谁的
xiawei:295150 段 Windows / macOS 个微端,145 段是云电脑企微和五台手机混在一起,分不出
gerenweixin:111Windows / macOS 个微端共用一个接待号,分不出是哪台机
xiaoxia:4846 段是云电脑企微和两台手机混在一起

02核心机制:一张表、两个入口、一条通道

① 谁来填 ② 服务端 ③ 机器与工作台 手机 · 本人 填姓名、客户称呼、性别、九档风格 persona_register 管理员 · 门店工作台 给 Windows / 云电脑建人设并绑机器 persona_assign 或生成配对码,装机时输码绑定 写入 人设表 weixin_personas key wx_xiaoxia_01 host salesphone-… 姓名 · 客户称呼 · 性别 · 固定风格 唯一约束:key · host · 姓名 = 一台机只有一个人设 机器 手机 APK / Windows 边车 落盘,断网重启都保持 心跳 每 5 分钟 回包 desired.persona 代回:generate 带 key + host 会话身份键 wx_xiaoxia_01:客户名 核对 key 与 host 按前缀收窄 门店工作台 成员接待号填同一个 key 只看到自己这台机的客户 表里没有这台机的人设 → 回包不带 persona → 机器一条不回
手机和电脑端只在①「谁来填表」上不同,②③完全一样。机器不自己决定是谁:它每 5 分钟发一次心跳,服务端在回包里告诉它「你是 wx_xiaoxia_01,叫小夏」。没分配就没有这个键,机器就不回。工作台成员的接待号填同一个 key,就只看到这台机的客户。

03人设是什么:三样原料进同一副骨架

姓名 · 2–4 字 客户称呼 · 2–6 字 性别 · 男/女/不强调 风格 · 九档选一 装配 固定骨架 buildYdyxPersona 「你叫 X,有大有小的销售(X 生)」 品牌事实:568 全国统一价、板材品牌 表达闸:简短、自然、不重复喊客户 风格段 ← 九档预设原文,不接收自由文本 骨架不给改,所以不开自由文本 AI 用这个身份 替他回客户
本人或管理员只提供身份信息、性别和固定风格。它们被装进一副固定骨架,骨架里写死了品牌事实和表达规则,所以谁填都改不了「568 全国统一价」这类事实。风格只从九档预设中选择。
九档风格一句话九档风格一句话九档风格一句话
利落干练先甩结论再补理由热情周到句尾软化,不催不推温和细致把复杂的事掰开讲
算账清楚一问价就拆开算勤快跟进当场去核实,给时间点实在行家给中肯判断,帮避坑
稳健护盘先交代工期安装售后细节确认复述一遍再往下走先看现场先问清房子再给建议

04手机端 UI:本人实际看到的五个页面

01 · 创建身份
9:415G 87%
设置我的 AI 身份
第 1 / 4 步
先告诉 AI 你是谁
这些信息只用来决定回复时怎么称呼自己、用什么语气。
夏夏
小夏
不强调
下一步:选说话风格
02 · 选择风格
9:425G 87%
选择说话风格
第 2 / 4 步
你平时更像哪一种?
只能从固定风格里选,品牌价格和服务规则不会被改动。
利落干练
先说结论,再补半句理由;少寒暄
热情周到
语气柔和,多体谅一句,不催客户
温和细致
把复杂的事情一步步讲清楚
算账清楚
客户问价时拆开算,钱花在哪说清楚
更多 5 种风格 ⌄
勤快跟进、实在行家、稳健护盘……
下一步:试听
03 · 试听确认
9:435G 86%
听听像不像你
第 3 / 4 步
这是客户问价时的效果
模拟对话 · 不会真的发送
你们家全屋定制大概多少钱?
这么说吧,柜体主推 568 元/㎡投影,全国统一价。您把房子面积和城市告诉我,我直接给您估个范围。
身份:小夏 · 风格:利落干练
不像我,返回调整
像我,就用这个身份
04 · 迁移老客户
9:445G 86%
认领我的老客户
第 4 / 4 步
哪些聊天是这台手机的?
只勾你确认是个人微信聊过的人。没勾的会话原地保留,不会丢。
王姐
最近:想问下 120 平大概预算
3 条
杭州陈先生
最近:板材是 ENF 的吗
7 条
刘哥
不确定是不是我的
2 条
已选 2 人,迁移后 AI 会接着原来的聊天记忆回复。
确认迁移 2 位客户
暂不迁移
05 · 创建完成 / 日常入口
9:455G 86%
我的 AI 身份
小夏的人设已生效
这台手机只会使用下面这个身份回复。
工作台接待号
wx_xiaxia_01
把这串发给管理员,绑定后你只能看到自己手机上的客户。
姓名与称呼夏夏 · 小夏
说话风格利落干练
设备绑定本机 ✓
当前状态正在值守 ✓
修改姓名或风格
这五页才是手机端真正的产品形态。前四页只在首次安装或更换本人时出现;创建完成后,App 首页只保留“我的 AI 身份”卡片。修改姓名或风格要重新试听,但 key 不变,工作台和历史会话不会断。
手机上 1 填表 姓名 · 客户称呼 · 性别 · 固定风格 替换现在的四选一弹窗 2 试听 看一句「客户问价」的回复 像不像自己,不像就改 3 登记 拿到 key,大字显示 给工作台管理员抄接待号 4 迁旧会话 勾自己的老客户(见 06) 勾完开始正常回 服务端 persona_preview 真模型按人设回一句,不落库 persona_register 建行、绑 host、返回 key persona_migrate_* 列候选、按勾选改绑
放在引导第 6 步。没建完人设引导不往下走,App 报「人设未设置(现在谁都不回)」,和「白名单为空」是同一种状态,会进心跳让服务端看见。试听那一步是为了避免今天「在 xiawei 和 xiaoxia 之间选错」这种事,听一句比看拼音可靠。

05电脑端:管理员分,机器只管收敛

管理员 服务端 机器(Windows / 云电脑) 入口 A · 工作台分配 机器页:建人设 + 绑这台机 persona_assign 人设行 host = 这台机 入口 B · 配对码 建人设 → 生成 6 位码,24h 一次性 码交给装机的人 首次启动输码 机器还没上线也能绑 persona_claim 绑 host,码作废 下一拍心跳回包 desired.persona 每 5 分钟心跳 报 host 落盘 → 代回 没收到就不回
两个入口写的是同一张表,之后的路一样。入口 A 给已经在发心跳、状态页上看得到的机器用。入口 B 给首装:机器还没上线、装机的人也不是销售本人,他只要在客户端输一次配对码,机器就绑上了。.env 里的 AKKE_WEIXIN_PERSONAAKKE_WEIXIN_DATA_OPERATOR 退役,换人只改表里那一行,机器下一拍生效。

06旧会话迁移:只迁手机端的,手机报名单、人来勾

今天的 xiawei: 池 · 295 段 150 段带显式身份 consult: Windows / macOS 的,一律排除 145 段裸名 xiawei:客户名 云电脑企微 + 五台手机混着 库里没有字段能分开 手机报名单 白名单、黑名单里的名字 按规范名匹配 候选清单 客户名 · 最后一条 · 消息数 销售逐条勾 勾了的:精确改绑 wx_xiaoxia_01:客户名 customer_profile 留 migrated_from 可回退 没勾的:留在 xiawei: 不动
库里认不出一段裸名会话来自手机还是云电脑,唯一知道答案的是手机:白名单里写着测试过的人,拿手机的销售也认得自己的客户。所以由手机报名字、服务端找候选、人来勾。同一个客户可能既加了夏伟企微又加了这台手机个微,键一模一样,只有人能分辨。按今天七台手机的白名单一共六个人,要勾的是个位数。电脑端旧会话不迁:111 段共用一个接待号,也没有人在机器前勾选的环节。

07服务端怎么拦:三个问题,答错就不回

代回请求进来 带 host 吗? 新包都带 否 = 老包 灰度期照旧放行 全部切完后关闸 400 persona 是 wx_ 开头? 个微端不许用企微 key 400 拒绝 手机日志「人设无效」 host 与登记一致? 查人设表 不回 + Lark 告警 persona_host_mismatch 放行
三问都过才装配人设、生成回复。第二问就是「隔离」本身:带 host 的新包只能用 wx_ 人设,企微的九个 key 在个微端从此无效。第三问就是「一机一人设」的执法:key 被别的机器拿去用,服务端不回并告警。
人设表和配对码表的 DDL
create table public.weixin_personas (
  id            uuid primary key default gen_random_uuid(),
  org_id        uuid not null,
  key           text not null,        -- wx_xiaoxia_01,服务端生成
  origin        text not null check (origin in ('self','assigned')),  -- 手机自建 / 后台分配
  host          text,                 -- 绑定的机器;未绑时为空
  display_name  text not null,
  gender        text not null check (gender in ('男','女')),
  style_preset  text not null,
  catchphrases  text[] not null default '{}',
  status        text not null default 'active' check (status in ('active','retired')),
  created_by    text not null,
  created_at    timestamptz not null default now(),
  updated_at    timestamptz not null default now()
);
create unique index on weixin_personas (org_id, key);
create unique index on weixin_personas (org_id, host)         where status = 'active' and host is not null;
create unique index on weixin_personas (org_id, display_name) where status = 'active';

create table public.weixin_persona_pairing_codes (
  code        text primary key,       -- 6 位数字
  org_id      uuid not null,
  persona_id  uuid not null references weixin_personas(id),
  expires_at  timestamptz not null,   -- 生成后 24 小时
  used_at     timestamptz,
  used_by     text
);

DDL 走 supabase/wecom-ddl/ 存档加 dashboard 执行,并补 wecom_ddl_applied 台账。

接口契约一览(八个 action)
action谁调做什么
persona_preview手机 / 工作台按表单字段临时装配人设,真模型回一句固定问价,不落库
persona_register手机建 origin=self 的行并绑 host,返回 key;同名或本机已有生效人设则拒绝并说明绑在哪台
persona_assign工作台 / 状态页建或改 origin=assigned 的行,绑到指定 host;管理员 token
persona_pairing_code工作台为一个未绑定的人设生成配对码
persona_claimWindows 边车拿配对码把本机 host 绑到预建的人设,配对码作废
persona_migrate_preview / _commit手机列旧 persona 下裸名候选(排除显式身份的),按勾选精确改绑
heartbeat(已有)手机 / 边车回包 desired.persona;telemetry 加 personaKeypersonaName
generate / opener / confirm(已有)手机 / 边车新增 host 字段;服务端核对 (persona, host) 与登记一致

服务端认人设的函数从「查静态九人表」扩成「先查静态表,wx_ 前缀再查库」,命中后交给同一个骨架装配,回复生成、模型选择、个微输出闸一行不改。

08上线顺序:先服务端,再两端,最后关闸

1 服务端 建表、八个 action 老包照旧放行 2 手机 0.9.31 强制建人设 + 迁旧会话 删掉四选一弹窗 3 Windows v1.9.21 读 desired.persona 支持配对码,带 host 4 工作台分配页 六台 Windows / 云电脑 逐台分配 5 关闸 所有个微机器都是 wx_ 后 带 host 的非 wx_ 一律 400 1 到 4 期间新旧包并存,老包不受影响;第 5 步之后隔离正式生效
验收只认行为,不认配置:①把一台新版手机的人设改回 xiawei 发一条,服务端应 400;②两台机器注册或分配同名「小夏」,第二台应被拒并提示绑在哪台;③给一台 Windows 机器改绑人设,下一拍心跳后状态行显示新名字、新会话前缀换成新 key;④用过期或用过的配对码,客户端应被拒且不绑定;⑤心跳表所有个微机器无重复人设;⑥销售的工作台账号填了接待号后,只看到自己机器的会话。
依据:wecom-chat origin/main(4fac2a1,2026-09-03)、store-workbench origin/main 源码;生产库 wecom_loop_heartbeats / conversations / accounts 于 2026-09-03 09:40 读取。相关页:执行器上手手册。内部参考页,noindex。