🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

Figma 画布 Duoasa/DSH-to-Figma

DeepSeek Harness
Duoasa6 天前有提交已提供中文文档扫描:含敏感能力

原生 Figma 画布工具,供 DeepSeek Harness 使用:可编辑图层、设计上下文、组件、变量、素材和截图。原生 DSH Figma 插件。

47/100
综合分
30
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/29 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

自动兼容检查有告警:未发布到 npm registry,仅可从源码安装。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add Duoasa/DSH-to-Figma
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · tool
装得上吗
本站已在 dsh 0.2.1-rc.2 下真实安装成功
非静态推断
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 6 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意

未发布到 npm registry,仅可从源码安装

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包dsh-to-figma(未发布到 npm,仅可源码安装)
✓Node 引擎要求 >=22 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/28 08:33:30

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 35 处,展示前 33 条)
  • 读取本地文件
    index.mjs:36
    const path=join(skillDir,'SKILL.md'),raw=await readFile(path,'utf8'),front=/^--- ([ ]*?) --- /.exec(raw)
  • 读取本地文件
    index.mjs:74
    const signal=AbortSignal.any([exec.signal,controller.signal,shutdown.signal]),workspace=await realpath(session.header.cwd)
  • 读取本地文件
    index.mjs:91
    register('figma_read_guide','Read a focused local Figma workflow guide.',objectSchema({topic:{type:'string',enum:guides}},['topic']),async args=>{if(!
  • 删除本地文件
    cli.mjs:21
    if(opts.command==='logout'){await rm(join(await privateDirectory(home),'oauth.json'),{force:true});console.log('Local Figma OAuth credentials removed.
  • 执行外部命令来自配置/变量
    cli.mjs:24
    const child=spawnSync(opts.cli??'dsh',args,{stdio:'inherit',env:{...process.env,DSH_HOME:home},shell:false})
  • 写入本地文件
    lib/storage.mjs:7
    await mkdir(directory, { recursive: true, mode: 0o700 })
  • 读取本地文件
    lib/storage.mjs:8
    if ((await lstat(directory)).isSymbolicLink()) throw new Error('Figma state directory cannot be a symlink')
  • 写入本地文件
    lib/storage.mjs:9
    await chmod(directory, 0o700)
  • 读取本地文件
    lib/storage.mjs:13
    try { return JSON.parse(await readFile(path, 'utf8')) } catch (e) { if (e.code === 'ENOENT') return fallback; throw e }
  • 写入本地文件
    lib/storage.mjs:20
    await rename(temporary, path)
  • 删除本地文件
    lib/storage.mjs:21
    } finally { await rm(temporary, { force: true }) }
  • 读取本地文件
    lib/storage.mjs:29
    const info = await lstat(path)
  • 写入本地文件
    lib/storage.mjs:31
    await chmod(path, 0o600)
  • 读取本地文件
    lib/storage.mjs:32
    const token = (await readFile(path, 'utf8')).trim()
  • 读取本地文件
    lib/assets.mjs:23
    const root=await realpath(workspace), assets=[]; let total=0
  • 读取本地文件
    lib/assets.mjs:28
    const canonical=await realpath(candidate)
  • 读取本地文件
    lib/assets.mjs:32
    try { const info=await file.stat(); if(!info.isFile()||info.size>LIMIT-total)throw new Error('Asset batch exceeds 12 MiB'); bytes=await file.readFile(
  • 读取本地文件
    lib/assets.mjs:54
    const root=await realpath(workspace)
  • 写入本地文件
    lib/assets.mjs:57
    directory=join(directory,name);await mkdir(directory,{mode:0o700}).catch(e=>{if(e.code!=='EEXIST')throw e})
  • 读取本地文件
    lib/assets.mjs:58
    if((await lstat(directory)).isSymbolicLink()||await realpath(directory)!==directory)throw new Error('Asset output directory cannot be a symlink')
  • 读取本地文件
    lib/assets.mjs:58
    if((await lstat(directory)).isSymbolicLink()||await realpath(directory)!==directory)throw new Error('Asset output directory cannot be a symlink')
  • 发起网络请求
    lib/official.mjs:15
    fetch:remote?oauthFetch:async(target,init)=>{if(new URL(target).origin!==new URL(url).origin)throw new Error('Unexpected desktop endpoint');return fet
  • 读取本地文件
    lib/companion.mjs:11
    const pkg=JSON.parse(await readFile(join(root,'package.json'),'utf8'))
  • 读取本地文件
    lib/companion.mjs:12
    const manifest=JSON.parse(await readFile(join(root,'companion/manifest.json'),'utf8'))
  • 读取本地文件
    lib/companion.mjs:16
    const code=`globalThis.DSH_FIGMA_BOOTSTRAP = ${JSON.stringify(bootstrap)};\n`+await readFile(join(root,'companion/code.js'),'utf8')
  • 读取本地文件
    lib/companion.mjs:20
    'ui.html':await readFile(join(root,'companion/ui.html'),'utf8'),
  • 读取本地文件
    lib/companion.mjs:22
    'LICENSE':await readFile(join(root,'LICENSE'),'utf8'),
  • 读取本地文件
    lib/companion.mjs:23
    'FEATHER-LICENSE':await readFile(join(root,'assets/companion/FEATHER-LICENSE'),'utf8'),
  • 写入本地文件
    lib/companion.mjs:26
    async function safeDirectory(path){await mkdir(path,{recursive:true,mode:0o700});const stat=await lstat(path);if(!stat.isDirectory()||stat.isSymbolicL
  • 写入本地文件
    lib/companion.mjs:26
    async function safeDirectory(path){await mkdir(path,{recursive:true,mode:0o700});const stat=await lstat(path);if(!stat.isDirectory()||stat.isSymbolicL
  • 写入本地文件
    lib/companion.mjs:30
    try{const file=await open(temp,'wx',0o600);try{await file.writeFile(value);await file.sync()}finally{await file.close()}await rename(temp,path)}finall
  • 删除本地文件
    lib/companion.mjs:30
    try{const file=await open(temp,'wx',0o600);try{await file.writeFile(value);await file.sync()}finally{await file.close()}await rename(temp,path)}finall
  • 发起网络请求
    lib/oauth.mjs:7
    export const oauthFetch=async(url,init={})=>{trusted(typeof url==='string'||url instanceof URL?url:url.url);return fetch(url,{...init,redirect:'error'
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/schemastery@deepseek-ai/dsh-home-paths@deepseek-ai/dsh-mcp-client@deepseek-ai/dsh-skill@deepseek-ai/dsh-llm@deepseek-ai/dsh-session@deepseek-ai/dsh-session-projection@deepseek-ai/dsh-system-prompt@deepseek-ai/dsh-tools@deepseek-ai/dsh-agent@deepseek-ai/dsh-attachment-local
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

README

由 DeepSeek 最新模型翻译生成
DSH to Figma DSH to Figma 用自然语言读懂、创建和修改 Figma 设计。 连接 DeepSeek Harness 与 Figma,把需求、参考图和设计稿变成可以继续编辑的画布。 简体中文 · English · 日本語 提示词安装 · 能做什么 · 实机演示 · 手动安装 本地模式不消耗官方 Figma MCP 调用额度。 DSH 会自动生成本机已配对的 Figma 插件,首次导入一次,之后运行即可连接。 安装:把下面这段话发给 DSH 推荐直接让 DSH 完成下载、校验和安装。打开当前使用的 DSH,复制发送: 帮我安装或升级 DSH to Figma: https://github.com/Duoasa/DSH-to-Figma 请按仓库最新 README 完成以下操作: 1. 从当前宿主配置和运行环境确认对应的 CLI、profile 与 DSH_HOME,使用这个宿主的 CLI。保留其他插件和现有配置;只有无法确定安装目标时才问我。 2. 从 GitHub 最新正式 Release 获取 dsh-to-figma-<版本>.tgz 和 SHA256SUMS,核对 SHA-256。使用 Release 安装包,不要猜测 npm 包版本,也不要把独立 Figma ZIP 当成 DSH 安装包。
展开完整文档(README 剩余 1 节)
DSH to Figma

DSH to Figma

用自然语言读懂、创建和修改 Figma 设计。

连接 DeepSeek Harness 与 Figma,把需求、参考图和设计稿变成可以继续编辑的画布。

简体中文 · English · 日本語

提示词安装 · 能做什么 · 实机演示 · 手动安装

本地模式不消耗官方 Figma MCP 调用额度。 DSH 会自动生成本机已配对的 Figma 插件,首次导入一次,之后运行即可连接。

安装:把下面这段话发给 DSH

推荐直接让 DSH 完成下载、校验和安装。打开当前使用的 DSH,复制发送:

帮我安装或升级 DSH to Figma: https://github.com/Duoasa/DSH-to-Figma

请按仓库最新 README 完成以下操作:
1. 从当前宿主配置和运行环境确认对应的 CLI、profile 与 DSH_HOME,使用这个宿主的 CLI。保留其他插件和现有配置;只有无法确定安装目标时才问我。
2. 从 GitHub 最新正式 Release 获取 dsh-to-figma-<版本>.tgz 和 SHA256SUMS,核对 SHA-256。使用 Release 安装包,不要猜测 npm 包版本,也不要把独立 Figma ZIP 当成 DSH 安装包。
3. 通过宿主原生 plugin --profile <当前 profile> add 命令安装或升级,使用 local 模式。若已有旧版,原位升级;仅在确认有重复入口时处理重复项。
4. 检查插件组件是否运行、工具是否可用。需要重启宿主时告诉我,重启后继续完成连接。
5. 调用 figma_setup,给我本机已配对插件 manifest.json 的完整路径,指导我在 Figma 桌面端导入并运行 DSH to Figma · Local。已导入过则更新原目录,关闭旧插件后重新运行。不要显示配对密钥或上传已配对文件。
6. 等我打开目标 Figma 文件并运行插件后,调用 figma_status,确认两端版本和连接状态。多文件时确认目标,再读取我选中的画板并返回截图;这一步不修改已有设计。

首次连接时,在 Figma 桌面端选择 Plugins → Development → Import plugin from manifest…,导入 DSH 给出的 manifest.json。在目标文件中运行 DSH to Figma · Local,保持插件窗口打开即可。

通常路径为 ~/.dsh/figma/companion/manifest.json,以 figma_setup 返回的路径为准。升级后,两端插件需要同步更新;保留原导入目录,关闭并重新运行 Figma 插件。

能做什么

| 需求 | 使用方式 |
| 读懂已有设计 | 读取选中画板、图层结构、文字、尺寸、布局、样式与截图 |
| 从需求或参考图开始 | 创建原生画板、文字、矢量和自动布局,继续细化设计 |
| 调整与批量修改 | 修改文案、颜色、字号、间距、圆角和布局,按名称、属性或层级定位图层 |
| 组件与设计系统 | 创建和修改组件、变体、实例属性、样式、变量、模式及别名,绑定设计变量 |
| 设计稿到代码 | 让 DSH 结合画板信息、素材和当前项目生成或调整前端页面 |
| 素材交付 | 导入图片和 SVG,导出 PNG、JPG、SVG、PDF,保存脚本生成的文件 |
| FigJam、Slides 与交互 | 结合目标文件类型,组织图形、连接线、演示内容和原型交互 |

你可以直接这样说:

读取选中的设置页,把主按钮统一为 40px 高、8px 圆角,调整后给我截图。

复用已有颜色变量和按钮组件,新建一个浅色仪表盘,用自动布局组织内容。

为这个按钮补充悬停和禁用状态,并把颜色绑定到对应的语义变量。

参考这张截图,在新画板中重建界面,文字和布局保留为可编辑图层。

读取这个画板,在当前项目中实现页面,复用项目已有组件,并把所需素材导出到资源目录。

插件负责连接画布与工具,具体设计方案由你使用的模型结合需求完成。可以继续通过对话修改,也可以回到 Figma 手动调整。

实机演示

下面是一组连续操作:读取现有深色界面,在新画板中生成浅色版,再继续探索终端风格。截图来自 2026 年 10 月 19 日的实际使用。

1. 读取选中的画板

现在能看到我选中的画板吗?

DSH 返回画板名称、节点 ID、1440 × 900 的尺寸、图层结构和截图,确认接下来操作的目标。

DSH 读取选中画板并返回结构与截图

2. 保留原稿,新建浅色版本

把这个 UI 改成浅色模式,放在一个新画板里。

深色原稿保留,浅色版放到独立画板。Figma 左侧仍能看到文字、侧边栏、消息区等图层,可以继续选择和编辑。

Figma 中并列保留的深色原稿与浅色改版

查看 DSH 中的指令与返回结果

在 DSH 对话中生成浅色版本

3. 继续探索终端风格

给这个浅色模式的 UI 改成终端风格的设计,放在一个新的画板。

在新的画板中调整为深色背景、绿色强调色和等宽文字,保留之前的版本,方便来回比较。

Figma 中的终端风格设计与可编辑图层

查看 DSH 中的指令与返回结果

在 DSH 对话中继续生成终端风格版本

手动安装

从 最新 Release 下载 DSH 安装包与 SHA256SUMS,校验后使用当前宿主的 CLI 安装。

macOS DSH Desktop:

"/Applications/DeepSeek Harness.app/Contents/Resources/runtime/cli/bin/dsh" \
plugin --profile desktop add "file:/绝对路径/dsh-to-figma-0.3.0.tgz"

其他 DSH 宿主:

dsh plugin --profile <你的-profile> add "file:/绝对路径/dsh-to-figma-0.3.0.tgz"

把路径和 profile 替换为实际值。桌面版优先使用应用自带 CLI,避免调用另一份旧版全局 dsh。安装后在插件面板确认 DSH to Figma → 运行中,再让 DSH 调用 figma_setup 完成配对。

DSH 会生成已经配对的 Figma 插件,日常安装不需要额外下载 ZIP。Release 中的 DSH-to-Figma-companion-0.3.0.zip 是手动配对备用包。DSH 在本机生成的已配对目录与 ZIP 含配对凭证,请保留在本机;Release 中的通用 ZIP 不含凭证。

连接与配置

默认使用 local 模式:DSH 与 Figma 配套插件通过本机服务连接。单文件连接后自动选用,多文件时明确选择操作目标。

| 配置项 | 默认值 | 用途 |
| backend | local | 选择 local、desktop 或 remote |
| bridgePort | 3055 | 本地连接端口 |
| toolCallTimeoutMs | 120000 | 单次工具调用超时,单位毫秒 |
| desktopServerUrl | http://127.0.0.1:3845/mcp | 桌面 MCP 地址 |
| oauthClientId | 空 | 远程登录所需的客户端配置 |

通过宿主插件管理器调整配置。详细接入与配置说明。

如果升级后未发现工具,先确认正在使用正确的宿主和 profile,检查插件面板,再重载或重启 DSH。Figma 端也要关闭旧插件后重新运行。反馈问题时请附上两端版本和错误信息。

开发与贡献

npm ci --ignore-scripts
npm run test:all
npm run package:companion
npm pack --ignore-scripts

源码包括 DSH 插件入口、连接桥接、Figma companion 和工作流 Skill。欢迎提交改进建议或可复现的问题。

感谢 heeq666 与 miztizm 对宿主兼容性的反馈和贡献。

基于 DeepSeek Harness、Figma Plugin API 和 Model Context Protocol SDK 构建。

MIT · Copyright © 2026 Duoasa.
预览分享卡片长什么样 ↓Duoasa/DSH-to-Figma
分享 · DeepSeek Harness Hub
Duoasa/DSH-to-Figma

原生 Figma 画布工具,供 DeepSeek Harness 使用:可编辑图层、设计上下文、组件、变量、素材和截图。原生 DSH Figma 插件。

回到顶部