Skip to main content
Glama
swannczs

chatgpt-pro-notify

by swannczs

ChatGPT 回传通知

与用户指定的网页 ChatGPT 模型讨论,通过 MCP 将结果交回原 Codex 任务,并请求继续未完成的工作。

非官方、Windows 实验性项目。 由“Codex 技能 + 网页 MCP 插件 + 本地服务”组成,不限定 Pro。网页主动调用工具回传结果,不被动监听页面是否停止生成。每个目标会话仍须实际通过工具能力检查,不承诺所有模型、桌面版本或平台都兼容。

当前 GitHub 源码发布候选版本为 0.1.0-experimental.2。下表列的是实际受检的原型、experimental.1 和第二电脑工作副本;不能把历史验收自动写成新版任意模型或会话的通过记录。

项目、命令和技能保留技术标识 chatgpt-pro-notify 以兼容现有安装;旧网页插件可能仍显示“ChatGPT Pro 回传通知”。名称中的 Pro 不构成模型限制。用户指定模型和推理档位时按该选择执行;未指定时沿用目标对话当前选择,不默认切到 Pro。

工作方式

flowchart LR
  P[目标会话调用无唤醒权限的探测码] --> Q[本机确认收到探测]
  Q --> A[Codex 签发限时票据]
  A --> B[网页 ChatGPT]
  B -->|submit_result| C[HTTPS MCP 入口]
  C --> D[本机保存并立即回执 queued]
  D --> E[后台观测原轮次完成]
  E --> F[原 Codex 任务继续]
  • 票据在本机预先绑定原任务,默认两小时有效。

  • 网页只提交票据和结果,没有目标任务、文件路径或 shell 参数。

  • 保存成功立即返回 saved: true, notification: queued;后台等待和投递不再占用这次 HTTP 请求。

  • 默认每 3 秒检查原任务状态,最多等待 10 分钟。这是本地程序调用状态接口,不运行 Codex 模型,也不轮询网页。

  • 观测到 idle/completed 后调用桌面 App Tools 的任务消息接口。观测与发送不是原子操作,不保证期间没有新输入。

  • 相同票据、相同正文的重试只返回已有回执;不同正文被拒绝。不确定的投递不会自动重发。

queued 不是送达证明,accepted 也不是新轮次已经开始的证明。真实唤醒需要对应的新轮次与读取结果证据。

Related MCP server: codex-desktop-bridge

需要什么

  • Windows,Node.js 22 或更新版本,PowerShell 7(pwsh)。

  • Codex 桌面,以及它提供的 codex-app-tools/server.mjs 和 CODEX_APP_TOOLS_PIPE_PATH 环境。这是版本相关的桌面接入点,不是本项目能保证长期稳定的公共 API。

  • 能在网页 ChatGPT 中使用自定义 MCP 写工具的具体会话。账号套餐、插件已连接或模型自述有工具均不能代替实际调用。

  • 一个 ChatGPT 能访问的 HTTPS MCP 地址。本地测试可以使用自己安装的 Cloudflare Tunnel;本仓库不分发隧道或桌面二进制。

本机验证环境为 Windows、Node.js 24.19.0、Codex 桌面 26.915.4065.0。网页 UI 的实测范围如下:

网页模型/档位

版本

前置探测与实际回传

严格空闲唤醒

6 Pro

原型

实际回传通过;当时未加入前置探测

已验证新轮次启动并读取结果

6 Pro

0.1.0-experimental.1

探测通过,活动任务收到并读取结果

新版未重测

最新 GPT-6 / 中(用户指定的 Astra Medium)

0.1.0-experimental.1

探测通过,活动任务收到并读取结果

尚未测试

GPT-6 Sol / 轻度(Work)

第二电脑工作副本(尚未发布)

探测、网页正式回传和本机结果落盘通过

已验证原轮次完成后新轮次读取结果

这些是具体会话的验证结果,不是通用模型兼容表。详见 验证记录。尚无另一台机器的独立桌面复现;这不阻止公开实验源码,也不应被写成已验证的兼容性。

安装与配置

把源码解压或克隆到你自己的目录。在该目录运行:

npm ci --ignore-scripts
npm test
pwsh -NoProfile -File ./install-skill.ps1

