让 ChatGPT 网页端使用你电脑上的工具——读写文件、执行命令、修改代码,提供跟 Codex 类似的体验 一切经由本地控制面板:每次调用都可以先看再批,全程留痕。 注意:本项目推荐仅作为 Codex 额度不够用的平替,相比 Codex 肯定会有功能上的缺失
- 控制面板(ltb-gui):原生桌面窗口,启动即用。授权、策略、审计、接入 ChatGPT 都在这里完成。
- 内置服务与隧道:MCP 与 ChatGPT 安全隧道全部内置,无需另装任何客户端程序。
- 可选 Direct Remote MCP:保留 Tunnel 默认路径;公网模式可选 Static Bearer、OAuth 2.1 + PKCE,或高熵 Secret Path(No Auth),并可配合 Caddy 提供 HTTPS。
需要 Rust ≥ 1.88:
cd src && cargo build --release产物为 src/target/release/ltb-gui(控制面板)与 ltb-host(无界面服务)。
代码风格遵循 Rust Style Guide 的 Rust 2024 style edition(见
src/rustfmt.toml)。cargo fmt需要 Rust ≥ 1.94(rustfmt 1.9.0 起才支持style_edition = "2024"),编译本身仍只需 ≥ 1.88。
./src/target/release/ltb-gui窗口打开即代表本地服务已就绪(顶部显示「● 运行中」)。关闭窗口后,需要人工确认的调用会被一律拒绝,不会悄悄放行。
控制面板同时只能运行一个实例;重复启动会提示"已运行"。
默认策略下,模型读不到、也改不了你电脑上的任何文件。打开「工具与策略」页:
- 在工作目录区域点「选择文件夹…」,选一个你允许模型访问的文件夹(例如你的项目目录);
- 点「保存策略」。
想进一步放开,可在同一页调整每个工具的权限(允许 / 需确认 / 禁止)、默认 Shell 等。
在「MCP 设置」页:
- 填 OpenAI 平台创建的 Tunnel ID;
- 粘贴 Runtime API Key 并点「保存 Tunnel API Key」;
- 勾选「启动 GUI 时自动运行 Rust Tunnel」并点「保存 Tunnel 配置」;
- 开启开发者模式,在 ChatGPT 设置里新建 Connector,选择你的 Tunnel、扫描工具,在聊天模式下选择你创建的 Connector 即可使用
详细步骤见 让 ChatGPT 使用 Local Tool Bridge。
窗口顶部是四个页签,右上角显示服务运行状态,底部显示操作提示。需要确认的工具调用会在窗口中央弹出审批框。
启动后第一眼看到的就是它:
- 各项服务的地址(HTTP / WebSocket / MCP)与 Secure MCP Tunnel 是否在运行;
- 连接令牌——其他客户端连到本机服务时需要的口令,可一键复制;
- 当前策略概览:多少工具允许 / 需确认 / 禁止,以及是否已设置工作目录。
管理"模型能做什么":
- 工具权限:
read_file、list_dir、exec、apply_patch四个工具,逐个设为允许 / 需确认 / 禁止; - 默认 Shell:模型执行命令时用哪个终端(Windows 可选 PowerShell / Git Bash / WSL / 命令提示符);
- 工作目录:添加 / 移除模型可访问的文件夹;
- 修改后记得点「保存策略」。
每一次工具调用的流水账:时间、工具、结果(允许 / 已批准 / 已拒绝 / 用户拒绝 / 超时 / 失败)和参数。
OpenAI Secure MCP Tunnel:填入 Tunnel ID 和 Runtime API Key,勾选启用,控制面板会自动把本机 MCP 服务安全地接到 ChatGPT / Codex,无需额外安装任何东西。
模型发起需要确认的操作时,窗口中央会弹出「工具调用请求」,展示工具名、原因和完整参数。三个按钮:
- 拒绝:这次不放行;
- 仅本次允许:这次放行,下次还要问;
- 始终允许:记住这次决定,以后同样的操作不再询问。
超过 180 秒不处理,调用会被自动拒绝。
模型通过 MCP 只能看到以下 5 个工具(Codex 兼容形式):
| 工具 | 默认权限 | 说明 |
|---|---|---|
read_file |
需确认 | 读取文本文件,默认带行号;传 lineNumbers: false 可拿到逐字节一致的原文。二进制文件会被拒绝而不是返回乱码。 |
list_dir |
允许 | 列目录,可选递归与 glob 过滤。 |
exec |
需确认 | 用配置好的 Shell 执行命令,捕获输出与退出码。 |
apply_patch |
需确认 | 用补丁创建、修改、删除、移动文件。 |
关于
lineNumbers:带行号会改变行尾细节(CRLF、"末尾没有换行"会被改写)。模型要"读出来再写回去"时请用lineNumbers: false,那种模式返回的是原文本身。
- 默认拒绝:没设置工作目录、或窗口已关闭时,需要确认的调用一律拒绝——宁可失败,不悄悄放行;
- 路径沙箱:模型只能访问你添加的工作目录,
..、符号链接都绕不出去;.ssh、.env、密钥文件即使在工作目录里也读不到; - 命令黑名单:
rm -rf、磁盘格式化这类破坏性命令优先级最高,任何规则都放行不了; - 令牌保护:本机服务只监听
127.0.0.1,每个请求都校验共享令牌(连接令牌),请像保管密码一样保管它。 - 公网认证隔离:Direct Remote MCP 与 Tunnel/本地 bridge secret 分离,可选独立 Bearer、OAuth 2.1 + PKCE,或把 256-bit Secret Path 本身作为 capability credential。
注意:
exec是真实的命令 Shell,模型可以通过它发起网络请求(例如curl)。桥接不对 Shell 的出站流量做主机白名单或私网拦截,请在审批时留意命令内容。
不需要窗口时,可以直接运行内置服务:
./src/target/release/ltb-host serve-mcp # MCP,默认 http://127.0.0.1:8789/mcp
# Direct/反代模式:需显式提供 Bearer token 文件
./src/target/release/ltb-host serve-mcp --mcp-bind 127.0.0.1 --mcp-port 8792 --mcp-bearer-token-file /path/to/token
./src/target/release/ltb-host --print-secret # 只打印连接令牌注意:无界面模式没有审批窗口,需要确认的工具会被直接拒绝;想用 exec、apply_patch 请用控制面板,或在策略里设为「允许」。
配置与数据文件位置:
- Windows:
%APPDATA%\local-tool-bridge\ - macOS:
~/Library/Application Support/local-tool-bridge/ - Linux:
~/.config/local-tool-bridge/
包括连接令牌(secret)、策略(policy.json)、审计日志(audit.jsonl)、Direct MCP 配置与凭据(direct-mcp*.json / direct-mcp-*)、隧道配置(tunnel.json)等。
- 审计日志按大小轮转(8 MB),会丢弃最旧的一半。
- 控制面板的中文依赖系统中文字体。 字体按候选列表从系统加载(Windows 上依次尝试微软雅黑、黑体、宋体、等线);系统里一个候选都没有时,程序仍会启动,只是中文会退回成
□。
MIT