codex-to-im 1.0.13 → 1.0.14
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 +97 -170
- package/README_EN.md +230 -0
- package/dist/daemon.mjs +384 -226
- package/dist/ui-server.mjs +3 -2
- 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/dist/ui-server.mjs
CHANGED
|
@@ -8730,8 +8730,9 @@ function renderHtml() {
|
|
|
8730
8730
|
<div class="command-list-head"><div>\u547D\u4EE4</div><div>\u539F\u59CB\u547D\u4EE4</div><div>\u8BF4\u660E</div></div>
|
|
8731
8731
|
<div class="command-item"><div class="command-col-command"><code>/</code></div><div class="command-col-original"><code>/status</code></div><div class="command-col-desc">\u67E5\u770B\u5F53\u524D\u4F1A\u8BDD\u3002</div></div>
|
|
8732
8732
|
<div class="command-item"><div class="command-col-command"><code>/h</code></div><div class="command-col-original"><code>/help</code></div><div class="command-col-desc">\u67E5\u770B\u5E2E\u52A9\u3002</div></div>
|
|
8733
|
-
|
|
8734
|
-
|
|
8733
|
+
<div class="command-item"><div class="command-col-command"><code>/t</code></div><div class="command-col-original"><code>/threads</code></div><div class="command-col-desc">\u5217\u51FA\u6700\u8FD1 10 \u6761\u684C\u9762\u4F1A\u8BDD\u3002</div></div>
|
|
8734
|
+
<div class="command-item"><div class="command-col-command"><code>/t all</code></div><div class="command-col-original"><code>/threads all</code></div><div class="command-col-desc">\u5217\u51FA\u5168\u90E8\u684C\u9762\u4F1A\u8BDD\u3002</div></div>
|
|
8735
|
+
<div class="command-item"><div class="command-col-command"><code>/t <\u5E8F\u53F7></code></div><div class="command-col-original"><code>/thread <\u5E8F\u53F7></code></div><div class="command-col-desc">\u6309\u5E8F\u53F7\u63A5\u7BA1\u684C\u9762\u4F1A\u8BDD\u3002</div></div>
|
|
8735
8736
|
<div class="command-item"><div class="command-col-command"><code>/n [\u7EDD\u5BF9\u8DEF\u5F84 | \u9879\u76EE\u540D]</code></div><div class="command-col-original"><code>/new [\u7EDD\u5BF9\u8DEF\u5F84 | \u9879\u76EE\u540D]</code></div><div class="command-col-desc">\u4E0D\u5E26\u53C2\u6570\u65F6\u5728\u5F53\u524D\u6B63\u5F0F\u4F1A\u8BDD\u76EE\u5F55\u4E0B\u65B0\u5EFA\u7EBF\u7A0B\uFF1B\u76F8\u5BF9\u9879\u76EE\u540D\u4F1A\u5728\u201C\u9ED8\u8BA4\u5DE5\u4F5C\u7A7A\u95F4\u201D\u4E0B\u521B\u5EFA\u76EE\u5F55\uFF1B\u5F53\u524D\u82E5\u662F\u4E34\u65F6\u8349\u7A3F\u7EBF\u7A0B\u5219\u4F1A\u62A5\u9519\u3002\u901A\u8FC7 IM \u521B\u5EFA\u7684\u65B0\u7EBF\u7A0B\u5F53\u524D\u53EA\u4FDD\u8BC1\u5728 IM \u4E2D\u53EF\u7EE7\u7EED\uFF0C\u4E0D\u4F1A\u81EA\u52A8\u51FA\u73B0\u5728 Codex Desktop \u4F1A\u8BDD\u5217\u8868\u4E2D\u3002</div></div>
|
|
8736
8737
|
<div class="command-item"><div class="command-col-command"><code>\u76F4\u63A5\u53D1\u9001\u6587\u672C</code></div><div class="command-col-original">\u2014</div><div class="command-col-desc">\u7EE7\u7EED\u5F53\u524D\u5DF2\u7ED1\u5B9A\u4F1A\u8BDD\uFF1B\u672A\u7ED1\u5B9A\u65F6\u4F1A\u81EA\u52A8\u8FDB\u5165\u4E34\u65F6\u8349\u7A3F\u7EBF\u7A0B\u3002</div></div>
|
|
8737
8738
|
<div class="command-item"><div class="command-col-command"><code>/his</code></div><div class="command-col-original"><code>/history</code></div><div class="command-col-desc">\u67E5\u770B\u5F53\u524D\u4F1A\u8BDD\u6574\u7406\u540E\u7684\u6458\u8981\u3002</div></div>
|
package/docs/codex-to-im-prd.md
CHANGED
|
@@ -200,7 +200,7 @@
|
|
|
200
200
|
- `/threads`
|
|
201
201
|
- `/thread <thread-id>`
|
|
202
202
|
- `/new`
|
|
203
|
-
- `/
|
|
203
|
+
- `/thread <thread-id>`
|
|
204
204
|
- `/stop`
|
|
205
205
|
|
|
206
206
|
按钮和卡片交互可以作为增强,但不能替代文本命令。
|
|
@@ -359,7 +359,7 @@
|
|
|
359
359
|
|
|
360
360
|
目标:
|
|
361
361
|
|
|
362
|
-
- 飞书端支持 `/sessions`、`/use`、`/
|
|
362
|
+
- 飞书端支持 `/sessions`、`/use`、`/thread`
|
|
363
363
|
- 飞书端支持切换当前活动共享会话
|
|
364
364
|
- 支持“同步当前会话到飞书”按钮
|
|
365
365
|
- 支持从飞书端继续推动工作
|
|
@@ -146,7 +146,7 @@ flowchart LR
|
|
|
146
146
|
- [D:/codex/Claude-to-IM-skill/src/lib/bridge/channel-router.ts](D:/codex/Claude-to-IM-skill/src/lib/bridge/channel-router.ts)
|
|
147
147
|
- 已支持 chat 到 session 的自动解析与绑定
|
|
148
148
|
- [D:/codex/Claude-to-IM-skill/src/lib/bridge/bridge-manager.ts](D:/codex/Claude-to-IM-skill/src/lib/bridge/bridge-manager.ts)
|
|
149
|
-
- 已支持 `/new`、`/
|
|
149
|
+
- 已支持 `/new`、`/thread`、`/status`、`/sessions`、`/stop`
|
|
150
150
|
|
|
151
151
|
当前缺失的不是桥接基础设施,而是“桌面真实会话接管”的这一层:
|
|
152
152
|
|
|
@@ -348,8 +348,6 @@ sequenceDiagram
|
|
|
348
348
|
- 列出最近发现的桌面 thread
|
|
349
349
|
- `/thread <thread-id>`
|
|
350
350
|
- 直接把当前 chat 切换到指定 thread 对应的共享会话
|
|
351
|
-
- `/bind <thread-id>`
|
|
352
|
-
- 若该 thread 还没有共享会话,则创建并绑定
|
|
353
351
|
- `/new`
|
|
354
352
|
- 新建一条 bridge 自己管理的新共享会话
|
|
355
353
|
- `/stop`
|
|
@@ -518,7 +516,6 @@ sequenceDiagram
|
|
|
518
516
|
- `/use`
|
|
519
517
|
- `/threads`
|
|
520
518
|
- `/thread`
|
|
521
|
-
- `/bind`
|
|
522
519
|
|
|
523
520
|
### Phase 2E:桌面一键共享
|
|
524
521
|
|
package/docs/install-windows.md
CHANGED
|
@@ -227,7 +227,7 @@ codex-to-im stop
|
|
|
227
227
|
- IM 里也支持一组短命令别名:
|
|
228
228
|
- `/` / `/status` 当前会话
|
|
229
229
|
- `/h` / `/help` 帮助
|
|
230
|
-
- `/t` / `/threads`
|
|
230
|
+
- `/t` / `/threads` 最近 10 条桌面会话,`/t all` / `/threads all` 查看全部,`/t 1` / `/thread 1` 接管
|
|
231
231
|
- `/n` / `/new` 在当前正式会话目录下新建线程;这类线程当前只保证在 IM 中可继续,不会自动出现在 Codex Desktop 会话列表中
|
|
232
232
|
- `/n proj1` / `/new proj1` 新建项目会话
|
|
233
233
|
- `/m` / `/mode` 查看或切换模式,可选 `code` / `plan` / `ask`
|
package/package.json
CHANGED
|
@@ -1,8 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codex-to-im",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.14",
|
|
4
4
|
"description": "Installable Codex-to-IM bridge with local setup UI and background service",
|
|
5
5
|
"license": "MIT",
|
|
6
|
+
"homepage": "https://github.com/zhangle1987/codex-to-im#readme",
|
|
7
|
+
"bugs": {
|
|
8
|
+
"url": "https://github.com/zhangle1987/codex-to-im/issues"
|
|
9
|
+
},
|
|
10
|
+
"repository": {
|
|
11
|
+
"type": "git",
|
|
12
|
+
"url": "git+https://github.com/zhangle1987/codex-to-im.git"
|
|
13
|
+
},
|
|
6
14
|
"type": "module",
|
|
7
15
|
"files": [
|
|
8
16
|
"dist/",
|
|
@@ -13,7 +21,7 @@
|
|
|
13
21
|
"SKILL.md",
|
|
14
22
|
"LICENSE",
|
|
15
23
|
"README.md",
|
|
16
|
-
"
|
|
24
|
+
"README_EN.md",
|
|
17
25
|
"SECURITY.md",
|
|
18
26
|
"config.env.example"
|
|
19
27
|
],
|
package/README_CN.md
DELETED
|
@@ -1,227 +0,0 @@
|
|
|
1
|
-
# Codex-to-IM
|
|
2
|
-
|
|
3
|
-
`codex-to-im` 是一个本地桥接应用,用来把 Codex 桌面会话接到飞书、微信等 IM 渠道。
|
|
4
|
-
|
|
5
|
-
这个项目现在不再以 Skill 为中心。主路径是:
|
|
6
|
-
|
|
7
|
-
1. 安装 `codex-to-im`
|
|
8
|
-
2. 打开本地 Web 工作台
|
|
9
|
-
3. 配置 IM 渠道
|
|
10
|
-
4. 在后台启动 bridge
|
|
11
|
-
5. 把真实的桌面 Codex thread 绑定到飞书或微信聊天
|
|
12
|
-
|
|
13
|
-
可选:如果你希望 Codex 在不依赖 bridge 注入提示词的前提下,知道“可以把本地图片/文件回发到 IM”,可以在工作台里安装附带的 `codex-to-im` skill。
|
|
14
|
-
|
|
15
|
-
## 项目来源
|
|
16
|
-
|
|
17
|
-
当前这套代码是在两个早期仓库的基础上整理和改造出来的:
|
|
18
|
-
|
|
19
|
-
- `Claude-to-IM`
|
|
20
|
-
- `Claude-to-IM-skill`
|
|
21
|
-
|
|
22
|
-
现在的 `codex-to-im` 是在这两个工程基础上继续演进的单包版本,重点调整成了本地应用和共享 thread 的形态。
|
|
23
|
-
|
|
24
|
-
Windows 主机安装说明见:[docs/install-windows.md](D:/codex/Claude-to-IM-skill/docs/install-windows.md)
|
|
25
|
-
|
|
26
|
-
## 现在包含什么
|
|
27
|
-
|
|
28
|
-
- 本地后台 bridge 服务
|
|
29
|
-
- 本地 Web 工作台,用于配置、测试、日志和绑定管理
|
|
30
|
-
- 飞书凭据配置与连通性测试
|
|
31
|
-
- 微信扫码登录
|
|
32
|
-
- 从 `~/.codex/sessions` 发现桌面会话
|
|
33
|
-
- 在网页中查看和切换 IM 绑定
|
|
34
|
-
|
|
35
|
-
## 安装
|
|
36
|
-
|
|
37
|
-
### 依赖
|
|
38
|
-
|
|
39
|
-
- Node.js 20+
|
|
40
|
-
- 如果使用 `codex` 或 `auto` 运行时:需要在同一系统用户下完成 Codex 认证
|
|
41
|
-
|
|
42
|
-
`codex-to-im` 当前已经随包带上运行所需的 `@openai/codex-sdk` / Codex CLI 平台依赖,正常使用 bridge 时不要求你额外再全局安装一份 Codex CLI。
|
|
43
|
-
|
|
44
|
-
但你仍然需要让 Codex 在当前用户下可用。推荐满足以下任一条件:
|
|
45
|
-
|
|
46
|
-
- 已安装并登录过 Codex Desktop App
|
|
47
|
-
- 已经有可用的 Codex CLI 登录态
|
|
48
|
-
- 已配置 `CTI_CODEX_API_KEY`、`CODEX_API_KEY` 或 `OPENAI_API_KEY`
|
|
49
|
-
|
|
50
|
-
如果你机器上还没有任何 Codex 登录态,最直接的做法仍然是临时安装一次全局 Codex CLI 并登录:
|
|
51
|
-
|
|
52
|
-
```bash
|
|
53
|
-
npm install -g @openai/codex
|
|
54
|
-
codex auth login
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
### 全局安装
|
|
58
|
-
|
|
59
|
-
```bash
|
|
60
|
-
npm install -g codex-to-im
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
### 本地开发
|
|
64
|
-
|
|
65
|
-
```bash
|
|
66
|
-
npm install
|
|
67
|
-
npm run build
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
Windows 维护说明:
|
|
71
|
-
|
|
72
|
-
- 仓库包含 [patch-codex-sdk-windows-hide.js](D:/codex/Claude-to-IM-skill/scripts/patch-codex-sdk-windows-hide.js),会在 `npm install` 后给 `@openai/codex-sdk` 打一个保守补丁。
|
|
73
|
-
- 原因是 Windows 下 SDK 拉起 Codex CLI 时若不带 `windowsHide`,每次 IM 触发运行都可能弹出黑色控制台窗口。
|
|
74
|
-
- 后续升级 `@openai/codex-sdk` 时,要确认这个补丁仍然能匹配;如果上游已经原生修复,应直接删除这层补丁。
|
|
75
|
-
|
|
76
|
-
## 启动
|
|
77
|
-
|
|
78
|
-
启动本地应用:
|
|
79
|
-
|
|
80
|
-
```bash
|
|
81
|
-
codex-to-im
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
它会拉起本地工作台并在浏览器中打开。
|
|
85
|
-
|
|
86
|
-
默认地址:
|
|
87
|
-
|
|
88
|
-
```text
|
|
89
|
-
http://127.0.0.1:4781
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
如果默认端口已被占用,应用会自动选择一个可用端口,并在启动时把实际地址打印到命令行。
|
|
93
|
-
|
|
94
|
-
默认情况下,Web 工作台只允许本机访问。
|
|
95
|
-
|
|
96
|
-
如果你需要在手机或同一局域网里的其他设备上打开配置页,可以在“配置”页里勾选“允许局域网访问 Web 控制台”。开启后:
|
|
97
|
-
|
|
98
|
-
- 工作台会显示当前可用的局域网地址
|
|
99
|
-
- 工作台会生成并展示一个访问 token
|
|
100
|
-
- 局域网设备访问时会先进入登录页,输入 token 后才能查看和修改配置
|
|
101
|
-
- 也可以直接复制页面里的局域网登录链接,链接里会附带 `?token=...`
|
|
102
|
-
|
|
103
|
-
如果你忘了当前地址,可以执行:
|
|
104
|
-
|
|
105
|
-
```bash
|
|
106
|
-
codex-to-im url
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
查看当前本地服务状态:
|
|
110
|
-
|
|
111
|
-
```bash
|
|
112
|
-
codex-to-im status
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
停止后台 UI 和 bridge:
|
|
116
|
-
|
|
117
|
-
```bash
|
|
118
|
-
codex-to-im stop
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
## 主流程
|
|
122
|
-
|
|
123
|
-
1. 打开工作台
|
|
124
|
-
2. 填写飞书配置,或触发微信扫码
|
|
125
|
-
3. 保存配置并测试连通性
|
|
126
|
-
4. 启动 bridge
|
|
127
|
-
5. 打开“最近桌面会话”
|
|
128
|
-
6. 把飞书或微信聊天绑定到目标 thread
|
|
129
|
-
7. 在 IM 中继续同一条 Codex 会话
|
|
130
|
-
|
|
131
|
-
如果开启了局域网访问,推荐在本机工作台里复制局域网登录链接,再发给你的手机或局域网里的其他设备。
|
|
132
|
-
|
|
133
|
-
常用命令补充:
|
|
134
|
-
|
|
135
|
-
- `/` / `/status` 查看当前会话
|
|
136
|
-
- `/h` / `/help` 查看帮助
|
|
137
|
-
- `/t` / `/threads` 查看最近桌面会话,`/t 1` / `/thread 1` 接管第 1 条
|
|
138
|
-
- `/n` / `/new` 在当前正式会话目录下新建线程;这类线程当前只保证在 IM 中可继续,不会自动出现在 Codex Desktop 会话列表中
|
|
139
|
-
- `/n proj1` / `/new proj1` 在默认工作空间下新建项目会话
|
|
140
|
-
- `/m` / `/mode` 查看或切换模式,可选 `code` / `plan` / `ask`
|
|
141
|
-
- `/r` / `/reasoning` 查看或切换思考级别,可选 `1|2|3|4|5`
|
|
142
|
-
- `/his` / `/history` 查看整理后的历史摘要,`/his raw` / `/history raw` 查看原始记录
|
|
143
|
-
- `/t 0` / `/thread 0` 进入临时草稿线程,不污染正式工作会话
|
|
144
|
-
- `1 / 2 / 3` 或 `/perm ...` 处理权限
|
|
145
|
-
- N 可在 Web 工作台的“基础配置”里调整
|
|
146
|
-
- Web 工作台的“命令说明”页会同时列出短命令和兼容原命令
|
|
147
|
-
|
|
148
|
-
如果你启用了飞书流式响应卡片,需要先在飞书应用侧开通并发布相关权限,至少包括:
|
|
149
|
-
|
|
150
|
-
- `cardkit:card:write`
|
|
151
|
-
- `cardkit:card:read`
|
|
152
|
-
- `im:message:update`
|
|
153
|
-
|
|
154
|
-
如果缺少这些权限,Bridge 日志里通常会看到 `99991672` 和 `cardkit:card:write`,系统会自动退回到最终结果消息。
|
|
155
|
-
|
|
156
|
-
另外要注意:当前 `codex` runtime 下,`Codex CLI / SDK` 实际返回的正文文本事件通常只在 `item.completed` 时出现,不是 token 级逐字输出。所以“飞书流式响应卡片”在当前版本里更准确的含义是:
|
|
157
|
-
|
|
158
|
-
- 可以先显示 `Thinking / Tool Progress`
|
|
159
|
-
- 正文通常会在回答完成时一次性落到卡片里
|
|
160
|
-
|
|
161
|
-
也就是说,飞书侧当前不保证像聊天模型网页那样逐字冒字。
|
|
162
|
-
|
|
163
|
-
如果新建会话时报 `Not inside a trusted directory`,可以:
|
|
164
|
-
|
|
165
|
-
- 用 `/new /绝对路径` 或 `/new proj1` 切到一个你已经信任的项目目录
|
|
166
|
-
- 或在基础配置里打开“允许在未信任 Git 目录运行 Codex”,然后重启 Bridge
|
|
167
|
-
|
|
168
|
-
当前配置页新增了几项和 Codex 运行行为直接相关的配置:
|
|
169
|
-
|
|
170
|
-
- `默认工作空间`
|
|
171
|
-
- 给 `/new proj1` 这类相对项目名提供父目录
|
|
172
|
-
- 留空时默认回退到 `~/cx2im`,并按当前系统展开为实际路径
|
|
173
|
-
- `Codex 文件系统权限`
|
|
174
|
-
- 可选 `read-only`、`workspace-write`、`danger-full-access`
|
|
175
|
-
- 默认 `workspace-write`
|
|
176
|
-
- `Codex 思考级别`
|
|
177
|
-
- 全局默认值,可在 IM 中用 `/reasoning` 对当前会话覆盖
|
|
178
|
-
- 官方仅有 5 个级别:`minimal`、`low`、`medium`、`high`、`xhigh`
|
|
179
|
-
- IM 中也支持数字别名:`1=minimal`、`2=low`、`3=medium`、`4=high`、`5=xhigh`
|
|
180
|
-
|
|
181
|
-
如果你是在自己的本地开发机上长期用 `codex-to-im` 做实际编码,当前更激进的推荐配置是:
|
|
182
|
-
|
|
183
|
-
- `Codex 文件系统权限` 设为 `danger-full-access`
|
|
184
|
-
- `Codex 思考级别` 设为 `xhigh`
|
|
185
|
-
|
|
186
|
-
这样更接近完整 `code` 模式下的开发体验。它适合你自己的受控项目目录,不适合直接照搬到陌生仓库或高风险环境。
|
|
187
|
-
|
|
188
|
-
通道页还支持“反馈使用 Markdown”开关:
|
|
189
|
-
- 飞书默认开启
|
|
190
|
-
- 微信默认关闭
|
|
191
|
-
- 影响通过 bridge 发送到通道的文本反馈,包括普通回复、共享桌面线程镜像以及 `/h`、`/status`、`/threads` 这类系统反馈
|
|
192
|
-
|
|
193
|
-
## 更新
|
|
194
|
-
|
|
195
|
-
Windows 上如果后台 UI 或 bridge 仍在运行,`npm update -g codex-to-im` 可能会因为安装目录被占用而报 `EBUSY`。
|
|
196
|
-
|
|
197
|
-
推荐更新流程:
|
|
198
|
-
|
|
199
|
-
```bash
|
|
200
|
-
codex-to-im stop
|
|
201
|
-
npm update -g codex-to-im
|
|
202
|
-
codex-to-im
|
|
203
|
-
```
|
|
204
|
-
|
|
205
|
-
## 仓库结构
|
|
206
|
-
|
|
207
|
-
- `src/ui-server.ts` — 本地工作台 UI 和 HTTP API
|
|
208
|
-
- `src/service-manager.ts` — bridge 与 UI 的生命周期管理
|
|
209
|
-
- `src/desktop-sessions.ts` — 从 Codex 会话文件发现桌面 thread
|
|
210
|
-
- `src/session-bindings.ts` — 绑定摘要与网页侧切换
|
|
211
|
-
- `src/lib/bridge/` — bridge 运行时与 IM 路由
|
|
212
|
-
- `docs/` — PRD 与共享 thread 技术设计
|
|
213
|
-
|
|
214
|
-
## 开发
|
|
215
|
-
|
|
216
|
-
```bash
|
|
217
|
-
npm run typecheck
|
|
218
|
-
npm run build
|
|
219
|
-
```
|
|
220
|
-
|
|
221
|
-
## 当前方向
|
|
222
|
-
|
|
223
|
-
- 先做独立本地应用
|
|
224
|
-
- 先做 Web 工作台
|
|
225
|
-
- 先做共享 Codex thread
|
|
226
|
-
|
|
227
|
-
[English](README.md)
|