@anusornneal/chat-relay

中文文档
1.6.0发布于 2026/10/30ES Module构建来源已验证近 30 天下载 2906

使用终端,文件系统,流程,多用户,多代理支持的ChatGPT零检查出远程MCP代理.

中文使用文档
文档目录15 节
  1. 快开始
  2. 1. 连接ChatGPT
  3. 2. 运行本地代理 npx
  4. 自营的Cloudflare账户
  5. npx 命令
  6. ChatGPT 能访问的
  7. 如何运作
  8. 安保模式
  9. 本地配置
  10. 发展
  11. 行政部门
  12. 平台注释
  13. 更多信息
  14. 账户范围已学习
  15. 明确一发子弹 学习准备

聊天中继

通过Cloudflare托管的中继器让ChatGPT与本地Windows或macOS机一起工作的远程MCP中继.

盘子 : https://chat-relay.anusorn-hank.works.dev/ 页面存档备份,存于互联网档案馆

学习基线 : 见 范围、写作格式和安全剂环境指导。 。 。 .

学习用法排名 : 见 接收语义、评分和Cloudflare资源成本。 。 。 .

共享学习组 : 见 组设置、作用、核准流程和资源限制。 。 。 .

发布状态 : v1.0 稳定供内部使用。 支持Windows和macOS本地代理;Linux桌面控制目前尚未被实施. 1.0后修复和操作加固作为普通补丁放出.

快开始

有两个部分:

  1. 连接 ChatGPT 到中继器 .
  2. 运行您想要查特GPT访问的计算机上的本地代理.

1. 连接ChatGPT

将制作的 MCP 服务器添加到 ChatGPT :

https://chat-relay.anusorn-hank.workers.dev/mcp

当 ChatGPT 打开授权流时完成 OAuth 签名 .

ChatGPT MCP 应连接到平原 /mcp 终点 遗产 /mcp?key=<USER_TOKEN> 流动仅在移徙期间才有,不应用于新的连接.

ChatGPT连接到云继电器. 要实际访问计算机上的文件,终端,处理或桌面控制,该计算机还必须运行下面的本地代理.

2. 运行本地代理 npx

要求:节点20或更新.

从任何目录中 :

npx @anusornneal/chat-relay@latest remote

在第一次运行时,Chat Relay打开了基于浏览器的设备授权. 选择 继续谷歌并授权计算机,然后返回终端。 设备登录需要配置的Google OAuth,不接受本地用户名/密码字.

CLI 在可用时使用 Windows DPAPI 或 macOS 密钥链保存用户配置中的设备证书(带有权限限制的文件倒置), 因此以后您可以重新连接到同一命令 :

npx @anusornneal/chat-relay@latest remote

启用桌面截图、 鼠标和键盘访问 :

npx @anusornneal/chat-relay@latest remote --desktop

限制文件系统访问特定根 :

npx @anusornneal/chat-relay@latest remote --root "C:\Users\you\Projects"

自营的Cloudflare账户

一个Git克隆包含源和部署模板,而不是Cloudflare资源,账户,秘密,或现有数据. 默认 wrangler.jsonc 没有生产 URL 或 Google OAuth 客户端 ID .

  1. 创建您自己的 Cloudflare 账户和 Google OAuth Web 应用程序 。 登记册 https://YOUR-WORKER.workers.dev/admin/google/callback 作为授权重定向 URI .
  2. 复制 wrangler.selfhost.example.jsonc 改为 wrangler.selfhost.jsonc,并更新 PUBLIC_BASE_URL, (中文(简体) ), GOOGLE_CLIENT_ID 还有工人的名字.
  3. 使用 npx wrangler secret put SECRET_NAME --config wrangler.selfhost.jsonc 页:1 ADMIN_TOKEN, (中文(简体) ), AGENT_TOKEN, (中文(简体) ), CALLER_TOKEN,以及 GOOGLE_CLIENT_SECRET从不承诺价值观.
  4. 运行 npm run deploy:selfhost。缺失值或原主机生产 URL 被拒绝.
  5. 连接 ChatGPT 到 https://YOUR-WORKER.workers.dev/mcp,然后使用 npx @anusornneal/chat-relay@latest remote --relay https://YOUR-WORKER.workers.dev。 。 。 .

CLI的无参数模式仍然与现有用户的主机服务相接. 设置 --relay 明确更改目标(如果不同,则触发登录)。 需要行政脚本 RELAY_URL 要明确配置。 主机生产部署用途 wrangler.production.jsonc 并且只能通过明确的CI部署旗来启用.

