codex-to-im 1.0.13 → 1.0.15
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 +98 -170
- package/README_EN.md +230 -0
- package/dist/daemon.mjs +471 -237
- package/dist/ui-server.mjs +41 -3
- package/docs/codex-to-im-prd.md +2 -2
- package/docs/codex-to-im-shared-thread-design.md +1 -4
- package/docs/install-windows.md +1 -1
- package/package.json +10 -2
- package/README_CN.md +0 -227
package/README.md
CHANGED
|
@@ -1,230 +1,158 @@
|
|
|
1
1
|
# Codex-to-IM
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[English](README_EN.md)
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
`codex-to-im` 是一个本地桥接应用,用来把 Codex 接到飞书、微信等 IM 通道中使用。
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
2. Open the local web workbench
|
|
9
|
-
3. Configure IM channels
|
|
10
|
-
4. Start the bridge in the background
|
|
11
|
-
5. Bind real desktop Codex threads to Feishu or Weixin chats
|
|
7
|
+
它的主路径不是“改造 Codex 本体”,而是:
|
|
12
8
|
|
|
13
|
-
|
|
9
|
+
1. 在本机启动一个 Web 工作台和 bridge
|
|
10
|
+
2. 配置飞书或微信
|
|
11
|
+
3. 把桌面里的 Codex 会话接到 IM
|
|
12
|
+
4. 在 IM 中继续对话、切线程、查看状态
|
|
14
13
|
|
|
15
|
-
##
|
|
14
|
+
## 核心能力
|
|
16
15
|
|
|
17
|
-
|
|
16
|
+
- 共享桌面线程:把 Codex Desktop 中正在使用的 thread 绑定到 IM,在 IM 中继续同一条会话。
|
|
17
|
+
- IM 远程操作:支持查看当前状态、切线程、新建线程、切模式、切思考级别、切模型、停止当前任务、查看历史等常用命令。
|
|
18
|
+
- 本地 Web 工作台:集中完成配置、通道登录、日志查看、会话管理和绑定管理。
|
|
19
|
+
- 飞书流式卡片:飞书侧支持流式展示共享线程回复,也支持工具进度展示。
|
|
20
|
+
- 附件回传:支持把本地图片或文件发回到飞书;如果需要让 Codex 主动使用这个能力,可以安装仓库附带的 `codex-to-im` skill。
|
|
21
|
+
- 本地优先:服务、配置、日志和 bridge 都运行在本机,可选开启局域网访问 Web 控制台。
|
|
18
22
|
|
|
19
|
-
|
|
20
|
-
- `Claude-to-IM-skill`
|
|
23
|
+
## 支持的通道
|
|
21
24
|
|
|
22
|
-
|
|
25
|
+
- 飞书:支持 bot 配置、连通性测试、共享线程、流式卡片、图片和文件发送。
|
|
26
|
+
- 微信:支持扫码登录、共享线程和文本反馈。
|
|
23
27
|
|
|
24
|
-
|
|
28
|
+
## 快速开始
|
|
25
29
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
- Local background bridge service
|
|
29
|
-
- Local web workbench for configuration, testing, logs, and bindings
|
|
30
|
-
- Feishu credential setup and connectivity testing
|
|
31
|
-
- Weixin QR login flow
|
|
32
|
-
- Desktop session discovery from `~/.codex/sessions`
|
|
33
|
-
- Web-side binding updates for IM chats
|
|
34
|
-
|
|
35
|
-
## Install
|
|
36
|
-
|
|
37
|
-
### Prerequisites
|
|
30
|
+
### 依赖
|
|
38
31
|
|
|
39
32
|
- Node.js 20+
|
|
40
|
-
-
|
|
41
|
-
|
|
42
|
-
`codex-to-im` now ships with the required `@openai/codex-sdk` / Codex CLI platform dependency, so you do not need to install a separate global Codex CLI just to run the bridge.
|
|
33
|
+
- 当前系统用户下可用的 Codex 登录态或 API 凭据
|
|
43
34
|
|
|
44
|
-
|
|
35
|
+
满足以下任一条件即可:
|
|
45
36
|
|
|
46
|
-
-
|
|
47
|
-
-
|
|
48
|
-
- `CTI_CODEX_API_KEY
|
|
37
|
+
- 已登录 Codex Desktop App
|
|
38
|
+
- 已登录 Codex CLI
|
|
39
|
+
- 已配置 `CTI_CODEX_API_KEY`、`CODEX_API_KEY` 或 `OPENAI_API_KEY`
|
|
49
40
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
```bash
|
|
53
|
-
npm install -g @openai/codex
|
|
54
|
-
codex auth login
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
### Global install
|
|
41
|
+
### 安装
|
|
58
42
|
|
|
59
43
|
```bash
|
|
60
44
|
npm install -g codex-to-im
|
|
61
45
|
```
|
|
62
46
|
|
|
63
|
-
###
|
|
64
|
-
|
|
65
|
-
```bash
|
|
66
|
-
npm install
|
|
67
|
-
npm run build
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
Windows maintenance note:
|
|
71
|
-
|
|
72
|
-
- The repo includes [patch-codex-sdk-windows-hide.js](D:/codex/Claude-to-IM-skill/scripts/patch-codex-sdk-windows-hide.js), which applies a conservative postinstall patch to `@openai/codex-sdk`.
|
|
73
|
-
- This exists because on Windows the SDK may spawn the bundled Codex CLI without `windowsHide`, causing a black console window to flash for each IM-triggered run.
|
|
74
|
-
- When upgrading `@openai/codex-sdk`, verify that the spawn block still matches; if upstream fixes this natively, remove the patch instead of carrying it forward.
|
|
75
|
-
|
|
76
|
-
## Run
|
|
77
|
-
|
|
78
|
-
Start the local app:
|
|
47
|
+
### 启动
|
|
79
48
|
|
|
80
49
|
```bash
|
|
81
50
|
codex-to-im
|
|
82
51
|
```
|
|
83
52
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
By default the workbench runs at:
|
|
53
|
+
默认会打开本地工作台:
|
|
87
54
|
|
|
88
55
|
```text
|
|
89
56
|
http://127.0.0.1:4781
|
|
90
57
|
```
|
|
91
58
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
By default, the web workbench only accepts local access.
|
|
95
|
-
|
|
96
|
-
If you want to open it from your phone or another device on the same LAN, enable `允许局域网访问 Web 控制台` in the `配置` page. When enabled:
|
|
97
|
-
|
|
98
|
-
- the workbench shows detected LAN URLs
|
|
99
|
-
- the workbench displays an access token
|
|
100
|
-
- LAN devices see a login page before they can view or modify settings
|
|
101
|
-
- you can also copy a ready-to-use login link that includes `?token=...`
|
|
102
|
-
|
|
103
|
-
If you forget the current address, run:
|
|
59
|
+
如果想查看当前地址或运行状态:
|
|
104
60
|
|
|
105
61
|
```bash
|
|
106
62
|
codex-to-im url
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
Check the current local service state:
|
|
110
|
-
|
|
111
|
-
```bash
|
|
112
63
|
codex-to-im status
|
|
113
64
|
```
|
|
114
65
|
|
|
115
|
-
|
|
66
|
+
如果要停止本地 UI 和 bridge:
|
|
116
67
|
|
|
117
68
|
```bash
|
|
118
69
|
codex-to-im stop
|
|
119
70
|
```
|
|
120
71
|
|
|
121
|
-
##
|
|
122
|
-
|
|
123
|
-
1. Open the workbench
|
|
124
|
-
2. Fill in Feishu credentials or trigger Weixin QR login
|
|
125
|
-
3. Save config and test connectivity
|
|
126
|
-
4. Start the bridge
|
|
127
|
-
5. Open the desktop sessions section
|
|
128
|
-
6. Bind a Feishu or Weixin chat to the target thread
|
|
129
|
-
7. Continue the same Codex thread from IM
|
|
72
|
+
## 典型使用方式
|
|
130
73
|
|
|
131
|
-
|
|
74
|
+
### 1. 接管桌面线程
|
|
132
75
|
|
|
133
|
-
|
|
76
|
+
在 Web 工作台里配置好飞书或微信后,启动 bridge。
|
|
77
|
+
然后在 IM 中发送:
|
|
134
78
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
- `/n` / `/new` creates a new thread in the current formal session directory; these IM-created threads are only guaranteed to continue inside IM and will not automatically appear in the Codex Desktop thread list
|
|
139
|
-
- `/n proj1` / `/new proj1` creates a new project session under the default workspace root
|
|
140
|
-
- `/m` / `/mode` shows or changes the current mode; options: `code` / `plan` / `ask`
|
|
141
|
-
- `/r` / `/reasoning` shows or changes the current reasoning effort; options: `1|2|3|4|5`
|
|
142
|
-
- `/his` / `/history` shows the summarized history, and `/his raw` / `/history raw` shows raw history
|
|
143
|
-
- `/t 0` / `/thread 0` enters a temporary draft thread that does not pollute the main work thread
|
|
144
|
-
- `1 / 2 / 3` or `/perm ...` handles permission prompts
|
|
145
|
-
- N is configurable in the web workbench under the basic settings panel
|
|
146
|
-
- The workbench command guide shows both short commands and compatible original commands
|
|
147
|
-
|
|
148
|
-
If you enable Feishu streaming response cards, the Feishu app must have the required permissions published first, at minimum:
|
|
149
|
-
|
|
150
|
-
- `cardkit:card:write`
|
|
151
|
-
- `cardkit:card:read`
|
|
152
|
-
- `im:message:update`
|
|
153
|
-
|
|
154
|
-
If those permissions are missing, the bridge log will usually show `99991672` with `cardkit:card:write`, and the bridge falls back to a final-result message.
|
|
155
|
-
|
|
156
|
-
Also note that under the current `codex` runtime, the `Codex CLI / SDK` typically emits the assistant text only when the `agent_message` item is completed, not as token-level deltas. In practice that means Feishu "streaming cards" currently behave more like:
|
|
157
|
-
|
|
158
|
-
- early `Thinking / Tool Progress` updates
|
|
159
|
-
- final response text written into the card at completion
|
|
160
|
-
|
|
161
|
-
So character-by-character text streaming is not guaranteed in the current implementation.
|
|
162
|
-
|
|
163
|
-
If creating a new session fails with `Not inside a trusted directory`, either:
|
|
164
|
-
|
|
165
|
-
- switch to a trusted project with `/new /absolute/path` or `/new proj1`, or
|
|
166
|
-
- enable `Allow Codex outside trusted Git repos` in the basic settings and restart the bridge
|
|
167
|
-
|
|
168
|
-
The configuration page also includes Codex runtime controls:
|
|
79
|
+
```text
|
|
80
|
+
/t
|
|
81
|
+
```
|
|
169
82
|
|
|
170
|
-
|
|
171
|
-
- parent directory used for `/new proj1`
|
|
172
|
-
- falls back to `~/cx2im` when left empty, expanded for the current OS
|
|
173
|
-
- `Codex filesystem permission`
|
|
174
|
-
- `read-only`, `workspace-write`, or `danger-full-access`
|
|
175
|
-
- default: `workspace-write`
|
|
176
|
-
- `Codex reasoning effort`
|
|
177
|
-
- global default reasoning level
|
|
178
|
-
- can be overridden per IM session with `/reasoning`
|
|
179
|
-
- official runtime levels are `minimal`, `low`, `medium`, `high`, `xhigh`
|
|
180
|
-
- IM numeric aliases are `1=minimal`, `2=low`, `3=medium`, `4=high`, `5=xhigh`
|
|
83
|
+
查看最近 10 条桌面线程,发送:
|
|
181
84
|
|
|
182
|
-
|
|
85
|
+
```text
|
|
86
|
+
/t all
|
|
87
|
+
```
|
|
183
88
|
|
|
184
|
-
|
|
185
|
-
|
|
89
|
+
查看全部桌面线程。
|
|
90
|
+
再通过:
|
|
186
91
|
|
|
187
|
-
|
|
92
|
+
```text
|
|
93
|
+
/t 1
|
|
94
|
+
```
|
|
188
95
|
|
|
189
|
-
|
|
190
|
-
- enabled by default for Feishu
|
|
191
|
-
- disabled by default for WeChat
|
|
192
|
-
- affects text sent through the bridge, including normal replies, shared-thread mirror messages, and system feedback such as `/h`, `/status`, and `/threads`
|
|
96
|
+
切到对应线程。
|
|
193
97
|
|
|
194
|
-
|
|
98
|
+
### 2. 在 IM 中继续对话
|
|
195
99
|
|
|
196
|
-
|
|
100
|
+
绑定成功后,直接发送普通消息即可继续当前线程。
|
|
101
|
+
桌面继续操作这条共享线程时,结果也会同步到 IM。
|
|
197
102
|
|
|
198
|
-
|
|
103
|
+
### 3. 新建 IM 线程
|
|
199
104
|
|
|
200
|
-
```
|
|
201
|
-
|
|
202
|
-
npm update -g codex-to-im
|
|
203
|
-
codex-to-im
|
|
105
|
+
```text
|
|
106
|
+
/new
|
|
204
107
|
```
|
|
205
108
|
|
|
206
|
-
|
|
109
|
+
会在当前正式会话的工作目录下新建线程。
|
|
110
|
+
如果当前没有正式会话,或当前是临时线程,会直接报错。
|
|
207
111
|
|
|
208
|
-
|
|
209
|
-
- `src/service-manager.ts` — bridge and UI lifecycle management
|
|
210
|
-
- `src/desktop-sessions.ts` — desktop thread discovery from Codex session files
|
|
211
|
-
- `src/session-bindings.ts` — binding summaries and web-side binding updates
|
|
212
|
-
- `src/lib/bridge/` — bridge runtime and IM channel routing
|
|
213
|
-
- `docs/` — PRD and shared-thread design docs
|
|
112
|
+
也可以显式指定目录:
|
|
214
113
|
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
npm run typecheck
|
|
219
|
-
npm run build
|
|
114
|
+
```text
|
|
115
|
+
/new my-project
|
|
116
|
+
/new D:\work\my-project
|
|
220
117
|
```
|
|
221
118
|
|
|
222
|
-
##
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
-
|
|
227
|
-
-
|
|
228
|
-
-
|
|
229
|
-
|
|
230
|
-
|
|
119
|
+
## 常用命令
|
|
120
|
+
|
|
121
|
+
- `/` 或 `/status`:查看当前会话、线程、模型、模式、思考级别、共享镜像状态。
|
|
122
|
+
- `/t`:查看最近 10 条桌面线程。
|
|
123
|
+
- `/t all`:查看全部桌面线程。
|
|
124
|
+
- `/t n 100`:查看最近 100 条桌面线程。
|
|
125
|
+
- `/t 1`:切换到第 1 条桌面线程。
|
|
126
|
+
- `/t 0`:切换到当前聊天的临时线程。
|
|
127
|
+
- `/new`:在当前正式会话目录下新建线程。
|
|
128
|
+
- `/new <路径或项目名>`:按指定目录新建线程。
|
|
129
|
+
- `/mode <ask|code>`:切换运行模式。
|
|
130
|
+
- `/reasoning <1-5>`:切换思考级别。
|
|
131
|
+
- `/model`:查看当前模型和可选模型。
|
|
132
|
+
- `/model <模型名>`:切换当前 IM 会话模型。
|
|
133
|
+
- `/history`:查看当前线程历史摘要。
|
|
134
|
+
- `/stop`:停止当前任务。
|
|
135
|
+
- `/unbind`:解除当前聊天与会话的绑定。
|
|
136
|
+
|
|
137
|
+
## 关键配置
|
|
138
|
+
|
|
139
|
+
工作台里的常用配置主要有:
|
|
140
|
+
|
|
141
|
+
- 默认工作空间:用于 `/new my-project` 这类相对路径。
|
|
142
|
+
- Codex 文件系统权限:如 `workspace-write`、`danger-full-access`。
|
|
143
|
+
- Codex 思考级别:`1-5`。
|
|
144
|
+
- 默认模型:从本机可用模型中选择。
|
|
145
|
+
- 反馈使用 markdown:控制 bridge 发到通道里的文本反馈是否走 markdown。
|
|
146
|
+
- 允许局域网访问 Web 控制台:便于手机或局域网设备访问。
|
|
147
|
+
|
|
148
|
+
## 当前边界
|
|
149
|
+
|
|
150
|
+
- `/new` 创建的是 IM 线程,当前只保证在 IM 中可继续;不保证会自动出现在 Codex Desktop 会话列表中。
|
|
151
|
+
- 一个会话只能绑定一个聊天,跨飞书/微信也互斥。
|
|
152
|
+
- 飞书附件当前支持图片和文件;视频目前按文件发送,不承诺原生预览。
|
|
153
|
+
- `/t` 默认只显示最近 10 条桌面线程;需要更多时用 `/t all` 或 `/t n 100`。
|
|
154
|
+
|
|
155
|
+
## 更多文档
|
|
156
|
+
|
|
157
|
+
- Windows 安装说明:[docs/install-windows.md](docs/install-windows.md)
|
|
158
|
+
- 英文文档:[README_EN.md](README_EN.md)
|
package/README_EN.md
ADDED
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
# Codex-to-IM
|
|
2
|
+
|
|
3
|
+
[中文版](README.md)
|
|
4
|
+
|
|
5
|
+
`codex-to-im` is a local bridge app that connects Codex desktop sessions to IM channels such as Feishu/Lark and Weixin.
|
|
6
|
+
|
|
7
|
+
The product is no longer centered around a Codex skill. The main path is:
|
|
8
|
+
|
|
9
|
+
1. Install `codex-to-im`
|
|
10
|
+
2. Open the local web workbench
|
|
11
|
+
3. Configure IM channels
|
|
12
|
+
4. Start the bridge in the background
|
|
13
|
+
5. Bind real desktop Codex threads to Feishu or Weixin chats
|
|
14
|
+
|
|
15
|
+
Optional: if you want Codex to know it can send local files or images back to IM without relying on bridge-injected prompt text, install the bundled `codex-to-im` skill from the workbench.
|
|
16
|
+
|
|
17
|
+
## Project Origin
|
|
18
|
+
|
|
19
|
+
The current codebase is a consolidated continuation of two earlier repositories:
|
|
20
|
+
|
|
21
|
+
- `Claude-to-IM`
|
|
22
|
+
- `Claude-to-IM-skill`
|
|
23
|
+
|
|
24
|
+
`codex-to-im` is based on those two projects and has been reworked toward a single-package local app and shared-thread workflow.
|
|
25
|
+
|
|
26
|
+
Windows host installation guide: [docs/install-windows.md](docs/install-windows.md)
|
|
27
|
+
|
|
28
|
+
## What It Includes
|
|
29
|
+
|
|
30
|
+
- Local background bridge service
|
|
31
|
+
- Local web workbench for configuration, testing, logs, and bindings
|
|
32
|
+
- Feishu credential setup and connectivity testing
|
|
33
|
+
- Weixin QR login flow
|
|
34
|
+
- Desktop session discovery from `~/.codex/sessions`
|
|
35
|
+
- Web-side binding updates for IM chats
|
|
36
|
+
|
|
37
|
+
## Install
|
|
38
|
+
|
|
39
|
+
### Prerequisites
|
|
40
|
+
|
|
41
|
+
- Node.js 20+
|
|
42
|
+
- If you use the `codex` or `auto` runtime, complete Codex authentication under the same OS user account
|
|
43
|
+
|
|
44
|
+
`codex-to-im` now ships with the required `@openai/codex-sdk` / Codex CLI platform dependency, so you do not need to install a separate global Codex CLI just to run the bridge.
|
|
45
|
+
|
|
46
|
+
You still need Codex credentials to be available for the current user. Any of these is sufficient:
|
|
47
|
+
|
|
48
|
+
- a logged-in Codex Desktop App
|
|
49
|
+
- an existing Codex CLI login state
|
|
50
|
+
- `CTI_CODEX_API_KEY`, `CODEX_API_KEY`, or `OPENAI_API_KEY`
|
|
51
|
+
|
|
52
|
+
If the machine does not have any Codex login state yet, the simplest path is still to install the global CLI once and log in:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
npm install -g @openai/codex
|
|
56
|
+
codex auth login
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### Global install
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
npm install -g codex-to-im
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### Local development
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
npm install
|
|
69
|
+
npm run build
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
Windows maintenance note:
|
|
73
|
+
|
|
74
|
+
- The repo includes [patch-codex-sdk-windows-hide.js](scripts/patch-codex-sdk-windows-hide.js), which applies a conservative postinstall patch to `@openai/codex-sdk`.
|
|
75
|
+
- This exists because on Windows the SDK may spawn the bundled Codex CLI without `windowsHide`, causing a black console window to flash for each IM-triggered run.
|
|
76
|
+
- When upgrading `@openai/codex-sdk`, verify that the spawn block still matches; if upstream fixes this natively, remove the patch instead of carrying it forward.
|
|
77
|
+
|
|
78
|
+
## Run
|
|
79
|
+
|
|
80
|
+
Start the local app:
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
codex-to-im
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
This launches the local workbench and opens it in your browser.
|
|
87
|
+
|
|
88
|
+
By default the workbench runs at:
|
|
89
|
+
|
|
90
|
+
```text
|
|
91
|
+
http://127.0.0.1:4781
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
If that port is already occupied, the app automatically finds an available local port and prints the actual address to the terminal when starting.
|
|
95
|
+
|
|
96
|
+
By default, the web workbench only accepts local access.
|
|
97
|
+
|
|
98
|
+
If you want to open it from your phone or another device on the same LAN, enable `允许局域网访问 Web 控制台` in the `配置` page. When enabled:
|
|
99
|
+
|
|
100
|
+
- the workbench shows detected LAN URLs
|
|
101
|
+
- the workbench displays an access token
|
|
102
|
+
- LAN devices see a login page before they can view or modify settings
|
|
103
|
+
- you can also copy a ready-to-use login link that includes `?token=...`
|
|
104
|
+
|
|
105
|
+
If you forget the current address, run:
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
codex-to-im url
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
Check the current local service state:
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
codex-to-im status
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
Stop the background UI and bridge:
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
codex-to-im stop
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
## Main Workflow
|
|
124
|
+
|
|
125
|
+
1. Open the workbench
|
|
126
|
+
2. Fill in Feishu credentials or trigger Weixin QR login
|
|
127
|
+
3. Save config and test connectivity
|
|
128
|
+
4. Start the bridge
|
|
129
|
+
5. Open the desktop sessions section
|
|
130
|
+
6. Bind a Feishu or Weixin chat to the target thread
|
|
131
|
+
7. Continue the same Codex thread from IM
|
|
132
|
+
|
|
133
|
+
If LAN access is enabled, the easiest path is to copy the LAN login link from the local workbench and open it on your phone or another device on the same network.
|
|
134
|
+
|
|
135
|
+
Useful commands:
|
|
136
|
+
|
|
137
|
+
- `/` / `/status` shows the current session
|
|
138
|
+
- `/h` / `/help` shows help
|
|
139
|
+
- `/t` / `/threads` lists the most recent 10 desktop threads, `/t all` / `/threads all` lists all of them, `/t n 100` / `/threads n 100` lists the most recent 100 desktop threads, and `/t 1` / `/thread 1` binds the first one
|
|
140
|
+
- `/n` / `/new` creates a new thread in the current formal session directory; these IM-created threads are only guaranteed to continue inside IM and will not automatically appear in the Codex Desktop thread list
|
|
141
|
+
- `/n proj1` / `/new proj1` creates a new project session under the default workspace root
|
|
142
|
+
- `/m` / `/mode` shows or changes the current mode; options: `code` / `plan` / `ask`
|
|
143
|
+
- `/r` / `/reasoning` shows or changes the current reasoning effort; options: `1|2|3|4|5`
|
|
144
|
+
- `/his` / `/history` shows the summarized history, and `/his raw` / `/history raw` shows raw history
|
|
145
|
+
- `/t 0` / `/thread 0` enters a temporary draft thread that does not pollute the main work thread
|
|
146
|
+
- `1 / 2 / 3` or `/perm ...` handles permission prompts
|
|
147
|
+
- N is configurable in the web workbench under the basic settings panel
|
|
148
|
+
- The workbench command guide shows both short commands and compatible original commands
|
|
149
|
+
|
|
150
|
+
If you enable Feishu streaming response cards, the Feishu app must have the required permissions published first, at minimum:
|
|
151
|
+
|
|
152
|
+
- `cardkit:card:write`
|
|
153
|
+
- `cardkit:card:read`
|
|
154
|
+
- `im:message:update`
|
|
155
|
+
|
|
156
|
+
If those permissions are missing, the bridge log will usually show `99991672` with `cardkit:card:write`, and the bridge falls back to a final-result message.
|
|
157
|
+
|
|
158
|
+
Also note that under the current `codex` runtime, the `Codex CLI / SDK` typically emits the assistant text only when the `agent_message` item is completed, not as token-level deltas. In practice that means Feishu "streaming cards" currently behave more like:
|
|
159
|
+
|
|
160
|
+
- early `Thinking / Tool Progress` updates
|
|
161
|
+
- final response text written into the card at completion
|
|
162
|
+
|
|
163
|
+
So character-by-character text streaming is not guaranteed in the current implementation.
|
|
164
|
+
|
|
165
|
+
If creating a new session fails with `Not inside a trusted directory`, either:
|
|
166
|
+
|
|
167
|
+
- switch to a trusted project with `/new /absolute/path` or `/new proj1`, or
|
|
168
|
+
- enable `Allow Codex outside trusted Git repos` in the basic settings and restart the bridge
|
|
169
|
+
|
|
170
|
+
The configuration page also includes Codex runtime controls:
|
|
171
|
+
|
|
172
|
+
- `Default workspace root`
|
|
173
|
+
- parent directory used for `/new proj1`
|
|
174
|
+
- falls back to `~/cx2im` when left empty, expanded for the current OS
|
|
175
|
+
- `Codex filesystem permission`
|
|
176
|
+
- `read-only`, `workspace-write`, or `danger-full-access`
|
|
177
|
+
- default: `workspace-write`
|
|
178
|
+
- `Codex reasoning effort`
|
|
179
|
+
- global default reasoning level
|
|
180
|
+
- can be overridden per IM session with `/reasoning`
|
|
181
|
+
- official runtime levels are `minimal`, `low`, `medium`, `high`, `xhigh`
|
|
182
|
+
- IM numeric aliases are `1=minimal`, `2=low`, `3=medium`, `4=high`, `5=xhigh`
|
|
183
|
+
|
|
184
|
+
If you are using `codex-to-im` on your own development machine for real coding work, the more aggressive recommended setup is:
|
|
185
|
+
|
|
186
|
+
- set `Codex filesystem permission` to `danger-full-access`
|
|
187
|
+
- set `Codex reasoning effort` to `xhigh`
|
|
188
|
+
|
|
189
|
+
This is closer to a full-power `code` workflow. It fits a controlled local project, but is not a good default for unknown repositories or higher-risk environments.
|
|
190
|
+
|
|
191
|
+
The channel pages also expose a “Use Markdown for bridge feedback” switch:
|
|
192
|
+
- enabled by default for Feishu
|
|
193
|
+
- disabled by default for WeChat
|
|
194
|
+
- affects text sent through the bridge, including normal replies, shared-thread mirror messages, and system feedback such as `/h`, `/status`, and `/threads`
|
|
195
|
+
|
|
196
|
+
## Update
|
|
197
|
+
|
|
198
|
+
On Windows, `npm update -g codex-to-im` can fail with `EBUSY` if the background UI or bridge is still running from the global install directory.
|
|
199
|
+
|
|
200
|
+
Recommended update flow:
|
|
201
|
+
|
|
202
|
+
```bash
|
|
203
|
+
codex-to-im stop
|
|
204
|
+
npm update -g codex-to-im
|
|
205
|
+
codex-to-im
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
## Repo Layout
|
|
209
|
+
|
|
210
|
+
- `src/ui-server.ts` — local workbench UI and HTTP API
|
|
211
|
+
- `src/service-manager.ts` — bridge and UI lifecycle management
|
|
212
|
+
- `src/desktop-sessions.ts` — desktop thread discovery from Codex session files
|
|
213
|
+
- `src/session-bindings.ts` — binding summaries and web-side binding updates
|
|
214
|
+
- `src/lib/bridge/` — bridge runtime and IM channel routing
|
|
215
|
+
- `docs/` — PRD and shared-thread design docs
|
|
216
|
+
|
|
217
|
+
## Development
|
|
218
|
+
|
|
219
|
+
```bash
|
|
220
|
+
npm run typecheck
|
|
221
|
+
npm run build
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
## Status
|
|
225
|
+
|
|
226
|
+
Current product direction:
|
|
227
|
+
|
|
228
|
+
- Standalone local app first
|
|
229
|
+
- Web workbench first
|
|
230
|
+
- Shared Codex thread model first
|