流浪汉
用于AI编码代理的TRAMP式透明远程执行。MCP服务器,通过SSH或Docker将文件和shell操作路由到远程目标。
代理人留在当地。工具远程执行。
安装
一个衬垫(必填)
go install github.com/marcfargas/tramp/cmd/tramp@latest
claude mcp add tramp -- tramp serve来自GitHub发布
从以下网址下载适用于您平台的二进制文件 发布:
# Linux (amd64)
curl -L https://github.com/marcfargas/tramp/releases/latest/download/tramp_0.1.0_linux_amd64.tar.gz | tar xz
sudo mv tramp /usr/local/bin/
# macOS (Apple Silicon)
curl -L https://github.com/marcfargas/tramp/releases/latest/download/tramp_0.1.0_darwin_arm64.tar.gz | tar xz
sudo mv tramp /usr/local/bin/
# Windows — download the zip from Releases, extract, add to PATH然后添加到克劳德代码中:
claude mcp add tramp -- tramp serve快速开始
在Claude Code会话中:
> target_add("myserver", {"type":"ssh","host":"user@myserver.example.com","shell":"bash","cwd":"/home/user/project"})
> target_switch("myserver")
# All tramp tools now execute on myserver
> bash("ls -la")
> read("/etc/hostname")工具
所有远程工具都接受可选 target 参数,指定每次调用使用哪个目标,启用多目标工作流而无需切换。
目标管理
| 工具 | 说明 |
|---|---|
target_add | 添加远程目标(SSH或Docker)。集 persist: true 保存到 .claude/tramp.json |
target_switch | 连接并切换活动目标。使用 "local" 断开连接 |
target_remove | 删除目标 |
target_list | 列出所有目标及其状态 |
target_status | 显示活动目标详细信息 |
远程操作
镜像Claude Code的内置工具签名:
| 工具 | 说明 |
|---|---|
bash | 执行shell命令 |
read | 读取文件内容(带偏移/限制) |
write | 写入/覆盖文件 |
edit | 查找并替换编辑 |
glob | 文件模式匹配 |
grep | 内容搜索 |
ls | 列表目录 |
端口转发(仅限SSH)
| 工具 | 说明 |
|---|---|
forward_port | 创建SSH隧道(本地端口→ 远程地址) |
forward_list | 列出活动端口转发 |
forward_stop | 阻止端口前进 |
配置
动态目标(主要)
通过动态添加目标 target_add。存储在会话的内存中。使用 persist: true 保存到项目配置文件。
基于文件
创建 .claude/tramp.json 在您的项目或 ~/.claude/tramp.json 全球地:
{
"default": "dev",
"targets": {
"dev": {
"type": "ssh",
"host": "user@dev.example.com",
"cwd": "/home/user/project",
"shell": "bash"
},
"docker-dev": {
"type": "docker",
"container": "my-dev-container",
"cwd": "/workspace"
}
}
}项目配置按目标名称覆盖全局。这 default 目标在启动时自动连接。
运输类型
安全外壳协议
{
"type": "ssh",
"host": "user@hostname",
"port": 22,
"identityFile": "~/.ssh/id_ed25519",
"cwd": "/remote/working/directory",
"shell": "bash",
"timeout": 60000,
"insecureIgnoreHostKey": false
}- 本地多路复用信道(
golang.org/x/crypto/ssh)--无哨兵方案 - 用于文件I/O的SFTP——二进制安全,无base64编码
- 身份验证:SSH代理(Unix+Windows OpenSSH)→ 身份文件→ 默认密钥
- 通过以下方式验证主机密钥
~/.ssh/known_hosts(套insecureIgnoreHostKey: true跳过) - 持久连接,跨工具调用重用
- 端口转发支持
码头工人
{
"type": "docker",
"container": "my-container",
"cwd": "/workspace",
"shell": "bash"
}- 命令的Docker Exec API
- 复制文件I/O的API(基于tar-based)
- 如果未配置外壳自动检测
网络边界
当目标处于活动状态时,tramp会暴露 tramp://context 将网络边界感知注入代理上下文的MCP资源:
- 内置工具(读、写、Bash等)在本地运行
- Tramp工具(读、写、bash等)在远程目标上运行
- 本地和远程路径是不同的文件系统
贝壳
两者 bash (POSIX)和 PowerShell (pwsh)在远程目标上受支持。Shell驱动程序处理每个Shell的转义和命令生成。
许可证
LGPL-3.0