npx 命令

命令它会做什么
npx @anusornneal/chat-relay@latest remote将这台计算机连接到 Chat Relay 并保持本地代理运行. 启用此设备所允许的能力, 如文件、 终端和进程 .
npx @anusornneal/chat-relay@latest remote --desktop启用桌面截图/输入支持启动代理 。 桌面权限也必须由中继器授予.
npx @anusornneal/chat-relay@latest login在不启动长期代理的情况下, 签名并注册此计算机 .
npx @anusornneal/chat-relay@latest login --force强制新的签入和装置授权。 当证书被吊销或需要替换时有用.
npx @anusornneal/chat-relay@latest status显示已签名的账户、设备、中继 URL、在线状态、范围、代理版本、协议兼容性、生命周期状态、允许的根和桌面状态.
npx @anusornneal/chat-relay@latest drain停止接受新的长期工作,这样积极的工作就可以在重启前完成.
npx @anusornneal/chat-relay@latest resume取消排水模式并恢复正常工作录取.
npx @anusornneal/chat-relay@latest restart排水完成后恢复本地代理,代理机准备重新启动.
npx @anusornneal/chat-relay@latest upgrade排水完毕后,把当地特工交给 @anusornneal/chat-relay@latest 并重新连接保存的配置.
npx @anusornneal/chat-relay@latest logout撤销此计算机登录并删除其本地证书 .
npx @anusornneal/chat-relay@latest help显示 CLI 使用和可用的选项 .

有用的选项 :

--root <path>       Allowed filesystem root. Use semicolons for multiple roots.
--name <name>       Computer display name.
--agent-id <id>     Stable agent identifier.
--desktop           Enable desktop access.
--no-desktop        Disable desktop access.
--no-open           Do not open the login browser automatically.
--force             Force a new login.
--relay <url>       Use another Chat Relay deployment.

ChatGPT 能访问的

Chat Relay可以根据设备的授予和本地配置

  • 在已配置的根内进行文件系统操作 .
  • 终端命令和持续终端会话 。 短暂的无国籍命令会自动再用一个跨平台的 shell 池;状态命令会回落到孤立的处决.
  • 流程检查和终止.
  • Windows/macOS截图,鼠标输入,以及当桌面访问被明确启用时键盘输入.
  • 多个计算机在一个账户下,每个设备的路由和权限.
  • 来自ChatGPT的代理生命周期控制,有流程许可:检查状态,排出/恢复,重新启动,以及安全地交给最新公布的软件包.
  • 剪接文件系统、终端和桌面操作以减少远程往返.

桌面访问是选入的 。 Linux 桌面控制目前尚未执行 .

如何运作

ChatGPT
   |
   | Streamable HTTP MCP + OAuth
   v
Cloudflare Worker
   |
   +-- Registry Durable Object
   |
   +-- Relay Durable Object
           |
           | WebSocket
           v
      Local Agent
      - files
      - terminal
      - processes
      - desktop

ChatGPT只和云MCP端口交谈. 本地计算机打开出入口的WebSocket连接到中继器.

安保模式

  • ChatGPT MCP认证使用OAuth 2.1授权代码流与PKCE.
  • 本地计算机使用浏览器/设备授权;原始代理符号不需要手动复制.
  • 文件系统访问被限制于配置允许的根 .
  • 访问基于范围:读取,写取,终端,进程,桌面读取,桌面控制可以单独授予.
  • 桌面访问默认被禁用 .
  • 存储的证书酌情由散列服务器端.
  • 本地用户和代理代号保存在外部 config.json;Windows使用用户绑定的DPAPI,而macOS在可用时使用Keychain.
  • 错误的用法/审计遥测仅为元数据,不包括命令、文件内容、截图、剪贴板内容和证书.

Chat Relay目前用于小型可信任的团队,而不是企业零信任控制平面.

本地配置

默认 CLI 配置位置 :

  • 窗口 : %LOCALAPPDATA%\chat-relay\config.json
  • macOS/ Linux : (中文(简体) ) $XDG_CONFIG_HOME/chat-relay/config.json 或者说 ~/.config/chat-relay/config.json

设定 CHAT_RELAY_HOME 以覆盖配置目录. config.json 存储非机密设置并加上证书存储类型;认证符被单独存储。 Linux 和 CI 环境使用模式 -0600 secret-file倒置,除非明确选择另一个商店.

单个账户可以拥有多台计算机. 每台计算机都有自己的代理身份和证书.

