关于 people-context
people-context 是本地优先的 MCP 服务与 CLI,为 AI Agent 提供关于身边人物的持久上下文,包括身份、关系、约定与沟通偏好。数据保存在一个 SQLite 文件中,普通命令不访问网络。
主要功能
- 01基于名称、昵称、别名和账号的可解释身份解析
- 02关系图谱、组织角色与带证据的事实记录
- 03按人物查看的互动摘要与时间线
- 04陈旧关系与即将到来日期的报告
- 05导入内容先暂存审阅,再决定是否写入
适用场景
- 01在会议前查询对方的背景与沟通偏好
- 02记录与某人的新约定并保留审计记录
- 03找出长时间未联系的重要关系人
MCP 相关
作为 MCP 服务,它通过窄粒度工具(如 resolve_person、get_relationship_graph)向客户端暴露人物上下文,并支持 stdio 与回环 HTTP 两种传输方式。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
41收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| hints | any | 否 | |
| limit | integer | 否 | |
| query | string | 是 |
详细介绍
people-context
English | 简体中文
你的 Agent 已经记住了你的代码库。现在,它也能记住你身边的人。
people-context 是一款本地优先的 MCP 服务和 CLI,可为 AI Agent 提供关于你生活中人们的持久记忆:某人是谁、你们如何相识、你们最后达成了什么共识,以及他们喜欢别人如何与自己交谈。所有数据都存储在你设备上的一个 SQLite 文件中。无需账户,无需云服务,也不会发起网络请求。