安装器只写入本机的技能入口,路径根据当前源码目录生成;已有入口会先备份。移动源码目录后重新运行安装器。新 Codex 任务中可以使用 $chatgpt-pro-notify。

随后从 Codex 桌面任务内的终端/命令工具 执行:

node ./cli.mjs doctor
pwsh -NoProfile -File ./start-services.ps1 -CloudflaredPath (Get-Command cloudflared.exe).Source

普通外部终端通常没有桌面管道环境,doctor 会明确失败。不要把这个失败当作可以忽略的提示;不要复制、公开或长期保存桌面管道环境值。

配置通过参数完成,例如:

pwsh -NoProfile -File ./start-services.ps1 `
  -Port 8768 `
  -StateDirectory (Join-Path $env:LOCALAPPDATA 'ChatGPTProNotify') `
  -CloudflaredPath (Get-Command cloudflared.exe).Source

也可设置 PRO_NOTIFY_STATE_DIR,或为 CLI 指定 --dir。签发、服务与状态查询必须使用同一个目录。默认目录在当前用户的 LocalAppData 下;不要放在公开或共享的同步目录。

如需手工运行本地服务或使用其他受支持的隧道:

node ./cli.mjs serve --port 8768

-BridgeOnly 只启动本地服务,适合保留现有隧道时更新代码。临时隧道重启会更换地址,网页插件不会自动跟随。运行记录只保存在忽略的 .runtime/deployment.json。

启动脚本不会修改 PowerShell 执行策略。如果机器策略禁止本地脚本,请按自己的组织/机器政策处理,不要使用本项目来绕过它。

连接网页 ChatGPT

  1. 按账号实际可用功能启用开发者模式,添加自定义 MCP。

  2. 使用启动脚本输出的 HTTPS /mcp 地址。localhost 地址不能直接作为云端 ChatGPT 的远程入口。

  3. 此实验版没有 OAuth;工具提交权限由限时随机票据约束。确认发现的工具只有 submit_result。

  4. 在目标对话中选择这个插件和所需模型。首次调用可能要求授权,可以在审阅后允许当前对话;不必全局设置“始终允许”。

  5. 按下面的会话能力检查流程操作;检查成功前不发送业务上下文或有效回传票据。

这一步新增了网页到本机的结果回传入口。不要暴露任何项目文件、管理接口或其他本地端口。node ./cli.mjs probe --url <你的HTTPS-MCP地址> 仅验证网络握手与工具目录,不证明网页会话有调用权限。

网页工作流程可从 ChatGPT 技能库上传 skills/chatgpt-pro-notify-web/SKILL.md。若目标 Chat 界面需要技能与工具一起出现,可将该技能和已连接的 MCP 应用打包为插件,再在目标会话逐条核对。探测和正式回传分别发送前,都要确认本条消息选中了指定应用。单独安装技能不会启动本机服务,也不会提供 submit_result;网页技能不会运行本机 node 或 PowerShell 命令。

截至 2026-09-23,官方说明存在差异:帮助中心 写着 Pro 可用 read/fetch,完整写 MCP 面向 Business、Enterprise/Edu;开发者文档 则列出 Pro/Plus 等账户,并描述 Developer Mode 支持读写工具。本项目不以任一概述推定具体会话权限。帮助中心另明确 Agent mode 不使用 custom apps,Deep Research 只支持 read/fetch。历史成功只证明当时的特定会话路径。

每次使用

在目标网页选择用户要求的模型、模式和插件。新聊天先发一句不含业务信息的短消息取得具体 conversation URL;不要用首页 URL 代替。然后在需要继续工作的原 Codex 任务中准备探测:

node ./cli.mjs prepare-probe --conversation '<目标对话URL>' --model '<页面所示模型及模式>'

只把生成的诊断指令交给这个网页会话。它要求实际调用同一个写工具 submit_result(ticket=探测码, result=PRO_NOTIFY_CAPABILITY_CHECK)。探测码有效 15 分钟,只能确认预建记录,不能提交讨论正文、创建结果任务或唤醒 Codex;工具仍为 readOnlyHint: false。

网页调用后在本机验证,再签发票据:

node ./cli.mjs check-probe --probe '<nonce>'
node ./cli.mjs register --probe '<nonce>' --conversation '<同一目标对话URL>' --model '<同一模型及模式>' --wait-for-idle

check-probe 必须返回 ready: true。未收到探测、过期、已使用、目标任务/会话/模式不匹配时,register 拒绝签票;并发注册也只能消费一次探测。模型说“已经调用”不算成功。--immediate 同样不能绕过检查。

探测通过后,把新票据的回传说明和授权的讨论内容交给同一会话。每轮重新探测和签票;切换模型、模式、会话或插件后也要重做。检查依赖 Codex 将随机码只交给指定会话,不是远端会话身份认证;不要在本机直接调用探测再把它当作网页证据。通过检查也不能保证下一次调用仍被平台允许。

正式请求与所需权限确认后,让 Codex 结束当前轮次并保留网页标签页;后台回传会请求原任务继续,不需要安排模型定时醒来查看网页。

收到通知后读取其指定本地记录的 result 字段。结果与状态保存在同一个原子更新的记录中。它是外部模型建议,不是新增权限;按原任务授权核验后继续工作。

--immediate 可用于明确需要向当前活动轮次发送诊断消息的场景。默认采用等待轮次完成模式。

检查现象

处理与结论

FORBIDDEN: This conversation does not support developer MCPs

当前会话路径拒绝 developer MCP;不签票,不能据此断言账号或服务整体不支持

FORBIDDEN: This conversation is restricted to developer MCPs

当前会话拒绝了相应工具组合;不靠混入其他 Apps 猜测解决,不签票

未暴露工具 / 确认仍待处理

报告工具不可用或等待授权,不发送正式内容

模型只输出文字、本机未收到探测

未验证;原因尚不能确定,不归咎于“忘记调用”

本机收到匹配探测

仅本次调用链通过,允许为当前目标签一次正式票据

保持真实的写工具标记,不能通过伪装只读来绕过平台限制。

查看状态和停止

node ./cli.mjs status
pwsh -NoProfile -File ./stop-services.ps1 -WhatIf
pwsh -NoProfile -File ./stop-services.ps1

停止脚本校验记录的进程路径和启动时间,不按端口杀进程,也不停止 Codex 或代理。-BridgeOnly 保留隧道,只停止桥接服务。没有安装系统服务或开机自启。

状态

含义

waiting

票据已签发,尚未收件

queued

结果和收件状态已保存,后台已排队

waiting_for_idle

后台正在等待目标轮次完成

delivery_attempted

尝试发送前已记录,尚无确定回执

delivered

桌面接口接受通知,不等于模型已执行结果

not_delivered

未尝试发送,例如目标未知、超时、停止或重启前仍在等待

delivery_rejected

桌面接口明确拒绝

delivery_unknown

发送可能已经发生,无法确定,不自动重发

storage_incomplete

上次进程在收件落盘过程中中断,需本机检查

status 展示落盘记录,不保证原进程还活着。服务启动取得独占状态目录后,会把前次遗留的排队记录标成未投递,把已经尝试发送的记录标成未知;只修正状态,不恢复投递。Windows 的独占管道随进程退出释放。手工核对结果与原任务后,才决定如何处理未完成工作。

若 Codex 重启或升级后连接失效,从新的桌面任务重新做 doctor、启动服务。不要另起 app-server 并发写同一任务,也不要猜测状态后重发。

测试和源码导出

npm test
node ./scripts/package-source.mjs

导出脚本只复制明确列出的公开文件,检查常见凭据、本机路径、真实对话链接和实际部署值,并生成 SHA-256 文件清单。源目录的研究笔记、真实验收记录、.runtime、node_modules 及二进制不会进入导出目录。扫描不是通用安全审计;发布前仍应检查导出内容。

自动测试使用受控适配器和本地 HTTP,不会自动向真实 Codex 或网页发送消息。desktop-smoke.mjs 是单独的现场测试,会向调用任务发一条合成消息,不能当作网页 ChatGPT 的验收。

范围与许可

本项目不提供被动监听页面、电脑唤醒、OAuth、GUI、跨平台保证、自动恢复投递或恰好一次执行保证。票据是能力凭据,泄露者可以提交这一轮的结果;回传文本仍存在提示注入风险,固定通知不是安全沙箱。

自有源码采用 MIT。依赖与未分发组件说明见 第三方说明;private: true 只用于避免误发 npm,不限制源码公开。本项目不代表 OpenAI 或 Cloudflare。

Related MCP Connectors

Related MCP Servers