发展

仅在开发 Chat Relay 本身时将存储器克隆 。 普通用户应使用零检查退出 npx 向上流动.

代理必须只在必要时并在内部创建新的 WIP 备份或 Git 工作树 拥有目标项目 .workspace/ 文件夹( 例如 ). chat-relay/.workspace/worktrees/<id>) (中文(简体) ). 不创建兄弟项目文件夹 。 见 项目工作空间政策 财务报告和审定财务报表 AGENTS.md;现有的遗留文件夹在经过核实的清理之前保持不变.

共同开发命令 :

npm install
npm start
npm run dev
npm run test:hardening
npm run test:soak
npm run verify:publish

默认的浸泡测试运行了2000个定型重联/遥测/TUI迭代而无活云接力. 在地方较长的时间内:

CHAT_RELAY_SOAK_ITERATIONS=100000 npm run test:soak

动力壳:

$env:CHAT_RELAY_SOAK_ITERATIONS=100000; npm run test:soak

npm run verify:publish 检查公布的文件集、CLI入口点、工人干地建筑、审查文物和生产依赖性审计.

行政部门

行政独立于公共MCP接口. 管理工具管理用户、代理、赠款、生命周期、审计数据和业务清理.

运算符命令可通过:

npm run admin -- <command>

保留 ADMIN_TOKEN 以及从客户端配置和源控制中部署其他机密.

可选 Cloudflare 压力断路器配置 USAGE_RECORD_DAILY_BUDGET (在逐个同位素预算之后,按可选用用途记录DO呼叫)和 USAGE_DASHBOARD_PUBLISH_DAILY_BUDGET (封顶可选的仪表板发布来自使用持久对象的呼叫). 两者都默认为已停用,也是保障措施,不准确的Cloudflare计费表. Cloudflare 1027/429/资源出错后,当地TUI健康监测器也自动退后.

平台注释

  • 本地代理商:Windows和macOS.
  • 桌面控制:Windows和macOS.
  • Linux 桌面控制: 未执行 .
  • MCP运输:可流取HTTP过HTTP.
  • 本地代理运输:出站WebSocket.
  • 节点.js:20+.

更多信息

账户范围已学习

Chat Relay可以坚持每个经认证的账户中结构化的小块执行上下文. 学习是 非示范培训 它不会自动捕捉对话或普通工具有效载荷.

MCP表面为:

  • learn_prepare 为目前的任务执行一个明确、具有相关性的准备证。 它可以将全球记忆、项目记忆和代理记忆结合起来,然后将它们排入一个咨询背景包.
  • learn_get 在需要目标检查时,阅读选定范围原始记忆.
  • learn_put 当Chat决定一个可重复使用的信号值得保存时,创建或更新一个持久的内存.
  • learn_delete 删除一个内存.
  • learn_merge_projects 支持直接聊天项目合并而无需桌面控制。 打电话 action=preview 与 from 财务报告和审定财务报表 to 第一; 显示计数/ 冲突密钥, 并在此之前获得明确的用户确认 action=commit 与 confirmed=true 和一个用途 confirmationToken。预览在10分钟后或当源/目标内存元数据发生变化后过期。 合并使用现有的账户范围交易后端,保存ID和反馈,并永久地别名源名. 该工具从不基于类似名称自动合并.
  • learn_feedback 记录一个内存的正反反馈.

使用从服务器端选择的专用学习持久对象,通过认证账户对记忆进行分割 user.id。呼叫者不能提供或覆盖账户代号。 支持范围为 global, (中文(简体) ), project,以及 agent;项目和代理记忆需要范围密钥.

故意学习轻量级:没有嵌入式、矢量数据库、当地LLM、记录誊本摄取或每个工具的调取读取/写取。 普通中继工具调用 没有 触摸学习持久对象。 存储更改仅在请求明确学习突变时才会发生. 每个账户被封顶为512个记忆,每个内存内容字段被封顶为4000个字符,而原始读取回封顶为最多100个记录. 不要在"学习"中存储证书,令牌,秘密,原始工具有效载荷,终端输出,文件内容,或截图.

明确一发子弹 学习准备

聊天决定学到的背景是否对任务有用. 当它是,聊天打电话 learn_prepare 一次并重用返回的上下文来完成该任务的其余部分,而不是在每个工具呼叫之前重新准备.

