dsh-grok-kit
已验证dsh-grok-kit · v0.2.0 · Apache-2.0 · Web 界面
Unofficial DeepSeek Harness plugin: Grok OAuth, fused web/X search, Imagine image generation and editing, and session image cards. Limited maintenance; community live testing welcome.
安装
dsh plugin add dsh-grok-kit 用 dsh --profile default --dump-config 确认 layer 已生效 —— 参见安装指南。
源码
标签
说明文档
dsh-grok-kit
中文 · English
维护状态公告(2026-09-30)
维护者目前没有有效的 SuperGrok 订阅,无法持续实测聊天、搜索与 Imagine 的在线表现。本项目进入有限维护:暂停主动功能开发,不承诺对新版 DeepSeek Harness 或 xAI 上游变化及时适配。已发布版本与源码继续保留;在线可用性未经当前实测。
有限维护期间,离线可复现的问题、文档、打包与宿主兼容修复可按可用精力处理。在线行为的变化需要由拥有真实订阅的社区测试者验证后,再决定是否进入正式发布。欢迎按实测反馈流程提交测试结果;有意长期协作的测试者可以在 issue 中说明。任何情况下都不要分享账号、token 或
auth.json。
通过 OAuth 在 DeepSeek Harness 中使用 Grok:主循环融合网页与 X 搜索、连续 reasoning、Imagine,以及仅作用于 xAI 的独立代理。
[!IMPORTANT] 非官方项目、商标与账户使用声明
dsh-grok-kit是由社区独立开发的 DeepSeek Harness 第三方插件,不是 xAI、X、DeepSeek、DeepSeek Harness 或这些项目维护者的官方产品,也不代表它们。本项目不主张已获得上述主体对本插件或其名称的个别许可、背书、赞助或认可。Grok、xAI、X、DeepSeek、DeepSeek Harness 及相关名称与标识归各自权利人所有;本项目仅为准确说明兼容对象而提及这些名称。OAuth 可用性可能受订阅档位、地区、xAI 条款、账户资格、速率限制和后续服务变更影响。用户应自行确认其账户与用途获准;本项目不保证持续可用性或兼容性,也不提供 xAI/Grok 账号、订阅或官方支持。
不止于 OAuth 登录
dsh-grok-kit 为 DeepSeek Harness 增加独立的 xai-oauth 路由。它不要求 XAI_API_KEY,也不修改 dsh 源码;重点不只是“能登录”,而是把服务端搜索和连续 reasoning 所需的请求字段接进主聊天路径。
- 搜索融入主循环: 网页与 X 检索发生在 grok-4.6 的同一轮 Think 中,推理可以直接使用刚搜到的材料
- 多轮 reasoning 连续: 默认使用 high effort,并保留
reasoning.encrypted_content,让后续回合能够带回加密推理上下文 - 登录状态与 Grok CLI 同步: 直接共用并回写
~/.grok/auth.json,不是只复制一次后各自轮换 refresh token - Imagine 文生图与图生图:
grok_imagine与grok_imagine_edit(图生图,复用主 OAuth session)默认开启,非聊天模型不会混进对话模型列表;生成图与编辑图统一通过 DSH 附件库保存并保留归一化 metadata,在会话图片卡片中直观展示提示词、输入图与结果,并支持下载与再次生成/编辑
此外还包括 xAI 专用代理、聊天 401 强制刷新重试、凭据原子写入与诊断脱敏等支撑能力。
主循环融合搜索
同一个模型 id,不代表不同接入方式一定有相同的使用体验。xAI 官方说明 Grok Build 与公开 API 都提供 grok-4.6;真正影响搜索体验的,是服务端工具是否和主对话处在同一轮请求里。
分离式搜索会额外发起一轮模型请求完成检索或摘要,再把结果交回主对话。它仍然适合需要独立过滤条件的任务,但会多出一轮模型处理,而且搜索摘要不是在当前回复的 Think 中生成。
主循环融合搜索则按 xAI Responses API 的服务端搜索方式,把 {type:web_search} 与 {type:x_search} 直接放进主 grok-4.6 请求。检索发生在 Think 里,模型能在同一轮推理中使用刚获得的网页和 X 材料;这条路径默认关闭(v0.1.8 起),可在设置页或配置中打开。
为让两类搜索共存,宿主原生 web_search 仍保留在 DSH 工具列表中,但会从启用融合搜索的 xAI payload 里移除,避免服务端工具重名;其他模型路由仍可照常使用宿主搜索。
开启主循环搜索时,插件会剥掉 xAI 的
x_keyword_search等收尾桩,避免 DSH 再开一轮并把同一篇正文再写一遍。这些名称若仍出现,属于故障诊断路径,不是正常用户体验。
需要按域名、账号或日期过滤时,改走独立的 grok_web_search / x_search(backendSearch 关闭时的默认路径);开启 backendSearch 后这条独立路径退居可选。
statefulResponses 默认关。打开后用 store: true + previous_response_id 只追加新 user;上一轮若是 toolUse(bash 等客户端工具)不会续链,否则会把已经写完的搜索正文再生成一遍。OAuth 探针里 follow-up 能列来源,但 cached_tokens 不会变成那次搜索的 10–30 万 KV。
界面与效果
账号、模型与代理
设置页复用 Grok CLI 登录,展示账号可见模型,并按需设置仅对 xAI 生效的网络代理。图中的 127.0.0.1 是本机回环代理示例。
网页搜索融入主循环
没有另起嵌套搜索工具卡片:网页检索直接发生在同一轮 Think 中,材料随即用于当前回复。截图里的新闻内容只用于展示交互,不作为事实来源。
X 搜索的服务端调用
当前版本在开启主循环搜索时会剥掉 x_keyword_search 等收尾桩,正常路径不再把它们转发给 DSH。截图为功能演示,不代表当前界面会露出这些名称。
安装
推荐从 npm 安装到 Web profile:
dsh plugin --profile web add dsh-grok-kit
dsh web
也可以指定 0.2.0 准确锚点:
dsh plugin --profile web add [email protected]
dsh web
如果 PATH 中没有 dsh,可以使用同一个 CLI 包(固定宿主版本):
npx @deepseek-ai/[email protected] plugin --profile web add dsh-grok-kit
npx @deepseek-ai/[email protected] web
如果这个 profile 以前安装的是 GitHub 来源,可先尝试 dsh plugin --profile web add dsh-grok-kit@latest;若来源没有切换,先移除旧包再重新添加。
0.2.0 面向 DeepSeek Harness 0.2.0-rc.2 与 @earendil-works/[email protected](Node 22/24),不再支持旧 0.1 宿主线。新增图生图工具 grok_imagine_edit 与会话图片交互卡片,并完善登录刷新和异常处理;有限维护状态不变。变更说明见 CHANGELOG.md。
需要可复现的 Git 安装时,以下命令固定到审核提交;不带 SHA 的 github:MaRi23333/dsh-grok-kit 跟随 main,不是可复现锚点:
dsh plugin --profile web add github:MaRi23333/dsh-grok-kit#f82370b68bbdb2204e095257ecc551b9111d5831
完整 SHA 会固定安装结果;npm 安装则默认跟随 latest 稳定版本。
打开 设置 → xAI Grok,完成登录后选择 xai-oauth / grok-4.6 或账号当前可见的其他主线 Grok 模型。已经保存在 dsh 设置中的模型仍有更高优先级。
完整的安装、迁移、卸载和故障处理步骤见 INSTALL.zh.md。
模型与工具
- 模型选择器只展示主线 Grok 聊天模型;Imagine、video、embedding、build/code 变体会被隐藏
- 默认 grok-4.6 描述符使用 high reasoning,并请求
reasoning.encrypted_content,以便后续回合带回加密推理上下文 grok_imagine(文生图)与grok_imagine_edit(图生图,复用主 OAuth session)默认开启。图片保存到 DSH 附件库并在会话图片卡片中直接渲染。可从卡片下载,或使用宿主文件工具导出;两工具的save_path参数均不再支持直接写盘- dsh 原生
web_search仍保留在宿主工具列表中,但会从启用 backend search 的 xAI payload 中移除,避免工具重名
模型列表来自登录账号的 GET /v1/models 结果,并在本地缓存。服务端能力或模型要求发生变化时,仍可能需要更新插件;不会把“模型 id 可见”等同于“所有能力一定可用”。
图片输入与再次编辑
- 本地图片路径:通过宿主文件系统(fs)有界读取,按实际宿主环境文件权限读取文件,受单图体积上限约束。运行卡片显示文件路径和“打开输入图片”入口;前端无法直接读取任意本地路径。
- 用户上传图片:DSH 将上传内容保存为会话附件。把宿主提供的完整
attachment={...}引用传给grok_imagine_edit.image;卡片通过会话readAttachment加载缩略图。 - 生成图片再编辑:工具结果包含 ImageBlock 和完整
attachment={...}文本。将完整引用作为下一次image参数,附件服务会读取并验证保存后的图片并保留其归一化 metadata。 - 裸
attachmentId=sha256:...仅在宿主附件库提供imageHostPath时支持;远程附件后端应使用完整引用。附件 ID 不是本地文件路径或 URL。 - data URI 输入经过解码大小、base64、图片签名和 MIME 一致性校验;远程 URL 由上游获取,卡片显示链接,避免浏览器自动请求任意远程地址。
- 会话卡片交互:运行卡片显示提示词和全部输入来源;图片完成后显示结果、下载入口与再次生成/编辑入口。再次编辑会保留全部输入图和原调用的渲染参数。
配置
| 配置项 | 默认值 | 说明 |
|---|---|---|
backendSearch |
false(默认关闭;设置页可打开) |
在主聊天请求中启用 xAI 服务端网页/X 搜索 |
nestedSearchTools |
省略时取 !backendSearch |
注册独立的 grok_web_search / x_search |
statefulResponses |
省略时 false |
显式打开才用 store + previous_response_id;toolUse 回合不续链 |
searchModel |
grok-build-0.1 |
嵌套搜索模式使用的模型 |
searchMaxResults |
8 |
嵌套搜索返回来源的上限 |
webSearchTimeoutMs |
60000 |
嵌套网页搜索的协作式超时预算 |
xSearchTimeoutMs |
120000 |
嵌套 X 搜索的协作式超时预算 |
imagineTool |
true |
注册 grok_imagine(文生图) |
editTool |
true |
注册 grok_imagine_edit(图生图;独立于 imagineTool,复用主 OAuth session) |
editModel |
'' |
固定图生图模型;为空时跟随线上目录自动选择(优先 grok-imagine-image-2.0,fallback grok-imagine-image) |
editMaxSourceImages |
5 |
grok_imagine_edit 单次请求源图片上限,插件最多接受 5 张 |
editMaxImageBytes |
20971520 |
grok_imagine_edit 单张源图片体积上限(默认 20 MiB) |
proxyUrl |
'' |
xAI 专用 HTTP/HTTPS 代理;设置页保存值优先 |
本 bundle 的组合默认值来自 cordis.patch.yml。手工拆分或重组配置时,可用 dsh --profile web --dump-config 核对最终值。
设置页 → xAI Grok →「搜索与功能选项」也能显式覆盖上表中的搜索/功能键(保存后重启生效;未修改的键继续跟随组合默认值,不会固化)。proxyUrl 例外:设置页保存即生效。
登录文件、代理与安全边界
- 优先使用
~/.grok/auth.json,与 Grok CLI 原地共用同一份 xAI 凭据;登录和刷新都会写回该文件,而不是只做一次性导入;在设置页退出也会让 Grok CLI 退出 - OAuth 刷新令牌会轮换;插件用原子写入、进程内合并和 compare-and-write 避免并发刷新互相覆盖
- 浏览器状态接口、错误信息和诊断不会返回 token 值
- 代理只接受不含用户名/密码的
http://或https://URL;带 userinfo 的旧值会被清理,不会进入状态响应或日志 - xAI 专用 fetch hook 会在插件卸载时恢复;它不会永久修改系统或进程环境变量
- Windows 上的 Node mode bit 不等于 NTFS ACL;如果用户目录或
$DSH_HOME位于共享位置,请自行收紧目录权限 - 写入锁机制与安全边界:凭据写入委托官方
@deepseek-ai/dsh-atomic-write($DSH_HOME/.xai-oauth-auth.json.lock)。在同机且同一 PID 命名空间下,争用者通过独占 claim 文件与二次记录/PID 检查自动接管并回收已确认退出的进程遗留锁;活进程 PID、权限不明、格式损坏或空锁继续保持等待并超时(fail-closed)。写入目录必须为本机文件系统且处于同一 PID 命名空间,禁止跨机器或跨容器挂载共用同一 auth 与锁目录(异构环境 PID 无法对齐,可能导致互斥失效发生并发双写);路径级检查无法对抗任意手动外部文件替换,插件额外救援入口亦不擅自修改锁文件
兼容性与限制
- 当前支持矩阵冻结为:DeepSeek Harness
0.2.0-rc.2+@earendil-works/[email protected](Node 22/24)。不再宣称兼容旧 0.1 宿主线。 - 某些订阅档位可能允许浏览器登录,却对聊天或服务端搜索返回 HTTP 403;这是账户资格/服务策略问题,不等同于 token 过期
- HTTP 401 会在串行刷新后重试一次;403 不会按 token 过期处理
- 不支持与另一个注册相同 xAI OAuth 路由的 bundle 同时安装;请先按 INSTALL.zh.md 的迁移步骤移除冲突 bundle
- backend search 默认关闭,可在设置页或配置中开启;可用性仍由账号、模型和 xAI 当前服务决定
- 删除插件不会自动删除
~/.grok/auth.json;需要清理本地登录时,请先在设置页退出
故障排查
启动或聊天报 timed out waiting for the writer lock:某次异常退出的写入进程遗留了未被自动回收的锁(如活进程占用、非规范锁、权限异常,或崩溃遗留的 .takeover-* claim 文件)。插件委托官方协议安全接管已退出进程的锁,但为避免误删活跃写入者的锁,活锁与无法验证的锁不会盲目清理。请按以下步骤手动排查:
- 关闭所有 DeepSeek Harness 与 Grok CLI 进程,并通过系统进程列表确认已无相关运行中的后台进程;
- 确认进程完全停止后,删除
$DSH_HOME(默认~/.dsh)下的.xai-oauth-auth.json.lock以及可能残留的.xai-oauth-auth.json.lock.takeover-*claim 文件; ~/.grok/auth.json.lock属于 Grok CLI,仅在确认 Grok CLI 完全退出后删除;- 重新启动。
启动时的目录刷新失败(含上述锁超时)不会阻断聊天:插件先用缓存的模型列表,并在后台按 5s / 30s / 120s 退避重试。
实测反馈流程
有限维护期间,插件在线行为结论主要来自社区实测。拥有有效 SuperGrok / X Premium 订阅的用户可以按 live-testing 模板 开 issue,逐项记录聊天、连续对话、工具调用、搜索与 Imagine 的通过 / 失败 / 未测状态,并附上插件版本、dsh --version、Node 版本、操作系统、订阅档位(按官方原文)、测试日期和最小复现步骤。提交前先脱敏:不要粘贴 token、auth.json 内容、账号邮箱、session id、私有路径或私密对话内容。
提交前请先搜索现有 issue,有相同问题时把结果补充到原 issue,不要重复开帖。不要仅为测试续订订阅,也不必覆盖每一个可选功能;单次会话中一项或几项的真实结果同样有价值。
开发
npm ci
npm run check
dsh plugin --profile web add ./dsh-grok-kit
日常开发运行 npm ci(或 npm install)并使用 npm run check 即可完成类型检查、测试与构建。当需要在本地开发环境中链接真实宿主依赖进行调试时,可按需可选运行 node scripts/link-host-deps.mjs(非强制,避免误改用户本地 profile)。
CI 在 Node.js 22 与 24 上执行 frozen install、typecheck、测试、构建,并确认提交的 lib/ 与源码构建结果一致。
许可证与致谢
Apache-2.0。部分代码源自 Apache-2.0 许可的 dsh-xai,详见 NOTICE。特别感谢 KouzakiUmi 在图生图(grok_imagine_edit)、会话图片交互卡片以及宿主依赖稳定性与兼容性修复方面的贡献。