01这个项目在做什么
先说清楚它不是什么,省得误会。
它不是婚介所,也不是交友 App。没有注册、没有账号、没有密码,不收集手机号,不做人工介绍,不做红娘一对一问询。它是一套本地运行的软件:你在自己的电脑上跟 AI 说话,AI 调用这套工具,把你说过的话整理成一份「介绍卡」,加密之后放到一个公共的布告栏上;别人看到卡片摘要觉得有意思,提出请求,双方都同意,才逐层交换更多信息。
整个流程里,服务端只做一件事:转发密文。它不知道卡片内容,不知道你写给谁、谁写给你,也不知道你们最后有没有见面。
之所以做这件事,是因为我自己观察到一个现象:条件越好、越独立的人,在相亲这件事上越容易被「错配」。不是没人可选,是介绍人只能凭几句话判断,而人是有很多层的——你不在意的和你在意的,往往和介绍人以为的刚好相反。AI 的好处不是替你决定,是有耐心把你的十几层都问清楚,并且如实记住。
02三条工程边界
这三条写在设计文档第一页,改代码之前先读;冲突时先改文档,并写明理由。
B1不反向追踪
平台不记录「谁看了谁」。卡片被浏览、被忽略、被拒绝,都不会回传给任何人——包括卡片主人自己。没有阅读回执,没有访客记录,没有「最近谁对你感兴趣」。
B2不打分
不出匹配度百分比,不排「优质指数」,不做排行榜。AI 给出的是一份带原话引用的观察报告,五档三区,每个结论都要能指回你说的哪句话。分数会让人优化分数,而不是想清楚自己要什么。
B3不留存
服务端不存明文,也没有「注销账号」这一步——因为没有账号。删除是在你自己机器上执行的:密钥删掉,那些卡片就再也没有人能解开,包括我们。
这三条不是姿态,是技术选择的后果。比如「不反向追踪」之所以能成立,是因为信箱的拉取接口只返回投递给你的信封,你没有办法查询「我投出去的信被看了没有」——这个能力在设计上就不存在。
03几个技术选择,以及为什么
这部分是这个项目真正花时间的地方,也是我认为值得写下来的部分。
- 密钥即身份
- 没有邮箱密码这套东西。你在本机生成一对 Ed25519 签名密钥和一对 X25519 加密密钥,平台只知道公钥。身份证明就是把一句话用私钥签了给平台验。代价很直接:
BIP3924 个词是你唯一的备份,丢了就真的找不回来——我们也没法帮你找回,因为服务端根本不知道你是谁。 - 卡片是分层的
- 一张匹配卡 = 明文元信息(城市、年龄段、可见范围)+ 三层独立加密的内容(越往里越私密)+ 一个整体签名。三层用不同的密钥,收件人拿到第一层,才拿得到解第二层的钥匙。所以「先给微信号、暂时不给手机号」这种事,在密码学上是可以成立的,不是靠承诺。
- 验签失败整卡作废
- 不做「降级读取」。签名对不上就整张卡丢掉,不试图猜测哪部分可信。这条看着保守,但一个允许部分信任的系统,最后一定会有人把它变成全部不可信。
- 平台没有 /match
- 服务端只有投递、拉取、许可这几类接口,没有匹配接口、没有推荐接口、没有搜索接口。能不能遇见,取决于卡片有没有被放到广场、有没有人愿意点开——不取决于某个算法愿不愿意把你推出去。这不是没做,是刻意不做。
- 数据分四环
- 内容环(零知识,永不放松)、聚合环(只有匿名总数)、行为分析环(频次与路径,绑假名,可退出)、身份凭据环(仅贴广场者,邮箱哈希 ↔ 假名公钥,永不与其他三环 join)。真要追溯到一个具体的人,仅有的一条路是「广场发布确认」那一刻,这是明说的。
04怎么在本地跑起来
它是一个 MCP 服务,由你已经在用的 AI 客户端来启动,不是一个双击就能开的 App。
先说明一个最容易踩的坑:npx -y @hongxian/mcp 是运行命令,不是安装命令。直接粘到终端里,它只会安静地等输入,看起来像卡住了——因为它是一个标准输入输出协议服务,得有宿主来跟它说话。
正确做法是把它加进 AI 客户端的 MCP 设置。不同客户端的配置方式其实只有四类:
| 类型 | 代表客户端 | 怎么填 |
|---|---|---|
| 界面表单 | 豆包桌面版、千问、WorkBuddy | 连接器 / 自定义 MCP → 新增 → 传输选 stdio,命令 npx,参数 -y @hongxian/mcp |
| JSON 文件 | Claude Desktop、Cursor、Cline、Cherry Studio | 在 mcpServers 下加一项,command 与 args 同上 |
| 命令行 | Claude Code、Codex | claude mcp add --transport stdio hongxian -- npx -y @hongxian/mcp |
| YAML patch | DeepSeek Harness | 写进 profile 的 cordis.patch.yml,不是 JSON |
不想手写的话,让工具自己输出对应格式:
npx -y @hongxian/mcp --print-config claude # 标准 mcpServers JSON npx -y @hongxian/mcp --print-config panel # 界面表单的三个字段 npx -y @hongxian/mcp --print-config code # 命令行 npx -y @hongxian/mcp --print-config dsh # DeepSeek Harness 的 YAML patch npx -y @hongxian/mcp --print-config list # 全部可用目标
装好之后,让 AI 读一下 yuelao_persona 这条提示词,确认它的人格与禁令加载正常,再开始。要核对连接是否成功,看工具总数即可——21 个工具、8 条指引;某些客户端会显示成 mcp__hongxian__interview 这种带前缀的名字,那是正常的,核数量不用核名字。
目前需要本机有 Node 20 以上。装不了 Node 的机器(很多办公电脑是这样),这套东西现在跑不起来——这是真实限制,不是配置问题。
05已知限制与还没做完的部分
写下来是为了避免误解,也免得有人按想象中的功能来用。
- 需要宿主。没有 MCP 客户端就用不了。手机端目前不支持——手机上没有可自装 MCP 的本地文件系统,这一版明确不追。
- 广场是异步布告栏。不是即时聊天,没有在线状态,没有「谁正在看」。你把卡片贴上去,等人来看;这中间可能是几天。
- 双盲拒绝。对方不回应或拒绝,你不会收到通知,也不会知道是谁。连带的结果是:你也不知道自己被多少人忽略过。
- 发布需要一次邮箱确认。只有「把卡片贴到广场」这一步需要,用于满足境内平台对发布内容的可追溯要求。邮箱只存加盐哈希,不对外展示,也不进入其他任何环节。
- 平台还在预发阶段。服务端目前只跑在境外一台小机器上,境内访问速度不保证。境内这个站点只放说明,不放服务。
- 没有推荐算法。遇见谁,取决于你声明的圈层和别人的主动浏览。想提高遇见概率,办法是把介绍写得更诚实,不是等系统推你。
06文档与代码
全部开源。协议规范在 spec/ 目录,以 CC-BY-SA 4.0 授权。
- 源代码
- github.com/hongxian-dev/hongxian —— 客户端(MCP 服务)、协议库、平台服务端、网站,同一个仓库。
- 协议规范
- protocol-v1-spec.md —— 九类信封、三层加密、字段级子密钥的完整定义。有争议时以这份为准。
- 宿主兼容性
- host-compatibility.md —— 四类配置载体、常见故障、以及「云端电脑不是 MCP 宿主」这类容易搞混的地方。
- 安装与信任
- install-and-trust.md —— 三条安装路径(npx / 源码构建 / 连接器市场),以及如何验证你跑的就是仓库里的代码。
- npm 包
@hongxian/mcp·@hongxian/core·@hongxian/crypto·@hongxian/schema—— 每次发布带 provenance 证明,可追溯到具体提交与构建流水线。
07关于这个笔记
这个站是一个个人技术项目的笔记页,记录设计取舍、踩过的坑和还没解决的问题;它不提供婚介服务,不接受委托介绍,不做收费撮合。项目本身是开源、免费的,未来也只可能在工具层接受赞助,不会向「被介绍」这件事收费。
如果你在工程上发现了问题,欢迎在仓库提 issue——尤其是安全与隐私相关的,这类问题我优先看。想讨论设计上的不同意见也欢迎:这个项目的很多决定,是被别人的质疑改出来的。