关于 warifu
warifu 是供人和 AI Agent 使用的点对点房间应用,可聊天和分享图片,无需账号或自建服务器。Agent 可加入同一对话,但只能执行由人明确授权的操作。
主要功能
- 01使用一次性密钥加入房间
- 02点对点文字、图片、音频和视频
- 03桌面应用与命令行工具
- 04由人批准 Agent 权限
- 05可选的自托管中继
适用场景
- 01邀请外部参与者且无需注册账号
- 02让编码 Agent 加入会议聊天
- 03无需运行服务器连接家中与办公室设备
- 04无法直连时使用中继
MCP 相关
warifu 提供 MCP 服务,让本地 Agent 加入房间对话并使用聊天和房间工具。权限必须由人明确批准;默认范围是对话和 Agent 自身资料。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
warifu
把一把密钥交给别人,对方就能进入你的房间——无需账号,也无需运行服务器。你的 AI Agent 也能加入。
warifu(割符)——一根一分为二的契木。两半相合时,双方都能证明对方就是其声称的那个人。
日本語版: README.ja.md

一位访客(Sam)凭房间密钥加入。此电脑上的 Agent(note-taker)与其他人参与同一段对话,其发言会标记为 Agent。没有人创建账号。
适用场景
你需要与组织外的人交谈,又不想让对方注册任何账号。 把一把房间密钥发给对方——通过聊天、电子邮件、二维码发送,或在电话里念给对方听。一把密钥只能让一个人加入。无需管理邀请名单,也无需把对方添加到租户中。对方离开后,这把密钥就会失效。
你想让编码 Agent 加入会议,而不是单独开一个窗口。 只需一条命令,即可连接 Claude Code(或任何 MCP 客户端)。它会在与其他人相同的对话中读取和发送内容,可以在通话中大声发言,还可以请求房间密钥来邀请他人加入。它只能执行用户允许的操作——需要更多权限时,它会在你的屏幕上请求:
| Agent 请求 | 你按下了 允许 |
|---|---|
![]() | ![]() |
你想在办公室和家之间交谈,又不想运行服务器。
两台设备直接连接(通过 iroh 使用 QUIC——你拨号连接的是公钥,而不是 IP 地址)。如果路由器不允许它们直连,你可以选择启用中继(docs/relay.md);除非你主动开启,否则不会进行中继。
试用
- 下载:下载页面提供 macOS 版本(Apple Silicon,已签名并公证)和 Windows 版本(x64 和 ARM64,未进行代码签名)。Windows 首次启动时还需要一个额外步骤:
docs/install.md。 - 打开应用。 你会进入联系人页面。前往 房间 → 邀请他人 → 签发密钥。
- 把密钥发给对方。 对方将密钥粘贴到 加入其他房间。你们就进入同一个房间了;先用文字交流,需要时再按 添加视频和音频。
- (可选) 让 Agent 加入:
warifu setup会将 warifu 添加到你的用户级 Claude Code 配置中。在任意文件夹中启动 Claude Code,它就能在房间中交流。详见docs/mcp.md。
更喜欢使用命令行?运行 warifu host 会显示密钥并等待连接;运行 warifu join <key> 可从另一台设备加入。无需图形界面。
从源代码构建:
git clone https://github.com/meta-taro/warifu.git && cd warifu
scripts/setup-hooks.sh # once per clone
pnpm install
pnpm --filter @warifu/desktop tauri dev
要构建可分发版本:pnpm --filter @warifu/desktop tauri build。
cargo run 会打开一个空白窗口——调试构建会查找开发服务器。
每个版本包含的内容:CHANGELOG.md。
状态:Alpha。以下是经过实测的全部内容
此版本中,请勿放入任何你确实需要保护的内容。 所有尚未完成的事项都记录在 SECURITY.md 中。
| 实测内容(真实设备,真实网络) | 时间 |
|---|---|
| 两人视频通话,无服务、无外部信令、无 STUN/TURN | 2026-09-07 |
Windows 与 macOS 之间双向传输视频和音频,路径为 direct,持续 5 分 33 秒未发生路径切换。音频通过操作系统的进程级音量表确认,而非凭耳朵判断 | 2026-09-15 |
同一房间内的三台设备,从主机视角来看(macOS × 2 + Windows),成员列表为 3 / 12 | 2026-09-15 |
| Agent 在无人操作的情况下回复远程用户 | 2026-09-12 |
| 跨互联网且无中继服务——一台位于双重 NAT 后的设备加入了另一网络上的设备,后者的路由器通过 UPnP 开放了端口;文本成功送达,使用相同密钥重新加入也成功。仅限 CLI | 2026-09-27 |
| 桌面应用中的跨互联网视频——家中的 Windows 设备连接办公室的 Mac,视频通过对等设备自己的连接传输,无中继服务 | 2026-09-29 |
| 背景模糊和替换(Windows):默认隐藏背景,提供三种模糊强度,可使用自己的图片,也可不隐藏背景 | 2026-10 |
Agent 在通话中发声——一台 Windows 设备上的 Agent 调用 voice_say,另一台设备只听到一次;用户可按房间开启此功能,默认关闭 | 2026-10-07 |
| 同一房间内的六台设备(macOS × 2 + Windows × 4)。主机负责分发成员列表和消息,因此访客可以看到彼此的消息。各设备上的 Agent 可在房间内协调工作,无需用户转达 | 2026-11-02 |
| 由设备密钥控制访问的可自托管中继——两个获准的密钥通过中继完成了一次往返(随后切换到直连路径);未获准的密钥在中继的身份验证环节被拒绝。仅限 CLI | 2026-11-02 |
| 重启后自动恢复连接——访客应用被强制退出并重启后,自动重新加入同一房间,无需再次粘贴密钥,且应用离线期间发送的每条消息都恰好送达一次(两台设备) | 2026-11-02 |
| 未经实测,因此不作此声明 | |
|---|---|
| 通过中继进行视频通话 | 从未尝试(仅确认过文本可通过中继传输) |
| 三人或更多人进行视频通话 | 从未尝试(仅确认过三台或更多设备间的文本传输) |
| 访客之间直接连接 | 房间仍然是以主机为中心的星型结构:访客消息经由主机传递。主机离线时,无人可以交谈 |
Windows 版本未经代码签名,且首次运行时,管理员必须允许应用通过防火墙——否则文本可以送达,但视频无法启动。应用会明确提示这一点,并提供准确的命令。
一段话介绍
大多数“无服务器”聊天仍需要某处的账号:信令服务、目录或租户。warifu 通过让密钥成为身份,消除了这一需求。你把一个房间密钥交给某人——它是包含你的地址和一半校验值的单个字符串——只有那个人能加入。无需创建账号,无需管理邀请,也无需运行服务。传输层使用 iroh(QUIC),其特点是拨号连接到公钥,而非 IP 地址;这一特性本身就是校验值。
目前可用的功能
| 房间 | 一个房间可以容纳 1 个人或 N 个人。“1:1 聊天”只是一个有 2 个人的房间——两者的机制并无不同 |
| 房间密钥 | 一把密钥只允许 一个人 加入。你可以随意转交:通过链接、二维码、口头读出或写在纸上 |
| 入口 | 没有密钥的呼叫者会被 静默丢弃。不会返回原因 |
| 路由显示 | 直连 / 中继 / 未知——我们绝不会把“未知”擅自标记为“直连” |
| 视频是可选添加项 | 房间最初只有文字。添加视频不会重建房间,关闭视频也不会离开房间 |
| 文字聊天 | 无需 GUI 也能使用(warifu host / warifu join) |
| 聊天中的图片 | 可以粘贴、拖入或选择图片。图片会先在你的设备上缩小(长边 1600px,最大 512 KiB),然后直接发送给房间内的人。Agent 只能看到一条图片已送达的简短提示 |
| 转交房间密钥 | Agent 可以请求将房间密钥转交给已连接的对等端设备。此 PC 上的人批准后,密钥只会通过 warifu 链路传输(绝不会通过聊天或电子邮件传输),另一端的人再决定是否加入。Agent 永远看不到密钥 |
| 身份持久保留 | 关闭应用后,你仍是同一个人。已记住的对等端会显示名称(warifu id / warifu contacts) |
| 四种语言 | en / ja / zh / ko,包括 OS 菜单和上下文菜单。所有译文均由 AI 起草——参见 docs/i18n-review.md |
| 供对方离线时使用的邮箱(可选) | 由你信任的人保管密封消息。他们无法读取消息 |
| 自动重新加入 | 重启后,应用会自动重新加入之前所在的房间,无需密钥。主机会重新发送应用离线期间产生的消息,每条只发送一次 |
| 可自托管的中继 | 对于无法彼此直连的对等端(例如家中和办公室的设备),自行运行的中继是备用路径。中继只允许你授权的设备密钥接入(docs/install.md) |
| 发送秘密前进行检查 | 消息发送后无法撤回(每台设备都会保留副本)。任何看起来像秘密的内容——例如令牌、API 密钥或完整的房间密钥——都会触发应用询问用户“仍要发送吗?”,如果内容来自 Agent,则完全不会发送 |
@ 提及 | 在繁忙的房间中,@name 会在被提及者的屏幕和其 Agent 上将消息标记为“发给你” |
**尚未提供:**录制、转录、日程协商,以及 持久聊天记录(关闭窗口后记录会清除)。
同时丢失所有设备时的恢复方式仍未确定(决策日志(存放在独立的非公开笔记仓库中),D2)。PGP、Keybase 和 Secure Scuttlebutt 并非因缺少功能而消亡——它们都倒在了这一关。我们将此视为已知的致命原因,而非假设风险。
Agent 是一等公民(MCP)
这是本项目最与众不同的功能。例如,你的本地编码 Agent(如 Claude Code)可以 加入人类正在查看的同一场对话。Agent 说的话会显示在人的屏幕上,并标明发言者是 Agent。
warifu setup # writes the MCP server into your per-user Claude Code config, once
- 安装前会向你展示将授予哪些权限。 默认权限仅包括对话和 Agent 自身的资料——不包括收件箱或日历。
- 除非有人类编写
--allow,否则不会授予任何权限。 warifu 绝不会自行授予权限。 - Agent 可使用
chat_send/chat_read/chat_wait/room_status/profile_set等工具。room_status会回答“是否仍有问题在等待人类回应?”,并说明涉及 哪个房间。
参见 docs/mcp.md。
我们绝不妥协的两项设计承诺
1. 收到的消息是数据,绝不是指令
一旦 Agent 开始交换结构化意图,提示词注入就不再是众多威胁之一,而是设计前提。
- 每条收到的 Agent 消息都是数据,而不是命令。
- 授权由模型之外的机制决定。 我们绝不读取模型的输出来判断哪些操作是允许的。
- 信任度更高,不会改变对字符串的处理方式。
- “足够聪明的模型会识别出来”不是可接受的答案。
信任回答的是某人是谁,绝不回答是否应该执行对方所说的内容。
2. 我们不会把不确定性四舍五入成确信
如果无法判断链接是否直连,界面就显示未知。如果无法判断是否存在防火墙规则,界面就说明我们无法检查——不会让你添加规则,因为这会妨碍本来就没问题的人。颜色绝不是唯一的标记:状态会同时通过颜色、标签和形状呈现。
不重复造轮子
实现之前,我们会先与现有标准进行差异比较。
| 领域 | 现有方案 |
|---|---|
| 身份 | W3C DID Core / DID Document |
| 信任凭证 | W3C Verifiable Credentials |
| Agent 间通信 | DIDComm v2 |
| 能力 | UCAN / ZCAP-LD |
| E2EE / 群组 | MLS(RFC 9420) |
| 密钥即身份、支持中继 | Nostr |
| 传输 | Matrix / libp2p / iroh / Veilid |
“现有组件基本够用”并不意味着失败。 这会让项目成为一个配置规范加参考实现,而这些标准的实现者也会成为第二个实现的候选者。这是更好的处境,而不是更差。
技术栈
| 层级 | 选择 |
|---|---|
| 传输 | iroh 1.0 — QUIC,拨号连接公钥,而非 IP |
| 核心 | Rust(工作区,约 650 个测试) |
| 音频 / 视频 | WebRTC(我们不编写编解码器) |
| 桌面端 | Tauri 2 + TypeScript + SvelteKit + pnpm(约 400 个测试) |
SFU 目前不在范围内:它意味着“用户设备会中继他人的流量”,在法律问题解决之前,我们不会着手开发(决策日志(保存在单独的非公开笔记仓库中),D7)。我们的界线在于是否中继流量,而不是房间里有多少人。你可以选择启用的网络中继则不同:当路由器不允许两端直接连接时,它会在两端之间传递加密数据包;你也可以将它指向自己运行的中继(WARIFU_RELAY_URL,参见 docs/relay.md)。默认情况下它处于关闭状态。
本仓库的开发方式
人类和 AI Agent 遵循同一套规则(.claude/rules/product-baseline.md、CLAUDE.md)共同开发:
- 由 AI 提交变更;由人类推送。 绝不允许代码未经审查就离开本机。
- 测试不会延期,失败的测试也不会删除。 没有测试,不会标记“完成”。
- 决策及其理由,以及应当让我们停下来的条件,都记录在决策日志中(保存在单独的非公开笔记仓库中)。
- 本 README 中的每项声明都经过测量,或明确标注为未经测量。
来自真实设备的缺陷报告是本项目收到的最有价值的反馈——最近几天修复的大多数问题,都来自有人在我们没有的硬件上运行项目。
许可
采用双重许可:Apache License 2.0 或 MIT,由你选择。请参见 LICENSE、LICENSE-APACHE、LICENSE-MIT。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。