为什么
问助手“我该如何和 Priya 谈报告延迟的问题?”,它却一无所知:它不知道你指的是哪位 Priya,不知道她是你在合作组织中的对接人,不知道你们上周商定了新的截止日期,也不知道她更喜欢简短的邮件而不是电话。这些信息存在你的脑海、收件箱和助手无法查看的笔记文件里。
people-context 将这些信息集中在一处,让 Agent 通过范围明确的工具进行查询:
- 这是谁? 基于姓名、昵称、别名和账号名进行可解释的姓名解析。如果有两位 Priya,系统会返回两位候选人及匹配原因,绝不悄悄猜测。
- 我知道些什么? 关系、组织和职位、持久事实、简明的互动摘要、特征、提醒,以及每个人的时间线;系统只会按请求所需披露信息。
- 我该如何与他们交流? 根据记录的特征、过去的摩擦、待跟进事项,以及你自己写下的沟通理念,提供沟通建议。
- 哪些人最近没联系? 根据已存储的信息,生成关系疏远和即将到来的日期报告。
- 安全导入数据。 邮件、mbox、vCard、日历、LinkedIn、Outlook 和 WhatsApp 导出数据会暂存为可供审核的候选内容。由你批准要记录的内容;系统绝不保留原始来源内容。
它坚持以信任为先:所有写入操作都会记录审计日志,forget 会真正删除数据,敏感记录受仅限操作员的访问闸门保护,提示词无法打开该闸门;普通命令绝不会访问网络。
演示
打包好的虚构数据集是了解身份解析、图遍历和有界上下文的最快方式,而且无需接触真实数据:
uvx --from people-context pctx demo --reset
演示始终会在 {XDG_DATA_HOME or ~/.local/share}/people-context/demo.db 创建专用数据库。它会忽略 --db、PEOPLE_CONTEXT_DB 和配置文件;--reset 只会替换该文件及其 -wal/-shm 配套文件,因此绝不会读取或修改真实数据库。初始化种子数据时,会写入经过审计的虚构人物、标识、所属关系、事实、互动记录和相互连通的关系图,然后打印指定路径的服务命令,以及使用刚创建的 ID 的具体工具调用:
Demo database: /home/you/.local/share/people-context/demo.db
Start MCP server: people-context-mcp --db /home/you/.local/share/people-context/demo.db
resolve_person {"query": "Amina Hassan"}
get_relationship_graph {"person_id": "<amina-id>", "depth": 2}
find_connection {"person_a": "<self-id>", "person_b": "<sofia-id>"}
人物 ID 会在每次初始化时生成,因此打印出的值会与上面的占位符不同。在 MCP 客户端中启动打印出的服务命令,并逐字运行打印出的调用。参见 docs/cli.md。
快速开始
需要 Python 3.11+ 和 uv。选择你的客户端;每种方式都只需一步。
Claude Code
claude plugin marketplace add JinyangWang27/people-context
claude plugin install people-context@people-context-plugins
重启 Claude Code,或运行 /reload-plugins。你将获得服务以及 /people-context:who、
/people-context:remember 和 /people-context:reminders。详情:docs/claude-code-plugin.md。
Claude Desktop
从最新版本下载 people-context.mcpb 并打开。Claude Desktop 会使用自带的 uv 运行时安装固定版本。详情:docs/desktop-and-editors.md。
Codex
codex plugin marketplace add JinyangWang27/people-context
codex plugin add people-context@people-context-plugins
启动新的 Codex 会话。详情:docs/codex-plugin.md。
Cursor、Windsurf、VS Code 或任何 MCP 客户端
将 stdio 服务添加到客户端的 MCP 配置中(.cursor/mcp.json、~/.codeium/windsurf/mcp_config.json、
.vscode/mcp.json 等):
{
"mcpServers": {
"people-context": {
"command": "uvx",
"args": ["--from", "people-context", "people-context"]
}
}
}
也可以让 CLI 写入配置:uvx --from people-context pctx setup cursor(也支持 windsurf、vscode、
claude-desktop;添加 --dry-run 可预览)。VS Code 使用包含 "type": "stdio" 的 servers 键。各编辑器的配置片段: docs/desktop-and-editors.md。
OpenClaw
openclaw plugins install clawhub:openclaw-plugin-people-context
原生插件会与选择启用的回环 HTTP 服务通信。详情:docs/openclaw-plugin.md。
仅使用 CLI
uv tool install people-context
pctx init # seed your own record, optionally import a vCard, then connect a client
pctx --help
people-context 和 people-context-mcp 是服务命令;pctx 是供用户操作的 CLI。
然后在你的 Agent 中试试:
Amina 是谁?
记住,来自 Open City Lab 的 Amina 喜欢简短的邮件,讨厌突如其来的电话。
明天和 Daniel 开会前,我应该了解些什么?
第二条只会调用一次 remember 工具:系统会解析姓名,只有在无人匹配时才创建人物,并在一个经过审计的事务中记录所属关系和偏好。遇到有歧义的姓名时,系统会返回候选项,而不会猜测。
或者,不使用 Agent:运行 pctx remember "Amina Hassan" "prefers short emails" --org "Open City Lab" 和
pctx brief "Amina Hassan"。五个完整示例见 docs/use-cases。
它会记住什么,以及绝不会做什么
| 它会记住 | 它绝不会做 |
|---|---|
| 名字、昵称、别名和用户名 | 将任何内容上传到任何地方 |
| 使用规范且可扩展词汇表描述的关系 | 存储导入的原始邮件、聊天记录或文件 |
| 组织、职位和有明确时间范围的任职关系 | 允许模型启用敏感信息披露或完整导出 |
| 有证据支持的长期事实、观察和特征 | 未经你审核就提交导入或由 Agent 提取的数据 |
| 简洁的互动摘要和每个人的时间线 | 记录隐私值,或在执行 forget 后保留软删除副本 |
| 提醒、后续跟进和你的沟通理念 | 在 pctx reindex --semantic 之外发起网络请求 |
对比
people-context | 助手记忆(ChatGPT、Claude) | 记忆平台(Mem0 等) | |
|---|---|---|---|
| 数据存储位置 | 由你掌控的单个 SQLite 文件 | 供应商账户 | 供应商平台或你自己的部署 |
| 可离线使用 | 是 | 否 | 仅可自托管 |
| 将人物作为一等记录处理 | 身份、关系、职位、关系图谱、指导信息 | 自由文本笔记 | 自由文本记忆或向量记忆 |
| 解释匹配结果 | 按排名列出候选项并说明原因;会指出歧义 | 否 | 相似度分数 |
| 导入审核关卡 | 暂存、审核、提交 | 不适用 | 自动提取 |
| 删除 | 在单个事务中硬删除并对审计记录进行删改 | 向供应商提出请求 | 通过 API 删除 |
| 备份和迁移 | pctx sync push / pull bundle | 不适用 | 取决于部署方式 |
带日期并附有供应商文档链接的版本见 docs/privacy-and-safety.md。
安全模型
本项目会以启动用户的文件系统权限执行本地 Python。常规 MCP 发现会排除提升权限的敏感上下文和完整导出。需要操作员授权的工具要求设置进程环境标志;模型无法通过参数启用这些工具。保险库导出特意限定为只能通过 CLI 执行。
默认情况下,数据库是明文 SQLite。在类 Unix 系统上,新建数据库的权限为 0600,因此其他本地账户无法读取。这只是账户之间的隔离边界,并非加密,因此请搭配全磁盘加密,或启用 SQLCipher 静态数据加密(uv sync --extra encrypted;密钥仅读取自 PEOPLE_CONTEXT_DB_KEY)。请参阅
数据库文件权限和
可选的静态数据加密。
深入了解
- Loopback HTTP 适用于无法启动 stdio 的客户端:
people-context-mcp --http --host 127.0.0.1 --port 8765。 按设计无需身份验证且仅限本地使用;建议优先使用 stdio。请参阅 docs/cli.md。 - 语义搜索:
uv sync --extra semantic && pctx reindex --semantic会下载固定版本的多语言 Model2Vec 模型一次;服务启动和搜索均仅使用缓存。 - Obsidian:
pctx export-vault --output ~/PeopleVault会生成确定性、可浏览的知识库;只读 Obsidian 插件 可呈现实时简报。请参阅 docs/obsidian-plugin.md。 - 导入:使用
pctx import stage SOURCE PATH,然后执行review和commit,支持通过电子邮件、mbox、vCard、.ics、LinkedIn、Outlook 和 WhatsApp 导出内容。Agent 也可以用同样的方式暂存提取出的候选信息。请参阅 docs/import.md。 - 本地浏览器:
pctx browse --open会提供一个仅限 loopback 访问、由令牌保护的页面,用于浏览联系人,以及审核、编辑和提交暂存的导入批次。请参阅 docs/cli.md。 - 群组:使用
pctx group记录班级、团队、俱乐部和家庭,然后使用pctx group shared A B查询两人如何相识。请参阅 docs/shared-connections-examples.md。 - 报告和维护:
pctx stale、pctx upcoming、pctx timeline、pctx doctor、pctx stats。 - 备份和第二台设备:
pctx sync push --output DIR和pctx sync pull --input PATH。 - Docker:
docker run --rm -i -v people-context-data:/data ghcr.io/jinyangwang27/people-context:latest。 这是便捷镜像,并非沙箱。请参阅 docs/docker.md。 - 数据库位置:依次为
--db、PEOPLE_CONTEXT_DB、XDG 配置文件,最后是共享的~/.pctx/people.db。使用pctx db-path -v查看。
完整的命令参考见 docs/cli.md;MCP 工具清单和响应约定见 docs/mcp-interface.md;跨版本保持稳定的内容见 docs/compatibility.md。
架构
代码库遵循端口与适配器架构:
adapters (SQLite, MCP, filesystem, imports, CLI)
↓ implement
ports (narrow Protocols)
↑ used by
app (use cases and policy)
↓ operates on
domain (entities and values)
依赖关系向内指向。词汇规范化和图谱上限位于 app/domain;递归 SQL 和文件写入位于适配器中。一个组合根负责连接 stdio 和 HTTP。请参阅 docs/architecture.md。
文档
| 文档 | 内容 |
|---|---|
| docs/architecture.md | 分层、依赖规则和入口接线 |
| docs/data-model.md | 架构、迁移和视角 display_type |
| docs/relationship-graph.md | 术语、规范化、视角、遍历和整理 |
| docs/identity-resolution.md | 解析阶段、歧义,以及为何将音译存储为别名 |
| docs/communication-guidance.md | 沟通信号和辅导工作流 |
| docs/vault-export.md | 布局、标记安全性、确定性和敏感性 |
| docs/mcp-interface.md | MCP 工具和稳定的响应约定 |
| docs/compatibility.md | MCP、DB、CLI 和 JSON 在各版本间保持稳定的内容 |
| docs/cli.md | CLI 命令和 DB 解析 |
| docs/import.md | 导入来源、暂存、审核和提交 |
| docs/design/sync.md | 同步设计和已交付的本地基础功能 |
| docs/releasing.md | PyPI 可信发布、Codecov 和发布流程 |
| docs/mcp-registry.md | MCP Registry 命名空间、server.json 和社区目录提交矩阵 |
| docs/distribution-checklist.md | 账户所有者操作指南:Registry 发布、目录、awesome 列表、Desktop 目录、Obsidian |
| docs/desktop-and-editors.md | 原生 UV MCPB Desktop 捆绑包,以及 Cursor/Windsurf/VS Code 代码片段 |
| docs/docker.md | 可选的非 root stdio Docker 镜像、数据卷和 GHCR 发布 |
| docs/claude-code-plugin.md | Claude Code 安装、运行时、隐私、验证和发布 |
| docs/codex-plugin.md | Codex 安装、运行时、隐私、验证和发布 |
| docs/openclaw-plugin.md | OpenClaw 安装、运行时、隐私、验证和 ClawHub 发布 |
| docs/obsidian-plugin.md | Obsidian 只读面板、子进程安全、加密和镜像发布 |
| docs/privacy-and-safety.md | 信息披露、审计、遗忘和威胁模型 |
| docs/use-cases | 关于入职引导、会议准备、后续跟进、迁移和审计的叙事式示例 |
| docs/evals.md | 评估工具集、固定任务、评分规则和带日期的记录结果 |
| coaching、transcript 和 shared-connection 示例 | 带审核评分标准的虚构实操场景 |
| docs/roadmap.md | 已交付的里程碑和待选事项 |
贡献
欢迎提交问题和拉取请求;请参阅 CONTRIBUTING.md,了解架构规则、验证命令和适合作为入门任务的问题列表。欢迎在 Discussions 中提问和展示成果。
如果 people-context 对你有帮助,点个星标可以让更多人发现它。
许可证
MIT。请参阅 LICENSE。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。