dsh-seework — 在对话里用 SeeAI Hub 生图
DeepSeek Harness(DSH)的插件:在对话里直接让 Agent 生图,图片显示在对应工具调用的那一行,并同时落进本机素材目录。会话右上角的「素材库」用来回看历史,「画布」用来把它们摆到一块自由空间板上(两个面都开在 DSH 右侧栏;没有会话的首页用右下角浮动按钮)。
只用自己的 SeeAI Hub 用户 API Key:地址和 Key 在设置里填一次,生图请求由本机宿主转发到 SeeAI Hub 的图片接口,密钥不出这台机器。
安装
插件装进 DSH 的 profile;桌面客户端用的是 desktop profile。
从 npm 安装(正式使用):打开「设置 → 插件 → 添加插件」,输入包名 dsh-seework。
从本地目录安装(自己开发时):同一个对话框里选「本地插件目录」填工程路径;或者让 Agent 用 plugin_manager 装 file:<工程路径>。
桌面客户端把 dsh 收在自己的 resources/app.asar 里、没有暴露到 PATH,所以 dsh plugin --profile desktop add ... 这条命令行走不通(会被拒绝:profile "desktop" is managed exclusively by the Electron application)。上面两种方式返回 application: applied 就表示已在运行中的客户端里生效。
本地目录安装装的是副本,不是链接:改完代码要 pnpm build && pnpm sync 再重启客户端,否则客户端一直加载旧 bundle,而且不会报任何错。
首次使用
- 打开「设置 → SeeWork」(设置对话框左侧导航,「Agent 预设」之后)。
- 填两个地址——API 地址默认
http://127.0.0.1:8080/v1,模型目录地址默认 http://127.0.0.1:8081——以及你在 SeeAI Hub 后台创建的设备 Key。
- 点「检测可用模型」,勾选要用的模型,保存。
- 回到对话,让 Agent 画一张图。
为什么是两个地址:SeeAI Hub 把 Gateway(/v1/*,模型生成)和 service(/api/v1/*,登录、账户、模型目录、账务)分得很清楚,目录端点在 service 上、网关不代答它。如果你的部署把两者挂在同一个域名下(反向代理),两个都填那个域名即可——插件两个地址都会试,并在结果里告诉你哪个答的。
用法
对话里生图
Agent 用 generate_image 工具:不传参考图就是文生图,带上会话里已有的图就是改图。生成是同步的——一次调用就拿到结果,没有任务号可查、也没有可取消的任务。
图片出现在两个地方:助手回复的正文里,和工具调用那一行的图片卡片。正文里的图按缩略图显示(最长边 320px),点一下在原位放大看原图(Esc 或点背景关闭,Ctrl / 中键仍是新标签页打开);卡片则是标题 + 状态 + 缩略图。
插件只发五个常规参数(model / n / resolution / aspect_ratio / output_format)加上可选的 reference_images,并按模型目录声明的能力裁剪——目录里没有的值不发。模型特有的额外字段(画质、水印、种子、background、size …)插件一律不发,工具 schema 里也没有它们。
素材库
会话右上角的「素材库」在右侧栏打开,里面是你用本插件生成过的全部图片。
- 按天分组:今天 / 昨天 / 具体日期,每组显示当天生成了几次。
- 搜索与筛选:搜提示词(不区分大小写)、按模型、按来源(对话 / 面板 / 画布);点某天的标题只看那天,再点一下取消。
- 详情大图:点缩略图或提示词打开,多张时用底部左右翻页(也可以按 ← / →),Esc 关闭。详情里有「复制提示词」「加到画布」「加入到对话框」。
- 完整信息:模型、档位、比例、像素尺寸、格式、张数、扣费、参考图名。
- 删除:删单条会弹一次确认,图片文件同时从磁盘移除。
- 读取失败不清空:暂时读不到时保留上次读到的内容并提示原因,不会白屏。
画布
「画布」打开一块自由空间板——不是节点图,没有端口也没有连线:卡片就是摆在那儿的矩形。
- 多块画布:左侧列表新建、切换、重命名、删除(只删这块板,不动素材库)。
- 上板是手动的:生图之后画布不会自动打开、也不会有图自动上板。上板有四种办法——对话里点开大图后按「加到画布」、工具卡片里每张图下面的「加到画布」、素材库卡片上的「加到画布」,或画布里的「从素材库选图」。图片落在当前视野中央。
- 点图浮出指令条,三个入口:
- 「加入到对话框」把这张图塞回输入框当草稿附件,接着改图或追问,不用重新上传;
- 「标注」打开编辑器:画笔 / 矩形 / 箭头 / 文字 / 橡皮擦五种可以混用,可选颜色粗细、撤销重做(Ctrl+Z / Ctrl+Shift+Z)。文字是松手就出现输入框,回车确认、Esc 取消这次输入、点框外也确认;橡皮擦按对象擦除。保存后烧录成一张合成图,作为新卡片放回画布(原图与素材库都不动);
- 「裁剪」就地裁剪:三分格线、八个手柄、可整体拖动,能选比例(自定义 / 1:1 / 4:3 / 3:4 / 16:9 / 9:16)。确认后生成新卡片,原图保留。
- 标注与裁剪的产物不进素材库:它们存在
<数据根>/canvas/assets/。素材库记的是「生成过什么」,涂改过的一张不是一次生成。每张图卡片的标题栏有来源徽标(对话生成 / 面板生成 / 标注合成 / 裁剪合成);移除合成图卡片时它的文件会一起删掉,素材库图片则原样保留,攒下的孤儿图片用工具栏「清理无用图片」一次清掉。
- 摆放与缩放:拖标题栏移动、右下角调整大小;点中哪张卡片它就升到最上层;滚轮以光标为锚点缩放,工具栏有 ± / 100% / 适应内容。卡片被压在最底下点不到时,用工具栏「图层」按从下到上列出,点一行就选中并提到最上层,点画布任意处收起。
- 自动保存:改动 0.8 秒后存盘,工具栏右侧显示「已保存 / 待保存 / 保存中 / 保存失败」。同一块板在别处被改过时,宿主会拒绝这次写入,插件重新读取版本号后把你的版本重试保存。
数据存在 <数据根>/canvas/<id>.json,一块板一份文件。
更新
DSH 的插件管理没有 update 动作(plugin_manager 只有 install / remove / enable,GUI 的插件页也没有更新按钮),所以「更新」= 重新安装一次,而重装能不能当更新用取决于当初怎么装的:
| 安装方式 | 重装当更新 | 说明 |
|---|
| npm registry | 能 | spec 用 包名@latest:profile 的依赖声明会从 ^0.1.0 变成 ^0.2.0,管理器靠这个差异定位到目标并重新激活 |
| Git / tarball / 本地目录 | 不能 | spec 不变,管理器定位不到目标,报 ambiguous-install;要先移除再安装 |
从设置卡片更新:卡片底部的「版本」区显示当前版本,「检查更新」查注册表,有新版本时出现「更新到 x.y.z」。点下去宿主会重载插件(界面可能短暂失联,属正常),装完后重启 DeepSeek Harness 让界面用上新版本——桌面客户端没有刷新页面的入口。这个按钮只在 registry 安装下出现;本地目录安装会说明走 pnpm build && pnpm sync。
设置项
- API 地址(默认
http://127.0.0.1:8080/v1):生图请求走这里。
- 模型目录地址(默认
http://127.0.0.1:8081):只在「检测可用模型」时用。
- 用户 API Key:存进本机设置文档,界面只显示「已保存」。
- 生成默认值:默认模型、默认比例(8 个统一比例,出厂
3:4)、输出格式(出厂 png)。
- 素材目录:点「选择目录…」弹系统的文件夹选择窗口,选完立刻生效,旧目录里的文件不会被删;想回到默认点「恢复默认」。宿主开不出系统窗口时(远程 / SSH 场景)按钮不出现,卡片会说明原因。
- 本地与行为:启用插件、允许 Agent 生图、把插件与模型告知 Agent,三个开关。
设置里没有水印开关:加水印与随机种子是豆包(Seedream)系模型自己的请求参数,插件不负责发它们——不填就用网关默认(不加水印、种子随机)。
安全与额度
- 密钥:只存在本机 DSH 设置文档(
~/.dsh/settings.yaml 的 dsh-seework 段)。设置桥读到的是脱敏值,写入走路径操作,不会把密钥回传浏览器;生图请求由宿主转发,所以也没有 CORS 问题。
- 额度:每次都真实扣 SeeAI Hub 账户额度。成功响应里的
cost 会被记进素材库记录。
- 并发:SeeAI Hub 对同一用户同一模型同时只允许一个生图请求,那把锁要到该请求结束才释放。插件自己也按模型串行排队;万一同一个 Key 在别处占着这把锁(另一个会话、别的客户端),插件只如实报错并提示请勿重试。
- 内容:图片由上游模型生成,可能不符合预期,使用前请自行检查。
- 图生图:参考图会以 data URL 发给你配置的 SeeAI Hub 网关,敏感图片不要上传。
进一步阅读
工程与实现细节不在这个文件里: