甘德
注: 在Claude Code原生支持WSL/Windows与Claude Desktop集成之前,此项目是一种解决方法。已追踪 人类学/克劳德编码#12506.
Gandr是Windows上Claude Desktop的WSL桥接器。
它作为MCP服务器工作, 不 原生Claude Desktop集成。Claude Desktop通过stdio上的模型上下文协议与Gandr通信,Gandr公开了一组工具;一个将任务委托给WSL内运行的Claude Code,还有几个直接在WSL文件系统上运行。
当Gandr委派任务时,它会在非交互式打印模式下生成Claude代码(claude -p),重写提示 stdin,并将结果流式传输回Claude Desktop。
这不是WSL中本机运行的Claude Desktop。它是Windows上的Claude Desktop,通过Gandr将MCP工具调用路由到WSL。
Claude Desktop Code选项卡尝试在Windows上本机运行Claude Code,而不通过Gandr或WSL路由。它不适用于此设置。使用聊天选项卡执行所有任务。
为什么甘德
Gandr适用于那些想要Claude Desktop的聊天UI,但希望在真实的Linux环境中而不是Windows主机中执行的人。
它将Claude Desktop作为前端,同时通过WSL中运行的Claude Code路由编码、shell和文件任务。这意味着Claude使用的Linux工具、点文件、身份验证状态和钩子与您在正常WSL设置中使用的相同。
这个名字来源于古挪威语 _甘道_,神奇的管道或渠道。它的词根与 Galdur.
需求
- 带WSL2的Windows
- 在您的机器上运行WSL发行版
- 克劳德桌面版 安装在Windows上
- 克劳德代码 在WSL内部安装并验证
claude可在WSL上使用PATH- 包子 如果要从源代码构建,请安装在WSL中
安装流程针对您运行它的任何WSL发行版。如果无法检测到发行版,则使用Ubuntu作为后备。
甘德做什么
Gandr充当Claude Desktop和Claude Code之间的狭窄MCP桥梁。
在实践中,流程看起来像这样:
Claude Desktop (Windows UI)
-> starts gandr through wsl.exe
-> gandr receives MCP requests over stdio
-> gandr invokes Claude Code inside WSL
-> Claude Code runs with your Linux environment and tools
-> result is returned to Claude DesktopGandr不作为后台服务运行。Claude Desktop会在需要时启动它,当Claude Desktop退出时,Gandr也会退出。
从源代码安装
如果您正在本地开发或想自己构建二进制文件,请使用此选项。
- 克隆存储库:
git clone https://github.com/kyle-undefined/gandr.git
cd gandr- 运行本地安装程序:
bash ./install.local.sh安装程序将:
- 检测WSL架构
- 构建匹配的Linux二进制文件
- 安装
gandr二进制到~/.local/bin/gandr和那个gandr-weaver包装机~/.local/bin/gandr-weaver - 打印
gandr要添加到的MCP服务器条目%APPDATA%\Claude\claude_desktop_config.json - 打印已安装的版本
然后添加或更新 gandr 手动在Claude Desktop的配置中输入。打印的配置指向Claude Desktop gandr-weaver,加载WSL shell环境,然后执行 gandr.
即使克劳德桌面打开,您也可以重新运行安装程序来更新Gandr。安装应该仍然成功,但Claude Desktop必须完全重新启动才能获取新的二进制文件。
从GitHub版本安装
如果您想要预构建的二进制文件而不是从源代码构建,请使用此选项。
如果你想直接从GitHub获得最新版本,你可以使用:
curl -fsSL https://github.com/kyle-undefined/gandr/releases/latest/download/install.sh | bash该版本托管的安装程序已固定到匹配的版本,并根据以下内容验证下载的二进制文件 gandr-checksums.txt 在安装之前。
如果你想明确地固定一个特定的版本,你可以这样做:
VERSION=1.0.0
curl -fsSL "https://github.com/kyle-undefined/gandr/releases/download/${VERSION}/install.sh" | GANDR_VERSION="$VERSION" bash这将安装您指定的确切版本,并仍然根据该版本进行验证 gandr-checksums.txt.
安装程序打印 gandr 您应该添加到的MCP服务器条目 %APPDATA%\Claude\claude_desktop_config.json。该条目针对的是 ~/.local/bin/gandr-weaver,然后执行已安装的 gandr 二元的。
即使克劳德桌面打开,您也可以重新运行安装程序来更新Gandr。安装应该仍然成功,但Claude Desktop必须完全重新启动才能获取新的二进制文件。
可选的Gandr运行时标志,如调试日志记录和Claude子超时,是在Claude Desktop的MCP服务器参数中配置的,而不是在Claude桌面本身中配置的。
快速开始
- 从源代码或版本安装Gandr。
- 确认
claude在WSL发行版中工作。 - 在Windows上完全重新启动Claude Desktop。
- 在Claude Desktop中打开对话。
- 让Claude在需要编码、编辑文件或运行shell命令时使用Gandr MCP工具。
一旦安装,Gandr基本上是透明的。您继续正常使用Claude Desktop,执行通过Claude Code路由到WSL。
如果你想添加可选的Gandr标志,配置形状如下:
{
"mcpServers": {
"gandr": {
"command": "wsl.exe",
"args": [
"-d",
"Ubuntu",
"--",
"/home/you/.local/bin/gandr-weaver",
"--log-level",
"debug",
"--claude-timeout-ms",
"3600000"
]
}
}
}使用 gandr-weaver 在Claude Desktop配置中,不是 gandr 直接。安装程序会同时创建以下两项: gandr 是实际的二进制文件,以及 gandr-weaver 是Claude Desktop启动的包装器吗 wsl.exe.
--claude-timeout-ms 是通过Claude Desktop配置传递的Gandr服务器选项。这不是Claude Desktop的本地超时设置。
外露工具
桥
| 工具 | 说明 |
|---|---|
gandr | 将任务编织到WSL中运行的Claude代码中 |
直接(无需克劳德代码)
| 工具 | 说明 |
|---|---|
read_file | 从WSL文件系统读取文件 |
read_file_range | 从文件中读取特定行范围 |
write_file | 写入或覆盖WSL文件系统中的文件 |
append_file | 将内容附加到文件(如果缺少则创建) |
patch_file | 替换文件中唯一的字符串(仅匹配一次) |
list_dir | 列出目录内容 |
delete_file | 删除文件 |
delete_dir | 递归删除目录 |
move_file | 移动或重命名文件或目录 |
file_exists | 检查文件或目录是否存在 |
stat_path | 检查文件、目录或符号链接元数据 |
create_dir | 创建目录(递归) |
copy_file | 复制文件 |
read_dir_tree | 递归列出包含文件大小的目录树 |
search_files | 递归搜索与glob模式匹配的文件 |
grep_content | 在文件或目录下搜索文件内容 |
Claude Desktop自行处理MCP调用。在正常使用中,您不需要手动调用这些工具。
钩子和环境
因为Claude Code在WSL环境中运行,Gandr继承了该环境的行为,而不是替换它。
- 您的WSL shell环境已使用
- Claude Code可以直接访问您的Linux文件系统
- 如果已安装CLI工具,则它们可用
PATH - 您的Claude代码配置和钩子仍然适用
如果你已经使用了Claude Code钩子,比如 PreToolUse,当任务通过甘德输送时,它们会继续运行。
运行时、隐私和安全注意事项
- Gandr允许Claude Code访问您的WSL环境,而不是受限制的沙盒
- 这座桥故意援引克劳德密码
--dangerously-skip-permissions;这是设计的一部分,因此只能在您信任的WSL环境中运行Gandr - Claude Code可能会读取或写入WSL用户可以访问的文件
- 甘德本身就是一个桥梁层;它不捆绑模型
- Gandr不提供超出Claude Desktop、Claude Code或您自己的环境已经执行的任何策略之外的额外策略执行
- Gandr适用于您自己的机器上的本地使用
故障排除
Claude Desktop看不到Gandr
检查 %APPDATA%\Claude\claude_desktop_config.json 在Windows上,确认它包含 gandr 进入下 mcpServers.
然后完全重新启动Claude Desktop。
在Claude Desktop打开时进行更新
如果Claude Desktop已经运行了Gandr,重新安装会替换磁盘上的二进制文件,但不会替换已经运行的进程。
Claude Desktop必须完全重新启动才能获取新的二进制文件。
claude 找不到
确保WSL中安装了Claude Code,并且 claude 解决WSL问题 PATH.
您可以通过WSL验证:
which claude
claude --version健康检查
您可以使用以下命令确认二进制文件可在WSL内运行:
gandr --healthcheck预期产量:
ok医生
您可以使用以下命令运行本地WSL诊断:
gandr --doctor医生命令检查:
claude解决WSL问题PATHclaude --version跑claude auth status --json报告已登录的会话- 如果存在,您的本地Gandr安装路径看起来是一致的
gandr --doctor 是故意WSL本地。它不会检查Claude Desktop的Windows配置,也不会尝试实时模型调用。
长期运行的Claude任务
默认情况下,Gandr不会强制克劳德子节点超时。
如果你想要一个,通过 --claude-timeout-ms 在Claude Desktop MCP服务器参数中。超时时,Gandr首先发送 SIGTERM,短暂等待,然后才升级到 SIGKILL 如果克劳德还在跑步。
调试日志
Gandr调试日志由Gandr控制,而不是Claude Code。
使用 --log-level debug 在Claude Desktop MCP服务器参数中启用调试日志。甘德把那些日志写到 stderr 并保持MCP协议流量开启 stdout.
如果 --log-level 如果设置了,Gandr还会将相同的过滤日志写入标准Linux/WSL状态位置:
~/.local/state/gandr/gandr.log如果 XDG_STATE_HOME Gandr使用:
$XDG_STATE_HOME/gandr/gandr.log该文件仅可追加。如果在长期运行的包装器或服务中运行Gandr,请配置外部轮换,例如 logrotate.
发展
常用本地命令:
bun install
bun run check
bun run format
bun run lint
bun run build
bun run build:x64
bun run build:arm64
bun run healthcheck
bun run version释放
发布标签应匹配 package.json.
GitHub Actions构建发布工件并从标签中发布它们。
许可证
根据 MIT许可证.
