关于 vibelive
vibelive 是面向共享编码会话的终端协作工具,可通过本地或局域网 WebSocket 分享进程输出,并以单人驱动队列管理输入。它提供 CLI、Node.js 库和 Agent 接口。
主要功能
- 01单人驱动及排队控制
- 02保留输出并实时回放
- 03参与者聊天与状态
- 04共享输出同意检查
- 05会话结束时清理进程
适用场景
- 01在可信局域网内协作使用 Claude Code
- 02让审阅者查看进程输出且由主机控制输入
- 03用 MCP 创建会话并查看参与者与驱动者
MCP 相关
`vibelive mcp` 通过 stdio 提供 MCP 服务,含 `host_session` 和 `session_status` 两个工具,用于启动会话及查看状态。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
2收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| name | string | 否 | 主持参与者的可选显示名称。 |
| port | integer | 否 | 要绑定的可选端口(默认:临时端口)。 |
| command | array | 是 | 要封装的 Agent 命令,采用 argv 格式,例如 ["claude"] 或 ["python","-i"]。 |
详细介绍
vibelive
vibelive 是一款开源终端协作工具,供共享 Agentic 编码会话的开发者使用。 它包装一个进程,通过本地/LAN WebSocket 共享输出,并允许一名操作者随时发送输入。 它以 CLI、Node.js 库和 Agent 服务的形式随 Vibe Suite 一同提供。
安装
npm install -g vibelive
需要 Node.js 18 或更高版本。包含 TypeScript 类型声明和三个直接运行时依赖。
共享你的第一个进程
在一个终端中,启动一个会回显每行输入的进程:
vibelive host --port 4474 --name ada -- node -e "process.stdin.on('data', b => process.stdout.write(b))"
在另一个终端中,加入该进程:
vibelive join ws://localhost:4474 --name bee
在主机终端中输入 hello。两个终端都会打印 hello;加入者还会看到在线状态和控制状态。
无需凭据或环境变量。vibelive 不会加载 .env 文件;被包装的 Agent 会继承主机环境。
对于 LAN 对等端,请使用主机打印的 LAN 地址。传输采用明文 WebSocket,且不内置身份验证或加密。
在加入者终端中输入 /drive。在主机终端中输入 /release 以移交控制权。
随后,加入者可以发送 /type ping,并在两个终端中看到 ping。在主机上使用 /quit 结束会话。
工作原理
Host terminal -> wrapped child process -> ordered output log
^ |
| v
one driver <- host WebSocket relay -> participants
| |
control queue chat + presence
主机负责进程输出和控制状态。稍后加入的用户会先收到保留的输出,然后收到实时更新。
默认情况下,中继会绑定到 0.0.0.0,因此可访问的 LAN 客户端都能连接。
为什么需要它
与编码 Agent 配对时,需要明确谁可以接下来输入。 vibelive 在被包装的命令周围添加协作式操作者队列和聊天功能。 tmux 和 tmate 等工具适用于更广泛的终端工作流;vibelive 专注于进程共享和可通过 Agent 管理的会话。
比较
于 2026-10-14 对照 tmux 和 tmate 检查。
| 属性 | vibelive | tmux | tmate |
|---|---|---|---|
| 范围 | 通过操作者仲裁共享进程 | 终端复用器 | 终端共享 |
| 此处使用的传输方式 | 明文本地/LAN WebSocket | 本地会话;远程访问需单独配置 | 基于 SSH 的共享 |
| 接口 | CLI、Node.js 库、Agent 工具 | 终端命令 | 终端命令 |
| 进程处理 | 子进程管道 | 终端会话 | tmux 派生的终端会话 |
覆盖范围
| 接口或集成 | 状态 | 范围 |
|---|---|---|
| WebSocket / ws | 已实现 | 主机中继、客户端、输出、聊天、在线状态、控制 |
| Claude Code | 通用命令包装器 | 需要单独安装 claude;没有专用适配器 |
| OpenAI Codex | 通用命令包装器 | 需要单独安装 CLI;没有专用适配器 |
| Google Gemini CLI | 通用命令包装器 | 需要单独安装 CLI;没有专用适配器 |
| Pi / Grok 工作流 | 通用命令包装器 | 兼容管道的命令;没有专用适配器 |
| Kimi | 通用命令包装器 | 需要单独安装 CLI;没有专用适配器 |
| MCP | 已实现 | 两个 stdio 工具 |
| Cursor 更新 | 仅协议 | 库支持发送/接收;没有丰富的 CLI 光标渲染器 |
| 加密远程中继 | 路线图 | 尚未提供 |
| 完整终端仿真 | 路线图 | 不支持伪终端 |
它没有 Harness 适配器注册表:主机通过 Node.js 子进程管道执行任意命令。 本地测试覆盖主机、中继、客户端、仲裁、面向协议的行为和 MCP。此处不保证与特定 Agent CLI 兼容。
常见用例
- Claude Code 配对协作:在可信的局域网内共享进程输出并移交驱动者角色。
- Codex 审阅:观察封装后的命令,同时由主机控制输入。
- Gemini CLI 指导:在聊天中讨论,并通过
/type发送 Agent 输入。 - Node.js 团队:封装基于行的脚本,在没有 AI 凭据的情况下测试协作。
- Agent 构建者:通过 Model Context Protocol(MCP)启动会话,并检查参与者和驱动者状态。
功能
- 单一驱动者: 先进先出的控制队列;非驱动者的输入会被拒绝。
- 输出回放: 带序列号的保留历史记录,以及实时输出。
- 聊天: 将参与者消息与进程输入分开。
- 在线状态: 参与者名称和当前驱动者。
- 许可: 中继输出共享会检查 vibe-core 的
share:session权限范围。 - 生命周期: 主机退出会关闭会话;MCP 断开连接会清理其托管的进程。
运行时界面
vibelive host [--port N] [--name name] -- command [args...]
vibelive join ws://host:port [--name name]
vibelive mcp
vibelive --help / -h
vibelive --version / -v
封装命令的所有标志都必须放在 -- 之后。--port 0 会选择一个可用端口。
加入会话的解析器也接受 --port,但不会使用它;目标地址由 URL 决定。
加入者名称默认依次取 USER、USERNAME,然后是 anon。
| 交互命令 | 主机 | 加入者 |
|---|---|---|
/drive | 请求控制权 | 请求控制权 |
/release | 释放控制权 | 释放控制权 |
/quit | 结束会话 | 离开会话 |
/type text | 若为驱动者,则作为进程输入处理 | 若为驱动者,则发送进程输入 |
/help | 若为驱动者,则作为进程输入处理 | 打印斜杠命令帮助 |
| 其他文本 | 若为驱动者,则作为进程输入 | 聊天 |
vibelive mcp 会启动 stdio MCP,并提供恰好两个工具:
| 工具 | 输入 | 结果 |
|---|---|---|
host_session | 命令数组;可选的名称和端口 | 会话 ID 和 WebSocket 加入 URL |
session_status | 可选的 URL 筛选条件 | 活跃会话、参与者和驱动者 |
库示例
使用 npm install vibelive 在本地安装,然后将以下内容保存为 demo.mjs,并运行 node demo.mjs:
import { createHost, createRelay, joinSession } from 'vibelive';
const host = createHost({ command: ['node', '-e', "setInterval(() => console.log('hello'), 200)"] });
const relay = await createRelay({ host: '127.0.0.1', port: 0, hostHandle: host });
const client = joinSession({ url: relay.url, name: 'ada' });
client.onOutput(text => process.stdout.write(text));
await client.id;
await new Promise(resolve => setTimeout(resolve, 600));
client.close();
host.kill();
await relay.close();
该脚本会输出 hello,并关闭其进程和中继。
交付和行为限制
当前提供的传输方式是本地/局域网明文 WebSocket。它没有内置参与者身份验证、TLS 或端到端加密。 仅在会话访问和网络暴露范围符合预期参与者的情况下使用。输出可能包含封装命令打印的任何内容。 主机使用管道,而不是伪终端(PTY)。调整大小操作无效;原始模式和全屏 Agent 界面可能无法正常工作。 输出历史记录默认在内存中保留 5,000 个块。较早的条目会被清除;主机退出后会话不会保留。 协议中包含光标消息,但 CLI 显示的是在线状态,而非动态光标。 该软件包不提供托管中继、远程扇出规模保证或持久化聊天服务。
集成指南
- Claude Code 进程共享:运行
vibelive host -- claude;需另行安装并验证 Claude Code。 - 其他编码 Agent:在
--后传入已安装的命令;请确认该命令能通过管道运行。 - 局域网参与:使用打印出的
ws://<LAN-address>:<port>URL 运行vibelive join。 - MCP 主机配置:
{"mcpServers":{"vibelive":{"command":"vibelive","args":["mcp"]}}}
状态
软件包版本 0.2.3 尚未达到 1.0;接口可能会变更。CLI 的源版本仍报告为 0.2.2。
计划中的工作包括 PTY 封装、更丰富的光标,以及加密的可自托管远程中继。
目前尚未发布公开案例研究。尚未配置公开文档网站;设置指南已在此处完整提供。
如需支持,请使用 GitHub issues;可能需要访问仓库。
如需贡献,请运行 npm ci、npm run typecheck、npm run build 和 npm test。
常见问题
哪些集成经过验证?
vibelive 会测试其本地进程和 WebSocket 行为。具名编码 Agent 使用通用封装器,而不是经过凭据验证的专用适配器。
vibelive 是否提供托管中继?
vibelive 在主机上运行其中继。该软件包不提供托管式远程中继服务。
vibelive 与 tmux 有何不同?
vibelive 通过驱动队列和聊天功能共享一个封装进程。tmux 管理终端会话、窗口和平铺窗格。
vibelive 与 tmate 有何不同?
vibelive 使用本地/LAN WebSocket,并通过明确的机制仲裁驱动权限。tmate 提供基于 SSH 的终端共享。
vibelive 是否采用端到端加密?
vibelive 使用明文 WebSocket 传输。加密远程中继属于未来规划。
两个人可以同时向 Agent 输入内容吗?
vibelive 允许一名驱动者发送输入。其他参与者可以聊天并排队等待控制权。
vibelive 能否与全屏终端应用配合使用?
vibelive 使用子进程管道,不具备 PTY 语义。原始模式、调整大小和全屏终端行为都有限制。
后加入的参与者能看到之前的输出吗?
vibelive 会先发送保留的输出历史,再发送实时更新。默认滚动缓冲区最多保留 5,000 个数据块。
许可证
MIT。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。