{"id":"70ef5841-f760-4720-bf27-fa5f4f8d6001","slug":"codex-deepseek-usage","kind":"mcp","name":"codex-deepseek-usage","summary":"给 Codex 桌面端顶部菜单栏加一个「消耗」按钮，随时查看 DeepSeek 的充值余额与今日消费。基于 Codex++ 用户脚本 + 本地助手进程，通过 MCP 随 Codex 启停，仅 Windows。","owner":"Bright-codern","repoUrl":"https://github.com/Bright-codern/codex-deepseek-usage","license":"MIT","licenseTier":"permissive","trust":"community","stars":0,"match":null,"fewStars":true,"format":"mcp","createdAt":"2026-09-11T04:27:00.000Z","addedAt":"2026-10-21T05:08:56.958Z","logoUrl":"https://avatars.githubusercontent.com/u/312836872?u=53e76c4fd7baded9f4ccc1d9a064d70cdbd60b2e&v=4","linkOnly":false,"collection":null,"skillPath":null,"categories":["cloud-infra"],"tags":["codex","codex-plus-plus","deepseek","powershell","windows","deepseek-api","plugin","usage-monitor"],"runtime":"binary","local":true,"cloudCapable":false,"cloudCapability":"unknown","cloudReadyOnPlatform":false,"needsApiKey":false,"reviewed":false,"syncedAt":"2026-10-28T00:59:20.479Z","sample":false,"url":"https://conduits.dev/tools/codex-deepseek-usage","language":"PowerShell","transports":["stdio"],"install":{},"requirements":{"env":[],"upstreamMayCharge":false},"tools":null,"readme":"# Codex++ DeepSeek 消耗\n\n给 Codex 桌面端顶部菜单栏加一个「消耗」按钮，随时看 DeepSeek 的**充值余额**和**今日消费**。\n\n```\n文件 | 编辑 | 视图 | 帮助 | 消耗\n```\n\n![效果](docs/screenshot.png)\n\n点开就是这样一张小卡片：只有两行数字、同步时间和刷新按钮。不点刷新的话每 360 秒自动同步一次。\n\n> 官网那个「账户总额」= 充值余额 + 赠送额度。只充过值的时候两者是同一个数，摆两遍没有意义，所以没有列出来。\n\n---\n\n## 本次更新（v1.0.12）\n\n相对 `v1.0.10`，改动集中在「今日消费」的取数口径和凭证来源：\n\n- **凭证来源收敛**：只从 **Codex 内置浏览器** 读取「今日消费」的登录态，不再扫描 Chrome / Edge。内置浏览器就跑在 Codex 进程里，登录态持久、读取最直接。\n\n- **不再估算**：删除「余额差值」回退，「今日消费」只显示网页版接口查到的精确值。\n- **不可用时明说**：取不到网页版登录态时，数字位置显示 `—`，下方提示「请先在 Codex 内置浏览器登录 DeepSeek」，不再用估算值冒充精确值。\n- **清理死代码**：移除余额差值状态文件 `state.json` 及其相关逻辑。\n\n此前版本（v1.0.4–v1.0.10）主要完善菜单交互和卡片视觉：\n\n- **菜单联动**：点击「消耗」展开卡片后，鼠标移到「文件 / 编辑 / 视图 / 帮助」会直接打开对应原生菜单；从原生菜单移回「消耗」也会自动切回卡片。\n- **连续悬停切换**：五个菜单按钮之间可以平滑移动切换，不再需要每次先关闭再重新点击。\n- **状态同步**：同步按钮的 `aria-expanded` 与 `data-state`，卡片打开和关闭状态与原生菜单保持一致。\n- **原生视觉统一**：卡片宽度、字体、字号、文字位置、背景、圆角和阴影均对齐 Codex 原生菜单；标题「DeepSeek 消耗」加粗。\n- **文字颜色统一**：菜单主文字使用原生 `100%` 主色，同步时间使用与原生快捷键相同的 `75%` 辅助色。\n- **刷新按钮样式**：改为原生菜单式悬停高亮，不再使用独立的描边按钮样式。\n- **卡片精简**：移除「来源：…」说明行，只保留余额、消费、同步时间和刷新按钮。\n- **升级稳定性**：助手会根据界面脚本中的 `@version` 判断版本；安装新版时自动结束旧助手并启动新版，避免旧脚本反复覆盖新版页面。\n- **文档与截图**：补充新版交互说明，并更新 README 展示截图。\n\n## 特性\n\n- **只看两个数**：充值余额、今日消费，没有别的。\n- **像原生菜单一样切换**：点击「消耗」展开，可在「文件 / 编辑 / 视图 / 帮助 / 消耗」之间悬停切换；卡片沿用 Codex 菜单的字体、底色、圆角和阴影。\n- **不需要单独配置密钥**：余额用 `~/.codex/auth.json` 里现有的 key；今日消费的登录态直接从 **Codex 内置浏览器** 的本地存储里读，需要保持内置浏览器里的网页版登录。\n- **随 Codex 启动、随 Codex 退出**，不随系统开机自启，不常驻托盘。\n- **装在用户目录**，不碰 Codex 安装目录，卸载能还原。\n\n## 工作原理\n\nCodex 主进程不允许渲染进程自己发 HTTP 请求，所以整个东西分成两半：\n\n```\n┌─ Codex 窗口（渲染进程）─────────────────────┐\n│  deepseek-usage-panel.js                    │\n│  往菜单栏插「消耗」按钮 + 渲染小卡片          │\n└───────────────▲─────────────────────────────┘\n                │ 调试端口（CDP，只连本机回环）\n┌───────────────┴─────────────────────────────┐\n│  deepseek-usage-helper.ps1                  │\n│  取余额 / 取今日消费 → 推给卡片               │\n└─────────────────────────────────────────────┘\n                ▲\n                │ 由 Codex 作为 MCP 服务器拉起\n        mcp-launcher.ps1\n```\n\n页面脚本只负责画界面，**一个字节的数据都不由它去取**；取数全部在外部助手进程里完成，通过调试端口把结果推回页面。\n\n### 数据来源\n\n| 指标 | 来源 | 说明 |\n|---|---|---|\n| 充值余额 | `https://api.deepseek.com/user/balance` | 官方接口，用 `~/.codex/auth.json` 里的 `OPENAI_API_KEY`，取 `topped_up_balance` |\n| 今日消费 | `https://platform.deepseek.com/api/v0/usage/by_api_key/cost` | 就是网页版 `platform.deepseek.com/usage` 选「今日」看到的数字，按模型逐小时 cost 求和 |\n\n「今日消费」的凭证由助手自动从 **Codex 内置浏览器** 的 `Local Storage\\leveldb` 里读 `userToken`：\n\n**在 Codex 里打开 `platform.deepseek.com` 扫码登录一次，之后就不用管了。** 内置浏览器的配置目录是持久的，登录状态能长期保留。\n\n> 为什么不直接用你日常的 Chrome：Chrome 136 之后不再允许对默认配置目录开调试端口，登录凭证又是 app-bound 加密的，插件从外部读不到可用登录态；而内置浏览器就在 Codex 进程里，读起来最直接。所以插件只认内置浏览器。\n\n取不到登录态时**不做任何估算**：卡片在数字位置显示 `—`，并在下方写明原因（未登录 / 登录态失效）。\n这样卡片上的数字只有一种含义——网页版查到的精确值。\n\n### 为什么用 MCP 挂启动\n\nCodex 桌面端没有别的「随应用启动」扩展点：启动文件夹是随系统开机，不符合要求；而 MCP 服务器正好是\nCodex 启动时拉起、退出时回收的。\n\n所以安装脚本在 `~/.codex/config.toml` 里写一小段 `[mcp_servers.deepseek_usage]` 指向 `mcp-launcher.ps1`。\n这个启动器只干一件事：**Codex 起来 → 拉起助手；Codex 退出 → 关掉助手**。\n顺带它还暴露一个 `deepseek_usage` 工具，让 Codex 自己也能读到那份数据。\n\n## 环境要求\n\n- Windows 10 / 11\n- [Codex 桌面端](https://openai.com/codex)（本插件依赖它的调试端口和用户脚本机制）\n- [Codex++](https://github.com/BigPizzaV3/CodexPlusPlus)（把用户脚本注入 Codex 的启动器）\n- 在 **Codex 内置浏览器** 里登录过 DeepSeek 网页版（只为「今日消费」这一项；安装时会提示你去登录）\n\n## 安装\n\n```powershell\npowershell -NoProfile -ExecutionPolicy Bypass -File .\\install.ps1\n```\n\n装完在 Codex 内置浏览器里打开 <https://platform.deepseek.com> 登录一次，「今日消费」才有数字（没登录时显示 `—`）。\n\n然后**重启一次 Codex**，点顶部菜单栏的「消耗」。\n\n脚本会备份改过的文件（`config.toml.dsusage.bak`、`user_scripts.json.bak`），重复运行不会重复写入。\n\n## 卸载\n\n```powershell\npowershell -NoProfile -ExecutionPolicy Bypass -File .\\uninstall.ps1\n```\n\n会停掉助手、移除启动文件夹里的旧快捷方式、从 `config.toml` 摘掉 MCP 注册，并删除插件文件。\n重启 Codex 后「消耗」按钮消失。\n\n## 配置\n\n`%APPDATA%\\Codex++\\deepseek-usage\\config.json`\n\n| 字段 | 默认 | 说明 |\n|---|---|---|\n| `debugPort` | `9229` | Codex++ 启动 Codex 时带的调试端口 |\n| `refreshSeconds` | `360` | 自动刷新间隔（秒） |\n| `pollSeconds` | `2` | 助手轮询页面的间隔（秒） |\n| `apiKey` | 空 | 留空则读 `~/.codex/auth.json` 的 `OPENAI_API_KEY` |\n| `uiScript` | 空 | 一般不用填 |\n\n## 排查\n\n日志：\n\n- 助手：`%APPDATA%\\Codex++\\deepseek-usage\\helper.log`\n- 启动器：`%APPDATA%\\Codex++\\deepseek-usage\\launcher.log`\n\n常见情况：\n\n| 现象 | 原因 / 处理 |\n|---|---|\n| 卡片显示「等待助手进程…」 | 助手没在跑。看 `launcher.log` 有没有 `spawned`；也可以双击 `%APPDATA%\\Codex++\\deepseek-usage\\start-hidden.vbs` 手动拉起 |\n| 「获取失败：未找到 DeepSeek API Key」 | `~/.codex/auth.json` 里没有 `OPENAI_API_KEY`，或在 `config.json` 里填 `apiKey` |\n| 「今日消费」显示 `—` 并提示登录 | Codex 内置浏览器里没有 DeepSeek 网页版的登录态。打开 `platform.deepseek.com` 扫码登录一次即可（插件不从 Chrome / Edge 读取） |\n| 重启 Codex 后助手没被带起来 | 多半是 Codex 重写 `~/.codex/config.toml` 时把 `[mcp_servers.deepseek_usage]` 抹掉了，重跑一次 `install.ps1` 补写 |\n\n## 已知限制\n\n- 「今日消费」走的是网页版内部接口（不是公开 API），**DeepSeek 改版时可能失效**；因为不做估算，失效时卡片会直接显示 `—` 并提示，而不是给一个错数。\n- 助手每 2 秒连一次本地调试端口，属于轻量轮询。\n- 「今日」按北京时间算，跨时区使用需要自行调整。\n- 「今日消费」的登录态只从 Codex 内置浏览器读取，你在 Chrome / Edge 里的登录态不会被使用。\n- 只在 Windows 上验证过。\n\n## 目录结构\n\n```\ndeepseek-usage-panel.js        注入 Codex 页面的用户脚本（菜单栏按钮 + 卡片）\nHANDOFF.md                     维护与交接文档\nconfig.example.json            默认配置\ninstall.ps1 / uninstall.ps1    安装 / 卸载\nhelper/\n  deepseek-usage-helper.ps1    取数并推给页面\n  mcp-launcher.ps1             随 Codex 启动，拉起 / 回收助手\n  start-hidden.vbs             无窗口启动助手（调试用）\ndocs/\n  screenshot.png\n```\n\n## 维护与交接\n\n架构、约定、调试流程、升级步骤和已知风险见 [HANDOFF.md](HANDOFF.md)。\n\n## 许可\n\n[MIT](LICENSE)\n\n## 免责声明\n\n非官方项目，与 OpenAI、DeepSeek 均无关联。使用「今日消费」所依赖的网页版内部接口可能违反其服务条款，\n请自行判断。本项目只读取你自己的账户数据，不发送到任何第三方。\n"}