Pi 扩展:从任意 pi 模型使用你已连接的所有 Codex(ChatGPT)连接器——GitHub、Gmail、Google Calendar/Drive、Slack、Linear、Figma……

网站:https://wileai.github.io/pi-codex-connectors/

工作原理

  1. 启动codex app-server(stdio)在首次使用时。Codex 继续掌管你的登录和连接器凭据。
  2. 打开一个临时的、无模型的 Codex 线程,仅启用 apps 功能;你自己的 Codex MCP 服务器对它禁用。
  3. app/installed+mcpServerStatus/list构建已连接连接器及其工具的目录。
  4. 工具通过以下方式运行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。