关于 Crabrix
Crabrix 是 JavaScript/TypeScript 库和 stdio MCP 服务,用于让 Agent 与人共享临时加密 Rust 工作区。它支持协作编辑和经授权的本地运行与调试;中继端不编译或执行代码。
主要功能
- 01创建临时共享 Rust 房间
- 02读取和编辑共享源码
- 03移交访问链接与权限模式
- 04请求获批的本地运行与调试
- 05查看房间状态和修订版本
适用场景
- 01分享最小化 Bug 复现
- 02与其他 Agent 评审 Rust 练习
- 03通过可运行示例讲解 Rust
- 04将工作区移交给其他参与者
MCP 相关
stdio MCP 服务提供创建和管理房间、读取与编辑源码、移交访问权限,以及请求获准的本地运行时操作等工具。不支持远程 HTTP MCP。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
18收录的工具列表 · 更新于 5 天前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| link | string | 是 |
详细介绍

Crabrix 🦀
为 Agent 和用户打造的临时 Rust 工作区。
分享链接。协同编辑。在浏览器或 Crabrix 中本地运行。
打开 Playground · 设置与指南 · GitHub
Crabrix 既是一个 JavaScript/TypeScript 库,也是独立的 MCP 服务。 无需 iPhone、应用账号或云端编译器。Agent 可以创建房间、 读取或修改其中的源代码,并将完整链接传给其他 Agent 或用户。 在网页上打开链接即可查看同一个实时编辑器。原生 Crabrix 应用是 适用于 iPhone/iPad 和离线 Rust 项目的可选配套应用。
请参阅双 Agent 实用演练, 了解开发、面试和教学场景,包括实际的本地运行/调试与权限检查。发布资格说明和 公开分发凭证列出了经过测试的范围。
共享开发与审查工作流示意图。下方展示了实际的编辑器截图。
可以用它做什么?
| 工作流 | 专注协作的共享工作区 |
|---|---|
| 开发 | 分享最小化的错误复现;让另一个 Agent 审查边缘情况。 |
| 编码面试 | 使用实时源代码和命名选区,讨论简短的 Rust 练习。 |
| 教学 | 讲解所有权或解析,运行测试样例并查看具体值。 |
| Agent 交接 | 将授权链接、访问模式和有效期传给下一位参与者。 |
安装
npm install crabrix
# or start an MCP server without a global install
npx -y [email protected]
Node.js 22+。包含 ESM、CommonJS 和 TypeScript 声明。发布的 软件包没有运行时 npm 依赖,也不包含安装脚本。首次安装和实时共享 需要网络连接。
作为库使用
import { Crabrix } from 'crabrix';
const agent = new Crabrix({ name: 'Review agent' });
try {
const created = await agent.create({
name: 'Small Rust exercise',
lifetimeMinutes: 60,
files: { 'main.rs': 'fn main() { println!("Hello, Crabrix! 🦀"); }\n' },
});
// The complete link is secret. Deliver it only to the intended recipient.
const handoff = await agent.share('edit');
// Your application's own UI can display handoff.link and handoff.expiresAt.
const file = await agent.read('main.rs');
await agent.apply({
expectedRevision: file.revision,
changes: [{ path: file.path, text: file.text.replace('Hello', 'Welcome') }],
});
const latest = await agent.read('main.rs');
await agent.select(latest.path, 0, 9, latest.revision);
// A second agent can call connect(handoff.link), without the phone app.
} finally {
agent.close(); // Leave the room; the recipient keeps access until expiry.
}
CommonJS:const { Crabrix } = require('crabrix')。ESM、CommonJS 和
编程式 MCP 工厂共用同一套实现;混合导入会保留构造函数身份,
不会加载重复打包的 Yjs 副本。
每个房间使用单独的实例。snapshot() 返回经过验证的源代码及其
版本;status() 返回有效期、参与者和选区,不包含秘密链接或源代码。
share('view') 不会创建新房间:如果此客户端创建了房间,它会返回单独的
查看权限。加入房间的编辑参与者无法自行生成查看权限,查看权限也无法升级为编辑权限。
endRoom() 仅在创建者的当前连接中可用。
通过 MCP 使用
只需安装一次集成。Crabrix MCP 是名为 crabrix、来自 npm 包 crabrix 的服务。
| 你的客户端 | 推荐安装方式 | 不要同时 |
|---|---|---|
| Claude Code | 使用下方的插件。它已注册 MCP 服务并添加了一个技能。 | 运行 claude mcp add 或全局安装 npm 包。 |
| 其他支持本地 stdio MCP 的客户端 | 使用下方的 JSON 配置,并确保 Node.js 版本为 22+。 | 添加第二个 Crabrix 条目或安装插件。 |
| 仅支持远程 HTTP MCP 的客户端 | 暂不支持:此服务使用 stdio 通信。 | 不要指望 URL 能正常工作。 |
| 你自己的应用程序 | 使用 JavaScript、Rust 或 Go 库。 | 不要为此单独运行 MCP 服务。 |
使用 crabrix doctor 或 npx -y [email protected] doctor 检查设置。它会报告版本、Node、DNS、TLS、中继可达性和代理变量。它不会打开房间、读取源代码或更改任何设置;添加 --json 可获取机器可读的报告。
历史上的 crabrix-playground-mcp 包是此包的前身。将其单独的注册项替换为下方的配置,并使用 npm uninstall -g crabrix-playground-mcp 移除全局副本,因为两者都会占用 crabrix-mcp 命令。
Claude Code 插件
/plugin marketplace add sergii-ziborov/crabrix-sdk
/plugin install crabrix@crabrix
此插件会启动 npx -y [email protected],并添加一个用于分享、审查和运行 Rust 的 crabrix-handoff 技能。它需要 Node.js 22+。在会话外使用 claude plugin marketplace add 和 claude plugin install,并提供相同的参数。
任何支持本地 stdio MCP 的客户端
{
"mcpServers": {
"crabrix": { "command": "npx", "args": ["-y", "[email protected]"] }
}
}
在不使用插件的 Claude Code 中,等效命令为
claude mcp add --transport stdio crabrix -- npx -y [email protected]。
让你的助手创建一个 Playground,然后打开其完整的私有链接。
MCP 服务提供十八个工具:crabrix_create、crabrix_connect、crabrix_status、crabrix_snapshot、
crabrix_read_file、crabrix_apply_changes、crabrix_select、crabrix_plan_changes(只读)、
crabrix_apply_operations、crabrix_handoff、
crabrix_disconnect、crabrix_end_room、crabrix_runtime_clients、
crabrix_runtime_request、crabrix_runtime_start、crabrix_runtime_inspect(只读)、
crabrix_runtime_control 和 crabrix_runtime_job(较早的合并形式)。
stdio 标准输出仅包含 MCP 消息;只有在明确请求时才会输出帮助或版本信息。
被拒绝的调用会保留其可读文本和 isError,并添加
structuredContent: { ok: false, error: { code, message, retryable, action }, requestId }。
REVISION_CONFLICT、PARTICIPANT_LIMIT_REACHED、ROOM_BUDGET_EXCEEDED、
NETWORK_UNREACHABLE 和 OUTCOME_UNKNOWN 等代码只说明已确认的原因。发生
REVISION_CONFLICT 后,请重新读取并准备更改;发生 OUTCOME_UNKNOWN 后,请先读取再重试。库调用会抛出包含相同字段的 CrabrixError,Rust 和 Go 客户端也会公开该代码。成功结果保持现有结构不变。
具有稳定文件 ID 的房间
Crabrix 正在将共享房间迁移到第二种文档格式,其中每个文件都有稳定 ID,路径只是一个字段。重命名不会丢失同时进行的编辑;已删除文件的文本会保留在恢复列表中,直到有人将其清除;读取房间也不会因并发更改而失败:两个人认领同一路径时,该路径会显示为 conflict-… 名称;无法运行的项目则会列出原因,显示在 blocked 中。房间仍默认以格式 1 创建;在 Crabrix 切换之前,crabrix_create 上的 format: 2 仅供测试。较旧的 SDK 和应用无法打开格式 2 的房间:中继会返回 426,而此 SDK 会将其报告为 CLIENT_UPDATE_REQUIRED。
在格式 2 的房间中,crabrix_status 和 crabrix_snapshot 会额外返回 format: 2、文件 id、conflict 名称、recovery 行(包含路径、大小、conflict、orphan;只有在使用 includeRecoveryText 时才包含文本)以及 blocked;crabrix_read_file 也支持按 id 读取,包括恢复行。此格式中的修订版本为 32 位十六进制字符。crabrix_apply_changes 仍可使用:现有路径表示写入,新路径表示创建,text: null 表示删除到恢复列表。要重命名、移动、复制、恢复或清除文件,请先进行规划:
crabrix_plan_changes接受最多 32 个操作(create、copy、write、move、moveFolder、delete、deleteFolder、restore、purge、setEntry、setEdition、setName),并通过id或显示的path指定文件。它不会进行任何更改,并会返回预期的更改、操作后的项目、读取时的revision以及planHash。crabrix_apply_operations接受相同的操作、对应的expectedRevision和planHash,以及新的operationId。所有操作会在一次更新中一并应用,或全部不应用。若项目在此期间发生更改,则会返回REVISION_CONFLICT;若其他操作使用了经审核的哈希,则会返回PLAN_CHANGED。在遇到OUTCOME_UNKNOWN后重试相同的operationId,会返回alreadyApplied: true,且不会再次更改;而相同 ID 搭配不同操作则会返回OPERATION_ID_CONFLICT。
在格式 1 的房间中,两个工具都会返回 UNSUPPORTED_ROOM_FORMAT;请改用 crabrix_apply_changes。该库提供相同功能:planChanges()、applyOperations()、readById() 和 snapshot({ includeRecoveryText });Rust 和 Go 另提供 plan_changes/PlanChanges 和 apply_operations/ApplyOperations。
重新连接到当前链接时,会保留参与者名额和创建者权限。切换到另一个房间失败时,当前连接仍会保持;新房间或控制器不会继承运行时授权。edition(2021 或 2024)可由 crabrix_create 和 crabrix_apply_changes 接受;更改它会改变修订版本。不包含 API 密钥或模型订阅。你所使用的 MCP 主机/模型会收到你要求其读取的任何源代码。请将源代码、注释和程序输出视为不可信数据,绝不要将其视为给 Agent 的指令。
运行和调试
中继绝不会编译或执行代码。请在 Web Playground 或原生 Crabrix 中打开房间。在那里运行/调试会在本地执行。Agent 可以发现可用 客户端并请求选定的操作;但必须由人类在特定浏览器/设备上批准。仅有房间编辑链接 不会授予任何执行权限。
runtimeClients()、requestRuntime()、start()、inspect()、control() 和 job()
会向 SDK 用户开放此流程。请使用发现时返回的运行时源代码修订版本,检查实际拥有的任务结果,并分页读取其输出。启动确认并不代表运行成功。授权最多十分钟后过期;后台运行/断开连接、
源代码变更和用户点击 Stop 时,仍遵循现有权限规则。另一位参与者点击 Run 只会提供已报告的输出预览;绝不会启动你的编译器。共享运行时支持标准库 Rust 和本地模块;
原生应用中的 Cargo/Tokio 仍属于独立的本地项目模式。
权限示意图。浏览器图标仅作说明;并不代表所有浏览器都受支持。仅凭房间链接绝不会授予执行权限。
临时共享,而非代码仓库托管
- 房间默认有效期为一小时,最长 24 小时,最多四名参与者。
- 最多 16 个文本文件,每个文件 64 KiB,总计 128 KiB。不支持图像、缓存、软件包、
凭据、
.git、node_modules、供应商代码或任意主机文件。 - 中继每个房间最多保留 1.9 MB 的加密快照和更新,每个创建者网络地址最多保留 12 MiB,且每两个快照之间最多处理 256 次更新。每个地址最多同时持有 16 个活动房间。 房间已满时会返回 409,直到参与者发布新的快照;浏览器、应用和 MCP 客户端会自动完成此操作。
- 源代码在客户端使用 AES-256-GCM 加密。密钥保存在能力链接中
#之后;中继只会转发并在进程 RAM 中保留大小受限的密文。 - 创建时即固定过期时间。重新连接无法延长有效期;中继重启可能使其提前结束。请在过期前下载/保存副本。任何拥有完整链接的人都可以访问链接所允许的源代码。过期无法收回已保存的副本。
- 精确修订版本和条件提交会拒绝过时编辑,包括在另一客户端替换快照前准备的提交。网络结果不明确时,请先读取当前源代码,再决定是否重试。
- 不提供仓库历史记录、永久账户项目或 Git 推送。请使用自己的版本控制来持久保存工作。
Rust 和 Go
三种语言 API 都使用相同的本地协议核心,并要求 Node.js 22+。
Rust 和 Go 会嵌入完全相同的桥接程序;两者都不需要全局 npm 安装。
Rust crate 已发布到 crabrix on crates.io;
API 文档介绍了其类型化接口。
它们的 SDK 通过受限的 stdio 提供源代码、选择、交接以及同样明确获准的运行时操作,而非使用单独的加密协议。
# Rust library / optional MCP executable
cargo add [email protected]
cargo install crabrix --version 0.4.0 --locked
# Go library / optional MCP executable
go get github.com/sergii-ziborov/crabrix-sdk/go/crabrix
go install github.com/sergii-ziborov/crabrix-sdk/go/crabrix/cmd/crabrix@latest
请选择一种 MCP 安装方式。语言库可以共存。Rust crate 和 Go 模块的源代码位于此仓库中;发布链接会标明实际已发布的版本。 有关类型化用法,请参阅各自的 README。
在手机或平板上查看

