关于 letswork
letswork 是面向结对开发者的 MCP 服务,让两人通过 Claude Code 协作编辑同一项目。它结合文件锁和主机审批队列,并通过 Cloudflare 隧道建立连接。
主要功能
- 01两人共享同一代码库
- 02文件锁定与释放
- 03访客修改需主机审批
- 04文件与会话状态工具
- 05Cloudflare HTTPS 隧道
适用场景
- 01远程共同修改项目文本文件
- 02主机审阅并决定访客提交
- 03查看活动用户和文件锁
MCP 相关
为 Claude Code 提供用于文件操作、锁定和审批的 MCP 工具。访客通过 stdio 代理连接主机上的 MCP 服务。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
LetsWork
通过 Claude Code 进行实时协作编码——两位开发者、一个代码库,各自使用自己的 Claude 订阅。
一位开发者主持会话,另一位可以从任何地方加入。双方都会获得一个实时 Claude Code 窗口,并连接到同一个项目,同时通过文件锁定和审批系统防止冲突。
工作原理
- 主持人在项目文件夹中运行
letswork start - Cloudflare 会自动创建安全的 HTTPS 隧道
- 系统会生成一次性 URL 和访客令牌,并将其打印出来
- 主持人将加入命令分享给访客
- 访客在自己的设备上运行
letswork join <url> --token <token> - 两位开发者现在都已连接到同一个代码库中的 Claude Code
要求
| 要求 | macOS | Windows(WSL) |
|---|---|---|
| Python 3.10+ | brew install python | Ubuntu WSL 自带 |
| cloudflared | brew install cloudflared | 请参阅下方的 WSL 部分 |
| Claude Code | npm install -g @anthropic-ai/claude-code | npm install -g @anthropic-ai/claude-code(在 WSL 内) |
| Node.js | brew install node | sudo apt install nodejs npm(在 WSL 内) |
macOS — 主持人设置
主持人是拥有项目的开发者。你负责启动会话并分享加入命令。
步骤 1 — 安装依赖项
brew install cloudflared
pip install letswork
步骤 2 — 安装 Claude Code
npm install -g @anthropic-ai/claude-code
步骤 3 — 启动会话
进入项目文件夹并运行:
cd /path/to/your/project
letswork start
系统会询问你的显示名称,随后出现会话框:
╔══════════════════════════════════════════════════════════════════════╗
║ 🤝 LetsWork Session Active ║
║ ║
║ Send this command to your collaborator: ║
║ letswork join https://abc123.trycloudflare.com --token a1b2c3d4 ║
║ ║
║ Press Ctrl+C to stop. ║
╚══════════════════════════════════════════════════════════════════════╝
复制完整的 letswork join ... 命令并发送给协作者。
系统会自动打开两个新的终端窗口:
- Claude Code — 已连接到 LetsWork
- 一个用于与协作者交流的聊天窗口
步骤 4 — 审批访客的更改
访客编辑文件时,你会在 Claude Code 中看到通知。请让 Claude:
get_pending_changes
然后批准或拒绝:
approve_change <id>
reject_change <id>
步骤 5 — 停止会话
在运行 letswork start 的终端中按 Ctrl+C。
macOS — 访客设置
访客连接到主持人的项目。你需要从主持人处获取加入命令。
步骤 1 — 安装依赖项
brew install cloudflared
pip install letswork
步骤 2 — 安装 Claude Code
npm install -g @anthropic-ai/claude-code
步骤 3 — 加入会话
运行主持人发给你的命令:
letswork join https://abc123.trycloudflare.com --token a1b2c3d4
系统会询问你的显示名称,随后会打开两个窗口:
- Claude Code — 已连接到主持人的项目
- 一个用于与主持人交流的聊天窗口
步骤 4 — 编辑文件
像平常一样让 Claude 读取和编辑文件。你写入文件时,文件会进入审批队列——主持人审核后才会写入磁盘。审批通过或被拒绝时,你会收到通知。
Windows — 访客设置(WSL)
LetsWork 在 WSL(Windows Subsystem for Linux)中运行。设置好 WSL 后,访客体验与 macOS 相同。
步骤 1 — 启用 WSL 并安装 Ubuntu
以管理员身份打开 PowerShell 并运行:
wsl --install
系统提示时重启电脑。Ubuntu 将自动安装。
从开始菜单打开 Ubuntu,并设置 Linux 用户名和密码。
步骤 2 — 在 Ubuntu 中安装依赖项
打开 Ubuntu,并逐条运行以下命令:
# Update packages
sudo apt update && sudo apt upgrade -y
# Install Python
sudo apt install python3 python3-pip -y
# Install Node.js and npm
sudo apt install nodejs npm -y
# Install cloudflared
curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64 -o cloudflared
chmod +x cloudflared
sudo mv cloudflared /usr/local/bin/
# Install letswork
pip3 install letswork
步骤 3 — 在 Ubuntu 中安装 Claude Code
npm install -g @anthropic-ai/claude-code
步骤 4 — 加入会话
在 Ubuntu 中运行主持人发给你的命令:
letswork join https://abc123.trycloudflare.com --token a1b2c3d4
系统会询问你的显示名称。Claude Code 会直接在同一个终端窗口中启动。
Windows 用户注意: Claude Code 在 WSL 终端中运行,而不是作为单独的窗口运行。其他方面的使用方式与 macOS 完全相同。
可用的 MCP 工具
主机和访客都可以在 Claude Code 中使用以下工具:
| 工具 | 可使用者 | 描述 |
|---|---|---|
list_files | 两者 | 列出文件和目录及其锁定状态 |
read_file | 两者 | 读取文件内容(仅限文本文件,大小上限为 1MB) |
write_file | 两者 | 提交文件更改(访客提交的更改需要主机批准) |
lock_file | 两者 | 锁定文件以进行独占编辑 |
unlock_file | 两者 | 释放自己持有的文件锁 |
get_status | 两者 | 显示会话信息、已连接用户和活动锁 |
get_notifications | 两者 | 快速汇总需要关注的事项 |
ping | 两者 | 验证与主机 MCP 服务的连接 |
set_display_name | 仅访客 | 设置会话显示名称 |
my_pending_changes | 仅访客 | 查看自己提交的待批准更改 |
get_pending_changes | 仅主机 | 查看所有待批准更改及其差异 |
approve_change | 仅主机 | 批准待处理的更改并将其写入磁盘 |
reject_change | 仅主机 | 拒绝待处理的更改 |
force_unlock | 仅主机 | 强制释放卡住的文件锁 |
审批流程
访客写入文件的操作不会直接写入磁盘,而是进入主机的审批队列:
- 访客请 Claude 编辑文件 →
write_file提交更改 - 主机看到:
📝 guest submitted change to server.py (ID: a1b2c3) - 主机请 Claude 执行:
get_pending_changes— 查看完整差异 - 主机批准:
approve_change a1b2c3→ 文件写入磁盘 - 或者拒绝:
reject_change a1b2c3→ 通知访客
安全性
- 随机 Cloudflare 子域名 — URL 无法猜测
- 加密令牌 — 在 URL 之外增加第二层身份验证
- 所有流量均通过 HTTPS 加密
- 防止路径遍历 — 访客无法访问项目根目录之外的文件
- 文件锁在 30 分钟后自动过期
- 无需账户、注册或持久凭据 — 主机停止后会话即结束
限制
- 每个会话最多 2 位用户(主机 + 1 位访客)
- 仅支持文本文件 — 不支持二进制文件
- 每次读取/写入操作的文件大小上限为 1MB
- 访客无法访问 Shell — 只能进行文件操作
- 主机机器上必须安装
cloudflared(macOS 上的访客无需安装,但 WSL 访客需要)
CLI 参考
letswork start [--port PORT] [--debug] # Start a session (default port: 8000)
letswork join <URL> --token <TOKEN> # Join a session as guest
架构
Host Machine:
[Project Files] ← [MCP Server :8000] ← [Cloudflare Tunnel] ← HTTPS URL
↑
Guest connects here
via stdio proxy + secret token
访客通过 stdio 代理连接,而非直接通过 HTTP 连接 — 这样可以避免 Cloudflare SSE 的可靠性问题,并提供稳定的 MCP 连接。
许可证
MIT — 请参阅 LICENSE
使用 Model Context Protocol 构建。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。