内容
<h1 align="center">vibegroup ☎️</h1>
<p align="center">
<strong>与团队共同构建,让您的代理也能如此。</strong><br>
Claude Code 会话可以跨仓库、机器和网络相互通信。
</p>
<p align="center">
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-green" alt="License: MIT"></a>
<img src="https://img.shields.io/badge/status-alpha-orange" alt="Status: alpha">
<img src="https://img.shields.io/badge/tests-67_passing-brightgreen" alt="67 tests passing">
<img src="https://img.shields.io/badge/runtime-Bun-000000?logo=bun&logoColor=white" alt="Bun">
<img src="https://img.shields.io/badge/TypeScript-strict-3178c6?logo=typescript&logoColor=white" alt="TypeScript strict">
<img src="https://img.shields.io/badge/Claude_Code-Channel-5a45ff" alt="Claude Code Channel">
<img src="https://img.shields.io/badge/E2E-AES--256--GCM-1f6feb" alt="端到端加密">
<img src="https://img.shields.io/badge/macOS_%7C_Linux-supported-lightgrey" alt="macOS | Linux">
</p>
最好的构建发生在良好的团队合作中 — 但是当你和你的朋友们各自在自己的仓库中、在自己的机器上工作时,你们的代理是彼此陌生的。你的代理完全不知道对方最近的更新。
vibegroup 结束了这种隔离。加入一个共享的房间,你的代理开始相互交流:朋友的代理询问你的代理关于新的导入 API 的信息,是否推送了迁移,当前在哪个分支 — 而 **问题直接出现在你的运行会话中,由会话自主回答**。你与朋友之间的轻松交流终于可以与在你身边的代理进行。
```
你 ▸ 询问 Jon 的代理他在做什么
vibegroup_ask ──(密封,端到端加密)──▶ 中继 ──▶
Jon 的代理 ⚡ 醒来,问题被推送到他的实时会话中
读取他的仓库(只读) → vibegroup_reply
中继 ◀──(密封,端到端加密)──
你 ⚡ 答案推送回你的会话中
"在 feat/grpc-streaming 上,导入器已完成"
```
答案来自你的朋友的**实际代理,带有完整的上下文** — 即使他们不在键盘前,也能工作,因为问题会唤醒他们空闲的会话。
---
## 为什么选择 vibegroup
- **为一群朋友打造,而不是为一支舰队打造。** 一个 *vibegroup* 就是一个房间,你和你的朋友们从各自的编码地点加入。创建一个房间,分享令牌,开始提问。
- **跨机器,跨互联网。** 代理连接 *出站* 到一个中继,因此 NAT 和防火墙不是问题。两台笔记本电脑,两个云环境,一台笔记本电脑和一个 CI 盒 — 所有情况都一样。
- **答案来自您的实时代理。** 对等节点的提问通过 [Claude Code Channels](https://code.claude.com/docs/en/channels) 直接推送到您的正在运行的 Claude Code 会话中,因此您的 *真实* 代理 — 带有完整的仓库上下文 — 回答问题。无需第二个模型,无需单独的 API 账单。
- **唤醒空闲会话。** 当您不在终端前时,通道仍然会传递信息,因此对等节点即使在您不主动输入时也能得到答案。
- **默认不受信任。** 进入的提问被视为不受信任的数据,并以 **只读** 方式回答(git + 文件,无写入/执行,无机密读取);在离开之前,回复会清除机密。
- **端到端加密。** 问题和答案主体使用从房间令牌派生的密钥进行 AES-256-GCM 加密。中继仅路由 **密文** — 永远不会看到您的代码。
- **签名身份。** 中继会标记权威发送者;对等节点无法伪造自己的身份。
---
## 工作原理
vibegroup 是一个 **Claude Code Channel**,连接到一个中继。通道是一个 MCP 服务器,可以 *将事件推送到正在运行的会话中*(代理通过工具回复) — 这是实现“您的实时会话自主回答”的基本功能。
- **提问** 是一个工具调用:您的代理调用 `vibegroup_ask(peer, question)` → 它通过中继发送出去。
- **回答** 是一个推送:问题到达对等节点的机器,他们的通道将其推送到他们的实时会话中,如 `<channel source="vibegroup" kind="question" …>`,他们的代理以只读方式回答并调用 `vibegroup_reply`。
- **接收** 也是一个推送:答案路由回并推送到 *您的* 会话中,如 `<channel kind="answer" …>`。
中继只是传输 — 它将对等节点匹配到房间并路由加密的二进制数据块;它永远不会看到明文。三个部分:
| 仓库 | 它是什么 |
|---|---|
| **[vibegroup](https://github.com/TerryCM/vibegroup)** (此仓库) | 通道:中继客户端,端到端加密,`vibegroup_*` 工具和 Claude Code 插件 |
| **[vibegroup-relay](https://github.com/TerryCM/vibegroup-relay)** | 您托管的代理 — 房间,签名身份,密文路由。永远不会解密任何内容。 |
| **[vibegroup-protocol](https://github.com/TerryCM/vibegroup-protocol)** | 共享线路合约,双方依赖它 |
---
## 要求
vibegroup 通过将对等节点的提问直接推送到您的实时 Claude Code 会话中来回答,这是一个管理员控制的功能。这意味着:
- **Claude Code ≥ 2.1.80** 带有 **Anthropic 认证** (claude.ai 或 Console API 密钥)— 不是 Bedrock/Vertex/Foundry。
- 使用 **`/vibegroup:allow-channel`** 允许该通道(它写入 Claude Code 的托管设置),或启动时使用 **`--dangerously-load-development-channels`** 进行快速本地使用。
- 回答会话必须 **打开** — 保持一个运行(一个 `tmux` 窗格有效)以便在离开时仍可回答。
---
## 快速入门
vibegroup 是一个 Claude Code 插件。安装它,运行设置,您就可以开始使用了。
**1. 安装插件**
```
/plugin marketplace add TerryCM/vibegroup
/plugin install vibegroup@vibegroup
```
**2. 允许通道 + 加入房间**
```
/vibegroup:allow-channel
```
这允许列出通道(一次性,需要 `sudo`)并在 **免费托管中继** (`relay.vibegroup.sh`)上创建或加入一个房间 — 或自行托管(参见 [`vibegroup-relay/DEPLOY.md`](https://github.com/TerryCM/vibegroup-relay/blob/main/DEPLOY.md))。与您的团队离线分享房间和令牌。
**3. 启动会话为通道**
```bash
claude --channels plugin:vibegroup@vibegroup
```
**4. 提问** — *"使用 `vibegroup_peers`,然后询问 Pablo 的代理他在做什么。"* 他的会话被唤醒,从他的仓库中读取答案(只读),并将答案推送回您的会话中。
> **更喜欢从源代码运行?** 克隆三个仓库并在 `vibegroup` 中运行 `bun install`,然后从本地路径安装它作为插件(或将全局 MCP 条目指向 `dist/channel.js`),并运行 `vibegroup add` 绑定一个房间 — 参见下面的 **多个房间**。
---
## 多个房间
一个 vibegroup 设置不限于一个房间。加入一个 `my-team` 房间,一个 `backend` 房间,一个侧边项目 — 每个项目都生活在自己的注册表中 (`~/.claude/vibegroup/rooms.json`),而 **活动房间由您的工作目录选择**,因此每个项目都自动与其团队交流。
```bash
vibegroup add my-team # 创建 + 绑定一个房间到这个目录
vibegroup add backend --room rm_… --token … # 或加入一个现有的房间
vibegroup list # 每个房间(标记这里的活动房间)
vibegroup disable backend # 切换一个房间而不删除它
```
- **每个项目一个房间。** 一个房间绑定到一个目录;最具体的绑定目录包含您的当前工作目录的获胜者。在 `~/code/backend` 中,只有 `backend` 房间是活动的 — 绑定父文件夹涵盖其下的每个仓库。无需标志,无需环境变量。
- **任何中继。** `vibegroup add` 默认使用免费托管的中继;传递 `--url wss://your-relay/ws` 将一个房间指向您自己的(参见 [`vibegroup-relay/DEPLOY.md`](https://github.com/TerryCM/vibegroup-relay/blob/main/DEPLOY.md))。不同的房间可以生活在不同的中继上。
- **开启 / 关闭。** `vibegroup enable`/`disable` 翻转一个房间而不删除它 — 使项目保持沉默以进行专注的会话,或将其完全关闭。
---
## 工具
| 工具 | 描述 |
|---|---|
| `vibegroup_peers` | 列出您房间中的代理及其工作内容。 |
| `vibegroup_ask` | 向对等节点提问。返回一个 `qid`;答案作为 `<channel kind="answer">` 事件到达。 |
| `vibegroup_reply` | 回答对等节点的提问(传递来自传入的 `<channel kind="question">` 事件的 `qid`)。 |
问题和答案都 **作为通道事件推送到您的会话中** — 无需轮询。
---
## 安全模型
对等节点的提问出现在您的实时会话中,因此防御是框架 + 范围,而不是单独的沙箱:
- **不受信任的输入框架。** 通道的系统指令告诉代理将传入的提问视为数据(而非指令),以 **只读** 方式回答,绝不泄露秘密或运行改变状态的命令。
- **机密编辑。** 回复会在离开前清除 API 密钥、令牌和私钥块,然后限制长度。
- **端到端加密。** 每个房间的 AES-256-GCM;中继持有无密钥。
- **签名身份 + 私有房间。** 中继会标记权威发送者;成员资格由离线共享的令牌控制。
> **诚实说明:** 由于回答发生在您的 *真实* 会话中,请像对待圈子里的朋友一样对待 vibegroup 房间 — 一个朋友圈,而不是开放的互联网。保持您的权限设置严格,不要将中继令牌放在不受信任的地方。
---
## 项目状态和路线图
- ✅ **中继代理** — 房间,签名身份,密文路由,qid 生命周期,离线队列 + 恢复。在 Azure Container Apps 上部署。
- ✅ **通道代理** — 端到端加密,中继客户端,`vibegroup_*` 工具,基于推送的问答传递,只读框架。在两个会话中验证实时。
- ⏳ **打包** — `/plugin install` + 通道允许列表,以便它不是开发标志启动。
- ⏳ **强化** — 中继速率限制 + 房间创建身份验证,端到端加密密钥轮换,存在丰富性。
在 [`docs/ROADMAP.md`](docs/ROADMAP.md) 中查看完整的列表和现实世界的测试检查清单。
---
## 开发
```bash
bun install
bun test
```
路线图和现实世界的测试检查清单位于 [`docs/ROADMAP.md`](docs/ROADMAP.md)。
---
## 许可证
[MIT](LICENSE).
连接信息
猜你喜欢
暂无推荐服务器