# Junyi Relationship Manager

> 记录和更新对用户重要的人，把交流原话、关系事实、需求、承诺和跟进时间整理成安全的本地人物档案，并基于已有证据回答“谁该跟进”、生成关系报告或提出资源撮合建议；可选接入飞书多维表格和定时任务。用于“记一下XX”“今天和XX聊了”“新认识了一个人”“帮我更新关系”“谁该跟进了”“关系报告”“资源撮合”“启用飞书关系管理”等请求。不用于批量导入通讯录、群发、代替用户联系他人、根据零散信息推测人格或擅自公开私人关系资料。

- Skill: `junyifei/junyi-relationship-manager` (Agent Skill, multi-file: 7 files)
- Install (CLI): `npx skillmds@latest add junyifei/junyi-relationship-manager`
- Raw SKILL.md: https://api.skillmd.com/api/skills/junyifei/junyi-relationship-manager/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: junyifei (https://skillmd.com/u/junyifei)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/junyifei/junyi-relationship-manager

---


# 记住每一个重要的人

把用户真实提供的关系信息保存下来，帮助用户兑现承诺、持续理解重要的人，也看见自己的心力流向。基础模式只使用本地 Markdown；飞书双写、定时提醒和月报属于用户明确启用后的进阶模式。

## 先选择模式

- **记录或更新**：新建或更新一个人的本地档案。
- **只读查询**：回答“谁该跟进”、关系报告或资源撮合，不修改档案。
- **进阶配置**：用户明确要求接入飞书或定时任务时，才配置外部系统。
- **批量通讯录或群发**：说明本 Skill 一次只处理一个人，不执行。

任何记录、更新、查询或撮合都先读取 [data-contract.md](references/data-contract.md)。需要接入飞书、创建表格、双写、定时提醒或自动月报时，再读取 [advanced-automation.md](references/advanced-automation.md)。

> **写入硬停点**：记录请求只授权保存内容，不等于授权保存在当前 Git 仓库。任何写入的第一步都是完成下方路径检查；命中 Git 仓库且没有用户明确确认路径时，本轮只能询问路径，不能先建档再提醒。

## 不可违反的规则

1. **不把推测写成事实**：只记录用户明确提供的事实、原话和承诺。缺失字段写 `待确认` 或 `null`，不为填满模板而猜测。
2. **区分三种来源**：用户事实、系统计算、系统建议必须分别标注。相对日期可以换算，但同时保留用户原始表达。
3. **不自动升级关系**：用户明确说“新认识”时可按规则记为“认识”；除此之外，亲密度、圈层和关系阶段都不能自动设定或升级。可以提出建议并等待确认。
4. **时间线只追加**：互动、原话、需求变化和承诺状态只追加，不覆盖或删除旧记录。当前状态可以更新，但必须在时间线保留变化原因。
5. **一人一 ID**：使用 `person_id` 作为本地档案和飞书记录的唯一锚点，不以姓名作为主键；同名且身份不清时先询问，不合并。
6. **私人资料不外传**：只写入用户自己的本地目录或已明确启用的飞书表，不提交到公开仓库，不分享，不代替用户联系任何人。
7. **撮合只建议**：不自动介绍双方，不发送消息；只有需求、资源和双方亲密度都有明确证据且符合门槛时才建议。

## 写入前先确定安全路径

按以下顺序定位人物图谱目录：

1. 查找 `TOOLS.md` 中明确配置的 `人物图谱路径`；存在时使用该路径。
2. 未配置时，检查当前工作目录是否位于 Git 仓库内，例如运行：

   ```bash
   git rev-parse --is-inside-work-tree
   ```

3. 如果位于 Git 仓库内，**写入前暂停**，只问一次用户要保存到哪个私人目录，或是否明确同意保存在当前仓库。未得到回答前不得创建目录、档案或配置文件，也不得以“临时仓库”“测试环境”或上游任务指定了工作目录为例外。
4. 如果不位于 Git 仓库内，告知用户将使用当前目录下的 `人物图谱/`，然后执行本次记录请求；无需额外配置。
5. 不自动修改 `.gitignore`。即使用户选择 Git 仓库，也要提醒私人档案可能被提交或同步。