flowchart TD
    U[User starts or continues a task] --> D{Would prior learned context materially help?}
    D -- No --> R[Use ordinary Relay tools]
    D -- Yes --> P[Chat calls learn_prepare once]
    P --> G[Read account-global Learn]
    G --> K[Resolve explicit or project-root project]
    K --> PJ[Read project Learn when available]
    PJ --> A[Resolve explicit or preferred agent]
    A --> AG[Read agent Learn when available]
    AG --> Q[Rank by task query + tool hint + scope]
    Q --> C[Compact to bounded advisory context]
    C --> R2[Chat reuses prepared context for the task]
    R2 --> X[Use ordinary Relay tools without more implicit Learn reads]

裁定边界是故意的:

  • 聊天决定语义学习使用 : 是否准备上下文,纠正/偏好/工作流动是否具有足够的耐受性以便学习,以及目标原始内容何时 learn_get 这是需要的.
  • 可重复使用的用户更正是指默认情况下的主动学习信号: 当用户直接更正工作流程、工具使用、编码惯例或响应行为中可重复使用的错误时,Chat应当调用 learn_put 在同一回转时,没有等待明确的“学习”。 使用全球范围进行跨项目行为,项目范围进行具体项目行为,并跳过一次性情况细节.
  • 中继只完成机械准备 learn_prepare 明确称为: 账户隔离,项目路径从明确的 project-root:<projectKey> 记忆或明确 projectKey,首选代理的路由,定界读取,关联性排名,和收缩.
  • 普通工具保持热道清洁: ping_agent,文件工具,终端工具,桌面工具等MCP调用不自动读取,排序,注入,或写入"学习".
  • 学到的提示仍然是咨询性的,绝不凌驾于授权、赠款、允许的根基、破坏性工具政策、能力检查、安全或目前的用户请求之上.

项目别名是存储在学习持久对象中的账户范围映射. 使用 我的学习 – 合并项目 以加入工作空间名称(例如) buddy-android → buddy2)一次,同时保留内存ID,回馈和时间戳;源成为未来学习的永久化名并跨机器读取/写入. 从未从类似名称中推断出异名,项目解析只发生在学习请求中,而不是在普通工具呼叫中。 合并以交易方式运行; 与不同内容相冲突的密钥被重新命名而不是丢弃 。\ n\ nout 提示是明确的记忆 。 全球 project_context 带有密钥的内存 project-root:<projectKey> 存储混凝土工程根。 A 类 preferred-agent 内存可能存在于项目范围(首选)或全球范围(倒置). learn_prepare 也可以明确 projectKey 财务报告和审定财务报表 agentId 当查特已经知道时值.

learn_prepare 在工人一级故意一发即发和无国籍。 没有温暖的会话缓存或持久的学习会话状态需要维护 。 这阻止了学习成为隐含的每工具CPU/子请求税,同时仍然允许在实际有用时进行关联感上下文准备.

版本与发布记录

@anusornneal/chat-relay 共发布 34 个版本,首次发布于 2026/09/30;过去 12 个月发布了 34 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
1.6.0latest2026/10/308 天前
1.5.02026/10/299 天前
1.4.02026/10/299 天前
1.3.52026/10/2612 天前
1.3.42026/10/2612 天前
1.3.32026/10/2612 天前

关于 @anusornneal/chat-relay 的常见问题

@anusornneal/chat-relay 是什么?

使用终端,文件系统,流程,多用户,多代理支持的ChatGPT零检查出远程MCP代理.

如何安装 @anusornneal/chat-relay?

在项目目录运行 npm install @anusornneal/chat-relay,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 chat-relay,可以用 npx chat-relay 直接运行。

@anusornneal/chat-relay 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/anusornneal__chat-relay 是否存在。

@anusornneal/chat-relay 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@anusornneal/chat-relay 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js ^22.23.4 || ^24.22.1 || >=26.12.1。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@anusornneal/chat-relay 可以商用吗?

@anusornneal/chat-relay 使用 未声明 许可。package.json 没有声明许可证。没有许可证的代码默认保留全部权利,商用前请联系作者或查看仓库中的 LICENSE 文件。以上为概括,不构成法律意见,请以许可原文为准。

@anusornneal/chat-relay 的下载量有多少?

根据 npm 官方下载统计,@anusornneal/chat-relay 在 2026/10/06 – 2026/11/04 这 30 天内被下载 2,906 次,日均约 97 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@anusornneal/chat-relay 还在维护吗?

最新版本 1.6.0 发布于 2026/10/30(8 天前);至今共发布 34 个版本,其中过去 12 个月发布了 34 个;首次发布于 2026/09/30。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。