# @textjs/opencode 中文文档

规范地址：https://npmcn.com/package/%40textjs/opencode/

版本：1\.1\.0
npm 元数据更新时间：2026-11-02T16:07:23.425Z
中文译文更新时间：2026-11-02T16:14:37.145Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40textjs/opencode
原文对照：https://npmcn.com/package/%40textjs/opencode/?lang=original
项目主页：https://textjs.org/docs/opencode
源码仓库：https://github.com/anomalyco/textjs

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

- 包体积（解压后）：76.4 kB，20 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：\>=22
- 运行依赖：0 个
- 首次发布：2026-11-01T21:55:04.763Z
- 最新版本发布：2026-11-02T16:07:23.149Z
- 已发布版本数：5（近 12 个月 5 个）

## 中文简介

连接textjs.org/opencode到机器上的OpenCode服务器的环回桥接器。

## 安装

```sh
npm install @textjs/opencode
```

也可以使用：`pnpm add @textjs/opencode`、`yarn add @textjs/opencode`、`bun add @textjs/opencode`

## README

# ▼@textjs / opencode

一座当地的桥 [textjs.org/opencode](https://textjs.org/opencode) 和他们谈谈 [OpenCode](https://opencode.ai/) 您的计算机上的服务器。它没有依赖关系，在节点22或Bun上运行。

```bash
bunx @textjs/opencode@latest proxy    # or: npx @textjs/opencode@latest proxy
```

让它开着，打开 [textjs.org/opencode](https://textjs.org/opencode)，输入 `http://127.0.0.1:4096` 并按 **连接**。如果Chrome要求允许本地网络访问，则输入网桥打印的配对代码。用Ctrl C停止桥。

浏览器阻止公共页面读取 `http://127.0.0.1` 除非服务器应答CORS和专用网络访问preflights，并且OpenCode服务也需要密码。桥添加标头和密码，并将每个请求转发给OpenCode。

## 选项

| 国旗 | 描述 |
| :-- | :-- |
| `-p, --port <port>` | 要监听的端口（默认） `4096`） |
| `--target <url>` | OpenCode服务器URL。跳过的发现。 |
| `--allow-origin <origin>` | 允许另一个浏览器源，例如 `https://example.com` 或者 `http://localhost:*`． 可重复的。 |
| `-v, --version` | 打印版本 |
| `-h, --help` | 显示帮助 |

没有 `--target`桥问 `opencode service status` ，并读取其密码 `opencode service get password`。它将结果缓存30秒，并在OpenCode回答时再次查看 `401` 或者无法到达，因此它跟随一个使用新端口或密码重新启动的服务。

对于前台服务器，请传递其URL。如果服务器已使用端口4096，请在另一个端口上运行网桥并将页连接到该端口:

```bash
bunx @textjs/opencode@latest proxy --port 4097 --target http://127.0.0.1:4096
```

对于有密码保护的前台服务器，请导出 `OPENCODE_PASSWORD` 在桥的壳里。 `OPENCODE_SERVER_URL` 代替…进行的工程 `--target`.

## 安全

-   **仅环回。** 桥在听 `127.0.0.1` 和答案只请求其 `Host` 是 `localhost`， `127.0.0.1` 或者 `[::1]`，阻止DNS重新绑定。
-   **原点允许列表。** 浏览器请求必须来自 `https://textjs.org`， `https://www.textjs.org` 或者 `http://localhost`， `127.0.0.1` 和 `[::1]` 在任意端口。其他的起源 `403`． 加上你自己的 `--allow-origin`例如： `--allow-origin 'https://*.textjs-avg.pages.dev'` fo r textjs.org预览部署。
-   **配对代码。** 桥在启动时打印代码。一个页面发送一次到 `POST /__bridge/pair` 并获得这个桥接运行的令牌，与该页的原点绑定。除了CORS预飞行和 `GET /__bridge`,每个请求都需要令牌在 `x-textjs-bridge-token`，或者得到 `428` 永远不会到达OpenCode。 `GET /__bridge` 表示页面是否配对，错误的代码会得到一个 `200` 与 `ok: false` 和尝试离开，所以页面永远不会记录失败的请求。十个错误的代码锁定配对，直到网桥重新启动。每一个响应携带 `x-textjs-bridge-pairing: 1`，因此页面拒绝1.0。X桥接器，它的转发不需要代码。
-   **密码保留在您的计算机上。** 网桥将其保存在内存中，并将其添加到转发到OpenCode的请求中。它不会被记录，写入磁盘或发送到浏览器。
-   **写需要一个自定义头。** 请求以外的 `GET`， `HEAD` 和 `OPTIONS` 必须发送 `x-opencode-client: 1`， HTML表单无法设置标题。请求体的上限为4 MB。
-   **只有几个头球传中。** 桥梁向前 `Accept`， `Content-Type`， `Last-Event-ID` 和 `x-opencode-directory` 到OpenCode，并返回 `Content-Type`， `Location` 和 `x-request-id`． 饼干, `Authorization` 并且来自浏览器的配对令牌将被丢弃。
-   **密码仅适用于环回目标。** `OPENCODE_PASSWORD` 从不发送到非环回 `--target`, `--target` 拒绝包含凭据、路径、查询或哈希的url ([TX021](https://textjs.org/errors/TX021)）。

## Text.js项目

`@textjs/app` 运行相同的桥梁 `text proxy`有相同的标志。

## 错误

| 代码 | 意义 |
| :-- | :-- |
| [TX021](https://textjs.org/errors/TX021) | `--target` 不是一个裸露的HTTP(S) 起源 |
| [TX022](https://textjs.org/errors/TX022) | `--port` 是OpenCode服务器自己的端口吗 |
| [TX023](https://textjs.org/errors/TX023) | 那个港口上已经有一座桥在运行 |
| [TX024](https://textjs.org/errors/TX024) | 其他东西正在使用该端口 |

## 常见问题

### @textjs/opencode 是什么？

连接textjs\.org/opencode到机器上的OpenCode服务器的环回桥接器。

### 如何安装 @textjs/opencode？

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

### @textjs/opencode 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @textjs/opencode 支持 ESM 还是 CommonJS？

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

### @textjs/opencode 需要什么版本的 Node\.js？

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

### @textjs/opencode 可以商用吗？

@textjs/opencode 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @textjs/opencode 还在维护吗？

最新版本 1\.1\.0 发布于 2026/11/03（今天）；至今共发布 5 个版本，其中过去 12 个月发布了 5 个；首次发布于 2026/11/02。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

