← 返回
沟通协作 中文

People Relationship Map

Personal CRM and relationship graph for OpenClaw. Tracks people, their connections to each other, and what you know about them. Stores everything as Obsidian...
OpenClaw的个人CRM与关系图谱。用于追踪联系人、彼此间的关系及已知信息,并将所有内容存储为Obsidian格式。
gobiraj
沟通协作 clawhub v0.1.0 1 版本 99869.5 Key: 无需
★ 1
Stars
📥 745
下载
💾 15
安装
1
版本
#latest

概述

People Relationship Map

A lightweight personal CRM that tracks people as nodes and their connections

as edges. Everything is stored as Obsidian-compatible Markdown files (one per

person) with a JSON graph index for fast querying.

Workspace layout

<workspace>/people/
├── _graph.json          # Node + edge index (source of truth for connections)
├── _alex-chen.md        # One Markdown file per person
├── _jordan-lee.md
└── ...

Each person file uses this template:

# Alex Chen

- **Tags:** #colleague #engineering
- **Org:** Acme Corp
- **Role:** Staff Engineer
- **Met:** 2025-06-15
- **Last contact:** 2026-02-20
- **Tier:** close

## Notes
- 2026-02-20 — Mentioned looking for a new apartment in Brooklyn
- 2026-01-10 — Helped me debug the auth migration

## Connections
- [[Jordan Lee]] — same team at Acme
- [[Sam Patel]] — college roommates

The _graph.json file stores the machine-readable graph:

{
  "nodes": {
    "alex-chen": {
      "displayName": "Alex Chen",
      "tags": ["colleague", "engineering"],
      "org": "Acme Corp",
      "role": "Staff Engineer",
      "met": "2025-06-15",
      "lastContact": "2026-02-20",
      "tier": "close",
      "file": "_alex-chen.md"
    }
  },
  "edges": [
    {
      "from": "alex-chen",
      "to": "jordan-lee",
      "label": "same team at Acme"
    }
  ]
}

Commands

All commands go through the Python script. Run them via:

python3 {baseDir}/scripts/relmap.py <command> [options]

Add a person

python3 {baseDir}/scripts/relmap.py add \
  --name "Alex Chen" \
  --tags colleague,engineering \
  --org "Acme Corp" \
  --role "Staff Engineer" \
  --tier close \
  --note "Met at the offsite in Denver"

Tiers: close, regular, acquaintance (default: acquaintance).

Link two people

python3 {baseDir}/scripts/relmap.py link \
  --from "Alex Chen" \
  --to "Jordan Lee" \
  --label "same team at Acme"

Add a note to a person

python3 {baseDir}/scripts/relmap.py note \
  --person "Alex Chen" \
  --text "Mentioned looking for a new apartment in Brooklyn"

This also bumps lastContact to today.

Touch (update last contact without a note)

python3 {baseDir}/scripts/relmap.py touch --person "Alex Chen"

Query commands

# Show everything about a person
python3 {baseDir}/scripts/relmap.py show --person "Alex Chen"

# Find who is connected to a person
python3 {baseDir}/scripts/relmap.py connections --person "Alex Chen"

# Find all people at an org
python3 {baseDir}/scripts/relmap.py query --org "Acme Corp"

# Find by tag
python3 {baseDir}/scripts/relmap.py query --tag engineering

# Find by tier
python3 {baseDir}/scripts/relmap.py query --tier close

# Search notes for a keyword
python3 {baseDir}/scripts/relmap.py search --query "apartment"

# List all people
python3 {baseDir}/scripts/relmap.py list

Relationship staleness report

python3 {baseDir}/scripts/relmap.py stale \
  --close-days 14 \
  --regular-days 30 \
  --acquaintance-days 90 \
  --format message

Returns a ready-to-send digest of people you haven't contacted within

their tier threshold.

Export graph as Mermaid (optional utility)

python3 {baseDir}/scripts/relmap.py mermaid

Prints a Mermaid graph LR diagram you can paste into any Markdown

renderer.

Auto-capture behavior

When the user mentions a person in conversation and provides relational

context, the agent SHOULD silently run the appropriate command:

  • "I just had coffee with Alex Chen" → touch --person "Alex Chen" +

note --person "Alex Chen" --text "Had coffee together"

  • "Alex and Jordan work on the same team" → link --from "Alex" --to "Jordan" --label "same team"
  • "Remember that Sam's birthday is March 12" → note --person "Sam" --text "Birthday: March 12"

Only auto-capture when the intent is clear. If ambiguous, ask the user

before persisting. Keep confirmations brief: "Noted for Alex ✓" style.

Cron — weekly relationship digest

A cron job should run the staleness report weekly and deliver results to

the user's primary channel (WhatsApp/Telegram). Recommended schedule:

every Sunday at 9:00 AM.

python3 {baseDir}/scripts/relmap.py stale --format message

The --format message flag produces a concise, chat-friendly digest.

Tips for the agent

  • Normalize names: "Alex", "Alex Chen", "alex chen" should all resolve

to the same node. The script does fuzzy matching on the stored names.

  • When the user says "who do I know at [Company]?", use query --org.
  • When the user says "tell me about [Person]", use show --person.
  • When the user says "who is connected to [Person]?", use connections.
  • Before a meeting, offer to pull up the person's card with show.
  • The Markdown files are designed for Obsidian — wikilinks, tags, and

frontmatter all work natively if the user syncs the people/ folder.

版本历史

共 1 个版本

  • v0.1.0 当前
    2026-03-30 04:11 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

communication-collaboration

Himalaya

lamelas
{"answer":"通过IMAP/SMTP管理邮件的CLI。可在终端使用 `himalaya` 收发、回复、转发、搜索及整理邮件。支持多账户与MML(MIME元语言)编写邮件。"}
★ 68 📥 45,599
communication-collaboration

Slack

steipete
当需要通过 slack 工具从 Clawdbot 控制 Slack 时使用,包括在频道或私信中回复消息或置顶/取消置顶项目。
★ 157 📥 47,689
communication-collaboration

imap-smtp-email

gzlicanyi
使用IMAP/SMTP读取和发送邮件;检查新/未读邮件、获取内容、搜索邮箱、标记已读/未读、发送带附件的邮件。支持...
★ 114 📥 52,461