deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
PROJECT README
DeepSeek Harness Desktop 对话内联生图插件 — 模型在对话中自动调用 generate_image 工具,图片直接内联显示在对话框里,无需外部面板、无需手动切换。
对接任意 OpenAI 兼容的 /images/generations 接口(默认 gpt-image-2),当前模型是纯文本输入也能正常使用。
generate_image,参数(prompt / size / n)由模型自己组织generated-image 内容块展示图片,模型侧永远看不到图片块(contentHasImage 只匹配 image 块):UNSUPPORTED_CONTENT,生成后可以继续正常对话@dickpy/dsh-imagegen 的 dsh-imagegen 设置命名空间,已存在的 apiUrl / apiKey 自动继承generated-image 块」授权,与平台自身的附件授权模型一致# 1. 把插件目录放到 DSH 插件目录
cp -r dsh-tool-imagegen C:/Users/CJX/.dsh/plugins/
# 2. 在 desktop profile 挂载(见 docs/installation.md 的完整步骤)
# package.json 添加依赖 + bundles,然后:
cd C:/Users/CJX/.dsh/profiles/desktop
pnpm install
# 3. 重启 DSH,在对话里说「生成一个猫咪的图片」
完整安装步骤见 docs/installation.md,问题排查见 docs/troubleshooting.md。
用户: "帮我画一只戴帽子的橘猫"
│
▼
模型 ──调用 generate_image──▶ 插件宿主侧 execute()
│ │ 读取设置(apiUrl / apiKey / model)
│ ▼
│ OpenAI 兼容 /images/generations
│ │ 返回 b64 图片
│ ▼
│ ctx.attachments.saveImage() 存入本机附件库
│ │
│ ▼
│ render() 产出 { type: 'generated-image', attachment, prompt, ... }
│ │
▼ ▼
模型只看到随附的文本信封 客户端 keyed toolview 卡片
("已生成 1 张图片…") │
▼
<img src="/api/dsh-tool-imagegen/attachment?session=…&id=…">
附件桥做会话引用检查后返回图片字节 → 内联显示 + 下载按钮
三个关键设计:
generated-image 块(而非平台惯用的 image 块)
模型层的图片检测 contentHasImage 只匹配 type: 'image',generated-image 块对模型完全不可见 —— 这是 text-only 模型能安全使用的根本原因。
插件自带 loopback 附件桥
平台的附件授权(referencedImage)只扫描会话事件里的 image 块,而本插件出于上面第 1 点故意不写 image 块,所以图片字节由插件自己的桥提供:
GET /api/dsh-tool-imagegen/attachment?session=<会话>&id=<附件ID>
桥会重新扫描该会话的事件,确认存在引用此附件的 generated-image 块才返回字节 —— 与平台授权同一套信任模型,只是换成了本插件的块类型。
工具 schema 使用完整 JSON Schema 形态
注册时 parameters 必须是对象根 schema({ type: 'object', properties, required }),平台会原样投影进模型请求,上游网关对缺失 type: 'object' 的 schema 会直接拒绝。
| 字段 | 默认值 | 说明 |
|---|---|---|
| 启用 | 开 | 关闭后对话中的生图请求被忽略 |
| 向模型告知能力 | 开 | 写入系统提示,模型更可能自动调用 |
| 接口地址 | https://api.ephone.ai/v1 |
OpenAI 兼容 base URL |
| API 密钥 | (继承旧配置) | 仅存本机设置文件,不回显 |
| 模型 | gpt-image-2 |
上游模型名,可手写修改 |
| 尺寸 | 1024x1024 |
如 1024x1792 / 1792x1024 |
| 张数 | 1 |
一次生成几张(1–4) |
设置保存在本机 settings.yaml 的 dsh-imagegen: 段,保存后立即生效,无需重启。
dsh-tool-imagegen/
├── lib/ # 宿主侧(Node ESM)
│ ├── index.js # 插件入口:设置段、工具注册、附件桥挂载
│ ├── engine.js # 上游 /images/generations 调用
│ ├── routes.js # 设置桥 + 附件桥路由(loopback 围栏)
│ └── protocol.js # 与客户端共享的路径/命名空间常量
├── src/client/ # 客户端(浏览器侧,rolldown 打包)
│ ├── index.ts # 入口:设置卡片 + toolview 注册
│ ├── GenerateImageView.tsx # 内联图片卡片(含下载按钮)
│ ├── SettingsCard.tsx # 设置页卡片
│ └── locales.ts # zh / en 文案
├── build-client.mjs # 客户端构建脚本
├── smoke-client.mjs # 客户端冒烟测试
└── cordis.patch.yml # profile bundle 注册补丁
# 宿主侧改动直接生效(重启 DSH)
# 客户端改动需要重建:
node build-client.mjs && node smoke-client.mjs
C:\Users\CJX\.dsh\plugins\dsh-tool-imagegenresources/app.asar.unpacked/node_modules/@deepseek-ai/@dickpy/dsh-imagegen(已彻底移除)MIT © 2026 CJX
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。