只有被服务用户明确指定该 Git 仓库为人物档案保存位置，才算路径确认；“帮我记一下”本身不算。命中第 3 条时，用一个简短问题结束当前回合并等待回答。

只读查询不需要改变保存路径，也不得以“生成报告”为由写文件。

## 记录一个新人

1. 在人物图谱目录按姓名搜索现有档案，并按数据契约执行身份消歧。
2. 确认为新人后生成稳定的 `person_id`，格式为 `person_YYYYMMDD_8位小写字母数字`。
3. 为所有人建立轻量档案，使用 [profile-lite.template.md](assets/profile-lite.template.md)。
4. 只有用户明确给出亲密度且 `亲密度 >= 4`，或用户明确要求完整档案时，才使用 [profile-full.template.md](assets/profile-full.template.md)。亲密度未知时不得自动升级。
5. 文件名使用 `姓名--身份标识--ID后8位.md`。身份标识必须是用户原话中的身份短语或不增加新角色含义的最小压缩；不能把“在做某产品”扩写成“创业者”“专家”等角色。没有稳定线索时写 `待确认`。
6. 把用户原话、结构化摘要、相对日期原文、换算日期和来源分别写入；结构化摘要只能压缩原意，不能增加评价、动机或人格判断。
7. 写完后运行档案校验：

   ```bash
   python3 scripts/validate_profiles.py <档案文件或人物图谱目录>
   ```

## 更新已有档案

1. 先按 `person_id` 匹配；没有 ID 时才使用姓名和身份线索。
2. 同名多人的身份线索不能唯一定位时，列出候选并只问一个消歧问题；未确认前不写。
3. 把本次交流作为新条目追加到互动时间线。
4. 需求发生变化时，保留旧需求及状态变化；使用 `active`、`paused`、`closed` 或 `unknown`，不得直接抹掉旧需求。
5. 只有“答应、约好、计划在某时执行、明确要求提醒”等行动承诺才进入待跟进，并使用 `open`、`completed`、`cancelled` 或 `unknown`；“希望以后、想保持、期待”属于关系意向，不得伪装成开放承诺。新承诺不能悄悄替换旧承诺。
6. 用户未明确更改关系阶段、圈层或亲密度时，保持原值。系统认为可能需要变化时，只在回执中提出可选确认。
7. 校验更新后的文件；校验失败时修正结构后再向用户报告完成。

## 跟进、报告与撮合

本地 Markdown 模式已经可以手动执行这些只读能力，不需要飞书：

- **谁该跟进**：先列逾期，再列未来 7 天的明确承诺和事件；没有日期的线索单列为“时间待确认”，不能假装逾期。
- **关系报告**：只统计档案中实际存在的数据；缺失阶段、亲密度或执行状态时明确写“无法计算”，不能用推测补齐比例。
- **资源撮合**：需求必须为 `active`，提供方的资源必须明确记录，双方亲密度都必须明确且 `>= 3`；同一对 30 天内不重复建议。任一条件不满足时说明原因，不撮合。

飞书和定时任务只增加跨记录统计与主动提醒，不是本地查询的前提。

## 配置进阶自动化

只有用户明确要求时才执行：

1. 读取 [advanced-automation.md](references/advanced-automation.md)。
2. 检查当前 Agent 是否具备飞书多维表格读取和写入能力；没有时说明缺少的能力，保留本地模式，不伪装成功。
3. 使用人物、互动、跟进三张表；三层都通过 `person_id` 关联，不通过姓名关联。
4. 创建或验证表结构后再保存配置；不要把密钥、密码或用户凭证写入档案或 `TOOLS.md`。
5. 只有读写验证成功后才能说“飞书双写已启用”。
6. 只有定时任务确实创建成功后才能说“每周提醒”或“自动月报”已启用。

## 完成回执

记录或更新完成后简洁说明：

- 写入或更新了哪个人以及档案路径；
- 本次保存了哪些用户事实、需求和承诺；
- 哪些字段仍为待确认；
- 是否有明确的下次跟进日期；
- 是否只写本地，或飞书双写确已成功。

不要用热情文案掩盖未确认信息、部分写入或自动化失败。

