个人人脉 CRM · 生成器
这是个啥?(说人话)
一句话:你对 Agent 说"帮我搭个人脉 CRM",它当场生成一套,双击就能用。
没有云端、没有账号、没有订阅、没有"请登录以继续"。数据就躺在用户自己的浏览器里(IndexedDB),断网照用不误,CSV 随时导出带走。你要是被各种 CRM 的注册流程折磨过,这套系统会让你怀疑人生为什么这么简单。
系统分两个完全隔离的入口,各配一张登录页,谁也不认识谁的数据:
| 入口 | 长相 | 里面住着谁 |
|---|---|---|
index.html(个人版) |
蓝色登录页 | 用户自己的真实客户数据,沿用原库 |
演示版.html(演示版) |
琥珀色登录页 | 50 位仿真客户,首次打开自动生成,随便折腾 |
真实长这样(演示版截图,50 位 AI 头像客户)
登录页——个人版蓝、演示版琥珀色,一眼区分不会开错:
数据概览——KPI 卡片 + 跟进状态/来源分布 + 今日逾期提醒,打开就知道今天该追谁:
人脉列表——AI 头像、性别角标(蓝/红小人像)、标签、跟进状态、逾期高亮,一屏看全:
客户详情 · 基本信息——照片、联系方式、标签、跟进时间线,一个弹窗搞定:
客户详情 · 跟进记录——按时间倒序,跟进内容里写"5 天后联系",下次提醒时间自动识别:
跟进日历——类 Google 日历月视图,事项按状态着色,拖一下就能改期,右侧今日待办带头像:
相册与附件——名片、展会照、签约照都能挂,点开放大:
三语切换——简体 / 繁體 / English 顶栏一键切换,界面文案全量翻译(用户自己的数据不翻译,这是特性不是偷懒):
> 插图说明:网页版插图走平台图床外链(包内相对路径的图片在技能详情页无法显示,平台不托管包内文件)。技能包里另存一份 assets/images/*.svg 作为离线副本。
何时用
- 用户要「搭一个个人人脉 / 客户 / 联系人管理系统」,或想把 Excel 里的联系人表变成能跟进的工具;
- 用户要"纯本地、数据不外传"的轻量 CRM(隐私敏感型客户的最爱);
- 用户要对已部署的系统做定制:加字段、改三语文案、换主题配色、重建演示数据。
三步走
第 1 步:确认三件事(用户没说就按默认来,别追问)
- 部署目录(默认
./个人人脉CRM); - 要不要演示版(含 50 位仿真客户,用于演示 / 给老板看效果);
- 本地服务端口(默认 8765,只影响启动脚本)。
第 2 步:部署
python scripts/create_crm.py --dir "<目标目录>" # 完整部署(个人版 + 演示版)
python scripts/create_crm.py --dir "<目标目录>" --dry-run # 预演:只列文件,不写盘
python scripts/create_crm.py --dir "<目标目录>" --no-demo # 只要个人版
python scripts/create_crm.py --dir "<目标目录>" --port 8899 --force # 覆盖部署(同名文件先备份 .bak)
脚本把 assets/template/ 下约 600 KB 的系统复制到目标目录,并在现场生成 4 个启动脚本(启动CRM.bat / 启动CRM.sh / 启动演示.bat / 启动演示.sh),端口写进去。目标目录非空时默认拒绝——这是防呆,不是固执。
第 3 步:交付说明(念给用户听)
双击「启动CRM.bat」进个人版(首次点一下登录按钮);要演示就双击「启动演示.bat」,首次打开自动生成 50 位演示客户 + 228 条跟进记录,等几秒,完事。macOS / Linux 用户执行 ./启动CRM.sh。直接双击 index.html 也能用,但「关联本地 CSV 文件夹」需要以本地服务方式打开(Chrome / Edge 支持)。
第 4 步:定制(按需)
先看下面的「参考文档索引」,按主题翻对应文件。改动前务必先看 references/file-map.md 的文件职责表。
部署完长什么样(真实输出样例)
运行日志
$ python scripts/create_crm.py --dir "./个人人脉CRM"
部署完成:/Users/me/个人人脉CRM
模板文件 17 个
启动脚本 4 个(现场生成,端口 8765)
完整性校验:通过(逐文件哈希比对)
下一步:
1) Windows 双击「启动CRM.bat」,macOS/Linux 执行 ./启动CRM.sh
首次进入点一次登录按钮即可(数据只存在本机浏览器里)
2) 演示版双击「启动演示.bat」/ ./启动演示.sh
首次打开自动生成 50 位演示客户 + 228 条跟进记录,等 2-3 秒
产物目录树
个人人脉CRM/
├── index.html ← 个人版入口(蓝)
├── 演示版.html ← 演示版入口(琥珀)
├── README.md ← 给最终用户看的说明书
├── 启动CRM.bat / .sh ← 现场生成
├── 启动演示.bat / .sh ← 现场生成
├── 人脉CRM导入模板.csv ← 导入模板(含表头示例)
├── 演示人脉数据.csv ← 50 位演示客户
├── 演示跟进记录.csv ← 228 条演示跟进
└── assets/
├── store.js app.js app-actions.js calendar.js
├── i18n.js smart-date.js demo-data.js demo-seed.js
├── demo-photos.js xlsx-lite.js styles.css
说数据能进来也能出去(CSV 一次往返)
ID,姓名,性别,联系方式,所属行业,公司,职位,人脉来源,标签,初识时间,基础备注,最新跟进时间,下次跟进时间,跟进状态,跟进频次,创建时间,更新时间
,林嘉禾,男,138-0000-0001,制造业,德茂精密,采购总监,线下活动,"制造业,决策人",2026-03-12,展会认识,关注交期,2026-08-02,2026-09-15,持续跟进,月度维护,,
导入 → 界面里跟进一轮 → 导出,回写的是同一套列顺序(CONTACT_HEADERS),Excel / WPS 双击开不乱码。字段语义见 references/data-model.md。
环境要求与边界(一句话版)
| 项 | 要求 |
|---|---|
| 浏览器 | Chrome / Edge 桌面版 86+(全部功能);Firefox / Safari / 手机端可用,但「关联本地 CSV 文件夹」自动降级为手动导入导出 |
| 数据量 | ≤ 1 千位瞬时;1 万位人脉 + 5 万条跟进(约 10-20 MB)首屏渲染 1-2 秒;≥ 10 万条开始明显卡顿 |
| 运行依赖 | 零依赖。不要服务端、不要网络、不要账号。Python(可选)仅用于起本地服务 |
明确做不到:不做多人协作 / 云同步、不能当服务端数据库、不做名片 OCR、不做系统级推送提醒。完整兼容矩阵与容量说明见 references/environment.md。
出错怎么办(错误码表)
脚本不会沉默地失败:每个失败都打印「现象 / 可能原因 / 怎么修」,并返回固定退出码。
| 退出码 | 错误码 | 含义 | 一眼看懂怎么修 |
|---|---|---|---|
| 2 | E01 | 找不到模板目录 | 技能包不完整 → 重装技能 --force |
| 3 | E02 | 目标目录非空 | 换空目录,或加 --force(同名文件备份为 .bak) |
| 4 | E03 | 无权限 / 文件被占用 | 换可写目录;关掉 Excel / 同步盘 / 杀软实时扫描后重跑(脚本已自动重试 3 次) |
| 5 | E04 | 磁盘空间不足 | 清理目标盘,或换磁盘 |
| 6 | E05 | 部署后校验失败 | 加 --force 重跑;按提示查被占用的具体文件 |
| 130 | — | 用户 Ctrl+C 中断 | 重跑并加 --force 即可修复半成品 |
部署成功时默认做逐文件哈希校验(数量 + 体积 + sha256),看到「完整性校验:通过」才是真的没缺文件。
关键事实(踩过的坑,别再踩)
- 双系统靠一行标志隔离:
index.html里window.CRM_DEMO_MODE = false、库personal-crm;演示版.html为true、库crm-demo。两个 IndexedDB 库互不影响。 - 演示数据不会自动出现在个人版:想载入得主动操作,这是设计而非 bug。
- 演示版首次生成有异步时序:模板已在写完数据后主动补
A.renderAll(),自建渲染入口时同样要补,否则左侧导航徽标停在 0。 - 模板里的
assets/demo-photos.js是空图片包(约 0.4 KB):演示客户头像回落首字色块。完整 AI 图片包约 3.8 MB,还原方法见references/customize-demo.md(这是有意的体积取舍,不是漏打包)。 - 启动脚本由部署脚本现场生成:
assets/template/里没有.bat(SkillHub 发布通道禁止包内携带可执行类型,.bat/.exe/.png/.jpg会被 400 拒绝)。 - 文档插图走外链:技能详情页不托管包内文件,相对路径图片一定显示不出来;包内只留
.svg离线副本。 - 不要收录用户的真实数据:目标目录别带
人脉数据.csv/跟进记录.csv,模板里也没有。
参考文档索引
| 想知道什么 | 看哪个文件 |
|---|---|
| 字段字典、CSV 列顺序、数据存哪 | references/data-model.md |
| 每个文件干什么、演示数据机制 | references/file-map.md |
| 浏览器兼容、容量上限、做不到什么 | references/environment.md |
| 加字段(最容易出错,跨 4 个文件) | references/customize-fields.md |
| 三语文案、主题配色、多入口隔离 | references/customize-i18n-theme.md |
| 演示数据、还原 AI 图片包、本地自检 | references/customize-demo.md |
| 高频问题、反模式清单(10 条) | references/faq.md |
顺带一提:这套系统里可以复用的设计模式
生成器技能容易写成"一次性脚本",这套系统里有 4 个模式值得保留,做类似"本地工具生成器"时可以直接抄:
- 双库隔离:用一行
window.CRM_DB_NAME切数据库,同一套代码实例化出"真实"与"演示"两套互不可见的环境 —— 比"加个 demo 开关写 if-else"干净得多; - meta 登记式可逆导入:批量导入时把 id 登记进 meta(
demoContactIds等),撤销时按登记表整批删,不必猜测哪条是导入的; - 存储降级链:IndexedDB →(不可用)内存模式,用一个
Store.fallback标志对外暴露,功能不中断,只在界面提示 —— 演示环境里特别有用; - 防抖回写本地文件:File System Access API 写盘做约 1 秒防抖,避免连续编辑时把磁盘写爆,同时把"云同步的爽感"搬回本地文件夹。