内容
<h1 align="center">PatchBay</h1>
<p align="center">
<strong>将ChatGPT的上下文路由到本地Codex工作端。</strong>
</p>
<p align="center">
<img alt="状态:预发布验证" src="https://img.shields.io/badge/status-pre--release%20verified-orange">
<img alt="MCP:可流式HTTP和stdio" src="https://img.shields.io/badge/MCP-HTTP%20%2B%20stdio-blue">
<img alt="运行时:Python和FastAPI" src="https://img.shields.io/badge/runtime-Python%20%2B%20FastAPI-3776AB">
<img alt="Codex CLI基准线:0.142.2" src="https://img.shields.io/badge/Codex%20CLI-0.142.2-black">
<img alt="许可证:MIT" src="https://img.shields.io/badge/license-MIT-green">
</p>
PatchBay是一个本地MCP控制平面,用于将ChatGPT的活跃对话、项目上下文、生成的文件和长时间运行的推理路由到本地Codex CLI。它允许ChatGPT打开批准的仓库,简要介绍持久的Codex工作端,传递报告,在它们之间检查差异,并应用聊天中接受的工作,而不是在ChatGPT和终端Codex之间复制粘贴提示、文件、差异和状态注释。
在ChatGPT网络/专业版、项目、内存或另一个对话中,最佳上下文已经存在,但实际工作需要您的本地仓库、本地Codex设置、git状态、工具和执行环境时,请使用它。
| PatchBay实现的功能 | 重要性 |
| --- | --- |
| ChatGPT上下文变为可执行 | 重用深入的ChatGPT对话、项目指令、内存和生成的文件作为本地Codex工作的源材料。 |
| 无复制粘贴桥 | 通过MCP移动简报、工件、报告、差异和后续指令,而不是在应用程序之间手动传输文本。 |
| 持久的本地工作端循环 | 启动命名的工作端,重启后继续,传递上下文,在工作端之间检查报告或差异。 |
| 本地执行保持本地 | Codex仍然在您的机器上运行,针对您的仓库、git状态、工具链和配置的Codex帐户。 |
| 明确的权限边界 | 隔离的工作树、工具模式、令牌、元数据和集成预览保持强大的操作可见和可审查。 |
## 目录
- [当前准备情况](#当前准备情况)
- [功能](#功能)
- [架构](#架构)
- [快速入门](#快速入门)
- [配置](#配置)
- [公共MCP工具层级](#公共MCP工具层级)
- [权限边界和控制](#权限边界和控制)
- [开发和验证](#开发和验证)
## 当前准备情况
此分支是**预发布验证**,而非公开发布完整。
| 领域 | 状态 |
| --- | --- |
| Codex CLI基准线 | 验证 `codex-cli 0.142.2` |
| Python检查 | `compileall`通过 |
| 测试套件 | `259`测试通过 |
| 实时本地MCP探针 | `scripts/live_mcp_eval.py --json`在一次性仓库中通过 |
| 命名工作端连续性评估 | `scripts/worker_phase1_eval.py --timeout 600`在真实Codex启动/重启/继续中通过 |
| 隔离写入工作端评估 | `scripts/worker_phase2_eval.py --timeout 900`在真实Codex隔离写入/重启/继续/差异/清理中通过 |
| 多工作端协调评估 | `scripts/worker_phase3_eval.py --timeout 900`在真实Codex对等差异/报告中继中通过 |
| 工作端集成评估 | `scripts/worker_phase4_eval.py --timeout 900`在真实Codex集成预览/应用中通过 |
| 真实MCP工作端负面案例试验 | `scripts/real_mcp_worker_trial.py --include-safety-cases`通过直接MCP工作端生命周期和负面案例 |
| 直接多客户端MCP试验 | `scripts/real_mcp_worker_trial.py --multi-client --tool-mode worker`通过两会话工具模式、所有权、接管、预览和集成检查 |
| 公共隧道MCP探针 | 早期令牌化的ngrok MCP模拟器通过健康检查、`initialize`、工作模式`tools/list`、工件收件箱导入/列表/检查、隔离工作端工件附件/读取、集成排除和清理;当前运行仅因未提供验证ngrok主机名而阻塞 |
| 通过MCP的真实Codex | `codex_plan_job`通过PatchBay完成 |
| 当前Codex JSONL解析 | `agent_message`结果解析为结构化输出 |
| 真实ChatGPT开发者模式 | 待定;最新本地验证缺少浏览器自动化进行URL输入和跟踪捕获 |
| 来自ChatGPT的真实应用作业差异评估 | 待定 |
| 来自ChatGPT的真实恢复/继续评估 | 待定 |
## 功能
| 功能 | 已包含 |
| --- | --- |
| 可流式HTTP MCP端点 | `/mcp` |
| Stdio MCP传输 | `patchbay stdio`或`patchbay-stdio`用于本地MCP主机 |
| ChatGPT就绪描述符 | 工具注释、`_meta`、安全方案、调用标签 |
| 应用程序样式结果卡 | 富被动`text/html;profile=mcp-app`资源,用于工作端、工件、作业、差异和强力工具 |
| 工作空间上下文 | 树、读取、搜索、git状态/差异、AGENTS、技能、上下文包 |
| Codex编排 | 计划、应用、状态、结果、差异、取消、审查、交互、恢复 |
| 持久工作端外壳 | 发现工作端模型/推理选项、导入生成的工件上下文、启动/消息/列表/检查/停止命名Codex同事、使用隔离写入工作树并默认包含有界对等工作端上下文 |
| 仓库边界 | 允许的根、路径守卫、阻止的通配符、工作树应用作业 |
| 交接 | `.ai-bridge`计划/状态/差异和本地执行/监视脚本 |
| 权限模式 | 直接写入、精确编辑、安全/完整bash、有界转录读取 |
| 连接器UX | 可安装的`patchbay`CLI、医生、设置、启动、设置、stdio、引导设置输出、配置文件、编辑的运行时元数据、令牌门控隧道 |
## 架构
```mermaid
flowchart TD
A["ChatGPT 网络/专业版<br/>开发者模式连接器"] -->|"HTTPS /mcp<br/>令牌化服务器URL"| B["PatchBay FastAPI服务器"]
A2["本地MCP客户端"] -->|"http://127.0.0.1:8000/mcp"| B
B --> C["传输边界<br/>身份验证、请求上限、MCP会话、client_ref"]
C --> D["MCP协议表面<br/>initialize、tools/list、resources/read、schemas、annotations"]
D --> E["会话本地工具模式<br/>工作端、标准、完整、最小 + 别名"]
D --> R["丰富被动应用卡<br/>ui://widget/patchbay-tool-card-v2.html"]
E --> H["工具处理程序"]
H --> W["工作空间上下文<br/>允许的根、路径守卫、树/读取/搜索、git、AGENTS、技能"]
H --> N["工作端运行时<br/>命名工作端、模型/推理菜单、对等上下文、检查、停止"]
H --> I["工件收件箱<br/>ChatGPT文件/zip导入、清单、物化到工作端"]
H --> J["作业管理器/执行器<br/>持久作业、Codex命令生成器、JSONL解析、取消"]
H --> P["强力工具<br/>直接写入/编辑、命令、转录读取"]
H --> L["仓库突变锁<br/>repo_busy而不是隐藏的基准写入队列"]
N --> WT["隔离/共享/只读工作端工作树<br/>更改、文件读取、差异、集成预览/应用"]
I --> WT
J --> X["本地Codex CLI子进程"]
P --> Y["本地shell/文件/会话日志"]
W --> Z["批准的仓库<br/>.ai-bridge交接和上下文包"]
WT --> Z
X --> S["PatchBay运行时状态<br/>配置文件、运行时配置/状态、作业记录、工件、锁"]
```
核心运行时是Python/FastAPI。ChatGPT看到MCP表面;PatchBay将本地路径、原始会话ID、工作端工作树路径、进程日志和运行时文件保持在本地控制边界后面,除非设计了特定的公共工具来公开有界摘要。
## 需求
- Python 3.10+
- Git
- `codex` CLI在`PATH`上
- 为本地Codex CLI配置Codex CLI登录或API密钥
当前分支的推荐Codex CLI基准线:
```bash
codex --version
# codex-cli 0.142.2
```
安装依赖:
```bash
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
pip install -e ".[test]" # 用于本地测试运行
```
`requirements.txt`包含最小运行时依赖集。
`pyproject.toml`包含包元数据、控制台入口点(`patchbay`和
`patchbay-stdio`)和CI和本地验证使用的`test`额外内容。
## 快速入门
从一个 disposable git仓库开始,而不是一个私有生产检查:
```bash
tmpdir=$(mktemp -d)
mkdir -p "$tmpdir/repo"
cd "$tmpdir/repo"
git init
printf '# Disposable Eval\n' > README.md
git add README.md
git -c user.name='Eval User' -c user.email='eval@example.invalid' commit -m init
```
在不打开公共隧道的情況下检查连接器准备情况:
```bash
patchbay doctor
patchbay start --root "$tmpdir/repo" --tool-mode worker --print-only
patchbay start --root "$tmpdir/repo" --tool-mode worker --print-only --json
```
`patchbay start --print-only`打印ChatGPT设置指南,包括服务器URL、
身份验证选择、工具模式、隧道模式、确切的ChatGPT开发者模式
步骤、有用的重启/配置文件命令和令牌/隧道警告。JSON
表单在`setup_guide`下返回相同的数据,因此本地包装器可以显示
连接器步骤而不刮取终端文本。`python scripts/start.py`
和`python scripts/doctor.py`仍然是兼容性包装器。
对于本地MCP客户端,启动本地MCP服务器:
```bash
patchbay start --root "$tmpdir/repo" --tool-mode worker --save-profile
```
本地端点是:
```text
http://127.0.0.1:8000/mcp
```
对于喜欢stdio而不是HTTP的本地MCP主机:
```bash
patchbay stdio --config config.yaml
# 或,在软件包安装后:
patchbay-stdio --config config.yaml
```
对于ChatGPT网页,启动PatchBay并使用HTTPS隧道和工作端优先的工具界面。隧道启动失败并关闭,无令牌:
```bash
export PATCHBAY_HTTP_TOKEN='<long-random-token>'
patchbay start \
--root "$tmpdir/repo" \
--tunnel-mode cloudflare \
--tool-mode worker \
--save-profile \
--reveal-token
```
复制 `--reveal-token`打印的完整令牌化服务器URL。它应该类似于 `https://.../mcp?patchbay_token=...`。令牌化的ChatGPT服务器URL在您要求显示它们时会被编辑。要将Cloudflare Tunnel安装到PatchBay的本地二进制目录,请显式运行`patchbay install-cloudflared`。PatchBay还公开了隧道快捷方式:
```bash
patchbay ngrok --root "$tmpdir/repo" --hostname your-domain.ngrok-free.dev --tool-mode worker --reveal-token
patchbay stable --root "$tmpdir/repo" --hostname patchbay.example.com --tunnel-name patchbay --tool-mode worker --reveal-token
```
OpenAI的应用程序SDK文档描述了相同的连接器形状:启用开发者模式,创建连接器,粘贴HTTPS `/mcp` URL,然后打开新聊天并从`+` / 更多菜单添加连接器。参见 [OpenAI Apps SDK快速入门](https://developers.openai.com/apps-sdk/quickstart#add-your-app-to-chatgpt) 和 [从ChatGPT连接](https://developers.openai.com/apps-sdk/deploy/connect-chatgpt#create-a-connector).
使用 `--tool-mode worker`进行第一次ChatGPT验证运行;它公开了工作端工具以及检查它们所需的只读上下文工具,同时隐藏低级作业/会话控件和别名。直接令牌化的公共隧道MCP模拟已通过ngrok,包括隔离工作端中的工件收件箱传输。真正的ChatGPT开发者模式UI/工具选择运行仍然是一个发布门。
一个复制的服务器URL指向一个共享的本地服务器。连接到该URL的多个ChatGPT对话或MCP客户端可以看到相同的工作端、作业、工件和仓库状态。使用`codex_self_test`启动每个对话;它返回一个会话相关的`client_ref`、活跃的MCP会话计数和共享服务器协调说明,而不返回原始MCP会话ID。
对于多仓库验证,在启动时包含每个仓库。 `--root`设置默认工作空间并将`repositories.allowed`缩小到该根,除非提供额外的根:
```bash
patchbay start \
--root "$repo_a" \
--allow-root "$repo_b" \
--tunnel-mode cloudflare \
--tool-mode worker \
--reveal-token
```
如果工具报告某个路径在配置的允许根之外,请将其视为启动器设置问题。重启PatchBay并传递缺少的仓库 `--allow-root` 或将其添加到 `repositories.allowed`;不要变通路径守卫。
ChatGPT可以使用 `codex_tool_mode_info` 检查模式选择,并使用 `codex_tool_mode_switch` 请求会话本地模式更改。切换不会重写配置文件。直接MCP客户端在同一个MCP会话上再次调用 `tools/list` 将看到新的目录;其他会话保留自己的有效模式。ChatGPT开发者模式可能需要刷新连接器元数据后,新公开的工具才会出现。
使用以下内容创建ChatGPT连接器/应用:
```text
设置 -> 应用和连接器 -> 高级设置
开发者模式:开启
在开发者模式下强制执行CSP:开启
设置 -> 连接器 -> 创建
名称: PatchBay
描述: 将ChatGPT上下文路由到本地Codex工作端
连接器网址 / 服务器网址:粘贴 `--reveal-token`打印的完整HTTPS /mcp网址
身份验证: 无身份验证 / 无
```
ChatGPT应用身份验证设置为`无身份验证 / 无`,因为服务器网址已经包含私有PatchBay令牌。不要配置OAuth或在ChatGPT中粘贴API密钥用于此本地桥接。
ChatGPT显示广告工具后,在新聊天中添加PatchBay,从`+` / 更多菜单开始,并使用:
```text
使用PatchBay。 调用codex_self_test,然后codex_open_workspace,然后告诉我您可以查看哪些仓库以及哪些工作端工具可用。
```
参见 [QUICKSTART.md](QUICKSTART.md) 了解完整的 disposable-repo流程。
## 配置
编辑 `config.yaml` 或使用 `patchbay start --root ...` 生成私有运行时配置。
重要默认值:
```yaml
server:
host: 127.0.0.1
port: 8000
max_concurrent_jobs: 1
job_timeout_seconds: 1800
stale_running_job_grace_seconds: 5
max_request_bytes: 1048576
enable_cors: false
app:
tool_mode: full
widget_domain: https://web-sandbox.oaiusercontent.com
auth:
enabled: false
token_env: PATCHBAY_HTTP_TOKEN
allow_query_token: true
require_for_non_loopback: true
require_for_tunnel: true
tunnel_mode: none
repositories:
default: /
allowed:
- /
security:
require_git_repo: false
"default_sandbox": danger-full-access
allow_dangerously_bypass: true
allowed_env_keys:
- "*"
power_tools:
direct_write: true
bash_mode: "full"
codex_session_read: true
logging:
audit_file:
job_logs_dir:
job_state_dir:
write_raw_job_logs: false
access_log: false
workers:
worktree_root: ""
```
空白日志路径在 `PATCHBAY_HOME/runtime` 下解析 `PATCHBAY_HOME` 设置时,否则在 `~/.patchbay/runtime` 下。
设置显式路径时,请仅在您故意使用仓库本地或自定义运行时状态时执行。
对于本地环回使用身份验证可以保持关闭。对于非环回绑定地址、公共URL模式、隧道模式或显式 `PATCHBAY_HTTP_TOKEN`,每个MCP/状态请求必须包含匹配的Bearer令牌或允许的查询令牌。
首选Bearer身份验证(如果客户端支持标头):
```http
Authorization: Bearer <token>
```
复制的ChatGPT服务器网址可以使用查询令牌身份验证:
```text
https://your-tunnel.example/mcp?patchbay_token=<token>
```
永远不要提交或共享真实的令牌化网址。
## 公共MCP工具层级
规范公共名称为 `codex_*`。在 `full` 工具模式下,兼容别名如 `read`、`write`、`edit`、`bash`、`show_changes`、`git_status`、`git_diff`、`workspace_snapshot`、`export_pro_context` 和 `handoff_to_agent` 也可以被宣传。别名解析为规范的处理程序,现在公开了精确的CodexPro派生的输入模式适配PatchBay参数名称。使用 `--tool-mode worker` 获取工作端优先的界面,它隐藏了低级作业/会话控件和兼容别名,同时保留工作端工具以及检查它们所需的上下文工具。所有模式公开 `codex_tool_mode_info` 和 `codex_tool_mode_switch`,以便ChatGPT比较表面并请求临时会话本地扩展主机刷新工具列表。
### 自然语言工作流
| 工具 | 用途 | 只读 |
| --- | --- | --- |
| `codex_worker_options` | 返回一个用于工作流设置的有限 Codex 模型/推理菜单,而不暴露原始配置/目录数据 | 是 |
| `codex_worker_inbox` | 导入 ChatGPT 生成的文件或 zip 文件到本地工件上下文中,列出/检查它们,或清理本地副本 | 否 |
| `codex_worker_start` | 启动一个名为 Codex 的同事,附带英文简介;默认为隔离的写作工作目录 | 否 |
| `codex_worker_message` | 在同一个工作空间中,通过工作流名称继续或重定向同一个 Codex 对话 | 否 |
| `codex_worker_list` | 列出工作流,当前状态和最新报告 | 是 |
| `codex_worker_inspect` | 读取一个工作流的当前状态,报告,变更文件,工作流创建的文件内容,单个文件差异或集成预览 | 是 |
| `codex_worker_integrate` | 将明确接受的隔离工作流结果应用于基准 checkout,而不提交或删除工作目录 | 否 |
| `codex_worker_stop` | 停止活动回合,并可选地丢弃隔离的工作流工作目录 | 否 |
工作流派生自已保存的作业记录和 Codex 会话。人类工作流名称限定在基准工作空间内,因此 `Small Implementer` 可以存在于多个仓库中;当名称不明确时,传递 `repo_path` 或仅使用公共 `worker_id`。当 ChatGPT 需要控制底层 Codex 模型或推理深度时,它应该调用 `codex_worker_options`,然后将 `model` 和/或 `reasoning_effort` 传递给 `codex_worker_start`。当 ChatGPT 生成了一个文件或 zip 文件,而本地 Codex 应该使用时,它应该调用 `codex_worker_inbox(action="import_file")`,并将返回的工件 ID 通过 `context_from_artifacts` 传递。导入仅为本地上下文,可以重复;它们不编辑仓库。后续的 `codex_worker_message` 调用继承工作流的前一次模型/推理选择,除非明确覆盖,否则可以附加后续导入的工件。
默认写入工作流使用持久的外部工作目录,按需变更文件、文件内容和单个文件差异检查。在集成之前,`codex_read_file` 仅读取基准 checkout;使用 `codex_worker_inspect(view="file", file_path="...")` 从隔离的工作目录中读取工作流创建的文件。导入的工件复制到隔离的工作目录中的 `.ai-bridge/imported-artifacts/`,并排除变更、差异、集成预览和应用。工作流启动/消息调用可以包括来自其他工作流的限定报告/变更/差异上下文,`codex_worker_list` 返回一个简洁的 `team_report`。
如果多个 ChatGPT 对话共享一个服务器 URL,工作流和工件视图包括会话相对所有权标志。读取/列出/检查保持共享,但修改另一个连接的工作流或工件需要显式 `takeover: true` 调用,并在用户确认后。基准 checkout 修改路径,包括直接写入、命令执行、共享写入工作流和工作流集成,使用每个仓库的修改锁,并返回 `repo_busy` 而不是排队隐藏写入。PatchBay 不添加工作流数据库、消息总线、转录副本、角色引擎、自动审查链、自动提交、自动队列或自动合并队列。
### 核心 Codex 作业
| 工具 | 用途 | 只读 |
| --- | --- | --- |
| `codex_plan_job` | 使用配置的沙盒启动 Codex 分析作业 | 否(在全权限配置文件中) |
| `codex_apply_job` | 在 git 工作目录中启动隔离的 Codex 应用作业 | 否 |
| `codex_get_status` | 检查异步作业状态 | 是 |
| `codex_get_result` | 获取已完成的作业输出 | 是 |
| `codex_get_diff` | 检查已完成的 apply 作业的变更文件差异 | 是 |
| `codex_cancel_job` | 取消待处理或正在运行的本地 Codex 作业 | 否 |
| `codex_review` | 对所有权变更运行 Codex 审查 | 是 |
| `codex_interactive` | 启动异步 Codex 执行会话作业 | 否 |
| `codex_interactive_reply` | 通过异步作业继续 Codex 会话 | 否 |
| `codex_resume` | 通过异步作业恢复先前的 Codex 会话 | 否 |
| `codex_list_sessions` | 列出有界的 PatchBay 已知和配置的 Codex 主页会话元数据,不包括转录或源路径 | 是 |
### 工作空间上下文
| 工具 | 用途 | 只读 |
| --- | --- | --- |
| `codex_self_test` | 检查连接器准备情况和服务器 URL 元数据 | 是 |
| `codex_open_workspace` | 将 ChatGPT 导向允许的工作空间 | 是 |
| `codex_list_workspaces` | 列出配置的工作空间 | 是 |
| `codex_workspace_snapshot` | 返回 git 状态、最近提交、`.ai-bridge` 和紧凑树 | 是 |
| `codex_inventory` | 返回工具模式、技能、git 状态和权限模式设置 | 是 |
| `codex_repo_tree` | 返回有界的仓库树 | 是 |
| `codex_read_file` | 读取有界的文本文件片段 | 是 |
| `codex_search_repo` | 使用有界、编辑的结果搜索仓库 | 是 |
| `codex_git_status` | 显示分支和变更文件,不使用 bash | 是 |
| `codex_git_diff` | 显示有界的 git 差异,不使用 bash | 是 |
| `codex_show_changes` | 返回审查导向的状态和可选差异,可选地限定为一个文件 | 是 |
| `codex_load_context` | 加载 AGENTS、选定文件、git 和 `.ai-bridge` 上下文 | 是 |
| `codex_list_skills` | 列出发现的技能,并使用净化路径 | 是 |
| `codex_load_skill` | 加载有界的发现 `SKILL.md` | 是 |
### 交接和上下文工件
| 工具 | 用途 | 只读 |
| --- | --- | --- |
| `codex_export_context` | 在 `.ai-bridge` 下写入选定的上下文 | 否 |
| `codex_write_handoff` | 写入 `.ai-bridge/current-plan.md` | 否 |
| `codex_get_handoff_status` | 读取 `.ai-bridge` 状态工件 | 是 |
| `codex_get_handoff_diff` | 读取有界的交接差异工件 | 是 |
本地交接命令在不连接 ChatGPT 的情况下可用:
```bash
python scripts/handoff.py execute --root /path/to/repo --agent custom --command-template "my-agent --task-file {{plan_file}}" --yes
python scripts/handoff.py watch --root /path/to/repo --agent custom --command-template "my-agent --task-file {{plan_file}}" --once --yes
python scripts/pro_context.py bundle --root /path/to/repo --path README.md --include-diff
python scripts/pro_context.py apply --root /path/to/repo --file plan.md --agent codex
```
### 可选增强工具
这些是公共功能,当前完整权限配置文件默认启用它们。在 `config.yaml` 中禁用它们或启动时禁用,可以实现更窄的运行:
| 工具 | 所需配置 |
| --- | --- |
| `codex_write_file` | `power_tools.direct_write: true` |
| `codex_edit_file` | `power_tools.direct_write: true` |
| `codex_run_command` | `power_tools.bash_mode: safe` 或 `full` |
| `codex_read_session` | `power_tools.codex_session_read: true` |
`tools/list`针对这些功能是运行时感知的:如果配置文件禁用直接写入、bash 或会话转录读取,则相应的规范工具和兼容别名不被宣传,调用它们会被拒绝。检查的配置文件仍然是故意全功能的,并继续公开整个目录。
## ChatGPT 元数据和工具卡
`tools/list` 包括每个公共工具的 ChatGPT/App 元数据:`title`、读写/开放世界注释、顶级 `securitySchemes`、`_meta.securitySchemes`、`_meta.ui.resourceUri`、`openai/outputTemplate`、`openai/fileParams`(其中工具接收 ChatGPT 文件)和短调用标签。
服务器公开一个丰富的被动应用卡资源:
```text
ui://widget/patchbay-tool-card-v2.html
```
客户端可以使用 `resources/list` 和 `resources/read` 获取它。MIME 类型为 `text/html;profile=mcp-app`。当前卡片源自复制的 CodexPro 小部件子系统,并渲染限定工作流报告、工件 inbox 摘要、作业状态、差异、直接命令/写入结果、集成预览、所有权/接管状态和 `repo_busy` 锁定状态。它保持被动:它不发起工具调用。遗留的 `ui://widget/patchbay-tool-card-v1.html` URI 仍然可读以兼容,而描述符宣传 v2。
## 权限边界和控制
PatchBay 故意设计得很强大。这些控制不是产品故事,而是使其在不隐藏正在读取、写入、执行或应用的内容的情况下,将 ChatGPT 指向实际的本地工程工作的边界,使其变得实用。
- 在 disposable 仓库上保持首次运行。
- 检查配置文件故意是全功能的:允许根目录、`danger-full-access`、直接写入、完整的 bash 和 Codex 会话读取。
- 对于公共或共享运行,缩小 `repositories.allowed`,设置 `power_tools.bash_mode: "off"` 或 `"safe"`,并禁用 `allow_dangerously_bypass`。
- 除非需要受信任的本地 UI,否则保持 CORS 禁用。
- 在没有 `PATCHBAY_HTTP_TOKEN` 的情况下,不要公开 URL。
- 在用于测试的提示或仓库中不要放置机密、凭证、客户数据或私有日志。
- 使用 `blocked_globs: []`,工作空间工具不会通过 glob 阻止类似机密的路径;符号链接转义、二进制文件、大小上限和输出编辑仍然适用。
- `codex_get_diff` 仅在 git 状态/差异证明变更的文件后,从已完成的 apply 作业返回差异。
- 交接写入限定在 `.ai-bridge`。
- 直接写入、bash 和转录读取在检查的全功能配置文件中启用。
- 子 Codex 和 bash 进程在 `allowed_env_keys: ["*"]` 时继承完整的进程环境。
- 工作流模型/推理选择使用 `codex debug models` 或本地 Codex 模型缓存,用于限定公共元数据。它仅返回模型 ID 和简洁的选项元数据,而不是原始 Codex 配置路径、提示、提供商凭证或身份验证数据。
- 默认情况下,审计日志和作业状态不存储原始提示正文。
- 除非 `logging.write_raw_job_logs: true`,否则作业 stdout/stderr 工件被编辑和上限。
## 开发和验证
运行本地基线:
```bash
codex --version
PYTHONDONTWRITEBYTECODE=1 python -m compileall -q src scripts tests
PYTHONDONTWRITEBYTECODE=1 python -m pytest tests -q
PYTHONDONTWRITEBYTECODE=1 python scripts/live_mcp_eval.py --json
```
实时评估不使用 ChatGPT,不会打开公共隧道。它针对临时仓库启动真实的启动器/服务器,并表现为紧凑的 MCP 客户端。外部样式覆盖单独跟踪,具有标记的公共隧道 MCP 模拟器;最新的 ngrok 运行通过了工件 inbox 工作流流程,但仍然不是真实的 ChatGPT UI。
对于共享服务器协调检查,运行:
```bash
PYTHONDONTWRITEBYTECODE=1 python scripts/real_mcp_worker_trial.py --multi-client --tool-mode worker --json
```
该直接 MCP 试验使用两个逻辑 MCP 会话针对一个 disposable 仓库。它验证会话本地工具模式、共享检查、跨所有者变异拒绝、显式接管、所有权转移、集成前预览、无自动提交以及 `.local/validation/` 下的净化私有证据。
## 文档地图
- [docs/README.md](docs/README.md):完整的文档索引。
- [QUICKSTART.md](QUICKSTART.md):Disposable 首次运行流程。
- [docs/user/chatgpt-instructions.md](docs/user/chatgpt-instructions.md):ChatGPT 或另一个 MCP 客户端的工具使用指南。
- [docs/architecture/overview.md](docs/architecture/overview.md):当前的混合架构。
- [docs/reference/public-tool-surface.md](docs/reference/public-tool-surface.md):工具层级、模式、别名和元数据策略。
- [docs/worker-bridge/README.md](docs/worker-bridge/README.md):自然语言工作流桥架构和实现历史。
- [docs/reference/context-and-handoff.md](docs/reference/context-and-handoff.md):AGENTS、技能、上下文包和 `.ai-bridge`。
- [docs/project/why-patchbay.md](docs/project/why-patchbay.md):产品目的和价值主张。
- [SECURITY.md](SECURITY.md):漏洞报告和操作员警告。
- [docs/security/product-boundary.md](docs/security/product-boundary.md):权限控制模型。
- [TESTING.md](TESTING.md):本地检查和实时 MCP 评估。
- [docs/testing/evals.md](docs/testing/evals.md):发布评估矩阵。
- [NOTICE](NOTICE):CodexPro 属性。
## 致谢
PatchBay 包括从开源 CodexPro 工作中衍生或启发的行为、文档、测试和实现模式。有关属性和许可详细信息,请参见 [NOTICE](NOTICE)。
## 许可证
MIT
MCP 配置
以下是此 MCP Server 的配置信息,可直接复制到 Cursor 或其他 MCP 客户端中使用。
mcp.json
连接信息
猜你喜欢
暂无推荐服务器