| name | relation-keeper |
| description | 记录和查询你的社交关系。用于:(1) 记录人物肖像(性别、出生年/日、家庭地址、手机、喜好等),
(2) 归档过去共同经历(约会、吃饭、游玩等),(3) 按人查询历史事件。
|
| metadata | {"openclaw":{"slug":"relation-keeper","emoji":"👥","requires":{},"install":[{"id":"init-data","kind":"run","label":"初始化数据目录","command":"npm run init"}]}} |
关系记录 Relation Keeper
记录和查询你的社交关系网络:肖像维护、历史归档、人物查询。
一、数据存储
数据存储在 $RELATION_KEEPER_DATA 指向的目录;未设置时使用当前 skill 目录下的 data/ 文件夹。
1.1 人物肖像 portraits.json
{
"people": {
"张三": {
"name": "张三",
"aliases": ["老张"],
"gender": "男",
"birthday": "03-15",
"birthYear": 1990,
"birthDate": "1990-03-15",
"address": "北京市朝阳区xx路xx号",
"phone": "+86 138****1234",
"notes": "大学同学,做金融",
"updatedAt": "2026-02-05T10:00:00Z",
"facts": [
{ "key": "喜好", "value": "喜欢钓鱼", "source": "2026-01-20 聊天", "at": "2026-01-20" },
{ "key": "职位", "value": "某银行经理", "source": "2026-01-20", "at": "2026-01-20" }
]
}
}
}
- 每次用户提及某人及与其相关的信息时,更新对应 portrait。
- gender:性别(男/女/其他)。
- birthday:
MM-DD 格式,用于记录生日。
- birthYear:出生年(数字),可选。
- birthDate:出生日期,可模糊,如
"1990"、"1990-03"、"1990-03-15"。
- address:家庭地址。
facts 为键值对列表,可按 key 去重或追加(同一 key 保留最新一条)。
1.2 过去事件 past_events.json
{
"events": [
{
"id": "evt-001",
"personIds": ["张三", "李四"],
"type": "吃饭",
"date": "2026-01-18",
"summary": "和张三、李四在海底捞聚餐",
"details": "讨论创业想法",
"createdAt": "2026-02-05T10:00:00Z"
}
]
}
type:吃饭、约会、游玩、聚会、会议等。
- 查询某人时,可基于
personIds 过滤并返回相关 past_events。
二、技能行为指南
2.1 何时触发本 skill
- 用户提及某人及与其相关的信息。
- 用户说「记一下」「某人的信息」「和某人一起做过什么」等。
- 用户问「我和张三之前做过什么」「张三喜欢什么」等。
2.2 肖像维护
- 解析用户输入中的人名、属性(年龄、手机、喜好等)。
- 更新
portraits.json:新建或合并到已有 portrait,追加 facts。
- 若事件属于「过去」,同时写入
past_events.json。
2.3 过去事件归档
- 用户描述「上周和谁吃饭」「昨天和谁约会」时,写入
past_events.json。
- 关联
personIds,便于按人查询。
2.4 查询
- 「张三的信息」→ 读取
portraits.json 中 张三,并可选汇总 past_events 中与之相关的事件。
- 「我和张三一起做过什么」→ 查询
past_events 中 personIds 包含张三的事件。
三、配置
在 shell 或 ~/.openclaw/.env 中:
export RELATION_KEEPER_DATA="$HOME/.openclaw/relation-keeper"
四、自然语言触发示例
| 用户说 | 技能动作 |
|---|
| 张三生日 3 月 15 号,记一下 | 更新 portrait 生日 |
| 上周和张三在海底捞吃过饭 | 写入 past_event,更新 portrait |
| 张三喜欢钓鱼 | 更新 portrait.facts |
| 张三的电话是 138xxxx1234 | 更新 portrait.phone |
| 张三是男的 / 张三性别 | 更新 portrait.gender |
| 张三 1990 年出生 | 更新 portrait.birthYear / birthDate |
| 张三住朝阳区xx路 | 更新 portrait.address |
| 我和张三做过什么 | 查 past_events,汇总输出 |
| 张三是谁 / 张三的信息 | 输出 portrait + 相关 past_events 摘要 |
💡 提醒功能:生日、约会等提醒建议使用日历应用(飞书日历、Google 日历等),本 skill 专注于记录和查询。
五、脚本与工具
从 skill 根目录(relation-keeper/)运行,需 Node.js 16+:
npm run init
node scripts/portrait.js get 张三
node scripts/portrait.js upsert 张三 --birthday 03-15 --gender 男 --birthYear 1990 --address "北京市朝阳区xx路" --fact-key 喜好 --fact-value 钓鱼
node scripts/events.js add --persons 张三 --type 吃饭 --date 2026-01-18 --summary "海底捞聚餐"
node scripts/events.js query --person 张三