dsh-lcx-codex 0.4.2 → 0.4.3-pre.12

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.
Files changed (49) hide show
  1. package/README.md +89 -205
  2. package/cordis.patch.yml +3 -20
  3. package/lib/client.js +309 -146
  4. package/lib/compact-v2.js +218 -199
  5. package/lib/dsh-compat.js +232 -100
  6. package/lib/dsh-responses.js +452 -277
  7. package/lib/grok-native-search.js +254 -0
  8. package/lib/index.js +1013 -757
  9. package/lib/json-store.js +50 -31
  10. package/lib/native-checkpoint.js +520 -194
  11. package/lib/responses-request.js +109 -121
  12. package/lib/responses-stream.js +1249 -447
  13. package/lib/route.js +411 -369
  14. package/lib/service-mutex.js +73 -64
  15. package/lib/token-budget.js +176 -108
  16. package/lib/transport.js +280 -68
  17. package/lib/types/client/index.d.ts +6 -0
  18. package/lib/types/compact-v2.d.ts +104 -0
  19. package/lib/types/dsh-compat.d.ts +78 -0
  20. package/lib/types/dsh-responses.d.ts +82 -0
  21. package/lib/types/grok-native-search.d.ts +34 -0
  22. package/lib/types/index.d.ts +83 -0
  23. package/lib/types/json-store.d.ts +10 -0
  24. package/lib/types/native-checkpoint.d.ts +213 -0
  25. package/lib/types/responses-request.d.ts +59 -0
  26. package/lib/types/responses-stream.d.ts +64 -0
  27. package/lib/types/route.d.ts +153 -0
  28. package/lib/types/service-mutex.d.ts +14 -0
  29. package/lib/types/token-budget.d.ts +50 -0
  30. package/lib/types/transport.d.ts +21 -0
  31. package/lib/types/web-run-output.d.ts +29 -0
  32. package/lib/types/web-search-alpha.d.ts +286 -0
  33. package/lib/types/web-search-capability.d.ts +26 -0
  34. package/lib/types/web-search-hosted.d.ts +246 -0
  35. package/lib/types/web-search-ref-store.d.ts +22 -0
  36. package/lib/web-run-output.js +167 -18
  37. package/lib/web-search-alpha.js +865 -163
  38. package/lib/web-search-capability.js +55 -65
  39. package/lib/web-search-hosted.js +210 -32
  40. package/lib/web-search-ref-store.js +63 -59
  41. package/package.json +89 -29
  42. package/ARCHITECTURE.md +0 -117
  43. package/CHANGELOG.md +0 -224
  44. package/README_EN.md +0 -277
  45. package/assets/dsh-lcx-codex-banner.jpg +0 -0
  46. package/lib/legacy-v3.js +0 -20
  47. package/lib/responses-replay.js +0 -68
  48. package/scripts/probe-alpha.mjs +0 -43
  49. package/scripts/validate-dsh-schema.mjs +0 -31
package/README.md CHANGED
@@ -1,277 +1,161 @@
1
- # dsh-lcx-codex
1
+ <div align="center">
2
2
 
