为 DeepSeek Harness 接入 Labnana 图片生成:文生图 / 图生图 / 精准编辑,含积分预估、余额查询与网页设置界面。
安装
# npm 包(预构建)
dsh plugin --profile web add dsh-labnana
# Release 预构建包
dsh plugin --profile web add "https://github.com/exoticknight/dsh-labnana/releases/download/v0.3.2/dsh-labnana-0.3.2.tgz"
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:exoticknight/dsh-labnana
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
DeepSeek Harness (dsh) 插件:在会话里直接生成图片 —— 集成 Labnana 图片生成 OpenAPI,文生图 / 图生图 / 精准编辑,生成结果直接在对话流显示,可一键保存到当前项目。
支持模型:NanoBanana Pro(gemini-3-pro-image)、gemini-3.1-flash-image、GPT-Image-2、Wan2.7 Image/Pro、Seedream 5.0 Pro(积分见模型与积分)。
快速开始
最低兼容基线为 DeepSeek Harness 0.1.2-rc.1;同时支持 0.1.7 预发行 API,相关 @deepseek-ai/dsh-settings 与 @deepseek-ai/dsh-tools 从 0.1.7-alpha.2 起兼容。本机已在 DSH 0.1.7-rc.1 和 0.2.0-rc.2 验证。
# 1. 安装插件(推荐 npm)
dsh plugin --profile web add dsh-labnana
# 也可以从 GitHub 或本地源码安装
dsh plugin --profile web add github:exoticknight/dsh-labnana
# dsh plugin --profile web add /path/to/dsh-labnana
# 2. 重启 dsh web
3. 配置 API Key(Key 在 https://labnana.com/api-keys 创建):
进入对应的插件设置页:
- DSH 1.7 RC:打开 插件 → 已安装 → dsh-labnana,设置表单直接显示在插件详情页。
- 旧版 DSH:打开 设置 → 插件 → 可配置 → Labnana。
填入 API Key 并保存 —— 密钥写入凭据域 ~/.dsh/.credentials.yaml,设置文件只存引用,界面只显示脱敏预览。
4. 在对话里说:
生成一张 16:9 的电影海报:玻璃材质的未来派耳机漂浮在深色背景中
图片会直接显示在对话流(默认不落盘),点卡片上的「保存到项目」即可写入当前项目 labnana-images/。
特性
- 4 个工具(模型自动调用):
工具 作用 labnana_generate_image文生图 / 图生图(参考图:远程 URL / 本地文件 / base64)/ Seedream 精准编辑;1K/2K 同步,4K 自动异步任务 + 轮询 labnana_estimate_credits预估积分(不扣费) labnana_get_subscription积分余额 / 免费额度 / 套餐 labnana_get_task按 taskId 查询异步任务(4K / 超时兜底) - 对话内图片卡片:生成结果直接显示(网格 + 点击放大 + 「打开文件」+ 未落盘时「保存到项目」按钮),历史会话回放同样可见
- 网页设置:DSH 1.7 RC 在插件详情页直接显示设置表单;旧版保留原插件设置入口。API Key 存在凭据域,支持连接测试与余额查看、默认模型/尺寸/比例/输出目录和「保存图片到磁盘」开关;文案中英跟随系统语言
- 系统提示注入:模型知道工具用法、模型-积分表、尺寸/比例/参考图限制、免费额度规则、错误码与重试建议
配置
API Key(凭据域)
三种方式,任选其一:
- 设置页:DSH 1.7 RC 打开 插件 → 已安装 → dsh-labnana;旧版打开 设置 → 插件 → 可配置 → Labnana。填 Key 后保存
- 环境变量:
LABNANA_API_KEY=lh_xxxxx(dsh 启动前设置;进程环境提供的凭据只读) - 直接写文件:
# ~/.dsh/.credentials.yaml —— 值只存在这里
version: 1
refs:
LABNANA_API_KEY: lh_xxxxx
# ~/.dsh/settings.yaml —— settings 只携带对机密的引用
labnana:
apiKeyEnv: LABNANA_API_KEY
saveToDisk: false # 默认不保存图片;勾选后自动保存
defaultModel: gemini-3-pro-image
defaultImageSize: 2K
defaultAspectRatio: 1:1
outputDir: "" # 留空 = 当前项目 labnana-images/
解析优先链:apiKeyEnv 引用(凭据域 > 进程环境)→ 默认引用 LABNANA_API_KEY(credentials > env)。
保存策略
| 场景 | 行为 |
|---|---|
默认(saveToDisk: false) |
不落盘:图片驻留进程内存(零磁盘写入),对话卡片直接显示,「保存到项目」按钮才写入当前项目 labnana-images/;未保存的图重启后失效 |
勾选「保存图片到磁盘」或传 saveDir |
自动落盘,按 saveDir > 设置 outputDir > 当前项目 <workspace>/labnana-images/ > 进程 cwd 兜底 |
| 已保存的图 | 由 /api/dsh-labnana-images/<file> 提供,跨会话/跨重启可查(含所有已注册 workspace) |
使用示例(对话)
「把这张图的背景改成内蒙古大草原」+ 附上图片(或给本地路径) → 传
referenceImages: [{ filePath: "..." }]
「用 seedream 把图片左上 (376,363) 到右下 (701,638) 区域改成绿色」 → 精准编辑:源图进 referenceImages,坐标写进 prompt
「换个赛博朋克风格再生成一次」 → 基于上一张图迭代(images[].path 作为参考图)
模型与积分(1K / 2K / 4K)
| model | provider | 积分 | 参考图上限 | 4K |
|---|---|---|---|---|
| gemini-3-pro-image | 15 / 15 / 30 | 14 | ✅ | |
| gemini-3.1-flash-image | 10 / 10 / 20 | 14 | ✅ | |
| gpt-image-2 | openai | 4 / 6 / 10 | 4 | ✅ |
| wan2.7-image-pro | alibaba | 6 / 8 / 12 | 9 | 仅文生图 |
| wan2.7-image | alibaba | 4 / 6 / – | 9 | ❌ |
| seedream-5-0-pro | bytedance | 6 / 15 / – | 10 | ❌ |
免费额度:gemini-3-pro-image 的 1K/2K 可通过注册/邀请/签到领取(FREE_USAGE),优先消耗、不扣积分;4K 始终扣积分。
错误码
| code | 含义 | 处理 |
|---|---|---|
| 21007 | API Key 无效 | 检查配置 |
| 26004 | 积分不足 | 查余额 / 升级 |
| 29003 | 参数错误 | 核对模型限制 |
| 29998 | 限流 | 等待 20-30s 重试 |
开发者 / AI 参考(Developer / AI reference)
TypeScript + esbuild 构建链,无运行时编译依赖。
项目结构
dsh-labnana/
├── src/
│ ├── host/index.ts # Host 端:API 客户端、4 个工具、settings namespace、HTTP 端点、系统提示
│ └── client/
│ ├── entry.ts # client bundle 入口(lazy-CJS factory 包装)
│ └── index.tsx # 设置卡片 + 对话图片卡片 + i18n 字典
├── scripts/build.mjs # esbuild 构建脚本(host ESM + client factory bundle)
├── lib/ # 构建产物(git 忽略,发布走 package.json files 白名单)
├── cordis.patch.yml # dsh bundle patch(默认配置)
└── tsconfig.json # strict 模式
构建与检查
npm install # devDependencies:esbuild / typescript / 官方类型包(dsh-tools、dsh-settings、cordis、schemastery)
npm run typecheck # tsc --noEmit(strict)
npm run build # esbuild:
# src/host/index.ts → lib/index.js (Node ESM,@deepseek-ai/* external,走安装树唯一实例)
# src/client/*.tsx → lib/client.js (lazy-CJS factory:window.__ModuleLoader__.load + 注入 require)
架构:dsh 插件双半侧
- Host(Node):标准 cordis 插件
export { name, inject, Config, apply };工具用官方defineTool(类型化 schema +execute+presentationMeta);旧版 settings provider 使用installSection,DSH 1.7 RC 通过configure({ auto: false })管理原生设置页策略,并监听settings/document-updated刷新系统提示;HTTP 端点用ctx.webServer(loopback 保护) - Client(浏览器):
dsh.client声明 +exports["./client"]→ dsh-client-modules 服务/plugins/<id>/client.js;产物必须是 lazy-CJS factory(react / react/jsx-runtime 走注入 require)。旧版通过settingsScope+settings.plugin.item提供设置卡片;DSH 1.7 RC 通过configForms+plugins.bundle.config在插件详情页展示配置 - 官方扩展点使用清单:
ctx.inject(["settings"])(Host 设置服务)·ctx.get("settingsScope")(旧版 Client 设置)/ctx.get("configForms")(1.7 RC Client 设置)·ctx.remote.credentials(密钥读写,credentials/reference-updated事件)·ctx.locale(i18n 字典 + slotlocale席位)·tool.call.toolviewkeyed 槽(对话图片卡片)·exec.agent.session.header.cwd(保存目录基准)·workspaceRegistry(图片服务跨 workspace 查找)
工具定义(模型视角)
labnana_generate_image:prompt(必填)+model/imageSize/aspectRatio/referenceImages/outputMode/saveDir/async/waitSeconds;返回{ ok, saved, images: [{url, path?, mimeType, size}], model, imageSize, aspectRatio, taskId? }labnana_estimate_credits:prompt(必填)+model/imageSize/aspectRatio;返回{ ok, credits, canGenerate, requiresSubscription, warnings? }labnana_get_subscription:无参数;返回余额/免费额度/套餐labnana_get_task:taskId(必填);返回任务状态与图片 URL
License
社区
链接
同类插件
liustack/modlens★ 4155
为纯文本模型架起视觉桥梁:粘贴图片,输出结构化 JSON 证据(OCR、版面、语义)。
ysr666/dsh-vision-router★ 1131
为纯文本 Agent 提供视觉能力:内置免 Key 视觉链 + 像素级视觉工具(看图问答、定位、裁剪、像素对比、取色、OCR、矢量化、抠图、截图);粘贴图片即可用。
Anionex/dsh-vision-toolkit★ 886
让纯文本模型处理视觉任务:粘贴图片后自动切换到 Vision Toolkit 变体,支持图片问答、多图比较、长截图 OCR、截图还原前端 UI、元素定位与像素对比。默认无需 API Key——图片经作者自建的免费服务处理,每台机器每天 100 张;也可改为指向自己的服务商。
dickpy/dsh-imagegen★ 100
面向 DSH Web GUI 的 AI 生图插件:通过可配置的 OpenAI 兼容端点(gpt-image-2 / gpt-image-1 / dall-e-3)实现文生图与图生图,提供 api_url/api_key 设置卡片与侧边栏分栏生图工作台。
fandc520/dsh-comfyui★ 99
让 DeepSeek Harness 的 Agent 直接驱动本地或远程 ComfyUI:comfyui_run / comfyui_object_info / comfyui_workflow 工具生成与编辑图像、视频,附带工作流库(图工作流提取:按分量 / 主流程 / 整体)、加载区分辨率自动匹配、实时队列、SDXL 与 Wan 2.1 模板、配套 skill 与同源媒体代理。
sunxin-ai/dsh-design-qa★ 44
给纯文本模型的设计稿保真判定:`deepseek_vision` 工具从任意 OpenAI 兼容视觉路由借来一只眼,让模型判断实现与设计稿是否一致——并附上支撑该判定的基准(4 组夹具、23 处注入缺陷、逐格原始输出)与其依赖的提问纪律。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。