dsh-shengcheng
DSH desktop plugin: generate images with logged-in Grok/GPT accounts, and videos with Grok
- Stars
- 0
- Language
- JavaScript
- Created
- Sep 21, 2026
- Updated
- Oct 7, 2026
Introduction
shengcheng
当前项目是深度适配个人使用,项目只是给大家提供思路和借鉴,尽量不要直接照搬。
通过 DeepSeek Harness 里已经登录的 Grok / GPT 账号调用图像生成接口,Grok 分支还提供视频生成。是否可用取决于远端接口接受该账号及其权限;对话登录成功不代表生成接口一定可用。当前对话模型不是它们也可以调用。不要走 API key,不要让模型自己 curl。
- Grok:
grok-imagine-image-2.0生图,grok-imagine-video-1.5生视频 - GPT:
gpt-image-2生图(Codex 账号接口,尚未完成真实账号验收)。本插件不提供 GPT 视频生成
工具只有一个:shengcheng(kind=image 默认,或 kind=video)。文件默认写到会话工作目录,没有工作目录则写到下载文件夹。新版 zhanshi 优先读取 shengcheng_result {"path":"…"} 结构化结果,完整保留空格、引号和中文路径;同时保留旧版 saved … 首行兼容。token 只在 Host 读取 $DSH_HOME/.credentials.yaml 的 llm-pi-ai/xai、llm-pi-ai/openai-codex,不会进对话。
安装
复制到 $DSH_HOME/plugins/shengcheng,在 $DSH_HOME/profiles/desktop/cordis.patch.yml 写入:
- insert:
- id: shengcheng
name: ../../plugins/shengcheng/lib/index.js
安装 FFmpeg(必须同时有 ffmpeg 和 ffprobe;macOS 可使用 brew install ffmpeg)。插件检查 PATH、/opt/homebrew/bin、/usr/local/bin、/usr/bin,在付费生成请求之前实际检查两程序能启动;缺失或启动失败会直接报错,不再只检查文件魔数。
完全退出 DeepSeek Harness(macOS:⌘Q)再打开,并新开会话。修改磁盘源码不会替换当前 Host 已加载的实现,仅刷新页面不够。
本插件使用官方 @earendil-works/pi-ai@0.87.1 的 OAuth 续期实现。在插件源码目录安装依赖:
/Users/ning/.local/bin/pnpm install --frozen-lockfile
遵循项目指定的 pnpm@11.7.0。当前 Grok/GPT 续期路径不依赖其他 provider 的安装脚本,pnpm-workspace.yaml 已明确禁用相关脚本。
说明
- 先用输入框下方的 OAuth 插件登录对应账号
provider=auto:当前对话是 Grok/GPT 就用那个账号;否则有 Grok 用 Grok,否则用 GPT- 生成视频:
kind=video,只用 Grok;指定provider=gpt会直接报错 - 不读取
~/.grok/auth.json/~/.codex/auth.json - 凭证续期在 DSH 共享凭证锁内完成;等待期间换号或退出不会被旧续期覆盖。无法确认账号连续性时明确停止,要求重新发起任务
- 生成文件仅通过 HTTPS 下载,下载请求不携带账号凭证;错误页面、未知文件类型不会作为成功结果落盘
- 文件后缀跟随实际生成格式:例如请求
image.png但服务端返回 JPEG 时,保存为image.jpg,工具返回真实路径 - 取消及超时会中止请求和视频轮询;并发保存不会覆盖已有文件
- 读取、保存凭证或生成失败会明确报错,禁止把失败结果显示成生成成功
参数与安全边界
- GPT 图像:本插件当前支持精确的
1:1 → 1024x1024、3:2 → 1536x1024、2:3 → 1024x1536。不支持的比例或size/aspect_ratio冲突会在请求前拒绝,不再静默变形;这不是对上游全部能力的断言。 - 图像不接受
duration/image_path;视频不接受quality/size;Grok 图像不接受size;GPT 图像不接受resolution。这些字段以前可能被忽略,现在明确报错。 - 使用当前 DSH
sandboxPolicy.resolve与fs.resolve/checkedTarget/processPath校验输出目录,预先建立独占暂存文件,并在保存和验证前重新检查会话策略。read-only拒绝生成落盘;workspace-write遵从官方工作区及平台临时目录规则;权限不足不会自动提权。不支持该适配接口的 Host 会拒绝操作,而非绕过策略。 - 写入使用 0600 暂存文件、分块写入及 fsync,再以不覆盖已有文件的硬链接发布;重名自动加数字。检查暂存 inode 防止普通路径替换,输出后缀以实际格式为准。需要支持硬链接的本地文件系统;与官方文件服务相同,这不是抵御恶意本地进程竞态的内核沙箱。
- 如果生成完成但发布失败,错误会给出仍可恢复的暂存文件路径和真实格式,避免不必要地再次付费生成。不要将它当作已成功保存的最终文件;确认错误中的路径后恢复。取消发生在完整写入前会清理暂存文件,发生在完整写入后也可能留下恢复文件。
- 下载只允许 HTTPS 公网地址,每跳重定向重新检查 DNS,并固定连接地址以防重绑定;不向下载地址附带账号凭证。HTTP、业务错误、传输错误与续期错误均清理凭据内容,保留取消/超时类型。
- 上限:JSON 48 MiB、生成图片 32 MiB、视频 256 MiB、参考图 15 MiB。参考图必须是普通文件;管道、设备、目录及超限文件拒绝读取。
- FFmpeg 完整解码图像及音视频轨道,PNG 启用 CRC 检查;媒体最多 64 Mi 像素,图像最多 300 帧,视频最多 30 秒/2000 帧。验证最长 60 秒,取消会终止并回收子进程。验证文件只放在获准输出目录的私有临时子目录,并在结束时清理。
开发
for file in lib/*.js; do node --check "$file" || exit; done
node --test
本次修复验证(2026-10-07)
node --test:88/88 通过;全部源码语法检查、diff whitespace 检查通过。- 联动
zhanshi:120/120 通过;浏览器隔离 fixture 验证带空格、引号、中文及 emoji 的图片预览/打开路径,以及视频、失败结果、旧协议兼容。这不是已重启桌面 Host 的端到端验收。 - 从本机安装包提取只读运行时,在隔离 Cordis 中实例化真正的
SandboxPolicyService和SandboxedFileSystem:read-only 拒绝、workspace-write 拒绝工作区外路径及符号链接逃逸、正常写入、期间切换策略、full-access 均验证通过。未改官方源码。 - 网络及 OAuth 测试使用合成凭据、mock 请求;媒体使用本地真实 FFmpeg 9.0.1 解码。不读取真实凭据、不调用付费生成、不自动重启桌面。修复版本仍需重启后验证真实账号生成,不能用旧版成功记录代替。
历史验收记录(2026-10-06,修复前版本)
- DSH
0.2.1-alpha.1桌面端,使用 Grok 4.7 对话实际调用本工具 grok-imagine-image-2.0生图成功:JPEG,1024×1024,文件能正常打开- 使用该图调用
grok-imagine-video-1.5生视频成功:H.264,544×544,约 1.04 秒,完整解码通过 - 46 项测试通过;当前官方 Host 的 8 项检查通过,包含实际 JPEG 后缀、失败状态及重载
- GPT 的真实生成仍未验收,不将 Grok 的结果视为 GPT 也通过