Skill 清单
主动外联的全部能力定义,按清海 AI 实际工作方式分层组织。 场景总览见 自主意识,主动外联详细场景见 功能描述,角色交互见 角色场景。
架构总览
主动外联与其他场景不同:不由用户对话触发,而是系统自主发起。核心能力分为四层。
分层判断标准
| 层级 | 判断标准 | 开发产出 |
|---|---|---|
| A — 认知中枢输出 | 认知中枢评估后产出 outreach intent | 认知中枢新增 outreach 输出类型 |
| B — 外联引擎 | 接收 intent,执行授权、防骚扰、消息生成、发送 | scripts/outreach/ 模块 |
| C — 系统能力 | 不需要 AI 感知,在引擎内部自动运行 | 引擎内部逻辑 |
| D — 触发流水线 | 事件驱动 + 定时扫描,不经过用户对话 | 复用现有感知层 + daemon 扫描 |
模块汇总
| 名称 | 描述 | 状态 |
|---|---|---|
outreach 输出类型 | 认知中枢新增的决策输出类型 | 🔲 待开发 |
outreach_engine | 外联调度引擎(授权 + 防骚扰 + 发送) | 🔲 待开发 |
outreach_composer | 对话内容生成(上下文组装 + LLM 生消息) | 🔲 待开发 |
outreach_policy | 分级授权规则 + 防骚扰参数配置 | 🔲 待开发 |
org_resolver | 组织架构层级解析 | 🔲 待开发 |
escalation_manager | 升级链路管理 + 前序沟通摘要 | 🔲 待开发 |
outreach_fact_writer | 外联结果回写 Fact Layer | 🔲 待开发 |
A 层 — 认知中枢 outreach 输出
Outreach Intent 结构
认知中枢评估 Signal 后,如果判断需要主动沟通,产出一个 Outreach Intent:
yaml
outreach_intent:
target_person_id: "p_zhangsan" # 找谁
topic: "任务逾期" # 聊什么主题
context_refs: # 相关上下文引用
- fact_id: "fact_20260321_001" # 触发事实
- concern_id: "concern_042" # 关联的 Concern(如有)
reason: "任务 XX 逾期 2 天,无相关对话或代码提交" # 为什么要找他
authorization_level: "L1" # 授权级别
urgency: "medium" # 紧急程度
escalation_context: # 升级上下文(如有)
previous_outreach_ids: [] # 前序外联记录
escalation_round: 1 # 第几轮(1=首次找当事人)触发 outreach 的认知中枢判断标准
认知中枢通过五维评估决定是否产出 outreach intent:
| 维度 | 需满足条件 | 说明 |
|---|---|---|
| impact | ≥ medium | 影响范围不能太小(个人备忘不触发) |
| urgency | ≥ low | 有一定时效性 |
| continuity | 需要外部人参与 | 清海自己搞不定,需要找人 |
| confidence | ≥ 0.7 | 有足够信息支撑判断 |
| scope | 明确关联人 | 知道该找谁 |
B 层 — 外联引擎模块
1. outreach_engine — 外联调度
外联引擎的核心调度模块,接收 Outreach Intent 后编排执行流程。
输入:Outreach Intent(来自认知中枢)
输出:外联执行结果(成功/被拦截/等待审批)
流程:
1. 授权检查(调用 outreach_policy)
2. 防骚扰检查(调用 cooldown_tracker)
3. 组装上下文(调用 outreach_composer)
4. 发送消息(调用 ChannelSender)
5. 创建/关联 Concern(进入多轮跟进)
6. 回写结果(调用 outreach_fact_writer)| 方法 | 参数 | 说明 |
|---|---|---|
execute_outreach(intent) | Outreach Intent | 主入口,编排完整流程 |
handle_reply(message, outreach_id) | 对方回复消息 | 处理回复,评估是否闭环 |
check_escalation(outreach_id) | 外联记录 ID | 检查是否需要升级 |
2. outreach_composer — 对话内容生成
负责组装上下文并通过 LLM 生成符合层级和风格的消息。
输入:Outreach Intent + 目标人物档案 + 事项背景
输出:待发送的消息文本
组装内容:
1. 事项背景(Fact + Concern 历史)
2. 前序沟通摘要(如果是升级场景)
3. 目标人物档案(角色、偏好、组织层级)
4. 沟通风格指令(根据层级选择)| 方法 | 参数 | 说明 |
|---|---|---|
compose_message(intent, person, context) | Intent + Person + 背景 | 生成消息文本 |
compose_escalation_brief(outreach_history) | 前序外联记录 | 生成升级摘要 |
LLM 调用方式:使用 llm/client.py(同步内部调用),不经过 agent loop。
消息生成 Prompt 关键设计:
你是清海,一个职业助理。现在需要主动找人沟通。
沟通原则:
1. 一次只聊一件事
2. 先陈述事实再提问
3. 给对方台阶,不用质问语气
4. 自带上下文,不让对方翻记录
目标对象层级:{员工/组长/部门负责人/老板}
对应风格:{平等协作/简洁通报/结论先行/决策导向}3. outreach_policy — 分级授权与防骚扰配置
集中管理授权规则和防骚扰参数。
授权级别定义:
| 级别 | 判断条件 | 执行方式 |
|---|---|---|
| L1 自主 | 日常事务提醒 AND 影响范围 = 当事人 | 直接执行,事后记录 |
| L2 报备 | 涉及判断 OR 可能引发连锁反应 | 执行后通报上一级 |
| L3 审批 | 跨部门协调 OR 人事敏感 OR 资源调配 | 先发审批请求,通过后执行 |
防骚扰参数:
| 参数 | 默认值 | 说明 |
|---|---|---|
cooldown_same_topic_hours | 4 | 同一人同一件事的冷却小时数 |
daily_outreach_limit | 5 | 每人每天被主动找的次数上限 |
work_hours_start | "09:00" | 工作时间开始 |
work_hours_end | "19:00" | 工作时间结束 |
merge_window_minutes | 10 | 合并发送窗口(同一人多件事合并为一次对话) |
emergency_override | true | 紧急事项是否可突破冷却和时段 |
C 层 — 系统能力
不暴露给 AI,在外联引擎内部自动运行。
| 能力 | 说明 | 实现位置 | 状态 |
|---|---|---|---|
| org_resolver | 根据 person_id 解析组织架构层级,确定汇报链路(员工→组长→部门负责人→老板) | outreach engine 内部 | 🔲 待开发 |
| cooldown_tracker | 跟踪每个人的冷却状态、每日被触达次数、最近一次外联时间 | MongoDB 存储 | 🔲 待开发 |
| escalation_manager | 管理升级链路——记录每轮沟通结果、聚合前序摘要、确定下一级对象 | Concern 引擎增强 | 🔲 待开发 |
| outreach_fact_writer | 每次外联结果回写 Fact Layer(outreach_result fact_type) | Fact Layer 扩展 | 🔲 待开发 |
org_resolver 组织架构解析
从 Person Layer 中解析汇报关系:
Person 档案新增字段:
- org_level: "employee" | "team_lead" | "department_head" | "boss"
- report_to: person_id(直接上级)
- department: "研发部" | "产品部" | ...
- team: "后端组" | "前端组" | ...(组长以下才有)查询上级链路:
python
def resolve_escalation_chain(person_id: str) -> list[str]:
"""返回从当事人到老板的汇报链路"""
# person → report_to → report_to → ... → bossoutreach_result Fact 结构
yaml
fact_type: "outreach_result"
source: "outreach_engine"
person_refs: ["p_zhangsan"]
content:
outreach_id: "outreach_20260321_001"
target_person_id: "p_zhangsan"
topic: "任务逾期"
authorization_level: "L1"
escalation_round: 1
message_sent: "王哥,XX 方案原定昨天交付..."
channel: "feishu"
status: "sent" # sent / replied / timeout / escalated / resolved
reply_summary: null # 对方回复摘要(回复后填充)
resolved: falseD 层 — 触发流水线
主动外联不由用户对话触发,而是由两条流水线驱动。两条流水线均复用现有基础设施。
实时通道(复用感知层)
飞书/GitLab Webhook → EventAdapter → EventRouter → Handler
→ write_fact() → dispatch_awareness()
→ 感知层三级处理(L0/L1/L2)→ 产出 Signal
→ 认知中枢 evaluate()
→ 如果判断需要主动沟通 → 产出 Outreach Intent
→ outreach_engine.execute_outreach()不改动现有事件处理流程,只在认知中枢增加一种输出类型。
扫描通道(复用 daemon 定时任务)
daemon.py 定时任务(每 30 分钟)
→ 综合审视:Concern 状态 + 任务状态 + 人员活跃度 + 审批状态
→ 发现异常 → 写入 Fact(absence_detection / schedule_trigger)
→ 认知中枢 evaluate()
→ 如果判断需要主动沟通 → 产出 Outreach Intent
→ outreach_engine.execute_outreach()复用现有 concern_scan 和 self_review 任务,在其中增加全局审视逻辑。
复用的现有能力
| 能力 | 本场景用途 | 状态 |
|---|---|---|
| PersonIndex | 人员识别、组织架构查询基础 | ✅ 已实现 |
| ChannelSender | 通过飞书/TG 发送私聊消息 | ✅ 已实现 |
| 感知层(AwarenessEngine) | 实时事件接收、三级处理、Signal 产出 | ✅ 已实现 |
| 认知中枢(CognitiveCore) | 五维评估、决策产出 | ✅ 已实现 |
| Concern 引擎 | 多轮跟进、超时检测、状态机管理 | ✅ 已实现 |
| Fact Layer | 事实存储、回写 | ✅ 已实现 |
| NotificationEngine | 防骚扰基础逻辑(冷却/时段/上限) | ✅ 已实现 |
| llm/client.py | 消息生成的 LLM 调用 | ✅ 已实现 |
| daemon.py 定时调度 | 扫描通道的调度框架 | ✅ 已实现 |
与现有架构的对接
各层职责扩展
| 层 | 现有能力 | 新增/增强 |
|---|---|---|
| Fact Layer | 记录事实 | 新增 outreach_result fact_type |
| 感知层 | 事件理解 + Signal | 不变 |
| 认知中枢 | 五维评估 + 决策 | 新增 outreach 输出类型 |
| Concern 引擎 | 多轮跟进 | 增强:主动对话自动创建/关联 Concern,超时自动升级 |
| Person Layer | 人物档案 | 新增 org_level + report_to + department + team |
| 执行层 | 发消息/通知 | 新增 outreach 动作类型(区别于 notify) |
新增代码模块
scripts/outreach/
├── engine.py # 外联调度(授权检查 + 防骚扰 + 发送)
├── composer.py # 对话内容生成(组装上下文 + LLM 生成消息)
└── policy.py # 分级授权规则 + 防骚扰参数配置全局约束
| 约束 | 说明 |
|---|---|
| 不替人做决策 | 清海只提醒、追问、协调,不替人拍板 |
| 不越级汇报 | 严格按 org_resolver 的汇报链路逐级上报 |
| 不传话 | 不把 A 的原话转达给 B,只传递事实和结论 |
| 不处理敏感人事 | 涉及辞退、薪酬调整等话题直接升级给老板 |
| 认知中枢唯一决策 | 所有外联都经过认知中枢评估,不绕过 |
| LLM 生成消息 | 不使用固定模板,每条消息都由 LLM 根据上下文生成 |
实现路线
Phase 1:核心外联引擎
| # | 事项 | 状态 |
|---|---|---|
| 1 | Person Layer 扩展(org_level + report_to + department + team) | 🔲 待开发 |
| 2 | 认知中枢新增 outreach 输出类型 | 🔲 待开发 |
| 3 | outreach/engine.py 外联调度核心 | 🔲 待开发 |
| 4 | outreach/policy.py 分级授权 + 防骚扰参数 | 🔲 待开发 |
| 5 | outreach/composer.py LLM 消息生成 | 🔲 待开发 |
| 6 | outreach_result Fact 类型 + 回写逻辑 | 🔲 待开发 |
Phase 2:升级链路 + 多轮跟进
| # | 事项 | 状态 |
|---|---|---|
| 7 | org_resolver 组织架构链路解析 | 🔲 待开发 |
| 8 | escalation_manager 升级管理 + 前序摘要聚合 | 🔲 待开发 |
| 9 | Concern 引擎增强(外联自动创建 Concern + 超时升级) | 🔲 待开发 |
| 10 | cooldown_tracker 防骚扰状态持久化 | 🔲 待开发 |
Phase 3:扫描通道 + 全局审视
| # | 事项 | 状态 |
|---|---|---|
| 11 | daemon.py 增加全局审视扫描任务 | 🔲 待开发 |
| 12 | 承诺未兑现检测(对话/会议纪要分析) | 🔲 待开发 |
| 13 | 人员异常沉默检测(飞书+GitLab 综合) | 🔲 待开发 |
| 14 | MR 积压 / 审批卡住检测 | 🔲 待开发 |