DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
G

dsh-graphics

Graphics

DeepSeek Harness 工作区中的 Excalidraw 画布:提供五个代理工具,用于绘制、读取和更新 .excalidraw 文件、导出 SVG,并将渲染后的 PNG 直接返回给模型,使其能够看到自己绘制的内容。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:JuerGenie/dsh-graphics#e995df9903109ce1ea1f891b4ec2602a159ad98f
README兼容性版本

兼容性与来源证明

Graphics 以 dsh-graphics 发布,当前版本为 0.1.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
github
Registry 更新时间
2026/10/18

版本

0.1.0stable
2026/10/18

相关插件

正在加载相关插件…

最新版
0.1.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
web
许可证
MIT
发布源
github
GitHub
★ 0
周下载
0
最近提交
2026/10/18
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 vision-media 分类下经过校验的插件。

Experimental Voice Input Bundle@deepseek-ai/dsh-experimental-voice-input-bundle实验性语音输入,使用本地 SenseVoice;首次使用时下载其运行时Modlens@liustack/modlens面向仅支持文本的 LLM 的插件视觉能力,由免费的 Antigravity CLI 提供支持Ab Ocrdsh-ab-ocr--- description: "外部 ocr 工具:逐页识别扫描的 PDF 或图像,仅在处理完最后一页后按顺序合并页面,并使用模型确定的标题级别保存为一个 Markdown 文档。" kind: "package-reference" ---Tool Describe Image@linxin666/dsh-tool-describe-image面向模型的 describe_image 工具,用于 dsh Web GUI:通过在兼容 OpenAI 的端点调用视觉语言模型,为文本模型提供图像理解能力,以描述一张图像(本地路径、http(s) URL 或附件引用)。可热插拔 —

README

dsh-graphics

English | 中文

DeepSeek Harness(DSH)插件:工作区内的 Excalidraw 画布,让 Agent 能画图、读图,并把渲染出来的图直接交给模型看。

状态:v0.1.0 功能完成。5 个 Agent 工具已在 live 会话注册并对模型可见, 渲染图能作为图像内容块回传给模型(M1 / M3 已过真机验收);Excalidraw 编辑面板已落地并按真机反馈迭代。 全量 64 项测试通过(smoke 25 / render 10 / render-tool 13 / integration 16)。 见 docs/plan.md。

用 graphics_render 渲染的登录页原型:Agent 画完,模型当场就能看见这张图


它解决什么问题

DSH 里让模型产出"图"的常见做法是生成 SVG / Mermaid 文本,模型自己看不到结果,用户也得另找工具打开。 dsh-graphics 换一条路:

  • 画布是工作区里的普通文件(.excalidraw JSON),模型能用现有文件工具读、能进 Git、能随项目走;
  • Agent 有专门的画图/读图工具,不必手写底层元素 JSON;
  • 渲染图直接作为图像内容块回传给模型,模型在下一轮就能"看见"自己画的东西并自我修正;
  • 导出 SVG 落地到工作区,供用户使用或作为交付物(PNG 只走附件服务,见「已知限制」)。

能力

Agent 工具

工具作用
graphics_list列出工作区内的画布
graphics_read读画布:结构化摘要(页面/元素/文字/关系),而非整份元素 JSON
graphics_create从语义化描述创建画布
graphics_update对已有画布做批量增删改
graphics_render渲染并把图回传给模型;可选把 SVG 导出到工作区

界面

在 DSH Web 里提供一个 Excalidraw 编辑面板:打开工作区中的 .excalidraw 文件、直接编辑、手动保存回原文件(带版本冲突保护)。


目录结构

dsh-graphics/
├── package.json          # DSH 插件清单:dsh.bundle.patch + dsh.client
├── cordis.patch.yml      # 把插件插进 profile 的补丁层
├── lib/
│   ├── index.mjs         # 宿主侧:工具注册 + 静态资源路由
│   ├── scene.mjs         # 画布文件读写与校验
│   ├── render.mjs        # scene → SVG → PNG(无浏览器)
│   ├── render-tool.mjs   # graphics_render:渲染 + 图像回传
│   ├── editor-assets.mjs # 伺服 editor/dist + 画布读写 HTTP API
│   ├── tools.mjs         # defineTool 定义
│   └── client.js         # 浏览器侧:Excalidraw 编辑面板
├── editor/               # 打包好的 Excalidraw 前端静态资源(由宿主伺服)
├── tests/                # smoke / render / render-tool / integration,共 64 项
├── examples/             # 真机验收产物(画布 + 渲染/导出的 SVG、PNG 预览)
├── tools/
│   └── asar-extract.mjs  # 从 app.asar 里提取 DSH 实现代码与类型定义(开发期侦察用)
├── docs/
│   ├── design.md         # 设计:架构、工具 schema、数据模型、安全边界
│   ├── plan.md           # 开发计划与验收标准
│   ├── research.md       # 调研事实清单(含出处与已验证结论)
│   └── host-integration-notes.md  # 本部署的宿主侧坑与硬约束
└── AGENTS.md             # 给后续 agent 的工作指引

