面向对象的客户记忆体系。聊起任何客户、联系人、项目机会、项目、合同、交付相关话题时激活。 自动维护 memory/customers/ 下的客户索引和详情文件,支持超大客户文件自动分层拆分。 与 sales-visit(明道云写入)双向联动:sales-visit 写入后同步更新本记忆文件, 本记忆文件加载的上下...
---
name: crm-memory
description: >
面向对象的客户记忆体系。聊起任何客户、联系人、项目机会、项目、合同、交付相关话题时激活。
自动维护 memory/customers/ 下的客户索引和详情文件,支持超大客户文件自动分层拆分。
与 sales-visit(明道云写入)双向联动:sales-visit 写入后同步更新本记忆文件,
本记忆文件加载的上下文可为 sales-visit 对话预填。对话后自动写入更新。
触发词(极宽):任何客户名称、人名、项目名、合同、交付、拜访、POC、投标、签单。
version: 1.1.0
author: Dick Dunkel
license: MIT-0
tags: [memory, customer, crm, knowledge-base, mingdao]
category: sales
created_by: agent
---
# 客户记忆管理
> **定位**:整个销售智能体记忆体系的基石。所有与客户、联系人、机会、项目、合同、交付相关的对话信息,最终都应沉淀到本技能维护的文件体系中。让 agent 不再"健忘"。
## 触发条件(极度宽泛)
以下任一意图或关键词出现即激活:
- 用户提及**公司/机构/单位名称**(含简称)
- 用户提及**人名**(张三、李总、王处等)
- "XX客户"、"XX项目"、"XX合同"、"XX交付"
- "拜访XX"、"见XX"、"和XX开会"、"XX说了"
- "POC"、"投标"、"签单"、"回款"、"续签"
- "XX银行"、"XX大学"、"XX医院"、"XX局"
- "帮我记一下XX"、"补充XX的信息"
## 与 sales-visit 技能的关系
| 维度 | crm-memory(本技能) | sales-visit |
|------|---------------------|-------------|
| 存储 | 本地 MD 文件(Agent 记忆) | 明道云 MCP(团队CRM系统) |
| 触发 | 任何客户话题 | "记录拜访""写拜访" |
| 写入时机 | 对话后自动 | 用户确认后写入 |
| 读取时机 | 对话前加载上下文 | 渐进式追问收集字段 |
| 用户 | Agent 自身 | 一线销售(WeCom) |
**双向联动机制**:
1. sales-visit 写入明道云后 → 同步调用本技能的写入流程,将拜访摘要追加到对应客户文件
2. 本技能加载客户记忆后 → 对 sales-visit 对话提供上下文预填(已有联系人、历史机会等)
3. 两个技能可同时激活,互不冲突
---
## 文件体系
```
memory/customers/
├── INDEX.md ← 总索引(轻量,<2KB)
├── {客户名}.md ← 普通客户(<30KB 单文件)
├── {客户名}/ ← 超大客户(≥30KB 自动分层)
│ ├── INDEX.md ← 客户摘要 + 子文件索引
│ ├── contacts.md ← 联系人详情
│ ├── opportunities.md ← 机会详情
│ ├── projects.md ← 项目详情
│ ├── contracts.md ← 合同详情
│ ├── deliveries.md ← 交付详情
│ └── communication-log.md ← 沟通记录(按时间)
└── ...
```
---
## 超大文件分层机制
**触发条件**:当客户 `.md` 文件超过 30KB 或 500 行时,自动执行分层拆分。
**拆分流程**:
1. 创建 `{客户名}/` 子目录
2. 创建 `{客户名}/INDEX.md`(保留基本信息 + 联系人概要 + 各子文件链接 + 最近 3 条沟通记录)
3. 将详细内容拆分到对应子文件
4. 删除原单文件 `{客户名}.md`
5. 更新 `INDEX.md` 中的链接指向 `{客户名}/INDEX.md`
**分层后的加载策略**:
1. 对话中首次加载:仅读 `{客户名}/INDEX.md`(摘要,<3KB)
2. 需要具体信息时:按需加载对应子文件(如只需联系人则只加载 `contacts.md`)
3. INDEX.md 保持最新摘要(最近联系人、活跃机会数、项目状态等)
### {客户名}/INDEX.md 格式(分层后的轻量入口)
```markdown
---
name: <客户全称>
industry: <行业>
status: <状态>
file_count: <子文件数>
updated: <日期>
---
# <客户名称>
## 概要
- 规模/行业/主营
- 状态:跟进中(1个活跃机会)
## 联系人概览(共 N 人)
| 姓名 | 职位 | 角色 | 最近沟通 |
|------|------|------|---------|
| 张三 | IT总监 | Champion | 2026-05-20 |
## 活跃机会
| 机会 | 产品 | 阶段 | 金额 |
|------|------|------|------|
| 智能问数 | ONN | Scope | 80万 |
## 最近动态
- 2026-05-20 技术交流,演示POC结果
- 2026-05-15 初次拜访信息中心主任
## 子文件索引
| 文件 | 内容 | 行数 | 大小 |
|------|------|------|------|
| [contacts.md](contacts.md) | 联系人详情 | 45 | 3KB |
| [opportunities.md](opportunities.md) | 机会详情 | 80 | 5KB |
| [communication-log.md](communication-log.md) | 沟通记录 | 320 | 18KB |
```
---
## 总索引 INDEX.md 格式
```markdown
# 客户记忆索引
> 最近更新: YYYY-MM-DD HH:MM | 客户总数: N
| 客户名称 | 行业 | 状态 | 联系人 | 最近更新 | 文件 |
|---------|------|------|--------|---------|------|
| XX银行 | 金融 | 项目中 | 张处/李总 | 2026-05-21 | [XX银行](XX银行/INDEX.md) |
| YY大学 | 教育 | 跟进中 | 王主任 | 2026-05-20 | [YY大学.md](YY大学.md) |
```
> 链接指向 `{客户名}.md`(普通客户)或 `{客户名}/INDEX.md`(超大客户)。
**状态枚举**:潜在 / 跟进中 / POC中 / 投标中 / 已签约 / 实施中 / 已交付 / 休眠
---
## {客户名}.md 格式(普通客户,未分层)
```markdown
---
name: <客户全称>
industry: <行业>
status: <状态>
created: <创建日期>
updated: <最近更新日期>
---
# <客户名称>
## 基本信息
- 全称/简称/规模/所属行业/主营业务
- 组织架构(IT部门/采购部门/业务部门)
- 已有系统(数据平台/BI工具等)
- 近期动态
## 联系人
### <姓名> - <职位>
- 角色:<决策人/影响者/使用者/Champion/Coach>
- 联系方式:<电话/微信/邮箱>
- 性格特点/沟通偏好:
- 最近沟通:YYYY-MM-DD,<要点>
- 关系评估:
## 项目机会
### <机会名称>
- 产品方向:ONN/IOC/EA/数字孪生
- 阶段:Discover/Scope/Go-No-Go/Validate/Business Case/Negotiate
- MEDDIC 状态:
- M(衡量标准)/ E(经济决策人)/ D(决策标准)/ D(决策流程)/ I(痛点)/ C(内部支持者)
- 金额预估 / 关键节点 / 竞品情况
## 项目
### <项目名称>
- 合同编号 / 状态 / 开始日期 / 计划交付日期
- 项目经理(我方/客户方)
- 关键里程碑 / 当前风险/卡点
## 合同
### <合同名称>
- 金额 / 付款方式 / 签署日期 / 有效期
- 主要条款摘要 / 回款节点
## 交付
### <交付批次>
- 交付内容 / 交付日期
- 验收状态:已验收/待验收/有遗留问题
- 遗留问题
## 沟通记录
### YYYY-MM-DD <主题>
- 参与人(我方+客户方):
- 要点:1. ... 2. ...
- 下一步:
- 相关文件/链接:
```
---
## 执行流程
### 对话中:识别与加载
1. **识别客户**:从对话中提取客户名称(全称或简称),模糊匹配 INDEX.md 中的已有客户
2. **加载记忆**:找到已有客户 → 读取其文件(普通客户读全文,超大客户读 INDEX.md 摘要)→ 将关键信息注入当前对话上下文
3. **新客户**:INDEX.md 未找到 → 标记为新客户,对话后创建
### 对话后:写入更新(必须执行)
1. **更新基本信息**:新获取的公司信息追加到"基本信息"区块
2. **更新联系人**:新联系人或已有联系人的新信息,追加/更新到"联系人"区块
3. **更新机会**:MEDDIC 各维度有进展则更新对应字段
4. **追加沟通记录**:在"沟通记录"区块末尾追加本次对话摘要
5. **更新 frontmatter**:修改 `updated` 字段为当前日期
6. **更新 INDEX.md**:已有客户更新"最近更新"和"状态";新客户新增一行
7. **超大文件检查**:写入后检查文件大小,超过 30KB 或 500 行则执行分层拆分
8. **确认**:告知用户"已更新 {客户名} 的记忆文件"
### 读取原则(追问或新对话时)
1. 先查 INDEX.md 确认客户是否存在
2. 存在 → 加载摘要(普通客户读全文,超大客户读 INDEX.md)→ 按需加载子文件
3. 不存在 → 标记为新客户
---
## 联动其他技能
| 技能 | 联动方式 |
|------|---------|
| **sales-visit** | 写入明道云后 → 同步更新本记忆文件;本记忆加载 → 为 sales-visit 预填上下文 |
| **customer-research** | 调研完成后,关键发现写入客户文件 |
| **customer-visit-prep** | 拜访准备时读取客户文件获取历史;准备内容写入文件 |
| **meddic-b2b-sales-review (review-visit)** | 复盘后 MEDDIC 状态更新 + 沟通记录写入 |
| **bid-management / bid-compliance-check** | 投标活动写入对应客户文件 |
| 任何技能涉及客户信息变更 | 都应触发本技能的写入流程 |
---
## 质量标准
- ✅ 对话后必须写入,不依赖用户提醒
- ✅ 同一客户的所有信息集中在一个文件(或一个目录)
- ✅ INDEX.md 保持更新,确保召回效率
- ✅ 写入结构化(按区块),不是流水账
- ✅ 文件超过 30KB/500行 自动分层为子目录
- ✅ 分层后的 INDEX.md 保持轻量摘要(<3KB)
- ✅ 更新 frontmatter 的 `updated` 时间戳
- ✅ 与 sales-visit 双向联动:明道云写入 ≠ 本文件可跳过
- ❌ 不创建"联系人单独文件"或"项目单独文件"(除非客户已分层)
- ❌ 不覆盖已有信息,增量追加(除非是同一字段的修正更新)
- ❌ 不编造未在对话中出现的信息
don't have the plugin yet? install it then click "run inline in claude" again.