Overview
dsh-native-codex-cli
README / EN
Package documentation
Registry summary
dsh.pub verifies the pinned bundle contract, runtime facts, and distribution semantics. The complete README remains in the source repository.
Read the full README on GitHubLIMITATIONS
Known limitations
1. **`transport: daemon` 尚未实现**(`lib/app-server.js` 的 `createDaemonTransport` 会明确抛错,而不是偷偷再起一个 Codex 实例)。要接常驻 daemon,只需实现它并复用同一套 `LineRpc` —— 协议帧与载体无关。 2. **Codex 线程是进程作用域的**:app-server 重启后旧 threadId 需要 `thread/resume` 才能继续。插件在 `turn/start` 收到 `thread not found` 时会自动 resume 重试一次。 3. **历史只能靠 `thread/resume` 拿**:在 Codex CLI 0.153.4 上 `thread/turns/list` 返回 `list_turns is not supported yet`,`thread/read` 带 `includeTurns` 也会报同一个错。插件会检测到并**不再重试分页**,改用 `resume` 返回的 turns;因此历史分页代码是死路径,等 Codex 实装后自动生效。 4. **`assistant/message` 无法由插件写入**:真实事件的 `data` 需要内嵌 provider 原始流(`usage` / `stream`),缺失时 DSH 的会话投影会抛 `Cannot read properties of undefined (reading 'length')` 并导致该会话历史加载失败。所以会话镜像只写 `user/message` + turn 生命周期,Codex 的回复由主页面 dock 渲染。 5. **生成的协议绑定落后于运行时**:0.153.4 实际会在线上多发一些绑定里没有的字段(如 `canAcceptDirectInput`、`availableDecisions`)。本插件只读取自己需要的字段,多余字段一律忽略。 6. **`conversation.input.right` 的 `useInput`/`inputActions` 形状**是运行期探测的:首次在真实 GUI 里加载后,`~/.dsh/logs/dsh-native-codex-cli.log` 会记录 `composer-hooks` 一行,里面是宿主实际传入的字段名。如果与你看到的不一致,按那一行改 `ComposerCodexAction` 里的 `liveDraft` / 清空草稿分支即可。 7. **上传的图片会落盘**在 `~/.dsh/storages/dsh-native-codex-cli/uploads/`,由 `GET /dsh-native-codex-cli/image?p=<路径>` 提供(路径被限制在该目录内)。文件不会自动清理。 8. `turn/start` 的返回值是 **stub**(`itemsView:"notLoaded"`,时间戳为空),`turn/completed` 也只带 `itemsView:"summary"` 的切片。插件的镜像以 `item/started` / `item/completed` / delta 为准。 ---