关于 tools/asar-extract.mjs

DSH 的官方包(@deepseek-ai/*)打包在 /Applications/DeepSeek Harness.app/Contents/Resources/app.asar 里——那是个归档文件,不是目录,ls / cat / ripgrep 都打不开。这个小脚本能按路径正则把里面的 实现代码与 README.zh.md 提取出来,是解决 docs/design.md §9 那些待定问题的工具:

bun tools/asar-extract.mjs \
  "/Applications/DeepSeek Harness.app/Contents/Resources/app.asar" \
  "$TMPDIR/dsh-api" \
  'dsh/node_modules/@deepseek-ai/dsh-fs/(README\.zh\.md|package\.json|.*\.d\.ts)$'

注意:asar 里不含 .d.ts。精确的类型定义要去 npm 取同版本的发布包 (registry.npmjs.org/@deepseek-ai/<pkg>/-/<pkg>-0.2.0-rc.2.tgz)。


安装

# 由 DSH 的 plugin_manager 完成,不要手写 profile 的 package.json
plugin_manager install_bundle  target=/Users/juergenie/Projects/Workspaces/dsh-graphics

清单里已声明 dsh.client(lib/client.js 与 editor/dist/ 构建产物都已就位),加载后会注册 右侧栏画布标签页。反过来,在构建产物存在之前不要声明 dsh.client——Web 启动审计会明确报 「激活失败」。这是从 dsh-plugin-chat-mode 的 AGENTS.md 里学到的教训("别声明不存在的能力")。


相关文档

  • 设计文档
  • 开发计划
  • 调研结论
  • 宿主侧集成笔记
  • 工作指引

用法

给 Agent 用

graphics_list                        列出工作区里的画布
graphics_create path=… elements=[…]  画一张画布(语义化元素,不用写底层 JSON)
graphics_read   path=…               读回结构摘要(含容器的绑定标签)
graphics_update path=… ops=[…]       批量增删改,一次落盘
graphics_render path=…               ★ 渲染并把图**直接交给模型看**

graphics_render 是核心:它把 PNG 经 attachments.saveImage() 登记后, 以 {type:'image', attachment} 内容块回传,模型在下一轮就能看见自己画的东西。 带 outputPath 时还会把 SVG 导出到工作区(PNG 不行——ctx.fs 的变更操作是 UTF-8 文本专用)。

给人用

在 DSH Web 的文件树里点开任意 .excalidraw 文件,右侧栏会出现 Excalidraw 编辑器。

编辑器不做自动保存——画原型时频繁写盘既吵又危险(手一滑就覆盖了上一版)。 改动只在本地累积,标签页顶部工具栏显示「有未保存的改动」;点保存才落盘, 并有版本冲突保护(文件被 Agent 改过时会拒绝覆盖而不是静默丢失)。

工具栏另一个按钮是引用到输入框:点一下把当前画布的路径插进会话输入框, 于是 Agent 下一轮就能用 graphics_read / graphics_render 看到它——人和模型共用同一张画布。

输入框的 + 按钮(与键入 / 打开同一个菜单)里还有一条画布命令: 点一下就新建一张 graphics/canvas-<时间戳>.excalidraw 并在编辑器里打开,用来随手画点东西。

构建

pnpm install
pnpm build:editor     # vite build + 拷贝 Excalidraw 字体到 editor/dist
pnpm test             # 64 项测试(画布模型 / 渲染 / 图像回传 / 模拟宿主集成)

editor/dist/ 是构建产物(约 21MB,其中 13MB 是字体),不进版本库; 分发时由 package.json 的 files 带上。

已知限制

  • PNG 不能导出到工作区:ctx.fs 的变更操作只支持 UTF-8 文本 (dsh-fs README:「二进制安全的变更操作仍延期」)。PNG 走附件服务, 以图像交给模型,并返回附件库的真实宿主路径;落盘用 SVG。
  • 宿主侧代码改动必须重启 DSH:profile 下 HMR 不监听源码模块。见 docs/host-integration-notes.md §2。
  • 编辑器 iframe 不继承宿主主题 token,初始主题取系统偏好(Excalidraw 自带主题开关)。