@textjs/opencode

中文文档
1.1.0发布于 2026/11/03MITTypeScriptES Module零依赖

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

中文使用文档
文档目录4 节
  1. 选项
  2. 安全
  3. Text.js项目
  4. 错误

▼@textjs / opencode

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

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

让它开着,打开 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,请在另一个端口上运行网桥并将页连接到该端口:

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)。

Text.js项目

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

错误

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

版本与发布记录

@textjs/opencode 共发布 5 个版本,首次发布于 2026/11/02;过去 12 个月发布了 5 个版本。

版本发布日期距今
1.1.0latest2026/11/03今天
1.0.42026/11/021 天前
1.0.32026/11/021 天前
1.0.22026/11/021 天前
0.0.0-stage2026/11/021 天前

关于 @textjs/opencode 的常见问题

@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 和提交记录判断。