dsh-lcx-codex 0.4.3-pre.2 → 0.4.3-pre.3
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.
- package/README.md +77 -109
- package/lib/client.js +40 -4
- package/lib/dsh-compat.js +8 -3
- package/lib/grok-native-search.js +317 -0
- package/lib/index.js +227 -71
- package/lib/responses-request.js +3 -0
- package/lib/responses-stream.js +248 -15
- package/lib/route.js +173 -5
- package/lib/transport.js +4 -2
- package/lib/types/dsh-compat.d.ts +1 -1
- package/lib/types/grok-native-search.d.ts +39 -0
- package/lib/types/responses-request.d.ts +1 -0
- package/lib/types/responses-stream.d.ts +14 -1
- package/lib/types/route.d.ts +22 -1
- package/lib/types/transport.d.ts +2 -1
- package/package.json +5 -1
package/README.md
CHANGED
|
@@ -4,173 +4,144 @@
|
|
|
4
4
|
|
|
5
5
|
# LCX Codex
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
**为 DeepSeek Harness 中的 GPT 提供 Responses 生命周期能力,并为 Grok 接入原生 Web / X Search。**
|
|
8
8
|
|
|
9
|
-
[](https://www.npmjs.com/package/dsh-lcx-codex)
|
|
10
|
+
[](#安装)
|
|
11
11
|
[](LICENSE)
|
|
12
12
|
|
|
13
|
-
**简体中文** · [English](README_EN.md) · [
|
|
13
|
+
**简体中文** · [English](README_EN.md) · [更新日志](CHANGELOG.md) · [问题反馈](https://github.com/kk3ya03-star/dsh-lcx-codex/issues)
|
|
14
14
|
|
|
15
15
|
</div>
|
|
16
16
|
|
|
17
|
-
LCX Codex
|
|
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 原生路径。
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
模型、接口、API Key / credential、会话和工具仍由 DSH 管理,不需要在插件里再配置一遍。GPT 与 Grok 的功能开关彼此独立;当前 Grok 原生搜索支持 API Key / API 网关调用,不包含 xAI OAuth / SuperGrok 登录。
|
|
20
20
|
|
|
21
|
-
##
|
|
21
|
+
## 安装
|
|
22
22
|
|
|
23
|
-
|
|
24
|
-
| --- | --- |
|
|
25
|
-
| **长对话继续进行** | 接近上下文上限时优先使用 Native V2 原生压缩,支持压缩后续聊和重启恢复。 |
|
|
26
|
-
| **在对话中查询网页** | 通过 DSH 原有的 `web_search` 使用 GPT Hosted Search,普通搜索跟随当前 Agent 的 GPT 模型。 |
|
|
27
|
-
| **更细的搜索控制** | 按需启用域名过滤、位置、搜索上下文大小、图片搜索等 Hosted Search 参数。 |
|
|
28
|
-
| **连续查阅网页** | 在支持的接口上使用 Alpha 工具,连续执行搜索、打开、查找、点击等操作。 |
|
|
29
|
-
| **复用提示词缓存** | 在支持的 GPT-5.6 接口上保持稳定的缓存标识,让相同的请求前缀可以被重复利用。 |
|
|
30
|
-
|
|
31
|
-
> LCX 面向 GPT / OpenAI Responses。各项扩展能力取决于上游接口支持;能正常对话,不代表该通道同时支持原生压缩、Hosted Search 或 Alpha 网页操作。
|
|
32
|
-
|
|
33
|
-
## 快速开始
|
|
23
|
+
本页对应 **`0.4.3-pre.3` 预发布版**,适配 **DSH `0.1.3-alpha.2`**。稳定版仍为 `0.4.2`,使用旧版 DSH `0.1.1-rc.2` 的用户请看[稳定版说明](https://github.com/kk3ya03-star/dsh-lcx-codex/blob/v0.4.2/README.md)。
|
|
34
24
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
`0.4.3-pre.2` 面向 **DSH `0.1.3-alpha.2` / host 与插件 Pi `0.85.1`**,安装时明确选择预发布:
|
|
25
|
+
安装前,请确认 DSH Web 能正常启动,并已配置需要使用的 GPT Responses 或 Grok Responses API 路由。Node.js 要求 `^22.19.0 || >=24.0.0`;Windows 启动出现 `fs-ext` 报错时,先看下方[故障排查](#故障排查)。
|
|
38
26
|
|
|
39
27
|
```sh
|
|
40
|
-
dsh plugin --profile web add dsh-lcx-codex@0.4.3-pre.
|
|
28
|
+
dsh plugin --profile web add dsh-lcx-codex@0.4.3-pre.3
|
|
41
29
|
dsh web
|
|
42
30
|
```
|
|
43
31
|
|
|
44
|
-
|
|
32
|
+
以后升级预发布版,可执行 `dsh plugin --profile web add dsh-lcx-codex@prelatest`。不带版本或标签安装会得到稳定版,**不是本页介绍的新版本**。
|
|
45
33
|
|
|
46
|
-
|
|
34
|
+
**从 `0.4.2` 升级:** 旧插件配置和 v3/v4 压缩检查点不再兼容,请重新配置插件并新建会话。新版 v5 GPT 检查点仍支持重启续聊。
|
|
47
35
|
|
|
48
|
-
|
|
36
|
+
## 启用
|
|
49
37
|
|
|
50
|
-
|
|
38
|
+
打开 DSH Web 的插件设置,展开 **Responses / Codex 能力**,按需打开开关并保存:
|
|
51
39
|
|
|
52
|
-
|
|
40
|
+
| 开关 | 什么时候开 |
|
|
41
|
+
| --- | --- |
|
|
42
|
+
| 启用 LCX | 使用 GPT Responses 生命周期、Native V2 压缩及 GPT 搜索能力时。 |
|
|
43
|
+
| GPT Hosted Search | 当前模型是 GPT,且需要普通联网查询时。 |
|
|
44
|
+
| 高级 Hosted 工具 | GPT 需要搜图、限定网站或使用其他 Hosted 搜索条件时。 |
|
|
45
|
+
| Alpha | GPT 需要连续 `open / find / click / screenshot` 网页操作时,属于实验功能。 |
|
|
46
|
+
| Grok 原生 Web Search | 当前模型是 Grok,并希望使用 xAI 服务端原生网页搜索时。 |
|
|
47
|
+
| Grok 原生 X Search | 当前模型是 Grok,并希望直接搜索 X 内容时。 |
|
|
53
48
|
|
|
54
|
-
|
|
55
|
-
- Node.js **22.19.0 及以上的 22.x,或 24.0.0 及以上版本**。
|
|
56
|
-
- 已在 DSH 中配置好可正常对话的 **GPT Responses 接口、模型与凭据**。
|
|
49
|
+
**六个开关默认均关闭。** GPT 四项由“启用 LCX”控制;Grok 两项独立,不要求打开 GPT 的 LCX 主开关。模型、推理等级、图片输入、endpoint 与 credential 都继续在 DSH 的模型/provider 配置中管理。
|
|
57
50
|
|
|
58
|
-
|
|
51
|
+
模型切换不需要重启插件:
|
|
59
52
|
|
|
60
|
-
|
|
53
|
+
- GPT → 只启用已打开的 GPT / LCX 能力;
|
|
54
|
+
- Grok → 只启用已打开的原生 Web / X Search;开启任意 Grok 原生搜索时,该请求不会同时暴露 DSH `web_search`,但 `web_fetch` 和其他 DSH/MCP 工具仍可用;
|
|
55
|
+
- Claude、Gemini、DeepSeek 等其他模型 → 保持 DSH 原生会话、搜索、工具和压缩行为。
|
|
61
56
|
|
|
62
|
-
|
|
63
|
-
dsh plugin --profile web add dsh-lcx-codex
|
|
64
|
-
dsh web
|
|
65
|
-
```
|
|
57
|
+
## 搜索与搜图
|
|
66
58
|
|
|
67
|
-
|
|
59
|
+
### GPT 联网查询
|
|
68
60
|
|
|
69
|
-
|
|
61
|
+
GPT 普通查询沿用 DSH 的单一 `web_search` 工具入口;开启 **GPT Hosted Search** 后,LCX 按当前 GPT Responses route 执行 Hosted Search。需要域名、位置、search context 或图片等额外参数时,可启用 `websearch_gpt_advanced`。
|
|
70
62
|
|
|
71
|
-
|
|
72
|
-
2. 勾选 **启用 LCX(接管当前 GPT Responses 会话)**。
|
|
73
|
-
3. 需要联网搜索时,再勾选 **使用 GPT Hosted Search 作为 DSH web_search 后端**。
|
|
74
|
-
4. 保留默认压缩设置,点击 **保存**,使用已配置好的 GPT 模型开始对话。
|
|
63
|
+
例如:
|
|
75
64
|
|
|
76
|
-
|
|
65
|
+
> 只搜索 Python 官方文档,查找 asyncio.TaskGroup 的用法。
|
|
77
66
|
|
|
78
|
-
|
|
67
|
+
### Grok 原生 Web / X Search
|
|
79
68
|
|
|
80
|
-
|
|
69
|
+
Grok 使用 xAI Responses 的服务端工具,而不是把搜索包装成 DSH function tool:
|
|
81
70
|
|
|
82
|
-
|
|
71
|
+
```text
|
|
72
|
+
{ type: "web_search" }
|
|
73
|
+
{ type: "x_search" }
|
|
74
|
+
```
|
|
83
75
|
|
|
84
|
-
|
|
76
|
+
开启任意 Grok 原生搜索后,Grok 请求会移除 DSH `web_search`,避免重复搜索语义;`web_fetch`、`read` 及其他 DSH/MCP function tools 仍保持可用。原生搜索结果可以继续进入本地工具调用,再回到同一 Grok agentic workflow;插件会保存 xAI 必需的 provider-native replay state,但不会把服务端搜索伪装成 DSH 本地工具调用。
|
|
85
77
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
| 达到 `90%`、低于 `95%` | 优先尝试 Native V2 压缩。 |
|
|
90
|
-
| 达到 `95%` | 允许 DSH 紧急裁剪工具结果,并按现有流程处理压缩。 |
|
|
78
|
+
当前支持 **API Key / API Gateway** 路由;OAuth / SuperGrok / X Premium 订阅登录不在本版范围内。搜索来源 URL 会尽量保留,但具体 citation 展示形式仍受上游兼容网关返回格式影响。
|
|
79
|
+
|
|
80
|
+
### GPT 搜索图片并显示
|
|
91
81
|
|
|
92
|
-
|
|
82
|
+
开启高级 Hosted 工具后,可以这样说:
|
|
93
83
|
|
|
94
|
-
|
|
84
|
+
> 搜索金门大桥的照片,选一张直接显示在回复里,并附上来源网页。
|
|
95
85
|
|
|
96
|
-
|
|
86
|
+
**不需要自己填写 JSON 参数。** 模型负责选择图片搜索参数;如果只返回文字,可以补充“请使用高级 Hosted 的图片搜索,并把图片显示出来”。
|
|
97
87
|
|
|
98
|
-
|
|
88
|
+
搜索工具提供图片链接与来源,DSH 用现有的 Markdown 渲染器显示图片。这是**搜索已有图片,不是生成图片**,也不代表模型已经读取了图片像素。图片能否显示还取决于原站链接是否可访问。
|
|
99
89
|
|
|
100
|
-
|
|
101
|
-
| --- | --- | --- |
|
|
102
|
-
| `web_search` | 日常联网查询,使用 DSH 原有搜索入口。 | 开启 LCX 和 GPT Hosted Search。 |
|
|
103
|
-
| `websearch_gpt_advanced` | 域名过滤、位置、搜索上下文大小、图片搜索等额外参数。 | 在上述基础上开启高级 Hosted 工具。 |
|
|
104
|
-
| `websearch_alpha` | 连续执行 `search / open / find / click / screenshot` 等操作。 | 开启 Alpha,且当前接口通过能力探测。 |
|
|
90
|
+
### Alpha 网页操作
|
|
105
91
|
|
|
106
|
-
|
|
92
|
+
`websearch_alpha` 支持 `search / open / find / click / screenshot` 等动作,用于 GPT 连续查阅网页。它操作的是**上游搜索服务中的网页内容**,不会操作你的本机浏览器或 DSH 界面。
|
|
107
93
|
|
|
108
|
-
|
|
94
|
+
Alpha 需要单独开启,且接口通过能力探测后才会出现。目前网页引用仍可能偶发失效,`screenshot` 尚未验证能返回可显示的图片。**日常 GPT 搜索/搜图和 Grok 原生搜索都不需要开启 Alpha。**
|
|
109
95
|
|
|
110
|
-
|
|
96
|
+
## 长对话与压缩
|
|
111
97
|
|
|
112
|
-
|
|
98
|
+
开启 LCX 后,插件将 DSH 的压缩请求交给上游 GPT 接口执行 **Native V2 远程原生压缩**,再将结果接回当前会话。会话保存、工具执行和压缩事务仍由 DSH 负责。
|
|
113
99
|
|
|
114
|
-
|
|
100
|
+
| 上下文占用 | 处理方式 |
|
|
101
|
+
| --- | --- |
|
|
102
|
+
| 低于 `90%` | 正常对话,不提前裁剪工具结果。 |
|
|
103
|
+
| `90%` 至 `95%` | 优先尝试远程原生压缩。 |
|
|
104
|
+
| 达到 `95%` | 允许 DSH 紧急裁剪工具结果,再按流程压缩。 |
|
|
115
105
|
|
|
116
|
-
|
|
106
|
+
也可以输入 `/compact` 手动压缩。这些阈值是固定策略,不需要额外设置;实际能否压缩取决于是否有可压缩的历史以及接口支持情况。
|
|
117
107
|
|
|
118
|
-
|
|
108
|
+
压缩后可以继续对话、重启恢复或切换 GPT 模型。遇到不兼容的模型或接口配置时,插件改用可迁移的历史,不会强行复用原生状态。首次建立检查点时,部分可恢复失败可以回退到 DSH 基础压缩;并非所有失败都会回退。
|
|
119
109
|
|
|
120
|
-
|
|
110
|
+
## 缓存
|
|
121
111
|
|
|
122
|
-
|
|
112
|
+
缓存由上游服务实现,插件只负责保持与当前 provider 兼容的缓存/session identity。
|
|
123
113
|
|
|
124
|
-
|
|
114
|
+
- **GPT**:延续 LCX 既有策略;前台会话与其子代理可共享父会话的 prompt-cache identity,以复用公共请求前缀。真正的 DSH Session、工具执行与私有历史仍各自独立。
|
|
115
|
+
- **Grok**:严格跟随 DSH/Pi 原生语义;每个前台/子代理使用自己的 DSH Session ID 作为 prompt cache / session affinity identity,sibling 子代理不会共享 opaque replay state。
|
|
125
116
|
|
|
126
|
-
|
|
117
|
+
Pi `0.85.1` 的显式缓存模式支持 `30m` 长保留参数;`cacheRetention=none` 时不发送 prompt cache key。压缩、切换模型或改变工具列表后,缓存可能需要重新建立。
|
|
127
118
|
|
|
128
|
-
|
|
129
|
-
| --- | --- | --- |
|
|
130
|
-
| 启用 LCX | 关闭 | 使用 GPT Responses 时开启。 |
|
|
131
|
-
| GPT Hosted Search | 关闭 | 需要联网查询时开启。 |
|
|
132
|
-
| 高级 Hosted 工具 | 关闭 | 需要额外搜索参数时开启。 |
|
|
133
|
-
| Alpha command | 关闭 | 在支持的接口上按需开启。 |
|
|
134
|
-
| Native-first 自动压缩 | 开启 | 保持默认,需先启用 LCX。 |
|
|
135
|
-
| Native 自动压缩阈值 | `90%` | 保持默认。 |
|
|
136
|
-
| DSH 紧急裁剪阈值 | `95%` | 必须高于 Native 阈值。 |
|
|
137
|
-
| Native 失败后回退 DSH basic compaction | 开启 | 保留符合回退条件时的基础压缩能力。 |
|
|
138
|
-
| `web_search` 超时 | `240` 秒 | 搜索较慢时再调整。 |
|
|
119
|
+
## 故障排查
|
|
139
120
|
|
|
140
|
-
|
|
121
|
+
**DSH 在 Windows 启动时报 `fs-ext` 错误?**
|
|
141
122
|
|
|
142
|
-
|
|
123
|
+
DSH `0.1.3-alpha.2` 会在启动时加载 `fs-ext`,即使 Windows 实际不使用它。当它的原生模块不可用时,DSH 会在启动阶段退出。这是 **DSH 的依赖加载问题,不是插件压缩或会话锁损坏**。
|
|
143
124
|
|
|
144
|
-
|
|
125
|
+
本版 Windows 实测使用了一个最小 DSH 修正:仅在非 Windows 平台加载 `fs-ext`,保留原有 Win32 会话锁。插件不会自动修改 DSH;未经该修正的 Windows 环境不保证能启动。不要用关闭会话锁来绕过问题。
|
|
145
126
|
|
|
146
|
-
|
|
127
|
+
**安装后没有变化?**
|
|
147
128
|
|
|
148
|
-
|
|
129
|
+
检查安装和启动是否使用同一个 `web` 配置,并确认对应模型的开关已保存。GPT 主开关与 Grok Web/X 开关彼此独立。
|
|
149
130
|
|
|
150
|
-
|
|
131
|
+
**对话正常,但搜索或压缩失败?**
|
|
151
132
|
|
|
152
|
-
|
|
133
|
+
普通 Responses 对话可用,不代表接口同时支持 Native V2、Hosted/Alpha 或 Grok 原生 Web/X Search。请确认当前通道提供对应服务端能力;Sub2API、NewAPI 或其他网关名称本身不是能力保证。
|
|
153
134
|
|
|
154
|
-
##
|
|
135
|
+
## 版本与验证范围
|
|
155
136
|
|
|
156
|
-
|
|
157
|
-
| --- | --- |
|
|
158
|
-
| DSH | `0.1.1-rc.2` |
|
|
159
|
-
| DSH host Pi | `0.82.1` |
|
|
160
|
-
| 插件 Pi | `0.84.3` |
|
|
161
|
-
| Node.js | `^22.19.0 \|\| >=24.0.0` |
|
|
137
|
+
本版使用 DSH `0.1.3-alpha.2`、DSH host Pi `0.85.1` 和插件 Pi `0.85.1`。插件单独声明 Pi 依赖,不替换 DSH 的依赖。
|
|
162
138
|
|
|
163
|
-
|
|
139
|
+
发布前完整测试为 **237/237 PASS**,strict host/client typecheck 与 4 个 DSH schema 均通过。真实运行覆盖 GPT Hosted/Native V2 回归、DeepSeek 原生 DSH 搜索回归,以及 Grok 4.5/4.6 原生 Web/X Search、Web/X → 本地 `read` → continuation、provider-native replay、完整 DSH 重启后的续聊、Grok 父/子代理 session/cache 隔离。GPT 已验证的父 cache-sharing 策略保持不变。
|
|
164
140
|
|
|
165
|
-
|
|
166
|
-
- 1.05M 长上下文和 Programmatic Tool Calling 暂不作为正式支持项。
|
|
167
|
-
- 显式 `prompt_cache_breakpoint` 设置未开放。
|
|
168
|
-
- `reasoning.context` 和 `reasoning.mode` 是否可用,取决于 DSH / Pi 是否暴露相应字段。
|
|
141
|
+
仍需保留的预发布限制:Windows DSH `0.1.3-alpha.2` 的 `fs-ext` 启动问题需要文档中的最小 host loading 修正;Alpha 引用及 screenshot 展示、代理/NO_PROXY、更广的并发/取消和后台 continuable subagent 矩阵仍未全面覆盖;Grok OAuth 不支持,citation 渲染仍可能受上游网关格式影响。详细变更见 [v0.4.3-pre.3 发布说明](https://github.com/kk3ya03-star/dsh-lcx-codex/releases/tag/v0.4.3-pre.3)。
|
|
169
142
|
|
|
170
143
|
## 开发与反馈
|
|
171
144
|
|
|
172
|
-
在仓库中安装依赖并运行检查:
|
|
173
|
-
|
|
174
145
|
```sh
|
|
175
146
|
npm ci --ignore-scripts
|
|
176
147
|
npm ci --prefix scripts/runtime-alpha2 --ignore-scripts
|
|
@@ -179,13 +150,10 @@ node scripts/check-generated.mjs
|
|
|
179
150
|
npm run typecheck
|
|
180
151
|
npm test
|
|
181
152
|
npm run test:schema
|
|
182
|
-
npm pack --ignore-scripts
|
|
183
153
|
```
|
|
184
154
|
|
|
185
|
-
[架构说明](ARCHITECTURE.md)
|
|
186
|
-
|
|
187
|
-
遇到问题可提交 [Issue](https://github.com/kk3ya03-star/dsh-lcx-codex/issues),附上插件、DSH、Node.js 版本、接口类型、复现步骤和已脱敏的报错信息。
|
|
155
|
+
实现细节见[架构说明](ARCHITECTURE.md)。提交 [Issue](https://github.com/kk3ya03-star/dsh-lcx-codex/issues) 时,请附上插件、DSH、Node.js 版本及复现步骤,不要上传 API Key、完整请求或未脱敏的会话日志。
|
|
188
156
|
|
|
189
157
|
## 许可证
|
|
190
158
|
|
|
191
|
-
[MIT](LICENSE)
|
|
159
|
+
[MIT](LICENSE)。独立社区插件,与 OpenAI、DeepSeek、Sub2API、NewAPI 无隶属或官方背书关系。DeepSeek 名称及标识归其权利人所有。
|
package/lib/client.js
CHANGED
|
@@ -13,12 +13,14 @@ window.__ModuleLoader__.load({
|
|
|
13
13
|
"enabled",
|
|
14
14
|
"webSearch",
|
|
15
15
|
"advancedHostedSearch",
|
|
16
|
-
"alphaSearch"
|
|
16
|
+
"alphaSearch",
|
|
17
|
+
"grokNativeWebSearch",
|
|
18
|
+
"grokNativeXSearch"
|
|
17
19
|
];
|
|
18
20
|
const DEFAULTS = Object.fromEntries(
|
|
19
21
|
FIELDS.map((field) => [field, false])
|
|
20
22
|
);
|
|
21
|
-
const css = `.lcx-card{border:1px solid var(--dsw-alias-border-l2);border-radius:12px;list-style:none}.lcx-head{width:100%;display:flex;justify-content:space-between;padding:14px 16px;border:0;background:transparent;color:inherit}.lcx-body{border-top:1px solid var(--dsw-alias-border-l2);padding:12px 16px}.lcx-row{display:flex;gap:9px;padding:8px 0}.lcx-row small,.lcx-help{display:block;font-size:12px;line-height:17px;color:var(--dsw-alias-label-tertiary)}.lcx-foot{display:flex;justify-content:flex-end;gap:8px;margin-top:10px}.lcx-foot button{padding:6px 12px;border-radius:8px;border:1px solid var(--dsw-alias-border-l2);background:transparent;color:inherit}`;
|
|
23
|
+
const css = `.lcx-card{border:1px solid var(--dsw-alias-border-l2);border-radius:12px;list-style:none}.lcx-head{width:100%;display:flex;justify-content:space-between;padding:14px 16px;border:0;background:transparent;color:inherit}.lcx-body{border-top:1px solid var(--dsw-alias-border-l2);padding:12px 16px}.lcx-row{display:flex;gap:9px;padding:8px 0}.lcx-row small,.lcx-help{display:block;font-size:12px;line-height:17px;color:var(--dsw-alias-label-tertiary)}.lcx-group{border-top:1px solid var(--dsw-alias-border-l2);margin-top:10px;padding-top:14px}.lcx-group strong{font-size:14px}.lcx-foot{display:flex;justify-content:flex-end;gap:8px;margin-top:10px}.lcx-foot button{padding:6px 12px;border-radius:8px;border:1px solid var(--dsw-alias-border-l2);background:transparent;color:inherit}`;
|
|
22
24
|
if (typeof document !== "undefined" && !document.querySelector('style[data-plugin-css="dsh-lcx-codex"]')) {
|
|
23
25
|
const tag = document.createElement("style");
|
|
24
26
|
tag.dataset.pluginCss = "dsh-lcx-codex";
|
|
@@ -30,13 +32,19 @@ window.__ModuleLoader__.load({
|
|
|
30
32
|
title: "Responses / Codex \u80FD\u529B",
|
|
31
33
|
desc: "LCX \u8DDF\u968F DSH \u5F53\u524D\u4F1A\u8BDD\u9009\u62E9\u7684 GPT Responses route\uFF1B\u6A21\u578B\u3001endpoint \u548C credential \u7EE7\u7EED\u53EA\u7531 DSH \u7BA1\u7406\u3002",
|
|
32
34
|
enabled: "\u542F\u7528 LCX\uFF08\u63A5\u7BA1\u5F53\u524D GPT Responses \u4F1A\u8BDD\uFF09",
|
|
33
|
-
enabledHelp: "\
|
|
35
|
+
enabledHelp: "\u6B64\u5F00\u5173\u4EC5\u63A5\u7BA1 GPT Responses \u4F1A\u8BDD\uFF1BGrok \u539F\u751F\u641C\u7D22\u7531\u4E0B\u65B9\u72EC\u7ACB\u5F00\u5173\u63A7\u5236\uFF0C\u5176\u4ED6\u975E GPT \u6A21\u578B\u7EE7\u7EED\u4F7F\u7528 DSH \u539F\u751F\u8DEF\u5F84\u3002",
|
|
34
36
|
web: "\u4F7F\u7528 GPT Hosted Search \u4F5C\u4E3A DSH web_search \u540E\u7AEF",
|
|
35
37
|
webHelp: "\u4E0D\u4F1A\u65B0\u589E\u7B2C\u4E8C\u4E2A\u666E\u901A\u641C\u7D22\u5DE5\u5177\uFF1B\u666E\u901A web_search \u81EA\u52A8\u8DDF\u968F\u5F53\u524D Agent \u7684 GPT Responses route\u3002",
|
|
36
38
|
advanced: "\u542F\u7528\u9AD8\u7EA7 Hosted \u5DE5\u5177\uFF08websearch_gpt_advanced\uFF09",
|
|
37
39
|
advancedHelp: "\u53EA\u5728\u9700\u8981\u57DF\u540D\u8FC7\u6EE4\u3001\u4F4D\u7F6E\u3001search context\u3001\u56FE\u7247\u7B49\u539F\u751F Hosted \u53C2\u6570\u65F6\u4F7F\u7528\uFF1B\u9ED8\u8BA4\u5173\u95ED\u4EE5\u4FDD\u6301\u5DE5\u5177 schema \u7A33\u5B9A\u3002",
|
|
38
40
|
alpha: "\u542F\u7528 Alpha command\uFF08websearch_alpha\uFF09",
|
|
39
41
|
alphaHelp: "\u4EC5 capability probe \u5BF9\u5F53\u524D route/schema \u9A8C\u8BC1\u901A\u8FC7\u540E\u624D\u771F\u6B63\u6CE8\u518C\u3002",
|
|
42
|
+
grokTitle: "Grok \u539F\u751F\u641C\u7D22",
|
|
43
|
+
grokDesc: "\u4F7F\u7528 DSH \u5F53\u524D\u9009\u62E9\u7684 Grok \u6A21\u578B\u53CA\u5176\u670D\u52A1\u914D\u7F6E\uFF1B\u4E0E GPT \u529F\u80FD\u5F00\u5173\u72EC\u7ACB\u3002\u5F00\u542F\u4EFB\u4E00\u641C\u7D22\u540E\uFF0CGrok \u4EC5\u4F7F\u7528\u539F\u751F\u641C\u7D22\uFF0C\u7F51\u9875\u8BFB\u53D6\u548C\u5176\u4ED6\u5DE5\u5177\u4ECD\u53EF\u7528\u3002",
|
|
44
|
+
grokWeb: "\u542F\u7528\u539F\u751F Web Search",
|
|
45
|
+
grokWebHelp: "\u4F7F\u7528 Grok \u7684\u539F\u751F\u7F51\u9875\u641C\u7D22\u3002",
|
|
46
|
+
grokX: "\u542F\u7528\u539F\u751F X Search",
|
|
47
|
+
grokXHelp: "\u4F7F\u7528 Grok \u7684\u539F\u751F X \u641C\u7D22\uFF1B\u5355\u72EC\u5F00\u542F\u4E5F\u4E0D\u4F1A\u4F7F\u7528 DSH \u641C\u7D22\u3002",
|
|
40
48
|
save: "\u4FDD\u5B58",
|
|
41
49
|
discard: "\u653E\u5F03\u4FEE\u6539",
|
|
42
50
|
saving: "\u4FDD\u5B58\u4E2D\u2026",
|
|
@@ -46,13 +54,19 @@ window.__ModuleLoader__.load({
|
|
|
46
54
|
title: "Responses / Codex capabilities",
|
|
47
55
|
desc: "LCX follows the GPT Responses route selected by the current DSH session. Model, endpoint and credentials remain DSH-owned.",
|
|
48
56
|
enabled: "Enable LCX (own current GPT Responses conversation)",
|
|
49
|
-
enabledHelp: "
|
|
57
|
+
enabledHelp: "Applies only to GPT Responses conversations. Grok native search is controlled independently below; other non-GPT models continue through DSH normally.",
|
|
50
58
|
web: "Use GPT Hosted Search as DSH web_search backend",
|
|
51
59
|
webHelp: "Keeps DSH web_search as the single ordinary search tool and follows the active Agent GPT Responses route.",
|
|
52
60
|
advanced: "Enable advanced Hosted tool (websearch_gpt_advanced)",
|
|
53
61
|
advancedHelp: "Only for native Hosted controls such as domains, location, context size and image search; off by default for stable tool schemas.",
|
|
54
62
|
alpha: "Enable Alpha command (websearch_alpha)",
|
|
55
63
|
alphaHelp: "Registered only after a matching capability probe.",
|
|
64
|
+
grokTitle: "Grok native search",
|
|
65
|
+
grokDesc: "Uses the Grok model and provider profile currently selected in DSH, independently of the GPT switch. When either search is enabled, Grok uses native search while page reading and other tools remain available.",
|
|
66
|
+
grokWeb: "Enable native Web Search",
|
|
67
|
+
grokWebHelp: "Use Grok's native web search.",
|
|
68
|
+
grokX: "Enable native X Search",
|
|
69
|
+
grokXHelp: "Use Grok's native X search. Enabling it alone also avoids DSH search.",
|
|
56
70
|
save: "Save",
|
|
57
71
|
discard: "Discard",
|
|
58
72
|
saving: "Saving\u2026",
|
|
@@ -245,6 +259,28 @@ window.__ModuleLoader__.load({
|
|
|
245
259
|
disabled: disabled || !s.enabled.value,
|
|
246
260
|
onChange: (value) => props.edit("alphaSearch", value)
|
|
247
261
|
}),
|
|
262
|
+
React.createElement(
|
|
263
|
+
"section",
|
|
264
|
+
{ className: "lcx-group" },
|
|
265
|
+
React.createElement("strong", null, t("grokTitle")),
|
|
266
|
+
React.createElement("p", { className: "lcx-help" }, t("grokDesc")),
|
|
267
|
+
React.createElement(Row, {
|
|
268
|
+
id: "lcx-grok-web",
|
|
269
|
+
label: t("grokWeb"),
|
|
270
|
+
help: t("grokWebHelp"),
|
|
271
|
+
checked: s.grokNativeWebSearch.value,
|
|
272
|
+
disabled,
|
|
273
|
+
onChange: (value) => props.edit("grokNativeWebSearch", value)
|
|
274
|
+
}),
|
|
275
|
+
React.createElement(Row, {
|
|
276
|
+
id: "lcx-grok-x",
|
|
277
|
+
label: t("grokX"),
|
|
278
|
+
help: t("grokXHelp"),
|
|
279
|
+
checked: s.grokNativeXSearch.value,
|
|
280
|
+
disabled,
|
|
281
|
+
onChange: (value) => props.edit("grokNativeXSearch", value)
|
|
282
|
+
})
|
|
283
|
+
),
|
|
248
284
|
React.createElement(
|
|
249
285
|
"p",
|
|
250
286
|
{ role: "alert", hidden: !s.saveError },
|
package/lib/dsh-compat.js
CHANGED
|
@@ -29,9 +29,14 @@ export function readAgentRouteState(agent) {
|
|
|
29
29
|
}
|
|
30
30
|
export function scopedToolRuntime(agent) {
|
|
31
31
|
const tools = resolveScopedService(agent, "tools");
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
32
|
+
if (!mutableService(tools) || typeof tools.register !== "function")
|
|
33
|
+
return undefined;
|
|
34
|
+
return {
|
|
35
|
+
register: tools.register.bind(tools),
|
|
36
|
+
...(typeof tools.get === "function"
|
|
37
|
+
? { get: tools.get.bind(tools) }
|
|
38
|
+
: {}),
|
|
39
|
+
};
|
|
35
40
|
}
|
|
36
41
|
export function tokenMeterTotal(value, session) {
|
|
37
42
|
if (!mutableService(value) || typeof value.measure !== "function")
|