remote-codex 0.11.44 → 0.11.49
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +84 -5
- package/apps/relay-server/dist/index.js +18 -2
- package/apps/supervisor-api/dist/index.js +10034 -2782
- package/apps/supervisor-web/dist/assets/c-BIGW1oBm.js +1 -0
- package/apps/supervisor-web/dist/assets/{core-DODVy7wn.js → core-B0prQzhr.js} +1 -1
- package/apps/supervisor-web/dist/assets/cpp-DIPi6g--.js +1 -0
- package/apps/supervisor-web/dist/assets/csharp-DSvCPggb.js +1 -0
- package/apps/supervisor-web/dist/assets/go-C27-OAKa.js +1 -0
- package/apps/supervisor-web/dist/assets/index-DZI1aSXo.js +22 -0
- package/apps/supervisor-web/dist/assets/index-Dy8PgXgw.css +1 -0
- package/apps/supervisor-web/dist/assets/java-CylS5w8V.js +1 -0
- package/apps/supervisor-web/dist/assets/{markdown-vendor-RZk8L7-L.js → markdown-vendor-BG6PurxI.js} +33 -33
- package/apps/supervisor-web/dist/assets/ruby-B6AkvBWc.js +1 -0
- package/apps/supervisor-web/dist/assets/rust-B1yitclQ.js +1 -0
- package/apps/supervisor-web/dist/assets/{shellscript-CEILq0vU.js → shellscript-DfDnw5Jg.js} +1 -1
- package/apps/supervisor-web/dist/assets/thread-ui-gcslNXur.js +3968 -0
- package/apps/supervisor-web/dist/assets/xml-sdJ4AIDG.js +1 -0
- package/apps/supervisor-web/dist/index.html +4 -4
- package/bin/remote-codex.mjs +426 -35
- package/docs/windows-device-manager.zh.md +143 -0
- package/docs/windows-device-setup.zh.md +263 -0
- package/docs/windows-one-click-installer-research.zh.md +481 -0
- package/docs/windows.md +87 -0
- package/package.json +20 -4
- package/packages/acp/src/agent-catalog.test.ts +57 -0
- package/packages/acp/src/agent-catalog.ts +361 -0
- package/packages/acp/src/catalog-runtime.test.ts +99 -0
- package/packages/acp/src/catalog-runtime.ts +507 -0
- package/packages/acp/src/codex-environment.test.ts +58 -0
- package/packages/acp/src/codex-environment.ts +33 -0
- package/packages/acp/src/index.ts +5 -0
- package/packages/acp/src/item-mapper.test.ts +137 -0
- package/packages/acp/src/item-mapper.ts +473 -0
- package/packages/acp/src/runtimeAdapter.test.ts +79 -0
- package/packages/acp/src/runtimeAdapter.ts +1193 -0
- package/packages/acp/src/terminal-service.test.ts +31 -0
- package/packages/acp/src/terminal-service.ts +137 -0
- package/packages/agent-runtime/src/runtime-errors.ts +1 -0
- package/packages/agent-runtime/src/types.ts +8 -0
- package/packages/claude/src/runtimeAdapter.test.ts +2 -2
- package/packages/claude/src/runtimeAdapter.ts +10 -19
- package/packages/codex/src/appServerManager.test.ts +47 -0
- package/packages/codex/src/appServerManager.ts +6 -2
- package/packages/codex/src/runtimeAdapter.test.ts +9 -2
- package/packages/db/migrations/0030_thread_agent_id.sql +9 -0
- package/packages/db/src/repositories.ts +3 -0
- package/packages/db/src/schema.ts +1 -0
- package/packages/opencode/src/historyItems.ts +7 -6
- package/packages/opencode/src/runtimeAdapter.ts +7 -11
- package/packages/process-runtime/src/index.test.ts +132 -0
- package/packages/process-runtime/src/index.ts +253 -0
- package/packages/shared/src/agent-providers.ts +10 -1
- package/packages/shared/src/index.ts +36 -0
- package/scripts/service-manager.mjs +112 -4
- package/scripts/verify-relay-supervisor-smoke.mjs +262 -0
- package/scripts/windows/build-device-manager.ps1 +64 -0
- package/scripts/windows/install-relay-supervisor-task.ps1 +44 -0
- package/scripts/windows/relay-smoke.ps1 +16 -0
- package/scripts/windows/uninstall-relay-supervisor-task.ps1 +27 -0
- package/scripts/windows/validate-real-codex.mjs +680 -0
- package/apps/supervisor-web/dist/assets/index-BcCLYWAf.css +0 -1
- package/apps/supervisor-web/dist/assets/index-CO8cU7a0.js +0 -21
- package/apps/supervisor-web/dist/assets/thread-ui-Dmrigdek.js +0 -3714
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
# Remote Codex Windows Device Manager
|
|
2
|
+
|
|
3
|
+
`RemoteCodex.DeviceManager.exe` 是原生 Windows 11 x64 托盘应用。它把一台 Windows 电脑配置为 Remote Codex Relay Device,并在当前用户登录期间维持设备连接。
|
|
4
|
+
|
|
5
|
+
## 用户侧安装
|
|
6
|
+
|
|
7
|
+
目标电脑不需要预装 .NET、Node.js、npm、Remote Codex 或 Codex。准备以下内容即可:
|
|
8
|
+
|
|
9
|
+
- Windows 11 x64;
|
|
10
|
+
- 一个可以完成 Codex 浏览器登录的 Windows 用户;
|
|
11
|
+
- Relay Portal 创建 Device 后只显示一次的 `rcd_...` token;
|
|
12
|
+
- 可访问 `nodejs.org`、`chatgpt.com`、OpenAI release 域名、npm registry 和 Relay 域名的网络。
|
|
13
|
+
|
|
14
|
+
运行 EXE 后会将自身复制到:
|
|
15
|
+
|
|
16
|
+
```text
|
|
17
|
+
%LOCALAPPDATA%\RemoteCodex\DeviceManager\RemoteCodex.DeviceManager.exe
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
随后首次配置窗口会要求:
|
|
21
|
+
|
|
22
|
+
1. 确认 Relay URL;
|
|
23
|
+
2. 输入 Device token;
|
|
24
|
+
3. 选择 Workspace root;
|
|
25
|
+
4. 确认本地端口,默认 `45680`;
|
|
26
|
+
5. 选择是否随当前 Windows 用户登录启动;
|
|
27
|
+
6. 点击 **Connect device**。
|
|
28
|
+
|
|
29
|
+
第一次连接时,应用会依次:
|
|
30
|
+
|
|
31
|
+
- 探测可用的 Windows x64 Node.js 22;
|
|
32
|
+
- 缺少兼容 Node 时下载私有 Node.js `22.23.2` 并校验 SHA-256;
|
|
33
|
+
- 探测 Codex,缺少时调用 OpenAI 官方 Windows installer;
|
|
34
|
+
- 检查 `codex login status`,未登录时打开临时终端完成用户登录;
|
|
35
|
+
- 在 `%LOCALAPPDATA%\RemoteCodex\app` 安装固定版本的私有 Remote Codex;
|
|
36
|
+
- 通过现有 CLI 写 Relay 配置并收紧 `%USERPROFILE%\.remote-codex` ACL;
|
|
37
|
+
- 启动后台 Relay Supervisor 并验证生命周期状态。
|
|
38
|
+
|
|
39
|
+
托盘的 **Supervisor running** 表示本机 Supervisor 已经通过身份校验并保持 Relay 自动重连。Relay 服务端是否已接受当前 token,仍以 Relay Portal 的 **Online** 状态为最终依据;失效或已撤销的 token 不会被本地进程状态误称为 Online。
|
|
40
|
+
|
|
41
|
+
已有的健康 Node.js 22 和 Codex 会直接复用。已有的其他 Node.js 大版本不会被卸载、覆盖或写入 PATH;应用会并存安装自己的 Node.js 22。私有 Remote Codex 第二次运行时会验证并跳过重复安装。
|
|
42
|
+
|
|
43
|
+
## 托盘行为
|
|
44
|
+
|
|
45
|
+
主窗口关闭或最小化后,应用只隐藏到通知区域,Device 继续运行。托盘菜单提供:
|
|
46
|
+
|
|
47
|
+
- **Open**:打开配置和状态窗口;
|
|
48
|
+
- **Connect / Disconnect**:连接或主动下线;
|
|
49
|
+
- **Change device token...**:输入新 token,优雅重启并应用;
|
|
50
|
+
- **Open Relay portal**;
|
|
51
|
+
- **Open logs**;
|
|
52
|
+
- **Start with Windows**:切换当前用户登录启动;
|
|
53
|
+
- **Exit and take device offline**:停止 Supervisor 后退出托盘应用。
|
|
54
|
+
|
|
55
|
+
应用每 10 秒检查一次 Supervisor。只要用户没有点 **Disconnect** 或退出应用,进程异常停止后会自动拉起。开机启动使用当前用户的 `HKCU\Software\Microsoft\Windows\CurrentVersion\Run`,不要求管理员权限,也不会把 Device token 写进启动参数。
|
|
56
|
+
|
|
57
|
+
## 敏感数据与文件位置
|
|
58
|
+
|
|
59
|
+
Device Manager 自身的 `settings.json` 不保存 Device token。Token 只交给 Remote Codex CLI,并由现有私有配置逻辑保存:
|
|
60
|
+
|
|
61
|
+
```text
|
|
62
|
+
%USERPROFILE%\.remote-codex\relay-supervisor.json
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
其他文件:
|
|
66
|
+
|
|
67
|
+
```text
|
|
68
|
+
%LOCALAPPDATA%\RemoteCodex\DeviceManager\settings.json
|
|
69
|
+
%LOCALAPPDATA%\RemoteCodex\DeviceManager\runtime-state.json
|
|
70
|
+
%LOCALAPPDATA%\RemoteCodex\runtime\
|
|
71
|
+
%LOCALAPPDATA%\RemoteCodex\app\
|
|
72
|
+
%LOCALAPPDATA%\RemoteCodex\logs\device-manager.log
|
|
73
|
+
%USERPROFILE%\.remote-codex\logs\relay-supervisor.log
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
日志层会脱敏 `rcd_...`、token、password、secret、Authorization 和 `controlToken`。Codex 登录凭据仍由 Codex 自己管理;Device Manager 不读取或复制凭据内容。
|
|
77
|
+
|
|
78
|
+
## 从源码构建
|
|
79
|
+
|
|
80
|
+
开发机需要 .NET 8 SDK。Windows PowerShell 中运行:
|
|
81
|
+
|
|
82
|
+
```powershell
|
|
83
|
+
git switch codex/windows-device-manager
|
|
84
|
+
./scripts/windows/build-device-manager.ps1
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
输出位于:
|
|
88
|
+
|
|
89
|
+
```text
|
|
90
|
+
artifacts\windows-device-manager\win-x64\RemoteCodex.DeviceManager.exe
|
|
91
|
+
artifacts\windows-device-manager\win-x64\RemoteCodex.DeviceManager.exe.sha256
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
也可以直接执行:
|
|
95
|
+
|
|
96
|
+
```powershell
|
|
97
|
+
dotnet publish apps/windows-device-manager/RemoteCodex.DeviceManager.csproj `
|
|
98
|
+
-c Release `
|
|
99
|
+
-r win-x64 `
|
|
100
|
+
--self-contained true `
|
|
101
|
+
-p:PublishSingleFile=true `
|
|
102
|
+
-o artifacts/windows-device-manager/win-x64
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
自包含单文件约 150 MB,目标电脑不需要 .NET runtime。GitHub Actions 的 **Windows device manager** workflow 会在 `windows-2022` 构建、执行 EXE 自检、生成 SHA-256 并上传 `remote-codex-device-manager-win-x64` artifact。
|
|
106
|
+
|
|
107
|
+
正式公开分发前应配置仓库 secrets:
|
|
108
|
+
|
|
109
|
+
```text
|
|
110
|
+
WINDOWS_SIGNING_CERTIFICATE_BASE64
|
|
111
|
+
WINDOWS_SIGNING_CERTIFICATE_PASSWORD
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
CI 检测到证书后会进行 Authenticode SHA-256 签名、可信时间戳和签名验证。没有证书时仍会生成供开发测试的未签名 artifact,Windows 可能显示 SmartScreen 提示。
|
|
115
|
+
|
|
116
|
+
## Windows 实机验收
|
|
117
|
+
|
|
118
|
+
建议在 Windows Codex App 拉取分支后至少完成以下验证:
|
|
119
|
+
|
|
120
|
+
1. 在没有 Node、Codex 和 .NET 的 Windows 11 x64 用户中运行 EXE;
|
|
121
|
+
2. 输入真实 token,完成 Codex 登录,确认 Portal Device 变为 Online;
|
|
122
|
+
3. 关闭主窗口,确认托盘图标仍存在且 Device 继续 Online;
|
|
123
|
+
4. 在任务管理器结束 Relay Supervisor,确认托盘应用自动恢复;
|
|
124
|
+
5. 从托盘更换 token,确认旧连接停止、新 Device Online;
|
|
125
|
+
6. 退出托盘应用,确认 `relay-supervisor status` 为 stopped/offline;
|
|
126
|
+
7. 重新运行两次,确认 Node、Codex 和 Remote Codex 均走复用/跳过路径;
|
|
127
|
+
8. 启用 **Start with Windows** 后注销并登录,确认托盘和 Device 自动恢复;
|
|
128
|
+
9. 在已有 Node 20 或 24 的电脑上运行,确认原 Node 和 PATH 没有被修改;
|
|
129
|
+
10. 检查日志,确认没有完整 token、密码或 session secret。
|
|
130
|
+
|
|
131
|
+
## 当前边界
|
|
132
|
+
|
|
133
|
+
- 首版目标是 Windows 11 x64,不包含 ARM64;
|
|
134
|
+
- Codex 账号登录必须由用户交互完成,应用不能代替用户认证;
|
|
135
|
+
- Relay Device token 仍由用户从 Portal 输入,后续可升级为短时一次性 enrollment code;
|
|
136
|
+
- 本地构建默认未签名,正式公开下载必须使用稳定发布者证书签名;
|
|
137
|
+
- 卸载当前通过托盘退出后删除 `%LOCALAPPDATA%\RemoteCodex` 完成;`%USERPROFILE%\.remote-codex` 和 Codex 登录数据默认保留,避免误删 workspace、数据库或凭据。
|
|
138
|
+
|
|
139
|
+
## 相关文档
|
|
140
|
+
|
|
141
|
+
- [Windows Device 从零手工安装指南](windows-device-setup.zh.md)
|
|
142
|
+
- [Windows 一键安装器调研](windows-one-click-installer-research.zh.md)
|
|
143
|
+
- [Remote Codex 原生 Windows 支持](windows.md)
|
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
# Windows Device 从零安装指南
|
|
2
|
+
|
|
3
|
+
本文说明如何把一台没有开发环境的 Windows 电脑配置成 Remote Codex Relay Device。完成后,该电脑上的 Relay Supervisor 会主动连接公网 Relay,并允许已授权的 Web 或移动端访问这台电脑上的工作区和 Codex 会话。
|
|
4
|
+
|
|
5
|
+
正式图形化入口已经实现,优先使用 [Remote Codex Windows Device Manager](windows-device-manager.zh.md)。它是自包含单文件 EXE,能够探测并补齐 Node.js、Codex 和 Remote Codex,提供托盘常驻、换 Token、自动重连和当前用户开机启动。本文保留手工 PowerShell 流程,供排障、审计和受管环境使用。
|
|
6
|
+
|
|
7
|
+
## 1. 当前支持范围
|
|
8
|
+
|
|
9
|
+
当前原生 Windows 首版支持范围为:
|
|
10
|
+
|
|
11
|
+
- Windows 11 x64;
|
|
12
|
+
- Node.js 22 LTS;
|
|
13
|
+
- 原生 Codex provider,支持 `codex.exe` 和 npm 产生的 `codex.cmd`;
|
|
14
|
+
- 当前用户主目录或其他本地磁盘上的工作区;
|
|
15
|
+
- Relay WebSocket 模式;
|
|
16
|
+
- 当前用户登录后通过 Windows Task Scheduler 自动启动。
|
|
17
|
+
|
|
18
|
+
不需要安装 WSL、tmux、Git Bash、ConPTY 或 Visual Studio C++ Build Tools。原生 Windows 暂不提供网页 Terminal,也不承诺 Claude Code、OpenCode、UNC 工作区、Windows ARM64 或未登录用户的系统服务模式。
|
|
19
|
+
|
|
20
|
+
## 2. 安装 Node.js 22
|
|
21
|
+
|
|
22
|
+
打开 [Node.js 22 官方发布目录](https://nodejs.org/download/release/latest-v22.x/),下载文件名以 `x64.msi` 结尾的 Windows 安装包并完成安装。
|
|
23
|
+
|
|
24
|
+
不要仅根据“Latest LTS”按钮安装其他 Node.js 大版本。Remote Codex 当前 Windows 验证基线是 Node.js 22。
|
|
25
|
+
|
|
26
|
+
安装完成后关闭并重新打开 PowerShell,然后执行:
|
|
27
|
+
|
|
28
|
+
```powershell
|
|
29
|
+
node --version
|
|
30
|
+
npm --version
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
`node --version` 应输出 `v22.x.x`。
|
|
34
|
+
|
|
35
|
+
Git 不是启动 Relay Supervisor 的硬性依赖,但管理代码仓库通常需要 Git。可选安装命令:
|
|
36
|
+
|
|
37
|
+
```powershell
|
|
38
|
+
winget install --id Git.Git -e --source winget
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## 3. 安装并登录 Codex
|
|
42
|
+
|
|
43
|
+
打开当前 Windows 用户的普通 PowerShell,不需要以管理员身份运行。先只对当前 PowerShell 进程放行脚本:
|
|
44
|
+
|
|
45
|
+
```powershell
|
|
46
|
+
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass -Force
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
该设置会在 PowerShell 窗口关闭后失效,不会永久修改当前用户或整台电脑的执行策略。
|
|
50
|
+
|
|
51
|
+
运行 Codex 官方 Windows 安装器:
|
|
52
|
+
|
|
53
|
+
```powershell
|
|
54
|
+
irm https://chatgpt.com/codex/install.ps1 | iex
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
检查安装结果:
|
|
58
|
+
|
|
59
|
+
```powershell
|
|
60
|
+
codex --version
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
检查登录状态:
|
|
64
|
+
|
|
65
|
+
```powershell
|
|
66
|
+
codex login status
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
如果尚未登录,运行:
|
|
70
|
+
|
|
71
|
+
```powershell
|
|
72
|
+
codex login
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
命令会打开浏览器,由用户完成 ChatGPT 或其他可用方式的登录。无法使用本机浏览器回调时,可以改用设备码:
|
|
76
|
+
|
|
77
|
+
```powershell
|
|
78
|
+
codex login --device-auth
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Codex 会缓存登录状态,Relay Supervisor 后续启动 Codex app-server 时会复用同一 Windows 用户的凭据。不要复制或共享 `%USERPROFILE%\.codex\auth.json`。
|
|
82
|
+
|
|
83
|
+
## 4. 安装 Remote Codex
|
|
84
|
+
|
|
85
|
+
在已执行进程级 Execution Policy Bypass 的 PowerShell 中运行:
|
|
86
|
+
|
|
87
|
+
```powershell
|
|
88
|
+
npm install -g remote-codex@latest
|
|
89
|
+
remote-codex --version
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
检查所有命令入口:
|
|
93
|
+
|
|
94
|
+
```powershell
|
|
95
|
+
Get-Command node,npm,codex,remote-codex | Format-List Name,Source,Version
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
如果 PowerShell 优先匹配到 npm 生成的 `.ps1` shim,并报告脚本被禁用,可以重新执行进程级 Bypass,或者临时显式调用 `npm.cmd`、`codex.cmd`、`remote-codex.cmd`。
|
|
99
|
+
|
|
100
|
+
## 5. 在 Relay Portal 创建设备
|
|
101
|
+
|
|
102
|
+
1. 打开 Relay Portal,例如 `https://remote-codex.lnz-study.com/relay-portal`。
|
|
103
|
+
2. 登录 Relay 账号。
|
|
104
|
+
3. 进入 **Devices**。
|
|
105
|
+
4. 点击 **Add**,填写这台 Windows 电脑的设备名称。
|
|
106
|
+
5. 创建设备并保存页面只显示一次的 `rcd_...` device token。
|
|
107
|
+
6. 点击设备行上的 **Copy setup**。
|
|
108
|
+
7. 在二级菜单中选择 **Windows (PowerShell)**。
|
|
109
|
+
|
|
110
|
+
早期创建且没有保存 token 的设备不能重新显示完整 token。此时需要创建一个新设备。
|
|
111
|
+
|
|
112
|
+
## 6. 启动 Windows Relay Supervisor
|
|
113
|
+
|
|
114
|
+
Portal 复制出来的 Windows 命令形如:
|
|
115
|
+
|
|
116
|
+
```powershell
|
|
117
|
+
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass -Force
|
|
118
|
+
$env:REMOTE_CODEX_RELAY_SERVER_URL='wss://remote-codex.lnz-study.com'
|
|
119
|
+
$env:REMOTE_CODEX_RELAY_AGENT_TOKEN='rcd_替换为当前设备Token'
|
|
120
|
+
$env:REMOTE_CODEX_RELAY_SUPERVISOR_PORT='45680'
|
|
121
|
+
remote-codex relay-supervisor
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
Windows 默认端口是 `45680`,macOS/Linux 默认端口是 `45679`。两者不同,允许同一台电脑上的原生 Windows 和 WSL 同时运行 Supervisor。
|
|
125
|
+
|
|
126
|
+
在 Windows 上,不带子命令的 `remote-codex relay-supervisor` 等价于后台 `start`。命令会:
|
|
127
|
+
|
|
128
|
+
- 生成本地 Supervisor 的认证信息和 session secret;
|
|
129
|
+
- 将有效配置保存到 `%USERPROFILE%\.remote-codex\relay-supervisor.json`;
|
|
130
|
+
- 收紧配置目录和文件的 Windows ACL;
|
|
131
|
+
- 启动 detached Supervisor 进程;
|
|
132
|
+
- 通过出站 WebSocket 连接 Relay。
|
|
133
|
+
|
|
134
|
+
关闭 PowerShell 不会停止已经启动的 Supervisor。
|
|
135
|
+
|
|
136
|
+
### 使用其他工作区根目录
|
|
137
|
+
|
|
138
|
+
默认工作区根目录是 `%USERPROFILE%`。如果项目统一位于 `D:\dev`,在首次启动命令中额外加入:
|
|
139
|
+
|
|
140
|
+
```powershell
|
|
141
|
+
$env:WORKSPACE_ROOT='D:\dev'
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
该值会与 Relay 配置一起持久化。不要把根目录设置为整个系统盘,应该使用专门的代码目录。
|
|
145
|
+
|
|
146
|
+
## 7. 验证设备在线
|
|
147
|
+
|
|
148
|
+
检查后台进程:
|
|
149
|
+
|
|
150
|
+
```powershell
|
|
151
|
+
remote-codex relay-supervisor status
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
查看最近日志:
|
|
155
|
+
|
|
156
|
+
```powershell
|
|
157
|
+
Get-Content "$env:USERPROFILE\.remote-codex\logs\relay-supervisor.log" -Tail 100
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
回到 Relay Portal 刷新设备列表。设备应显示为 **Online**,然后可以点击 **Connect**,添加工作区并创建 Codex thread。
|
|
161
|
+
|
|
162
|
+
Relay Supervisor 默认只监听 `127.0.0.1:45680`,并主动建立出站连接,不需要在 Windows 防火墙中开放公网入站端口。
|
|
163
|
+
|
|
164
|
+
## 8. 配置登录后自动启动
|
|
165
|
+
|
|
166
|
+
后台 `start` 只能保证关闭终端后继续运行,Windows 重启后仍需重新启动。建议为当前用户安装登录计划任务:
|
|
167
|
+
|
|
168
|
+
```powershell
|
|
169
|
+
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass -Force
|
|
170
|
+
|
|
171
|
+
$packageRoot = Join-Path (npm root -g) 'remote-codex'
|
|
172
|
+
|
|
173
|
+
& (Join-Path $packageRoot 'scripts\windows\install-relay-supervisor-task.ps1') `
|
|
174
|
+
-PackageRoot $packageRoot
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
计划任务使用当前用户的 interactive token,以 Limited 权限运行,不使用 `LocalSystem`,也不会把 device token 写入计划任务参数。Windows 重启后必须由该用户登录,任务才会启动。
|
|
178
|
+
|
|
179
|
+
## 9. 日常维护
|
|
180
|
+
|
|
181
|
+
```powershell
|
|
182
|
+
# 查看状态
|
|
183
|
+
remote-codex relay-supervisor status
|
|
184
|
+
|
|
185
|
+
# 停止
|
|
186
|
+
remote-codex relay-supervisor stop
|
|
187
|
+
|
|
188
|
+
# 重新启动
|
|
189
|
+
remote-codex relay-supervisor start
|
|
190
|
+
|
|
191
|
+
# 删除保存的 Relay 配置,数据库和 Codex 登录不受影响
|
|
192
|
+
remote-codex relay-supervisor reset
|
|
193
|
+
|
|
194
|
+
# 更新 Remote Codex
|
|
195
|
+
npm install -g remote-codex@latest
|
|
196
|
+
remote-codex relay-supervisor stop
|
|
197
|
+
remote-codex relay-supervisor start
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
删除登录计划任务,但保留配置和数据库:
|
|
201
|
+
|
|
202
|
+
```powershell
|
|
203
|
+
$packageRoot = Join-Path (npm root -g) 'remote-codex'
|
|
204
|
+
|
|
205
|
+
& (Join-Path $packageRoot 'scripts\windows\uninstall-relay-supervisor-task.ps1') `
|
|
206
|
+
-PackageRoot $packageRoot
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
只有明确需要永久删除 `%USERPROFILE%\.remote-codex` 下的数据时,才向卸载脚本传入 `-PurgeData`。
|
|
210
|
+
|
|
211
|
+
## 10. 常见问题
|
|
212
|
+
|
|
213
|
+
### `remote-codex.ps1 cannot be loaded`
|
|
214
|
+
|
|
215
|
+
当前 PowerShell 没有允许 npm PowerShell shim。运行:
|
|
216
|
+
|
|
217
|
+
```powershell
|
|
218
|
+
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass -Force
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
也可以绕过 PowerShell shim:
|
|
222
|
+
|
|
223
|
+
```powershell
|
|
224
|
+
remote-codex.cmd relay-supervisor status
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
### 找不到新安装的命令
|
|
228
|
+
|
|
229
|
+
关闭并重新打开 PowerShell,然后检查:
|
|
230
|
+
|
|
231
|
+
```powershell
|
|
232
|
+
Get-Command node,npm,codex,remote-codex | Format-List Name,Source
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
### 设备持续 Offline
|
|
236
|
+
|
|
237
|
+
依次检查:
|
|
238
|
+
|
|
239
|
+
```powershell
|
|
240
|
+
codex login status
|
|
241
|
+
remote-codex relay-supervisor status
|
|
242
|
+
Get-Content "$env:USERPROFILE\.remote-codex\logs\relay-supervisor.log" -Tail 100
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
常见原因包括 device token 错误或已撤销、Relay URL 错误、公司网络阻止出站 WSS、端口被占用,或者当前用户没有 Codex 登录状态。
|
|
246
|
+
|
|
247
|
+
## 11. 敏感数据位置
|
|
248
|
+
|
|
249
|
+
以下文件可能包含 token、session secret 或登录凭据:
|
|
250
|
+
|
|
251
|
+
- `%USERPROFILE%\.remote-codex\relay-supervisor.json`
|
|
252
|
+
- `%USERPROFILE%\.remote-codex\relay-supervisor-state.json`
|
|
253
|
+
- `%USERPROFILE%\.codex\auth.json`
|
|
254
|
+
|
|
255
|
+
不要把这些文件提交到代码仓库、上传到 issue 或原样附在诊断报告中。分享日志前应删除 token、密码、session secret、Authorization header 和 `controlToken`。
|
|
256
|
+
|
|
257
|
+
## 参考资料
|
|
258
|
+
|
|
259
|
+
- [Remote Codex 原生 Windows 支持](windows.md)
|
|
260
|
+
- [OpenAI Codex CLI](https://learn.chatgpt.com/docs/codex/cli)
|
|
261
|
+
- [OpenAI Codex authentication](https://learn.chatgpt.com/docs/auth)
|
|
262
|
+
- [Node.js 22 Windows 发布文件](https://nodejs.org/download/release/latest-v22.x/)
|
|
263
|
+
- [PowerShell execution policies](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_execution_policies)
|