人脉管家 - 私人CRM + 智能跟进提醒 + 半自动外联助手。当用户需要:(1) 管理联系人(添加/查询/更新)、(2) 自动扫描日记提取互动记录、(3) 生成每日跟进计划、(4) 生成消息草稿(邮件/微信)、(5) 维护承诺/约定、(6) 根据能力/行业标签检索人脉时使用此技能。
私人CRM,AI驱动的智能人脉维护助手。半自动模式:AI是参谋,人是将军。
~/.agents/skills/human-relations/data/hr.dbinit_db.py(重建后需重新导入)data/hr_backup_YYYYMMDD.db| 字段 | 类型 |
|---|
| 说明 |
|---|
id | TEXT | 主键(UUID) |
resource_name | TEXT | Google People API 唯一资源名,如 people/cxxx |
etag | TEXT | Google ETag |
display_name | TEXT | 显示名称(来自 Google names[0].displayName) |
family_name | TEXT | 姓 |
given_name | TEXT | 名 |
unstructured_name | TEXT | 未结构化姓名 |
honorific_prefix | TEXT | 称谓前缀(如 Dr.) |
honorific_suffix | TEXT | 称谓后缀 |
email_mobile | TEXT | 手机邮箱 |
email_home | TEXT | 私人邮箱 |
email_work | TEXT | 工作邮箱 |
email_other | TEXT | 其他邮箱 |
phone_mobile | TEXT | 手机 |
phone_home | TEXT | 私人电话 |
phone_work | TEXT | 工作电话 |
phone_other | TEXT | 其他电话 |
phone_fax | TEXT | 传真 |
company | TEXT | 公司名(来自 Google organizations[0].name) |
company_title | TEXT | 职位(来自 organizations[0].title) |
department | TEXT | 部门(来自 organizations[0].department) |
address_work_street | TEXT | 公司地址-街道 |
address_work_city | TEXT | 公司地址-城市 |
address_work_region | TEXT | 公司地址-省份/州 |
address_work_postal_code | TEXT | 公司地址-邮编 |
address_work_country | TEXT | 公司地址-国家 |
address_home_* | TEXT | 家庭地址(同上结构) |
url | TEXT | 网址(来自 urls[0].value) |
bio | TEXT | 简介(来自 biographies[0].value) |
gender | TEXT | 性别 |
birthday_date | TEXT | 生日(YYYY-MM-DD) |
relation_detail | TEXT | 关系人详情 |
is_primary | INTEGER | 是否为主要来源(0/1) |
source_type | TEXT | 来源类型(CONTACT) |
| 字段 | 类型 | 说明 |
|---|---|---|
relation | TEXT | 关系类型(亲人/大学同学/投资人等) |
field | TEXT | 领域/行业标签 |
tags | TEXT/JSON | 自由标签数组,如 ["医疗器械","EDA"] |
source | TEXT | 录入来源(Google通讯录/名片/日记扫描/手动录入) |
source_detail | TEXT | 来源详情 |
status | TEXT | 状态(待激活/活跃/已流失) |
importance | TEXT | 重要程度(高/中/低) |
wechat | TEXT | 微信号 |
first_contact | TEXT | 首次联系日期 |
last_contact | TEXT | 最后联系日期 |
promises | TEXT/JSON | 承诺/约定数组 |
notes | TEXT | 备注 |
created_at | TEXT | 创建时间(ISO格式) |
updated_at | TEXT | 更新时间(ISO格式) |
# 1. 导出 Google 通讯录 JSON
gog contacts list --max 200 --json > /tmp/gcontacts_full.json
# 2. 导入(全新重建,不迁移旧数据)
uv run python ~/.agents/skills/human-relations/scripts/import_google_contacts.py
# 3. 补充缺失记录(无姓名条目 + fetch失败的条目)
uv run python ~/.agents/skills/human-relations/scripts/fill_missing_contacts.py
# 4. 查询总数
uv run python ~/.agents/skills/human-relations/scripts/list_contacts.py --all | wc -l
| 脚本 | 用途 |
|---|---|
init_db.py | 初始化数据库(创建空库) |
import_google_contacts.py | 从Google通讯录全新导入(不迁移旧数据) |
fill_missing_contacts.py | 补充Google API fetch失败的记录 |
enhance_contacts.py | 用Google API数据增强现有联系人 |
add_contact.py | 添加联系人(支持所有Google字段) |
list_contacts.py | 查询联系人(--query/--tag/--limit) |
update_contact.py | 更新联系人任意字段(--contact-id --field --value) |
scan_diary.py | 扫描日记识别互动 |
add_interaction.py | 添加互动记录 |
generate_followups.py | 生成跟进计划 |
draft_message.py | 生成消息草稿 |
mark_interaction.py | 标记已发送互动 |
update_promise.py | 更新承诺状态 |
export_snapshot.py | 导出Markdown快照 |
预设标签(可扩展):详见 references/tags.json
标签扩展流程:预设优先 → 无匹配时询问用户 → 确认后加入
用户:找医疗器械行业的人
→ list_contacts.py --query "医疗器械"
系统:[待分类清单 第17批]
61. 舒昕 | 62eec130 | 13671996409
...
用户:105地平线老板,芯片;106亲人;107 EDA;110亲人
→ update_contact.py --contact-id <id> --field tags --value '["地平线","芯片","企业主"]'
→ update_contact.py --contact-id <id> --field tags --value '["亲人"]'
...
用户:生成给某人的邮件草稿
→ draft_message.py --contact-id <uuid> --channel email
→ 返回:{subject, body, mailto: link}
Mac 日历自动同步:
deadline 的 promises 在入库时自动写入"遥 陆"日历【跟进】{姓名}:{承诺描述}scripts/add_calendar_event.py漏洞修复 #1:当需要新建联系人时,必须先调用 list_contacts.py --query <姓名> 查询是否已存在。
# 1. 先查询
uv run python ~/.agents/skills/human-relations/scripts/list_contacts.py --query "田则会"
# 2. 如存在 → 用 update_contact.py 更新
uv run python ~/.agents/skills/human-relations/scripts/update_contact.py --contact-id <ID> --field tags --value '["游戏"]'
# 3. 如不存在 → 再 add_contact.py 新建
uv run python ~/.agents/skills/human-relations/scripts/add_contact.py --json '{...}'
漏洞修复 #1(续):当用户说"记录 XXX 事件/日程,涉及 XXX 人"时:
每次新建联系人入库时,必须同步写入一条"首次建立联系"交互记录。
规则:
add_interaction.py 记录首次联系首次建立联系 - {姓名}日记文件 → LLM识别互动 → Telegram推送预览 → 用户确认 → 入库
查询活跃联系人 → 按优先级排序 → Telegram推送 → 用户选择 → 生成消息草稿
优先级:
references/schema.md(最新)references/tags.jsonreferences/config.json