dev-plan.md 11.1 KB

lemonPCRM 分阶段开发计划

基于 lemonPCRM.md 产品需求 + user-flow.md 用户流程制定。 目标:以最小可用单元逐步落地,每阶段交付可独立运行的功能切片。


总体架构回顾

[前端 HTML — 联系人列表 + 五标签画布]
        ↕ SSE / REST
[server — ACP 编排引擎]  ← 已有基础
        ↕ 工具调用
[MCP 工具箱]  ← 待构建
        ↕
[本地知识图谱 (Kùzu / SQLite)]  ← 待构建

Phase 0|地基夯实(已完成)

目标:确认现有 ACP 内核可稳定驱动 Claude CLI,作为后续所有阶段的底座。

任务 说明 状态
ACP 协议层 ClaudeCliProtocol + SessionPool + AgentManager ✅ 完成
SSE 对话路由 /api/master/chat 多轮流式对话 ✅ 完成
文件上传解析 .docx / .pdf 注入对话上下文 ✅ 完成
配置体系 backends.json / agents.json / .env ✅ 完成

交付物:可通过 curl 发起多轮 AI 对话,文件内容可注入上下文。


Phase 1|本体论数据层(第 1 个月)

目标:建立知识图谱数据模型,提供基础 CRUD 能力,AI 可通过工具写入/查询。

1.1 选型与初始化

  • 使用 Kùzu(本地嵌入式图数据库,无服务进程)或 SQLite + JSON 图扩展
  • 在 server/db/ 目录初始化数据库,提供统一的 GraphStore 模块

1.2 核心本体模型

节点(Node)
├── Person        id, name, alias[], avatar, notes, analysisStatus, createdAt
├── Organization  id, name, type, domain
├── Project       id, name, status, description
├── Event         id, type(chat/meeting/post), date, summary, rawText
└── Asset         id, type(photo/video/doc), filePath, mimeType, vectorId

边(Edge)
├── Person  --[KNOWS]-->        Person       (channel, since)
├── Person  --[BELONGS_TO]-->   Organization (role, since)
├── Person  --[PARTICIPATED]--> Event
├── Event   --[CONTAINS]-->     Asset
├── Person  --[MENTIONED_IN]--> Event
└── Person  --[ASSOCIATED]-->   Project

analysisStatus 字段驱动前端联系人状态:none / partial / complete(对应 ⚪🔵🟢)

1.3 MCP 工具箱 v1(基础图操作)

在 server/src/tools/graph/ 实现以下工具,供 Master Agent 调用:

工具名 功能
create_person(name, meta) 创建 Person 节点
get_person(name_or_id) 查询 Person 及其所有关联边
link_persons(a, b, relation, meta) 建立两人之间的关系边
create_event(type, date, summary, persons[]) 创建事件并关联参与者
search_graph(query) 全文 + 属性模糊搜索
get_relationship_path(a, b) 找两人之间的最短关系路径

交付物:可通过 AI 对话完成人脉节点的增删改查;curl /api/master/chat 说"新增联系人张三,来自字节跳动"即可写入图谱。


Phase 2|微信联系人导入(第 2 个月)

目标:将微信作为第一个数据源,批量导入联系人和聊天记录,为前端提供真实数据。

2.1 微信数据读取

实现 server/services/wechat/ 模块,支持两种导入方式:

  • 手动导出:解析微信 PC 端导出的 CSV / JSON 联系人文件
  • 本地数据库(进阶):读取 EnMicroMsg.db(需用户自行解密提供)

2.2 数据清洗与入图

原始微信联系人 → NLP 实体清洗 → Person 节点写入 → 关系边推断
  • 调用 extract_entities_from_text() 工具让 AI 从备注/标签中推断关系
  • 去重策略:以微信 ID 为主键,姓名 / 手机号辅助合并
  • 写入后设置 analysisStatus = partial

2.3 聊天记录导入

  • 解析聊天记录 txt/html 导出文件
  • 每段对话创建 Event:ChatSession 节点,关联发言人
  • AI 自动提取对话中提及的第三方人名、公司、项目,扩充图谱

交付物:微信通讯录和聊天记录完整入图;联系人列表有真实数据,状态为 ⚪ 或 🔵。


Phase 3|前端主界面 + 档案激活流程(第 2–3 个月)

目标:构建本地 HTML 单页应用,实现「搜索联系人 → 点击激活 → 多维画布」的完整主流程。

3.1 技术选型

  • 图渲染:AntV G6(关系图谱画布专用)
  • 框架:原生 HTML + Vanilla JS(Local-First,零构建工具依赖)
  • 通信:SSE 接收 AI 分析输出,REST 查询图谱数据

3.2 页面布局

┌────────────────────────────────────────────────────────┐
│  lemonPCRM                                 [设置] [同步] │
├──────────────────────────┬─────────────────────────────┤
│  搜索(姓名/公司/标签)    │  [档案][图谱][时间轴]         │
│                           │  [对话洞察][AI报告]           │
│  联系人列表                │                             │
│  🟢 张三  字节跳动         │     ← 右侧五标签画布区        │
│  🔵 李四  OpenAI          │                             │
│  ⚪ 王五  (未激活)        │                             │
└──────────────────────────┴─────────────────────────────┘

3.3 档案激活流程(核心交互)

点击联系人后触发 AI 并发分析,右侧实时显示进度:

✅ 微信通讯记录读取完成
✅ 图谱基础数据加载完成
🔄 LinkedIn 数据匹配中...
⏳ 对话内容分析(等待中)

