Pi 扩展:从任意 pi 模型使用你已连接的所有 Codex(ChatGPT)连接器——GitHub、Gmail、Google Calendar/Drive、Slack、Linear、Figma……
网站:https://wileai.github.io/pi-codex-connectors/
工作原理
- 启动
codex app-server(stdio)在首次使用时。Codex 继续掌管你的登录和连接器凭据。 - 打开一个临时的、无模型的 Codex 线程,仅启用 apps 功能;你自己的 Codex MCP 服务器对它禁用。
app/installed+mcpServerStatus/list构建已连接连接器及其工具的目录。- 工具通过以下方式运行
mcpServer/tool/call。不运行任何 Codex 模型轮次。
模型得到三个工具,而不是数百个 schema:
| 工具 | 用途 |
|---|---|
codex_connectors |
列出连接器;使用connector/query,列出匹配的工具 |
codex_connector_schema |
某个工具的完整描述和输入 schema |
codex_connector_call |
用 JSON 参数运行一个工具 |
/codex-connectors [refresh]显示目录。
写入
未标注为只读的工具需要批准。PI_CODEX_CONNECTORS_WRITES:
ask(默认):在 TUI 中弹出确认对话框;没有 UI 时(print/JSON 模式)则拒绝allow:直接运行,不询问deny:从不运行
设置
codex login #已连接连接器的 ChatGPT 账户
pi install npm:@wileai/pi-codex-connector需要 Node.js 22.19+ 和 Pi。此包是一个 Pi 扩展,不是独立的 MCP 服务器;其他 harness 必须支持加载 Pi 扩展。
或者,将该包添加到现有的packages数组中的~/.pi/agent/settings.json(个人)或.pi/settings.json(项目):
{
"packages": ["npm:@wileai/pi-codex-connector"]
}项目设置需要 Pi 项目信任。安装或更新后重启 Pi。
pi update npm:@wileai/pi-codex-connector #更新此扩展 pi update --extensions #更新当前 Pi 上的所有包
保持 npm 源不指定版本以接收稳定更新。显式版本如npm:@wileai/pi-codex-connector@0.1.1则保持固定。发布通过 npm 提供;用户自行选择何时更新。
从原始 npm 名称迁移
该包现在为@wileai/pi-codex-connector。旧名称的现有安装需要一次性迁移:
pi remove npm:pi-codex-connectors pi install npm:@wileai/pi-codex-connector
对于项目本地安装,两条命令都使用--local。之后重启 Pi。后续更新使用pi update npm:@wileai/pi-codex-connector。
PI_CODEX_CONNECTORS_CODEX覆盖 Codex 可执行文件。
测试
仅集成和场景测试;它们使用真实的 Codex app-server 和你的 Codex 登录。不消耗模型 token:pi 场景使用脚本化模型(integration/fixtures/scripted-model.ts).
使用专用的、权限最小化的账户进行公共 CI。测试将连接器响应保留在内存中,排空子进程诊断信息,并报告固定的失败标签而非账户数据。不要上传原始 Pi 转录或 Codex 诊断信息。Pi 场景将 GitHub 列入允许列表并设置显式写入策略。测试运行器使用开发 Pi 主机,该主机由make setup;PI_BIN可以覆盖它。
make setup #安装并修补开发 Pi 主机 make check #类型检查 make 测试 #integration/Makefile:test-connectors、test-pi、test-rpc
隐私与安全
连接器名称、模式和结果会进入所选 Pi 模型的上下文。Pi 和模型提供商可能会保留它们。Codex 持有凭据并不意味着连接器结果会留在 Codex 内。
在发现之前,扩展会请求会话同意。无头运行必须显式设置PI_CODEX_CONNECTORS_DATA=allow;deny会阻止访问。并发发现共享一个同意提示。会话变更会关闭先前的连接器进程并要求重新同意。同意覆盖整个会话,包括模型变更:在整个会话期间仅使用受信任的模型。
可选地通过以下方式限制发现和调用PI_CODEX_CONNECTORS_ALLOW=GitHub(逗号分隔的精确连接器名称或 ID)。空值不会暴露任何连接器。若不设置此项,所有已启用且可调用的连接器均符合条件。只读注解是提供商提示,而非独立的授权边界。
写入审批会拒绝超过 2000 个字符的参数,而不是隐藏字段。WRITES=allow会显式绕过审批;仅在受信任的自动化中使用它。破坏性工具即使同时被标记为只读,也需要写入审批。
大型结果会在内存中被截断,本扩展从不保存它们。缩小查询范围或分页以获取更多内容。旧版本遗留的现有文件不会被自动删除。
App-server 错误、启动诊断信息、工具目录错误以及失败的工具响应会隐去原始细节,因为它们可能包含本地配置或私有数据。本扩展会丢弃 stderr 而非保留它。排查问题时请在本地检查 Codex 或所连接的应用;切勿将原始诊断信息粘贴到公开 issue 中。成功的连接器响应仍会如上所述进入所选模型的上下文。
app-server 协议没有针对连接器调用的逐次取消方法。在派发后发生中止、超时或断开连接时,报告的是未知结果,而不是已取消的操作。受影响的写入会在服务生命周期内阻塞后续写入,包括刷新。在重启会话前检查已连接的应用;绝不要自动重试不确定的写入。这并非跨重启的持久幂等性。
发布
参见RELEASING.md了解初始 npm 设置和发布检查清单。发布 GitHub release 会触发.github/workflows/publish.yml:它会检查发布版本、进行类型检查、审计运行时依赖、验证包内容,并以溯源信息发布。稳定版本使用 npm 的latest标签;预发布版本使用next。
Thepi-package关键字和pi.extensions清单使已发布的包有资格进入Pi 包目录。目录索引是外部的,可能滞后于发布。
该扩展在运行时没有导入 Pi 的 SDK;Pi SDK 的 peer 依赖是可选的类型契约。请保持你单独安装的 Pi 主机已打补丁。开发设置会显式将 Pi 上游 shrinkwrap 的brace-expansion补丁到 5.0.12。make check会验证实际解析的版本,因为仅靠根 lockfile 审计可能会漏掉上游 shrinkwrap。在任何干净安装后重新运行make setup。
许可证
MIT。参见LICENSE。