bug: 设备互联远程 Codex 会话上下文显示「未读取到 CLI 配置」
- Dominant language
- TypeScript
- Stars
- 2.7k
- Forks
- 401
- Avg merge
- 21h 48m
- Merged PRs (30d)
- 776
Description
### 问题描述 / What happened
**实际行为**
在 Mac 上用「设备互联」远程连接另一台机器(Windows 被控端),在远程设备上新建 Codex 会话(模型走 OpenAI 订阅)并发送消息。消息能正常跑完,但控制端 Mac 上该会话的**上下文用量显示不出来**:
- 会话头部的上下文圆环显示「—」而不是百分比;
- 悬停该圆环,提示为「No context data yet」+「**未读取到 CLI 配置**」,拿不到总窗口 / 可用 / 自动压缩阈值。
同一句「未读取到 CLI 配置」也会出现在模型选择器里:远程 Codex 模型行的「上下文」一栏。
**期望行为**
远程 Codex 会话应与本机一致,显示被控端该会话的上下文窗口与已用百分比(被控端本机同一模型会话显示正常)。
**源码定位(按本地 checkout 复核,供参考)**
- `apps/desktop/src/renderer/features/cc-agent/CCAgentSessionView.tsx:5929`:`enabled: vendorKey === 'codex' && !deviceId && Boolean(sessionId)` —— 远程会话 `deviceId` 恒非空,原生 Codex 上下文读取不会发起。
- 同文件 `:5939`:`runtimeWindowAuthoritative: vendorKey === 'codex'` 不区分本机 / 远程;而 `apps/desktop/src/renderer/lib/contextWindow.ts:23` 在该标志为真时**只**返回 `nativeContextWindow`,取不到即返回 0,不再回退 sdk / 模型目录窗口。
- `apps/desktop/src/renderer/features/cc-agent/CCAgentSessionView.tsx:6032`:`codexContext` 为空时文案落到 `settings.providers.models.advanced.codexContextUnknown`(中文即「未读取到 CLI 配置」)。
- `packages/device-link/src/allowlist.ts`:远程 invoke 白名单含 `maker:agent:status` / `maker:provider:list` / `maker:get-capabilities`,但**不含** `maker:model-context-limit:get`(`apps/desktop/src/renderer/hooks/useCodexContextWindow.ts:21` 走的就是它),故即使放开 `!deviceId`,隧道也读不到;模型行的 `useModelContextLimit` 同理只读控制端本机 main。
- 引入点:`e17d32d7f` `fix(codex): 让模型上下文设置实际生效并自动恢复压缩失败 (#4016)`(2026-09-07)同时加入 `runtimeWindowAuthoritative`、`!deviceId` 判据与该文案;在此之前的圆环对远程 Codex 会话会走 sdk / 被控端模型目录窗口兜底,是有百分比的。首个包含它的 tag 为 `v0.1.76`。
### 环境 / Environment
- Cindy 版本或 commit / version or commit:
- 控制端(Mac):未记录具体版本(0.1.8x 期间)
- 被控端(Windows):0.1.82-hotfix
- 源码复核:makecindy/cindy 本地 checkout main `8b98a83249c46936ad4a4f08f4033c75525f0893`
- 平台与版本 / platform & OS version: 控制端 macOS;被控端 Windows 11
- 安装方式 / install method: 官方安装包(Windows 侧为应用内自动更新)
### 复现步骤 / Steps to reproduce
1. 两台设备登录**同一个 Cindy 账号**(控制端 Mac、被控端 Windows),均安装包含 #4016 的版本(v0.1.76 及以后)。
2. 在被控端 Windows 的「设置 → 模型供应商」确认 OpenAI / ChatGPT 订阅已连接,且本机能正常跑 Codex 会话。
3. 在被控端「设置 → 远程连接 → 我的设备」打开允许被远程控制的开关;在控制端 Mac 的同一页面把该设备设为「我控制它」。
4. 在控制端 Mac 侧栏段头「任务范围」里选中该设备(或「全部任务」),新建任务,输入框左侧「设备:」选到 Windows,模型选一个走 OpenAI 订阅的 Codex 模型,发送任意一句话。
5. 等这一轮跑完,查看控制端 Mac 上该会话头部的上下文圆环:显示「—」;悬停可见「未读取到 CLI 配置」。
6. 对照:在**被控端本机**用同一模型跑一个会话,圆环正常显示百分比与总窗口 / 可用 / 自动压缩阈值。
7. (同一缺陷的另一处入口)在控制端 Mac 打开模型选择器,远程的 Codex 模型行「上下文」同样显示「未读取到 CLI 配置」。
### 日志与截图 / Logs & screenshots
本次在控制端(macOS)未采集截图与日志,需要时可补充;被控端未观察到与该会话相关的报错。
Contributor guide
Research direction
Start in apps/desktop/src/renderer/features/cc-agent/CCAgentSessionView.tsx, apps/desktop/src/renderer/lib/contextWindow.ts, apps/desktop/src/renderer/hooks/useCodexContextWindow.ts, and packages/device-link/src/allowlist.ts. Trace remote Codex context requests and compare them with the local fallback paths, then reproduce the listed Mac-to-Windows scenario. Done means the remote session ring and model selector show the controlled device's context window and usage instead of «未读取到 CLI 配置».
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- desktop, frontend, networking
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Clearly specified
- Newbie friendliness
- 72/100