people-context:把 Agent 对人的记忆收回到一份可审阅的本地 SQLite
让 agent 记住代码库,已经有不少成熟做法;真正棘手的是让它记住“人”。同事的称呼和角色、上次承诺的事项、对方习惯先看邮件还是先开会,这些信息散在邮箱、日历和自己的笔记里。把它们一股脑丢给通用 memory 很方便,却很难回答三个基本问题:数据究竟落在哪里、哪条记录能被模型看到、以及忘记某个人时是否真的删掉了。
今天看的是 JinyangWang27/people-context。它是一个 local-first 的 MCP server 和 CLI,专门把“人”建模为可查询的本地记录:姓名、别名、关系、组织和角色、互动摘要、提醒、时间线与沟通偏好都放在自己机器的一份 SQLite 数据库中。它不是要替代个人知识库,而是给 agent 一个范围更窄、边界更明确的 people context。
按 GitHub 仓库页、README、LICENSE、main 提交 feed 与 Releases 页面在 2026-09-19 18:05 Asia/Shanghai 可核验的信息,JinyangWang27/people-context 有 52 stars、2 forks,主要语言为 Python,license 是 MIT。仓库创建于 2026-07-16 16:08:36 UTC;main 最新 HEAD 为 f16c758,最新 push/提交时间为 2026-09-19 09:49:49 UTC,内容是为 pctx browse 增加浏览器批量审核流程。最新 GitHub Release 是 v1.2.1,发布于 2026-09-14 17:20:11 UTC。main 在继续迭代导入审核相关能力,接入时应固定 release 或明确的版本,而不是无条件追随 main。
项目概览
| 属性 | 详情 |
|---|---|
| 仓库 | JinyangWang27/people-context |
| 定位 | 面向人际信息的 local-first MCP server 与 CLI |
| Stars / Forks | 52 / 2 |
| 主要语言 | Python |
| 许可证 | MIT |
| 创建时间 | 2026-07-16 16:08:36 UTC |
| Latest push / main HEAD | 2026-09-19 09:49:49 UTC / f16c758 |
| 最新 Release | v1.2.1,2026-09-14 17:20:11 UTC |
| 本地存储 | 一份 SQLite 数据库,可用 MCP 或 pctx CLI 操作 |
有用之处在于把“谁”变成一等数据
普通 note memory 很擅长把一段文本找回来,却不一定擅长处理同名的人。people-context 的 README 把姓名、昵称、别名和 handle 放进可解释的 name resolution:两个同名候选会连同匹配理由返回,而不是让模型静默猜一个。关系、组织、角色、互动摘要、traits、提醒和时间线则是独立字段,agent 可以按请求拿到有限范围的上下文。
这对工作里的具体摩擦很有帮助。比如准备和合作方开会前,可以先问“我该知道什么”;要写一封延迟说明时,可以让 agent 结合已记录的沟通偏好给出语气建议;又或者用 pctx stale 找长期没有跟进的关系。重点不是把联系人系统搬进聊天窗口,而是让这些回答能追溯到结构化记录,而不只是模型临时拼出来的印象。
导入和敏感信息没有被当成自动化的副作用
项目支持将 email、mbox、vCard、calendar、LinkedIn、Outlook 和 WhatsApp export 先导入为待审候选,再由人 review 后 commit。README 明确说 raw source content 不会保留;普通命令不会访问网络;写入会留下审计记录。对“从历史材料中提取联系人信息”这种容易过度收集的场景,这个 staged 流程比让 agent 直接把内容写入长期 memory 更符合预期。
它也区分普通上下文与敏感记录:敏感数据需要 operator-only gate,prompt 本身不能打开;forget 被设计为真实删除,并同时处理审计中的私密值。这样当然不是万能的隐私保证——导入前你仍要判断材料有没有权利处理——但至少数据流里明确保留了人工确认点和删除语义。
先用虚构数据确认边界
项目要求 Python 3.11+ 与 uv。最保守的试用方式不是立刻连接真实邮箱,而是先运行 uvx --from people-context pctx demo --reset。它会生成一份专用的虚构数据库,并打印可直接用于 MCP client 的 server 命令和示例调用。确认 name resolution、get_relationship_graph 和 disclosure 的返回形状后,再执行 pctx init,或通过 uvx --from people-context pctx setup <client> 写入对应编辑器配置。
需要留意的是,本地并不天然等于加密。README 说明默认是 plaintext SQLite;Unix 下新建文件权限为 0600,并提供 SQLCipher 的可选加密路径。因此真要记录客户、同事或亲友信息时,应先确认设备磁盘加密、备份位置、共享账户和 retention 策略。MCP server 继承启动用户的文件权限,tool 的范围控制不能替代主机层面的安全治理。
总结
people-context 值得试的地方,不在于再造一个“更聪明的通讯录”,而在于它把 agent 的人际记忆拆成了可检查的本地模型:同名歧义显式返回,导入先暂存再审核,敏感信息有独立门槛,删除也有明确含义。若你希望 agent 在会议准备、跟进和写作时理解关系背景,又不愿把这类信息默认交给云端 memory,可以先从它提供的虚构 demo 开始,再为一小类、低敏感度的真实记录建立自己的边界。