# @anusornneal/chat-relay 中文文档

规范地址：https://npmcn.com/package/%40anusornneal/chat-relay/

版本：1\.6\.0
npm 元数据更新时间：2026-10-30T00:59:35.155Z
中文译文更新时间：2026-11-06T15:29:56.225Z
软件包许可：未声明

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40anusornneal/chat-relay
原文对照：https://npmcn.com/package/%40anusornneal/chat-relay/?lang=original
项目主页：https://github.com/anusornNeal/chat-relay#readme
源码仓库：https://github.com/anusornNeal/chat-relay

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：323 kB，32 个文件
- 模块格式：ES Module
- TypeScript 类型：未声明
- Node.js 要求：^22\.23\.4 \|\| ^24\.22\.1 \|\| \>=26\.12\.1
- 运行依赖：1 个
- 首次发布：2026-09-30T01:38:38.823Z
- 最新版本发布：2026-10-30T00:59:34.829Z
- 近 30 天下载量：2906（2026-10-06 至 2026-11-04，npm 官方下载统计）
- 已发布版本数：34（近 12 个月 34 个）

## 中文简介

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

## 安装

```sh
npm install @anusornneal/chat-relay
```

也可以使用：`pnpm add @anusornneal/chat-relay`、`yarn add @anusornneal/chat-relay`、`bun add @anusornneal/chat-relay`

## README

# 聊天中继

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

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

**学习基线 :** 见 [范围、写作格式和安全剂环境指导](https://npmcn.com/package/%40anusornneal/chat-relay/docs/learn-baseline.md)。 。 。 .

**学习用法排名 :** 见 [接收语义、评分和Cloudflare资源成本](https://npmcn.com/package/%40anusornneal/chat-relay/docs/learn-usage-ranking.md)。 。 。 .

**共享学习组 :** 见 [组设置、作用、核准流程和资源限制](https://npmcn.com/package/%40anusornneal/chat-relay/docs/shared-learn.md)。 。 。 .

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

## 快开始

有两个部分:

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

### 1\. 连接ChatGPT

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

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

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

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

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

### 2\. 运行本地代理 `npx`

要求:节点20或更新.

从任何目录中 :

```bash
npx @anusornneal/chat-relay@latest remote
```

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

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

```bash
npx @anusornneal/chat-relay@latest remote
```

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

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

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

```bash
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 使用和可用的选项 . |

有用的选项 :

```text
--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 桌面控制目前尚未执行 .

## 如何运作

```text
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>`) (中文(简体) ). 不创建兄弟项目文件夹 。 见 [项目工作空间政策](https://npmcn.com/package/%40anusornneal/chat-relay/docs/PROJECT_WORKSPACE_POLICY.md) 财务报告和审定财务报表 `AGENTS.md`;现有的遗留文件夹在经过核实的清理之前保持不变.

共同开发命令 :

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

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

```bash
CHAT_RELAY_SOAK_ITERATIONS=100000 npm run test:soak
```

动力壳:

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

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

## 行政部门

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

运算符命令可通过:

```bash
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+.

## 更多信息

-   公共插件/ 审查器流 : `docs/plugin-review.md`
-   谷歌登录设置 : `docs/google-login.md`
-   资料来源: [https://github.com/anusornNeal/chat-relay 互联网档案馆的存檔,存档日期2013-12-21](https://github.com/anusornNeal/chat-relay)

## 账户范围已学习

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` 一次并重用返回的上下文来完成该任务的其余部分,而不是在每个工具呼叫之前重新准备.

```mermaid
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 是什么？

使用终端,文件系统,流程,多用户,多代理支持的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 和提交记录判断。