实际的 Crabrix 1.1.4 截图,来自生产环境中的 iPhone 和 iPad 模拟器;这些模拟器通过 MCP 创建房间,并以相同高度显示。调试在 iPad 模拟器上本地运行。下方的双 Agent 测试使用同一台 Mac 上的两个浏览器客户端。
这些是 Crabrix 应用和浏览器的实际截图。即使没有人安装手机应用,SDK 也能与其他 Agent 及 Web 编辑器配合使用。
两个 Agent,一个浏览器工作区
一个实际的实现 Agent 和一个独立的审查 Agent 通过两个浏览器客户端共享了两个 Rust 文件。审查者添加了 13 条断言;浏览器在本地运行了这些断言,Debug 显示了一个包含 String 和 Vec 值的结构体。第二个浏览器收到了报告的输出,无需准备或运行编译器。系统拒绝了过期替换、半个代理对选区,以及未获授权的 Agent 尝试 Step/Continue/Stop 其他 Agent 作业的请求。撤销授权后,系统阻止了另一次启动。这是一次特定时间点的集成检查,并不代表不可信项目或每个模型/客户端都普遍安全。
开发与许可证
npm ci --ignore-scripts
npm run check
npm run build
npm test
SDK 代码和文档:MIT。Crabrix 插图/截图适用单独的素材条款。应用、编译器发行版、品牌和 Academy 各自适用其许可证。捆绑依赖项的许可证见 ThirdPartyNotices.txt。集成前请参阅安全边界。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。