3
- [![npm](https://img.shields.io/npm/v/dsh-lcx-codex?label=stable&color=1677ff)](https://www.npmjs.com/package/dsh-lcx-codex)
4
- [![CI](https://github.com/kk3ya03-star/dsh-lcx-codex/actions/workflows/publish.yml/badge.svg)](https://github.com/kk3ya03-star/dsh-lcx-codex/actions/workflows/publish.yml)
5
- ![DSH](https://img.shields.io/badge/DSH-0.1.1--rc.2-4ea8ff)
6
- ![Node](https://img.shields.io/badge/Node-%5E22.19%20%7C%7C%20%3E%3D24-2f855a)
7
- ![Plugin Pi](https://img.shields.io/badge/plugin%20Pi-0.84.3-111827)
8
- ![License](https://img.shields.io/badge/license-MIT-6b7280)
3
+ <img src="https://raw.githubusercontent.com/kk3ya03-star/dsh-lcx-codex/main/assets/dsh-lcx-codex-banner.svg" alt="LCX Codex" width="100%" />
9
4
 
10
- **简体中文** · [English](README_EN.md) · [Architecture](ARCHITECTURE.md) · [Changelog](CHANGELOG.md) · [Releases](https://github.com/kk3ya03-star/dsh-lcx-codex/releases)
5
+ # LCX Codex
11
6
 
12
- > **让 DSH GPT Responses 会话从第一轮普通请求开始,到工具调用、Native V2 Compact / Replay、重启恢复和 GPT 模型切换,始终保持同一个最终 Responses wire owner。**
7
+ **为 DeepSeek Harness 中的 GPT 提供 Responses 生命周期能力,并为 Grok 接入原生 Web / X Search。**
13
8
 
14
- `dsh-lcx-codex` 不替换 DSH。DSH 仍负责 Agent、Session、模型选择、工具执行、附件和 compaction policy;当 **LCX ON** 时,LCX 接管当前 GPT Responses 会话的最终 request / SSE wire。
9
+ [![npm prerelease](https://img.shields.io/npm/v/dsh-lcx-codex/prelatest?label=prelatest)](https://www.npmjs.com/package/dsh-lcx-codex)
10
+ [![DSH](https://img.shields.io/badge/DSH-0.1.5--alpha.1-16803c)](#安装)
11
+ [![License](https://img.shields.io/badge/license-MIT-555)](LICENSE)
15
12
 
16
- ## 当前稳定版
13
+ **简体中文** · [English](README_EN.md) · [更新日志](CHANGELOG.md) · [问题反馈](https://github.com/kk3ya03-star/dsh-lcx-codex/issues)
17
14
 
18
- **`0.4.2`** 是当前稳定版,也是已完成真实 DSH + Sub2API 验收的 `0.4.2-pre.1` 的 **zero-functional-change stable promotion**。
15
+ </div>
19
16
 
20
- ```powershell
21
- dsh plugin --profile web add dsh-lcx-codex
22
- dsh web
23
- ```
24
-
25
- - npm dist-tag:`latest`
26
- - DSH:`0.1.1-rc.2`
27
- - Plugin Pi:`0.84.3`
28
- - Node.js:`^22.19.0 || >=24.0.0`
29
-
30
- `0.4.2-pre.1` 保留为历史 prerelease;新用户直接安装 `latest` 即可。
31
-
32
- ## 产品约定
33
-
34
- ```text
35
- LCX OFF
36
- = 完全使用 DSH 原生 LLM 流程
17
+ LCX Codex 是 [DeepSeek Harness](https://github.com/deepseek-ai/DeepSeek-Harness)(DSH)的社区插件。它按当前模型启用对应能力:GPT 可使用远程原生压缩、Hosted / Alpha Search;Grok 可直接使用 xAI Responses 的原生 `web_search` 与 `x_search`。其他模型继续走 DSH 原生路径。
37
18
 
38
- LCX ON
39
- = 当前 GPT Responses 会话从 ordinary turn 1 开始
40
- 由 LCX 持有最终 Responses request / SSE wire
41
- ```
19
+ 模型、接口、API Key / credential、会话和工具仍由 DSH 管理,不需要在插件里再配置一遍。GPT 与 Grok 的功能开关彼此独立;当前 Grok 原生搜索支持 API Key / API 网关调用,不包含 xAI OAuth / SuperGrok 登录。
42
20
 
43
- 切换 Claude、Gemini、DeepSeek 等非 GPT 模型前先关闭 LCX;模型切换本身不需要重启 DSH。
21
+ ## 安装
44
22
 
45
- ## 为什么需要 LCX
23
+ 本页对应 **`0.4.3-pre.12` 预发布版**,只支持 **DSH `0.1.5-alpha.1` + Pi `0.85.1`**。稳定版仍为 `0.4.2`;本预发布版不为旧 DSH / 旧 Session 格式保留兼容层。
46
24
 
47
- DSH 原本已经拥有 Agent、Session、Tools compaction lifecycle。LCX 解决的是 GPT Responses provider-native 路径的最后一层一致性:ordinary、tools、Native Compact、Replay、restart/resume GPT route migration 不再在同一个会话中切换最终 wire owner。
25
+ 安装前,请确认 DSH `0.1.5-alpha.1` Web 能正常启动,并已配置需要使用的 GPT Responses Grok Responses API 路由。Node.js 要求 `^22.19.0 || >=24.0.0`。
48
26
 
49
- ```text
50
- DSH
51
- Agent / Session / Tools
52
-
53
- llm / stream seam
54
-
55
- ┌──────────┴──────────┐
56
- │ │
57
- LCX OFF LCX ON
58
- │ │
59
- native DSH adapter LCX Responses Core
60
-
61
- ordinary turn 1
62
-
63
- tools
64
-
65
- Native V2 Compact
66
-
67
- Replay
68
-
69
- Restart / Resume
70
-
71
- GPT Model Migration
27
+ ```sh
28
+ dsh plugin --profile web add dsh-lcx-codex@0.4.3-pre.12
29
+ dsh web
72
30
  ```
73
31
 
74
- Compact 因此只改变 history representation,不再同时改变 request owner。
75
-
76
- ## 核心能力
77
-
78
- ### 1. Full GPT Responses lifecycle ownership
79
-
80
- LCX ON 后,ordinary、tool continuation、Native Compact、Native Replay、restart/resume 和 portable GPT migration 使用同一套 LCX Responses request builder / transport owner。
81
-
82
- DSH 仍是 canonical session/history owner;LCX 不创建第二套会话数据库,也不替换 DSH Tool Executor。
32
+ 以后升级预发布版,可执行 `dsh plugin --profile web add dsh-lcx-codex@prelatest`。不带版本或标签安装会得到稳定版,**不是本页介绍的新版本**。
83
33
 
84
- ### 2. GPT-5.6 Prompt Cache
34
+ **升级到本版:** 只支持 DSH `0.1.5-alpha.1` 的 Session V3。旧插件配置、旧 DSH session、旧 LCX checkpoint / Grok replay envelope 都不迁移到活动目录。需要保留旧历史时,请先将旧 `sessions` 目录改名或归档,再让 DSH `0.1.5-alpha.1` 从新的空 `sessions` 目录开始;旧数据只作为离线备份保留。
85
35
 
86
- `0.4.2` 使用 GPT-5.6 当前 cache-options 路径,并保持同一会话的稳定 cache identity:
36
+ DSH 持久化层重新打开同一个已保存 session 时,LCX 可以恢复该 session 内保存的 v5 checkpoint;这只是 DSH session persistence 上的继续对话,**不是 Codex rollout/checkpoint 的进程级 restart/resume 机制**。
87
37
 
88
- - 默认使用 implicit caching;
89
- - 当前支持 route 发送 `prompt_cache_options.ttl = 30m`;
90
- - 普通连续 turn / tool-heavy workload 可以复用已 warm 前缀;
91
- - Native Compact 会按设计建立新的 history/cache epoch,旧未压缩前缀不会被承诺继续复用;
92
- - 真实长会话中,稳定 topology 下 warm request 多次观察到接近完整前缀复用。
38
+ ## 启用
93
39
 
94
- 缓存命中由 provider、模型、请求前缀、工具 schema 和会话状态共同决定,不是固定性能承诺。
40
+ 打开 DSH Web 的插件设置,展开 **Responses / Codex 能力**,按需打开开关并保存:
95
41
 
96
- 一个已确认的边界:运行中激活 skill 若改变顶层 tool schema,会发生一次 cache reset;新 tool topology 稳定后下一请求即可重新 warm。当前支持 route 会拒绝 content-level `prompt_cache_breakpoint`,而 DSH `0.1.1-rc.2` 也没有可靠的 dynamic-tool provenance,因此 `0.4.2` 保留一次安全 reset,而不靠猜测重写工具历史。
42
+ | 开关 | 什么时候开 |
43
+ | --- | --- |
44
+ | 启用 LCX | 使用 GPT Responses 生命周期、Native V2 压缩及 GPT 搜索能力时。 |
45
+ | GPT Hosted Search | 当前模型是 GPT,且需要普通联网查询时。 |
46
+ | 高级 Hosted 工具 | GPT 需要搜图、限定网站或使用其他 Hosted 搜索条件时。 |
47
+ | Alpha | GPT 需要连续 `open / find / click / screenshot` 网页操作时,属于实验功能。 |
48
+ | Grok 原生 Web Search | 当前模型是 Grok,并希望使用 xAI 服务端原生网页搜索时。 |
49
+ | Grok 原生 X Search | 当前模型是 Grok,并希望直接搜索 X 内容时。 |
97
50
 
98
- ### 3. Native V2 Compact + Replay
51
+ **六个开关默认均关闭。** GPT 四项由“启用 LCX”控制;Grok 两项独立,不要求打开 GPT 的 LCX 主开关。模型、推理等级、图片输入、endpoint 与 credential 都继续在 DSH 的模型/provider 配置中管理。
99
52
 
100
- DSH 仍决定 **何时压缩、压缩范围、事务与 recovery**;LCX 只负责 provider-native Responses V2 wire。
53
+ 模型切换不需要重启插件:
101
54
 
102
- 默认 pressure coordination:
55
+ - GPT → 只启用已打开的 GPT / LCX 能力;
56
+ - Grok → 只启用已打开的原生 Web / X Search;开启任意 Grok 原生搜索时,该请求不会同时暴露 DSH `web_search`,但 `web_fetch` 和其他 DSH/MCP 工具仍可用;
57
+ - Claude、Gemini、DeepSeek 等其他模型 → 保持 DSH 原生会话、搜索、工具和压缩行为。
103
58
 
104
- ```text
105
- 0% ─────────────────── 90% ───── 95% ───── 100%
106
- normal Native emergency hard cap
107
- V2 DSH prune
108
- ```
109
-
110
- - `90%`:优先 Native V2;
111
- - `95%`:允许 DSH emergency tool-result prune;
112
- - provider-confirmed overflow:继续交给 DSH recovery;
113
- - manual `/compact`:仍使用 DSH 原生 compaction transaction。
114
-
115
- Native checkpoint v5 会持久化 provider-native compaction state 与必要的可移植保留历史;同 session / compatible route 可 Native replay,不兼容 route 不会错误复用 opaque state。
59
+ ## 搜索与搜图
116
60
 
117
- ### 4. Restart / Resume + GPT 热切换
118
-
119
- 同一个 DSH session 可以跨越:
120
-
121
- ```text
122
- Terra
123
- → Compact
124
- → Replay
125
- → Restart DSH
126
- → Resume same session
127
- → Switch to Sol
128
- → Continue
129
- ```
61
+ ### GPT 联网查询
130
62
 
131
- compatible route/model 可恢复 Native opaque state;不兼容的 GPT model / route 会丢弃不安全 opaque state并重建 portable history,但仍保持 LCX Responses transport ownership。
63
+ GPT 普通查询沿用 DSH 的单一 `web_search` 工具入口;开启 **GPT Hosted Search** 后,LCX 按当前 GPT Responses route 执行 Hosted Search。需要域名、位置、search context 或图片等额外参数时,可启用 `websearch_gpt_advanced`。
132
64
 
133
- ### 5. Hosted Search + Stateful Web Actions
65
+ 例如:
134
66
 
135
- 普通联网搜索仍使用 DSH 原生 `web_search`。LCX 可以把 SearchProvider 映射到当前 GPT Hosted Search,而不是再给模型暴露第二个普通搜索工具。
67
+ > 只搜索 Python 官方文档,查找 asyncio.TaskGroup 的用法。
136
68
 
137
- | 需求 | 使用入口 |
138
- |---|---|
139
- | 普通联网搜索 | DSH `web_search` |
140
- | Hosted Search 高级参数 | `websearch_gpt_advanced` |
141
- | 连续网页 / PDF 操作 | `websearch_alpha` |
69
+ ### Grok 原生 Web / X Search
142
70
 
143
- Alpha 支持:
71
+ Grok 使用 xAI Responses 的服务端工具,而不是把搜索包装成 DSH function tool:
144
72
 
145
73
  ```text
146
- search open → find / click → screenshot
74
+ { type: "web_search" }
75
+ { type: "x_search" }
147
76
  ```
148
77
 
149
- Alpha 默认关闭;只有当前 endpoint / provider / model / schema 通过 capability probe 后才注册。未知部署 fail-closed。
150
-
151
- ### 6. Pi 0.84.3 隔离升级
78
+ 开启任意 Grok 原生搜索后,Grok 请求会移除 DSH `web_search`,避免重复搜索语义;`web_fetch`、`read` 及其他 DSH/MCP function tools 仍保持可用。原生搜索结果可以继续进入本地工具调用,再回到同一 Grok agentic workflow;插件会保存 xAI 必需的 provider-native replay state,但不会把服务端搜索伪装成 DSH 本地工具调用。
152
79
 
153
- 插件独立使用 `@earendil-works/pi-ai 0.84.3`,不 override DSH host:
80
+ 当前支持 **API Key / API Gateway** 路由;OAuth / SuperGrok / X Premium 订阅登录不在本版范围内。LCX 不再为 Grok 自动追加可见的 synthetic `Sources:` 列表,并会清理已知的 `render_inline_citation` / `stateless_invoke` /私有区 renderer 标记、尾部 `<|eos|>` 等上游渲染协议残留;模型正文中主动写出的普通链接仍保持可见。完整 provider-native 搜索输出只保存在 same-session replay state 中。
154
81
 
155
- ```text
156
- DSH 0.1.1-rc.2
157
- └─ host Pi 0.82.1 ← 不改
82
+ ### GPT 搜索图片并显示
158
83
 
159
- dsh-lcx-codex 0.4.2
160
- └─ plugin Pi 0.84.3 ← 插件隔离依赖
161
- ```
84
+ 开启高级 Hosted 工具后,可以这样说:
162
85
 
163
- Pi 负责 canonical Responses message/tool serialization、reasoning、IDs、strict/grammar/custom tools、`additional_tools`、`tool_search`、namespace 和 stream semantics;LCX 不维护第二套通用 provider framework。
86
+ > 搜索金门大桥的照片,选一张直接显示在回复里,并附上来源网页。
164
87
 
165
- ## 30 秒配置
88
+ **不需要自己填写 JSON 参数。** 模型负责选择图片搜索参数;如果只返回文字,可以补充“请使用高级 Hosted 的图片搜索,并把图片显示出来”。
166
89
 
167
- ### 前提条件
90
+ 搜索工具提供图片链接与来源,DSH 用现有的 Markdown 渲染器显示图片。这是**搜索已有图片,不是生成图片**,也不代表模型已经读取了图片像素。图片能否显示还取决于原站链接是否可访问。
168
91
 
169
- - Node.js `^22.19.0 || >=24.0.0`
170
- - DSH `0.1.1-rc.2`
171
- - DSH 中已有可工作的 GPT Responses route
172
- - 上游 endpoint 实际支持准备启用的 Hosted Search / Native V2 / Alpha 能力
92
+ ### Alpha 网页操作
173
93
 
174
- ### 推荐初始设置
94
+ `websearch_alpha` 支持 `search / open / find / click / screenshot` 等动作,用于 GPT 连续查阅网页。它操作的是**上游搜索服务中的网页内容**,不会操作你的本机浏览器或 DSH 界面。
175
95
 
176
- | 设置 | 推荐值 | 说明 |
177
- |---|---:|---|
178
- | Enable LCX | **On** | 接管当前 GPT Responses 会话 |
179
- | Use GPT Hosted Search | 按需 | 让 DSH `web_search` 使用 GPT Hosted Search |
180
- | Advanced Hosted Search | Off | 需要高级 Hosted 参数时再开 |
181
- | Alpha Search | Off | capability probe 通过后再开 |
182
- | Native-first auto compaction | On | 使用 Native-first pressure coordination |
183
- | Native threshold | `90%` | 主动 Native V2 阈值 |
184
- | Emergency DSH prune | `95%` | 紧急 prune 阈值 |
185
- | Fallback to Basic Compaction | On | Native 首次失败时允许受控回退 |
186
- | `web_search` timeout | `240s` | 避免较慢 Hosted Search 被过早中断 |
96
+ Alpha 需要单独开启,且接口通过能力探测后才会出现。目前网页引用仍可能偶发失效,`screenshot` 尚未验证能返回可显示的图片。**日常 GPT 搜索/搜图和 Grok 原生搜索都不需要开启 Alpha。**
187
97
 
188
- ### 如何确认生效
98
+ ## 长对话与压缩
189
99
 
190
- | 能力 | 预期行为 |
191
- |---|---|
192
- | LCX ownership | LCX ON 后第一轮 GPT ordinary request 就进入 LCX Responses path |
193
- | Prompt Cache | 稳定 warm turn 可出现 provider `cached_tokens` |
194
- | Hosted Search | 普通入口仍是 DSH `web_search` |
195
- | Advanced Hosted | 开启后出现 `websearch_gpt_advanced` |
196
- | Alpha | capability probe 通过后才出现 `websearch_alpha` |
197
- | Native V2 | Compact 产生 provider-native checkpoint,而不是把 Basic Compaction 伪装成 Native |
198
- | Replay | Compact 后继续同一 DSH session;restart/resume 仍可续接 |
100
+ 开启 LCX 后,插件将 DSH 的压缩请求交给上游 GPT 接口执行 **Native V2 远程原生压缩**,再将结果接回当前会话。会话保存、工具执行和压缩事务仍由 DSH 负责。
199
101
 
200
- ## DSH LCX 的责任边界
102
+ | 上下文占用 | 处理方式 |
103
+ | --- | --- |
104
+ | 低于 `90%` | 正常对话,不提前裁剪工具结果。 |
105
+ | `90%` 至 `95%` | 优先尝试远程原生压缩。 |
106
+ | 达到 `95%` | 允许 DSH 紧急裁剪工具结果,再按流程压缩。 |
201
107
 
202
- | 组件 | 负责什么 |
203
- |---|---|
204
- | **DSH** | Agent loop、Session/history、GenerateOptions、模型/credential、工具执行、AttachmentStore、pressure policy、compaction transaction |
205
- | **DSH compatibility seam** | 把 DSH message / GenerateOptions 投影到 Pi Context,并把结果桥接回 DSH |
206
- | **Plugin Pi 0.84.3** | canonical Responses serialization / parser semantics |
207
- | **LCX** | ON/OFF ownership、最终 Responses body + HTTP/SSE wire、ordinary/compact/replay orchestration、Native opaque state、Search capabilities |
108
+ 也可以输入 `/compact` 手动压缩。这些阈值是固定策略,不需要额外设置;实际能否压缩取决于是否有可压缩的历史以及接口支持情况。Grok 不走 GPT Native V2,而继续使用 DSH `0.1.5-alpha.1` 自己的 compaction;Session V3 的 leading `system/message` 由 DSH 保持在摘要之外。
208
109
 
209
- 更多 checkpoint、portable replay、cache identity、RefStore、pressure coordination protocol 细节见 [ARCHITECTURE.md](ARCHITECTURE.md)
110
+ 压缩后可以在同一存活 session 内继续对话;如果 DSH 自身重新打开同一个已持久化 session,LCX 也会校验并恢复其中的 v5 checkpoint。遇到不兼容的模型、route session identity 时,插件改用可迁移的历史,不会强行复用原生状态。首次建立检查点时,部分可恢复失败可以回退到 DSH 基础压缩;并非所有失败都会回退。这里不引入 Codex 式 rollout/checkpoint restart-resume
210
111
 
211
- ## 兼容性
112
+ ## 缓存
212
113
 
213
- | Plugin | DSH | DSH host Pi | Plugin Pi | 状态 |
214
- |---|---|---|---|---|
215
- | `0.4.2` | `0.1.1-rc.2` | `0.82.1` | `0.84.3` | **VERIFIED STABLE** |
216
- | `0.4.1` | `0.1.1-rc.2` | `0.82.1` | `0.82.1` | historical stable |
114
+ 缓存由上游服务实现,插件只负责保持与当前 provider 兼容的缓存/session identity。
217
115
 
218
- DSH `0.1.2-alpha.1` 和更新的 Pi 版本目前不属于 `0.4.2` 的正式兼容性声明;后续会按受影响 seam 单独验证,而不是自动视为兼容。
116
+ - **GPT**:延续 LCX 既有策略;前台会话与其子代理可共享父会话的 prompt-cache identity,以复用公共请求前缀。真正的 DSH Session、工具执行与私有历史仍各自独立。
117
+ - **Grok**:严格跟随 DSH/Pi 原生语义;每个前台/子代理使用自己的 DSH Session ID 作为 prompt cache / session affinity identity,sibling 子代理不会共享 opaque replay state。
219
118
 
220
- ## 当前边界
119
+ Pi `0.85.1` 的显式缓存模式支持 `30m` 长保留参数;`cacheRetention=none` 时不发送 prompt cache key。压缩、切换模型或改变工具列表后,缓存可能需要重新建立。
221
120
 
222
- - 当前支持 route 使用 implicit Prompt Cache;content-level explicit breakpoint 在该 route 上会被拒绝,因此没有作为产品设置开放。
223
- - dynamic skill / plugin 若改变 top-level tool schema,可能触发一次 prompt-cache reset;功能不受影响,新 topology 会重新 warm。
224
- - `reasoning.context` / `reasoning.mode` 仍取决于 host/Pi 暴露能力,LCX 不额外造第二套控制面。
225
- - normal operational context 仍使用约 `262K` 级别配置;1.05M long context 不是默认开启项。
226
- - credentialed `ALPHA-004` runtime 仍为 `NOT_COVERED`,fail-closed 行为已有测试覆盖。
227
- - Programmatic Tool Calling 当前不作为已支持能力宣传。
121
+ ## 故障排查
228
122
 
229
- ## 常见问题
123
+ **从旧版 Windows DSH 升级后还需要 `fs-ext` 本地补丁吗?**
230
124
 
231
- <details>
232
- <summary><strong>为什么切非 GPT 前要关闭 LCX?</strong></summary>
125
+ 不需要把 `0.1.3-alpha.2` 的 `fs-ext` 本地 workaround 带到 DSH `0.1.5-alpha.1`。本版已经在未修改的 Windows DSH `0.1.5-alpha.1` 上完成 Web 与 headless 启动验证。若旧安装曾手工修改 DSH 文件,请通过正常安装得到干净的 `0.1.5-alpha.1` 文件,不要把旧补丁复制到新版本。
233
126
 
234
- LCX ON 是 GPT Responses lifecycle ownership switch,不是通用多模型代理层。非 GPT 模型继续走 DSH 原生 adapter。
127
+ **安装后没有变化?**
235
128
 
236
- </details>
129
+ 检查安装和启动是否使用同一个 `web` 配置,并确认对应模型的开关已保存。GPT 主开关与 Grok Web/X 开关彼此独立。
237
130
 
238
- <details>
239
- <summary><strong>为什么 web_search 还是同一个工具?</strong></summary>
131
+ **对话正常,但搜索或压缩失败?**
240
132
 
241
- 这是刻意设计。LCX 改的是 DSH `web_search` 后面的 SearchProvider,不给模型重复暴露两个普通搜索工具。
133
+ 普通 Responses 对话可用,不代表接口同时支持 Native V2、Hosted/Alpha 或 Grok 原生 Web/X Search。请确认当前通道提供对应服务端能力;Sub2API、NewAPI 或其他网关名称本身不是能力保证。
242
134
 
243
- </details>
135
+ ## 版本与验证范围
244
136
 
245
- <details>
246
- <summary><strong>为什么 Alpha 有时不出现?</strong></summary>
137
+ 本版使用 DSH `0.1.5-alpha.1`、DSH host Pi `0.85.1` 和插件 Pi `0.85.1`。插件单独声明 Pi 依赖,不替换 DSH 的依赖。
247
138
 
248
- 这是 fail-closed 行为。当前 route/schema 没通过 capability probe 时,`websearch_alpha` 不注册。
139
+ 发布候选已通过 **246/246 PASS**、strict host/client typecheck 与 DSH schema 校验。真实 DSH `0.1.5-alpha.1` 隔离运行已验证:Web 启动、headless GPT 普通请求、Session V3 `system/message`、Native V2 `/compact`、compact 后同 session continuation,以及 v5 checkpoint 的 session identity 绑定。
249
140
 
250
- </details>
141
+ Grok 另做了真实长会话验证:原生 Web Search → 足够长的上下文 → DSH 实际 `/compact` → compact 后再次原生搜索/续聊。marker 与关键事实保持,`system/message` 只出现一次,Grok replay 为当前 v3 envelope,最终可见正文 `sourceLeak=false`。
251
142
 
252
- <details>
253
- <summary><strong>为什么加载 skill 后有时缓存会重新 warm?</strong></summary>
143
+ 仍需保留的预发布限制:Alpha 引用及 screenshot 展示、代理/NO_PROXY、更广的并发/取消和后台 continuable subagent 矩阵仍未全面覆盖;Grok OAuth 不支持;未知的新型上游 renderer 协议仍可能需要额外适配。DSH `0.1.5-alpha.1` 本身仍是 alpha/developer-preview 级上游。
254
144
 
255
- 某些 skill 会动态注册新的顶层工具。工具 schema 属于可缓存 prompt prefix 的一部分,topology 改变时 provider 可能建立新的 cache epoch。`0.4.2` 优先保证工具定义正确,不通过猜测 provenance 来强行维持旧 cache。
145
+ ## 开发与反馈
256
146
 
257
- </details>
258
-
259
- ## 开发与验证
260
-
261
- ```bash
147
+ ```sh
148
+ npm ci --ignore-scripts
149
+ npm ci --prefix scripts/runtime-dsh015 --ignore-scripts
150
+ node scripts/link-dsh-runtime.mjs scripts/runtime-dsh015
151
+ node scripts/check-generated.mjs
262
152
  npm run typecheck
263
153
  npm test
264
154
  npm run test:schema
265
- npm pack --ignore-scripts
266
155
  ```
267
156
 
268
- - 架构:[ARCHITECTURE.md](ARCHITECTURE.md)
269
- - 版本记录:[CHANGELOG.md](CHANGELOG.md)
270
- - GitHub Releases:[Releases](https://github.com/kk3ya03-star/dsh-lcx-codex/releases)
271
- - npm:[`dsh-lcx-codex`](https://www.npmjs.com/package/dsh-lcx-codex)
272
-
273
- ## License
157
+ 实现细节见[架构说明](ARCHITECTURE.md)。提交 [Issue](https://github.com/kk3ya03-star/dsh-lcx-codex/issues) 时,请附上插件、DSH、Node.js 版本及复现步骤,不要上传 API Key、完整请求或未脱敏的会话日志。
274
158
 
275
- MIT
159
+ ## 许可证
276
160
 
277
- > `LCX` 只是项目名称。本项目是社区项目,不隶属于 OpenAI、DeepSeek、Sub2API NewAPI。
161
+ [MIT](LICENSE)。独立社区插件,与 OpenAI、DeepSeek、Sub2API、NewAPI 无隶属或官方背书关系。DeepSeek 名称及标识归其权利人所有。
package/cordis.patch.yml CHANGED
@@ -1,25 +1,8 @@
1
- # Optional Responses/Codex capabilities for GPT routes already configured in llm-pi-ai.
2
- # This does not replace DSH's compaction service. Native V2 is installed as the
3
- # documented purpose=compaction llm/stream override, leaving compaction policy,
4
- # range selection, pruning, transactions and /compact owned by DSH.
1
+ # GPT Responses lifecycle plugin. Runtime defaults live in the plugin Config;
2
+ # the bundle declares only route capabilities that differ from conservative defaults.
5
3
  - insert:
6
4
  - id: lcx-codex
7
5
  name: dsh-lcx-codex
8
6
  config:
9
- provider: lcx
10
- baseURL: https://api.lcxbot.com/v1
11
- apiKeyEnv: LCX_API_KEY
12
- model: gpt-5.6-sol
7
+ supportsLongCacheRetention: true
13
8
  supportsExplicitPromptCacheMode: true
14
- legacyCheckpointPath: !!js dshHomePath('storages/lcx-codex/checkpoints-v3.json')
15
- alphaCapabilityPath: !!js dshHomePath('storages/lcx-codex/web-alpha-capabilities.json')
16
- alphaRefPath: !!js dshHomePath('storages/lcx-codex/web-alpha-refs.json')
17
- webSearchProvider: lcx-responses
18
- webMaxResults: 8
19
- timeoutMs: 300000
20
- maxAttempts: 3
21
- requestImagePixelBudget: 4194304
22
- requestImageMaxBytes: 1048576
23
- webSearchTimeoutMs: 240000
24
- autoCompactionThresholdPercent: 90
25
- emergencyPruneThresholdPercent: 95