新增 MCP 工具支撑激活流程:

工具名 功能
activate_contact_profile(personId) 触发全量聚合分析,以 SSE 返回进度流
get_conversation_insights(personId) 统计对话话题分布、承诺事项、关系温度
generate_profile_report(personId) 生成结构化 Markdown 分析报告

3.4 五个画布标签

标签 核心内容
📋 档案视图 联系方式、性格与沟通风格、职业轨迹、与我的关系描述
🕸️ 关系图谱 以此人为中心的 G6 关系网络,支持节点下钻跳转
📅 时间轴 微信 + 会议纪要的互动事件时序,支持按类型筛选
💬 对话洞察 话题分布图、待跟进承诺事项、关系热度趋势
🤖 AI 报告 一键生成可导出 Markdown 的结构化人脉分析报告

所有标签右下角均常驻 AI 对话框(SSE 流式)。

交付物:/frontend/index.html 可直接浏览器打开;点击任意联系人后 5 个画布均可用;AI 对话框可对当前联系人随时追问。


Phase 4|多源数据接入(第 3–4 个月)

目标:接入 LinkedIn、X(Twitter)等平台数据,丰富每个 Person 节点的数字画像,让档案视图更完整。

4.1 LinkedIn 数据导入

  • 解析 LinkedIn 官方数据导出包(Connections.csv、Messages.csv)
  • 合并到现有 Person 节点,补充职位 / 公司 / 教育背景

4.2 X(Twitter)动态关联

  • 通过 X API v2 或本地导出的 tweets.js 解析用户动态
  • 每条推文创建 Event:Post 节点,AI 提取高频话题标签
  • 定期摘要:"该联系人近 30 天在 X 上高频词:#AI #创业"

4.3 会议纪要自动处理

  • 集成 Whisper(本地语音转文字):音频文件 → Markdown 纪要
  • 会议纪要作为 Event:Meeting 节点入图,AI 提取参与者和提及的第三方
  • 支持通过 /api/master/upload 直接上传音频/纪要文件

4.4 MCP 工具箱 v2(多源数据)

工具名 功能
import_linkedin_export(filePath) 解析 LinkedIn 导出包
import_x_timeline(userId, data) 导入 X 用户动态
transcribe_audio(filePath) Whisper 本地转写
import_meeting_notes(text, participants[]) 会议纪要入图

交付物:档案视图和对话洞察标签中出现 LinkedIn + X + 会议纪要的多维数据;联系人 analysisStatus 升为 🟢 complete。


Phase 5|AI 深度分析能力(第 4–5 个月)

目标:在完整图谱数据基础上,提供超越单人视角的跨网络洞察能力。

5.1 关系路径分析

"我和王总没有直接关系,帮我找最短关系链"

  • 调用图算法(BFS/Dijkstra)计算最短路径
  • AI 用自然语言解释路径:"你 → 张三(前同事)→ 李四(LinkedIn 好友)→ 王总"

5.2 圈子识别(Community Detection)

  • 运行 Louvain 社区发现算法,自动识别人脉圈子
  • 在图谱画布上用不同颜色区域标注圈子(如"AI 创业圈"、"前公司同事圈")

5.3 跟进提醒 Agent

  • 后台定时 Agent,扫描"超过 N 天未互动"的重要联系人
  • 生成跟进建议:"张三 60 天未联系,上次聊到他在看新机会,建议主动询问近况"
  • 前端首页展示提醒卡片

交付物:关系图谱画布展示圈子色块;首页出现跟进提醒;可查询任意两人之间的关系路径。


Phase 6|多模态资产关联(第 5–6 个月,可选)

目标:将本地照片/视频与人脉图谱关联,实现多模态检索。

6.1 人脸识别关联

  • 集成 face_recognition(Python 本地库)扫描相册
  • 匹配到已知联系人后,照片作为 Asset:Photo 节点挂载到对应 Person
  • 在档案视图的「关联资产」区域展示

6.2 多模态向量化

  • 使用 CLIP 模型提取图片语义向量,存入向量索引(如 hnswlib)
  • 支持语义搜索:"找出所有和张三在户外的照片"

6.3 时空轨迹重现

  • 在时间轴画布集成地图组件(Leaflet.js)
  • 根据照片 EXIF、会议地点等数据,可视化联系人的时空轨迹

交付物:照片/视频可与人脉节点关联;时间轴画布增加地图视角;支持自然语言多模态检索。


里程碑汇总

阶段 时间 核心交付
Phase 0 完成 ACP 编排内核可用
Phase 1 第 1 个月 知识图谱数据层 + 基础 MCP 工具
Phase 2 第 2 个月 微信联系人 & 聊天记录入图
Phase 3 第 2–3 个月 前端主界面 + 档案激活 + 五标签画布全通
Phase 4 第 3–4 个月 LinkedIn / X / 会议纪要多源数据接入
Phase 5 第 4–5 个月 关系路径分析、圈子识别、跟进提醒 Agent
Phase 6 第 5–6 个月 多模态照片关联(可选扩展)

开发原则

  • Local-First:每个 Phase 的数据和计算全部在本地完成,不依赖云 API
  • 主流程优先:Phase 3 之前必须打通「搜索 → 点击 → 激活 → 五画布」完整链路
  • AI 驱动数据写入:图谱更新优先通过自然语言对话触发,避免手动 UI 表单
  • 向后兼容:每阶段新增工具不破坏现有 ACP 编排接口