前言¶
在 DeepSeek Harness(DSH)里让 Agent 出图,常见做法是再套一层 OpenAI 兼容网关,把 fal.ai 的队列协议翻译成通用 Chat Completions 或 Images API。多一层转发,调试时要同时核对网关配置、fal 端点 slug 和 DSH 工具参数,出错点也分散。
dsh-fal-imagegen(维护者 Enchanted0911,GitHub:Enchanted0911/dsh-fal-imagegen)走另一条路:Agent 工具直接 POST https://queue.fal.run/<slug>,用 fal 文档里的 Authorization: Key <key_id>:<key_secret> 提交任务、轮询队列票据,并消费 { images: [{ url, width, height }] }。设置页提供 FAL_KEY 卡片,与 ~/.dsh/settings.yaml 中 dsh-fal-imagegen: 段一致。npm 包版本为 0.2.1,许可证 MIT。
这是什么¶
一句话:面向 DSH 的 fal.ai 原生文生图 / 图生图插件——设置卡片 + 四个 Agent 工具,不经过 OpenAI 兼容中间层。
分类上属于「模型推理」:推理请求发往 fal 队列,结果以附件和本地文件两种形式回到对话。
核心功能¶
原生 fal 协议¶
工具链按 fal 队列语义工作:提交 → 拿到 status_url / response_url → 轮询 → 解析 images[]。密钥格式为 fal.ai → Keys 页复制的完整字符串 key_id:key_secret。
设置卡片¶
入口在 Settings → Plugins,名称随 DSH 语言显示为「fal 生图」或「fal imagegen」(与 Settings → General → Language 一致,未匹配时英文)。卡片与内置插件同款交互:折叠、脏状态、字段级重置、保存/丢弃。
主要配置项(默认值见下表):
| 字段 | 默认 | 含义 |
|---|---|---|
enabled |
true |
总开关(工具 + 系统提示公告) |
falKey |
空 | FAL_KEY;留空表示不改动已保存密钥 |
defaultTextToImageModel |
openai/gpt-image-2.5/flare/text-to-image |
文生图端点 |
defaultImageToImageModel |
openai/gpt-image-2.5/flare/edit |
图生图端点 |
defaultImageSize |
1:1 |
比例、WxH 或 auto |
quality |
high |
auto / low / medium / high / xhigh / max |
outputFormat |
png |
png / jpeg / webp |
timeoutSeconds |
300 |
单次请求总超时(提交 + 队列 + 拉取) |
saveDir |
空 | 落盘目录;空则 <DSH_HOME>/fal-imagegen |
announceToAgent |
true |
是否在 Agent 系统提示中公告本插件 |
Agent 工具¶
| 工具 | 作用 |
|---|---|
fal_generate_image |
文生图;默认异步,参数含 prompt / model / size / quality / count / wait |
fal_get_image_task |
按 task_id 或 fal request_id 查进度;无 id 时列出近期任务 |
fal_edit_image |
图生图,同步;需 prompt 与附件引用或磁盘 image_path |
fal_list_image_models |
列出内置别名、当前默认项与输出目录 |
生成图会挂到对话附件(工具调用旁渲染),并写入输出目录;返回的 path 可直接传给 fal_edit_image 的 image_path。
异步文生图¶
默认不再占用整轮 Agent 等待 fal 队列:
fal_generate_image提交后立即返回{ status: "queued", task_id, request_id, ... }。- 后台 collector 轮询队列、下载图片、写附件并复制到输出目录。
fal_get_image_task报告queued / running / completed / failed;wait_seconds为 0–120 时可阻塞等待,完成后返回带attachment_id与本地path的images[]。- 需要旧式阻塞行为时,对
fal_generate_image传wait=true。
任务记录保存在当前 dsh 进程内(约保留 6 小时、最新 64 条);后台等待超时后,下次查询会自动重试。fal_edit_image 仍为同步,便于链式编辑。
模型别名¶
内置别名已对照 fal 端点 schema;含 / 的未知 slug 原样透传;文生图 slug 误用于编辑会被拒绝。节选:
| 别名 | 文生图 | 图生图 |
|---|---|---|
gpt-image-2.5-flare(默认,亦接受 gpt-image-2.5 / gpt-image-2.5-flash) |
openai/gpt-image-2.5/flare/text-to-image |
openai/gpt-image-2.5/flare/edit |
flux-2-flash |
fal-ai/flux-2/flash |
fal-ai/flux-2/flash/edit |
nano-banana-2 |
fal-ai/nano-banana-2 |
fal-ai/nano-banana-2/edit |
完整表见仓库 README 的 Model aliases 一节。
安装与启用¶
推荐通过 npm 包安装(CLI 管理的 profile):
dsh plugin --profile web add dsh-fal-imagegen
安装后需重启对应 profile 的 DSH 进程。
desktop profile 由 DSH Desktop 应用管理(dsh plugin --profile desktop 会被拒绝):应在 Settings → Plugins → market 安装,或按 README 在 ~/.dsh/profiles/des… 下手动注册(截断处请以 GitHub 原文为准)。
启用后先在设置卡片或 settings.yaml 填入 falKey,并确认 enabled 为 true。
典型用法¶
下面步骤可在 Agent 对话中复现(具体措辞由模型决定,工具名固定)。
文生图(异步,推荐)
- 调用
fal_generate_image,例如prompt描述画面,可选model别名、size、quality。 - 记下返回的
task_id。 - 调用
fal_get_image_task,传入task_id;需要时可设wait_seconds等待完成。 - 在
completed结果里使用images[].path或附件 id 做后续步骤。
图生图(同步)
- 准备源图:对话附件引用,或上一步落盘的
image_path。 - 调用
fal_edit_image,传入prompt与源图参数。 - 在同一轮内使用返回的图片路径继续编辑。
查看默认与别名
调用 fal_list_image_models 可核对当前默认端点、别名列表与输出目录。
适用场景与注意¶
适合已在 fal.ai 开通 API、希望在 DSH Agent 里原生使用队列生图/编辑的开发者。异步默认更适合长队列,避免 Agent 回合被单次生图拖住;短链路图生图仍用同步的 fal_edit_image。
安装前建议自行阅读 GitHub 仓库 源码与 MIT 许可证。插件以当前 dsh 进程的用户与网络权限运行:密钥写入本地配置、图片写入 saveDir 或默认目录,并会向 queue.fal.run 发起外网请求。社区插件目录 SkillHub 条目 与 DeepSeek / 幻方无官方从属关系,仅作发现与索引。
DSH 生态强调「一切皆插件」;本插件属于社区「模型推理」类扩展,星标与热度以仓库页面实时数据为准。
链接¶
- 目录页:https://www.skillhub.cn/plugins/Enchanted0911/dsh-fal-imagegen
- GitHub:https://github.com/Enchanted0911/dsh-fal-imagegen
- npm:
dsh-fal-imagegen@0.2.1