Skip to content

dsh-codex-subscription

Verified

@lyogvce/dsh-codex-subscription · v0.2.11 · MIT · Web UI

复用本机 ~/.codex 订阅凭证与 models_cache.json 模型缓存,在 DSH 中通过 SSE 直连调用 Codex 模型。

Install

dsh plugin add @lyogvce/dsh-codex-subscription

Confirm the layer applied with dsh --profile default --dump-config — see the install guide.

Source

Published to npm without a public repository. Inspect the package contents before installing.

Tags

Readme

dsh-codex-subscription

为 DeepSeek Harness 桌面版(DSH Desktop 0.2.1+)提供极简、零后台进程的 Codex 订阅直连能力。自用。

直接读取本机 ~/.codex/auth.json 与 ~/.codex/models_cache.json,在进程内通过 SSE 直连调用 ChatGPT Codex 订阅模型,彻底替代外部网关进程(如 Magpie)。


核心特性

  1. 与本机 Codex CLI / Desktop 100% 共享登录态
    • 直接读取 $CODEX_HOME/auth.json(默认 ~/.codex/auth.json)。
    • 每次请求前检查 access_token 的 JWT exp:距离过期不足 5 分钟时自动通过单飞锁(Single-flight)向 https://auth.openai.com/oauth/token 刷新,并通过 realpathSync + 临时文件 rename 原子写回 auth.json,保证与 Codex CLI 永不互踢下线。
  2. 零网络轮询的本地模型目录发现、防降级保护与可观测性日志
    • 直接读取 ~/.codex/models_cache.json(每次按文件 mtime 与大小做微秒级 stat 校验,仅在文件变化时重读解析),提取 visibility === "list" 的模型及其 context_window、supported_reasoning_levels(自动将 ultra 映射为 DSH 的 max 档位)与 default_verbosity。
    • 防旧版客户端降级污染:自动将高版本 models_cache.json 备份至 ~/.codex/cache/dsh-codex-subscription/models-cache-backup.json;当外部旧版进程(如 dsh-subagent-codex 内置的 0.153.4)将 models_cache.json 降级覆写为不含新模型的旧缓存时,自动拦截降级并保留高版本模型目录。
    • 可观测性日志:自动在 ~/.codex/cache/dsh-codex-subscription/plugin.log(带 512KB 自动滚动截断,忽略纯 fetched_at 心跳刷新)记录目录加载(catalog.load / catalog.snapshot)、降级拦截(catalog.downgrade_rejected)、备份恢复(catalog.backup_restored)与凭证续期(auth.refreshed / auth.refresh_failed)事件。
  3. 支持按配置屏蔽模型(disabledModels)、自定义上下文窗口(contextWindows)与原生重试策略(retryPolicy)
    • 在插件配置中通过 disabledModels 屏蔽指定模型 slug,保持模型选择器干净清爽。
    • 通过 contextWindows 按模型 slug 自定义向 DSH 会话与自动压缩器暴露的预算窗口(例如设为 400000);未配置时默认使用模型物理上限 max_context_window(872000)。同时底层 PiCodexModel.contextWindow 始终保持物理上限 872000,彻底防止 dsh-llm-pi-ai 在预算窗口与物理上限之间误判 CONTEXT_WINDOW_EXCEEDED。
    • 通过 retryPolicy 暴露 DSH 原生 RetryPolicySchema(支持 normal / always 模式、maxRetries、retryableCodes 与 backoff,并随 registration.replace 热更新生效)。未配置时保持宿主默认策略(mode: "normal"、maxRetries: 5、默认 5 类错误码 EMPTY_RESPONSE / RATE_LIMIT / SERVER / TIMEOUT / TRANSPORT 及 500ms..10000ms 退避)。注意:retryableCodes 为完整覆盖集合而非追加列表,显式配置时需同时列出默认错误码与新增错误码。
  4. 原生多轮思考链回放与工具调用
    • 底层复用 DSH 内置的 PiAiAdapter 与 @earendil-works/pi-ai 的 openaiCodexProvider(),固定使用 sse 传输(含 zstd 请求体压缩、规范化纯 UUID session-id / x-client-request-id 缓存头、reasoning.encrypted_content 签名回放与图片自动缩放卸载)。
  5. Codex 订阅限额内联展示与 ⚡ Fast 极速模式一键切换(conversation.input.right)
    • 当会话选中 openai-codex 模型时,在输入框右下角紧邻模型选择器左侧展示限额胶囊(根据 wham/usage 返回的 limit_window_seconds 自适应展示 Plus 的 5h X% · 7d Y% 双窗口或 Pro 的 7d X% 单窗口,内置 60 秒缓存、单飞合并与每轮回复结束自动刷新),点击可展开查看对应窗口进度条、重置倒计时与手动刷新按钮;切换至其他 Provider 模型时自动隐藏。
    • ⚡ 会话树级 Fast 极速模式(service_tier: "priority",最高 2x 推理速度,主会话与 Subagent / 智能体团队同开同关):每个主会话可在限额弹窗底部独立开关 Fast 模式(不同主会话互不影响,新会话默认继承插件设置中的 fastMode,未配置时默认 false 关闭),该主会话派生的所有 subagent、subagent_fork、workflow 子任务以及智能体团队成员(spawn_teammate)均自动绑定至同一主会话开关,实时联动、同开同关;状态自动持久化至 ~/.codex/cache/dsh-codex-subscription/runtime-state.json。开启后胶囊显示闪电标识 ⚡,并在请求体中自动注入 "service_tier": "priority"。

