lsjspl/dsh-plugin-grok2api-media-tool
使dsh通过grok2api的API获得图片与视频生成能力(generate_image / generate_video)。
项目介绍Project Overview
这是一个 DSH 插件,通过 grok2api 提供文生图、文生视频和图片识别工具,并可把生成媒体保存到会话工作区。适合在对话中提出画图、做视频或分析图片时使用;纯文本主模型也可借上传按钮走 Grok 识图。注意图片识别默认关闭,需先在设置中启用,且不能直接拖拽图片附件给纯文本模型。
This DSH plugin uses grok2api to provide text-to-image, text-to-video, and image recognition tools, optionally saving generated media to the session workspace. Use it when the agent needs to create images or videos, or analyze local or remote images. Image recognition is disabled by default and must be enabled in settings; text-only primary models cannot receive direct image attachments.
请帮我了解并安装插件:【dsh-plugin-grok2api-media-tool】【https://github.com/lsjspl/dsh-plugin-grok2api-media-tool】
把上面这条消息直接发给当前会话里的 DSH,让它帮你了解并安装。安装命令不一定准确,发给 DSH 更稳。Send this message to DSH in your current session. CLI install commands may not be accurate across systems — DSH will figure it out for you.
或使用命令行安装(适合开发者)Or use CLI install (for developers)
命令行安装CLI Install
dsh plugin --profile web add dsh-plugin-grok2api-media-tool
把 lsjspl/dsh-plugin-grok2api-media-tool 加入你的 DSH 配置(web profile)即可启用。
READMEREADME
dsh-plugin-grok2api-media-tool
一个 dsh(DeepSeek Harness) 插件,让智能体通过 grok2api 生成图片/视频,并用 Grok 最新语言模型识别图片。当用户提出「画一张图」「做一个视频」「分析这张图片」等需求时,模型会调用插件提供的工具并返回可查看的结果。
功能
| 工具 | 说明 |
|---|---|
generate_image |
文生图:返回图片 URL,并可将图片保存到当前会话工作区 |
generate_video |
文生视频:创建异步任务并等待完成,返回视频 URL,并可保存到工作区 |
recognize_image |
识图:把本地图片、data URL 或图片 URL 发给 Grok 最新语言模型(默认自动选最新,可配置如 grok-4.6),返回模型对图片的描述/回答 |
| 图片路径上传入口 | 聊天输入框左侧的 🖼️ 按钮:选择图片后上传到 dsh 本地,并把返回的本地路径插入输入框,供模型调用 recognize_image。纯文本主模型(如 DeepSeek)也能用——它收到的是文本路径,再由插件调 Grok 识图,不依赖主模型支持图片附件 |
| 路径识图 | 模型拿到图片路径后调用 recognize_image,由 Grok 最新语言模型进行多模态识别 |
支持两种 grok2api 后端(通过 apiFlavor 选择):
chenyme(默认):Go 版 chenyme/grok2apiaurora:旧 Python 版 aurora-develop/grok2api
安装
dsh plugin --profile web add dsh-plugin-grok2api-media-tool # 从 npm(推荐)
dsh plugin --profile web add github:lsjspl/dsh-plugin-grok2api-media-tool # 或从 GitHub
安装后重启 dsh web 生效。本地 tarball 等其他安装方式见 DISTRIBUTE.md。
配置
插件配置保存在 ~/.dsh/settings.yaml 的 grok2api-media-tool: 节,以下三种方式任选其一,效果相同,保存后即时生效(无需重启)。
方式 1:直接对话配置
在对话里直接提出即可,模型会调用 configure_grok2api 工具写入并生效:
- 「grok2api 复用 llm-pi-ai 里配好的 grok 提供商」
- 「把 grok2api 地址配成 http://192.168.1.100:8000,密钥 sk-xxx」
- 「生成的图片不要保存到工作区」
方式 2:复用已配置的 LLM 提供商
如果已在 dsh 的「模型」设置里配好 grok 提供商,插件可以直接复用它(地址、密钥、模型均取自该提供商),无需重复填写:
grok2api-media-tool:
apiSource: llm-provider
llmProvider: grok # llm-pi-ai.providers 下的键名(全局默认 provider)
三个用途(image / video / vision)还可以各自指定不同的 provider,例如识图用另一个 provider 的模型:
grok2api-media-tool:
apiSource: llm-provider
llmProvider: grok # 全局默认
vision:
provider: grok-chat # 识图改用 grok-chat 的模型,留空则回退到 grok
方式 3:手工编辑配置文件
编辑 ~/.dsh/settings.yaml(Windows 为 %USERPROFILE%\.dsh\settings.yaml):
grok2api-media-tool:
baseUrl: http://192.168.1.100:8000
apiKey: sk-xxx
apiFlavor: chenyme
说明:dsh rc.7+ 在设置页开放了插件命名空间,本插件提供图形化配置表单(设置 → Plugins → 配置 → Grok2API Media Tool):可选 provider、各用途模型从 provider 的模型目录下拉选择(每用途可单独覆盖 provider),各超时也可调。表单改动保存后即时写入
settings.yaml。也可继续使用以上三种方式配置。
未填写的字段使用默认值。
| 键 | 默认值 | 说明 |
|---|---|---|
baseUrl |
http://127.0.0.1:8000 |
grok2api 服务地址 |
apiKey |
'' |
客户端密钥;非空时以 Authorization: Bearer 发送 |
apiKeyEnv |
'' |
存放密钥的环境变量名(如 GROK_API_KEY);apiKey 为空时使用 |
apiSource |
manual |
manual(使用本节字段)或 llm-provider(复用 llm-pi-ai 中的提供商) |
llmProvider |
'' |
apiSource: llm-provider 时,llm-pi-ai.providers 下的键名(全局默认 provider) |
apiFlavor |
chenyme |
chenyme(Go 版)或 aurora(Python 版) |
image.enabled |
true |
是否启用 generate_image |
image.model |
grok-imagine-image-quality |
图片模型;留空时按 apiFlavor 取默认,apiSource: llm-provider 时从 provider 模型目录派生 |
image.provider |
'' |
图片用途的 provider 覆盖(llm-pi-ai.providers 下的键名);空则用全局 llmProvider |
image.timeoutMs |
180000 |
图片生成总超时(毫秒) |
video.enabled |
true |
是否启用 generate_video |
video.model |
grok-imagine-video |
视频模型;留空时按 apiFlavor 取默认,apiSource: llm-provider 时从 provider 模型目录派生 |
video.provider |
'' |
视频用途的 provider 覆盖;空则用全局 llmProvider |
video.timeoutMs |
1200000 |
视频生成总超时(毫秒) |
video.pollIntervalMs |
5000 |
视频进度轮询间隔(毫秒) |
vision.enabled |
false |
是否启用 recognize_image;关闭时聊天输入框左侧的 🖼️ 上传按钮也会一并隐藏 |
vision.model |
latest |
识图默认模型;latest 会查询 grok2api 的 /v1/models 自动选最新 Grok 语言模型(同一会话只查一次,失败回退 grok-4.6),也可直接填具体模型 id |
vision.provider |
'' |
识图用途的 provider 覆盖;空则用全局 llmProvider |
vision.timeoutMs |
60000 |
识图单次请求超时(毫秒) |
vision.bridgeToText |
true |
是否把聊天上传的图片先用 Grok 转成文字,再交给纯文本主模型(如 DeepSeek);仅在「图片识别」启用时生效 |
saveToWorkspace |
true |
是否将生成的媒体下载到会话工作区 |
saveDir |
generated |
媒体保存子目录(相对工作区根) |
requestTimeoutMs |
60000 |
单次 HTTP 请求超时(毫秒) |
mediaDownloadTimeoutMs |
300000 |
单个媒体文件下载超时(毫秒) |
使用
在 dsh(Web 或 headless)中直接提出需求即可:
- 「帮我生成一张赛博朋克城市夜景图,16:9」
- 「做一个 8 秒的视频:一只橘猫在雪地里奔跑」
- 「生成 2 张水彩灯塔图片,保存到项目里」
- 「分析这张图片里有什么」/「识别
/path/to/image.png里是什么」 - 点击聊天输入框左侧的 🖼️ 按钮,选择一张图片,插件会把本地路径插入输入框;发送后模型会调用
recognize_image用 Grok 识别。该按钮仅在「图片识别」启用时显示(默认关闭,需在设置里勾选「图片识别」的启用)。
生成的图片会以内嵌卡片展示,视频可直接在对话中播放;本地保存的文件路径会以行内代码形式出现在回复里。识图结果会以普通文本返回。
限制
- 不支持流式图片与部分预览。
- 视频生成耗时较长,工具会等待完成。
- 生成的媒体通过 dsh 自身的 Web 服务提供给浏览器,支持局域网与 SSH 转发访问;历史会话中的媒体在重启后仍可查看。
- 保存到工作区的文件不会进入 dsh 的「产物(Produced)」列表,而是以本地路径形式出现在回复中。
- 纯文本主模型(如 DeepSeek)不支持原生图片附件(dsh 的限制)。要给这类主模型传图,请用聊天框左侧的 🖼️ 按钮(走
recognize_image识图路径),不要直接拖拽/粘贴图片附件。
开发
node --check index.js && node test/smoke.mjs
发布与分发流程见 DISTRIBUTE.md。
nexu-io/open-design
ruvnet/ruflo
amruthpillai/reactive-resume
esengine/DeepSeek-Reasonix
volcengine/OpenViking
Molunerfinn/PicGo
titanwings/distilly
titanwings/colleague-skill