安装与配置

1. 安装到本地 Profile

在 DSH 中通过插件管理器安装本地目录 /Users/lijiechengbj/projects/AI-agents/dsh-codex-subscription,或执行:

dsh plugin --profile desktop add @lyogvce/dsh-codex-subscription

2. 配置屏蔽模型(disabledModels)、上下文窗口(contextWindows)与重试策略(retryPolicy)

默认配置(见 cordis.patch.yml)已屏蔽旧模型与备用模型,仅保留主力模型(如 gpt-6.1-sol、gpt-6-astra)。未配置 contextWindows 时,模型默认使用 872000 上下文窗口;未配置 retryPolicy 时默认使用宿主 normal 重试策略(最多额外重试 5 次,覆盖 EMPTY_RESPONSE、RATE_LIMIT、SERVER、TIMEOUT、TRANSPORT)。

若希望自定义上下文预算窗口或扩展可重试错误码白名单(注意:retryableCodes 是完整集合而非追加列表,显式填写时需同时保留默认 5 类错误码),可在 Profile 的 cordis.patch.yml 中配置:

- id: codex-subscription
  name: "@lyogvce/dsh-codex-subscription"
  config:
    disabledModels:
      - gpt-6-sol
      - gpt-6-luna
      - gpt-5.6-sol
      - gpt-5.6-terra
      - gpt-5.6-luna
    contextWindows:
      gpt-6.1-sol: 400000
      gpt-6-astra: 400000
    retryPolicy:
      mode: normal
      maxRetries: 5
      retryableCodes: [ EMPTY_RESPONSE, RATE_LIMIT, SERVER, TIMEOUT, TRANSPORT, QUOTA, ACCOUNT_QUOTA, AUTH, INVALID_REQUEST, PI_AI_ERROR, STREAM_CLOSED, MALFORMED_RESPONSE ]

可在 DSH 的 设置 → 插件 → Codex 订阅直连 页面或 cordis.patch.yml 中随时修改 disabledModels、contextWindows 与 retryPolicy,实时热更新生效无需重启。


开发与验证

pnpm install
pnpm verify   # 依次执行 tsc --noEmit、tsdown 构建、node --test 单测与产物卫生守卫、隔离脚本检查