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

歸藏设计 op7418/dsh-guizang-design

DeepSeek Harnessv0.1.3
op74183 天前有提交已提供中文文档扫描:含敏感能力

歸藏设计 · DeepSeek Harness 插件:网页 PPT、图文卡片、网页排版、去 AI 味四个…

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

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

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-guizang-design
npm 源 · dsh-guizang-design 的发布者账号已校验与本仓库一致

状态速览

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

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过
展开查看检查明细 ↓

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

✓npm 包dsh-guizang-design @ 0.1.3
✓Node 引擎要求 ^22.19.0 || >=24.0.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/11/1 02:36:22

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

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

读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 48 处,展示前 40 条)
  • 读取本地文件
    lib/index.js:48
    if (!file.startsWith(base + sep) || !existsSync(file)) return null
  • 读取本地文件
    lib/index.js:50
    return real.startsWith(base + sep) && statSync(real).isFile() ? real : null
  • 读取本地文件
    lib/index.js:55
    res.writeHead(200, { 'content-type': type, 'content-length': statSync(file).size, 'cache-control': 'no-cache' })
  • 读取本地文件
    lib/index.js:57
    createReadStream(file).pipe(res)
  • 读取本地文件
    lib/index.js:76
    try { return JSON.parse(readFileSync(join(ROOT, 'examples', 'manifest.json'), 'utf8')).examples } catch { return [] }
  • 读取本地文件
    lib/index.js:81
    if (!existsSync(file)) return { exists: false, path: file }
  • 读取本地文件
    lib/library.js:17
    const data = JSON.parse(readFileSync(libraryFile(), 'utf8'))
  • 写入本地文件
    lib/library.js:25
    mkdirSync(dataDir(), { recursive: true })
  • 写入本地文件
    lib/library.js:27
    writeFileSync(tmp, JSON.stringify({ works }, null, 2) + '\n')
  • 写入本地文件
    lib/library.js:28
    renameSync(tmp, libraryFile())
  • 读取本地文件
    lib/library.js:35
    if (!existsSync(abs)) throw new Error(`找不到 ${abs}`)
  • 读取本地文件
    lib/library.js:36
    if (statSync(abs).isFile()) return { root: dirname(abs), entry: basename(abs), files: [basename(abs)] }
  • 读取本地文件
    lib/library.js:39
    const pngs = existsSync(out) ? readdirSync(out).filter((f) => IMAGE.has(extname(f).toLowerCase()) && !/pair-preview/.test(f)).sort() : []
  • 读取本地文件
    lib/library.js:39
    const pngs = existsSync(out) ? readdirSync(out).filter((f) => IMAGE.has(extname(f).toLowerCase()) && !/pair-preview/.test(f)).sort() : []
  • 读取本地文件
    lib/library.js:42
    const html = existsSync(join(abs, 'index.html')) ? 'index.html' : readdirSync(abs).find((f) => f.endsWith('.html'))
  • 读取本地文件
    lib/skills.js:11
    const text = readFileSync(file, 'utf8')
  • 读取本地文件
    lib/skills.js:23
    if (!existsSync(dir)) return []
  • 读取本地文件
    lib/skills.js:24
    return readdirSync(dir, { withFileTypes: true })
  • 读取本地文件
    lib/skills.js:25
    .filter((d) => d.isDirectory() && existsSync(join(dir, d.name, 'SKILL.md')))
  • 读取本地文件
    lib/voice.js:15
    return existsSync(file) ? readFileSync(file, 'utf8') : null
  • 读取本地文件
    lib/voice.js:15
    return existsSync(file) ? readFileSync(file, 'utf8') : null
  • 写入本地文件
    lib/voice.js:20
    mkdirSync(dirname(file), { recursive: true })
  • 写入本地文件
    lib/voice.js:21
    writeFileSync(file, text.endsWith('\n') ? text : `${text}\n`)
  • 读取本地文件
    lib/history.js:26
    if (!existsSync(root)) return files
  • 读取本地文件
    lib/history.js:27
    for (const ws of readdirSync(root)) {
  • 读取本地文件
    lib/history.js:29
    if (!statSync(wdir).isDirectory()) continue
  • 读取本地文件
    lib/history.js:30
    for (const s of readdirSync(wdir)) {
  • 读取本地文件
    lib/history.js:32
    if (!s.startsWith('session-') || !statSync(sdir).isDirectory()) continue
  • 读取本地文件
    lib/history.js:34
    const f = readdirSync(sdir).filter((n) => /^session\.v\d+\.jsonl(\.zstd)?$/.test(n)).sort((a, b) => +b.match(/v( +)/)[1] - +a.match(/v( +)/)[1])[0]
  • 写入本地文件
    lib/history.js:72
    mkdirSync(join(outFile, '..'), { recursive: true })
  • 写入本地文件
    lib/history.js:73
    writeFileSync(outFile, md.join('\n'))
  • 读取本地文件
    lib/thumbs.js:12
    if (existsSync(cache)) {
  • 读取本地文件
    lib/thumbs.js:13
    for (const d of readdirSync(cache).filter((d) => /^chromium-\d+$/.test(d)).sort().reverse()) {
  • 读取本地文件
    lib/thumbs.js:15
    if (existsSync(join(cache, d, rel))) found.push(join(cache, d, rel))
  • 读取本地文件
    lib/thumbs.js:19
    for (const p of ['/Applications/Google Chrome.app/Contents/MacOS/Google Chrome', '/usr/bin/google-chrome', '/usr/bin/chromium']) if (existsSync(p)) fo
  • 写入本地文件
    lib/thumbs.js:36
    mkdirSync(join(outFile, '..'), { recursive: true })
  • 写入剪贴板
    gallery/app.js:44
    navigator.clipboard?.writeText(prompt).then(() => toast('草稿已复制,粘贴到对话里就能用'), () => toast('复制失败'))
  • 发起网络请求
    gallery/app.js:331
    const r = await fetch('api/voice/collect', { method: 'POST', headers: { 'content-type': 'application/json' }, body: '{}' }).then((x) => x.json()).catc
  • 发起网络请求
    gallery/app.js:341
    const r = await fetch('api/works/remove', { method: 'POST', headers: { 'content-type': 'application/json' }, body: JSON.stringify({ id: w.id }) }).the
  • 发起网络请求
    gallery/app.js:349
    data = await fetch('api/catalog', { cache: 'no-store' }).then((r) => r.json())
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包

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

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
展开完整介绍(82 字)↓

歸藏设计 · DeepSeek Harness 插件:网页 PPT、图文卡片、网页排版、去 AI 味四个 skill,一套设计系统;作品库、内容生产工作流、语气档案

README

由 DeepSeek 最新模型翻译生成
歸藏设计 · dsh-guizang-design DeepSeek Harness(dsh)插件。把歸藏的内容生产技能装进 dsh:网页 PPT、图文卡片、网页排版、去 AI 味,外加一个学你写作语气的语气档案。前三个共用同一套设计系统,同一篇内容做成 PPT、卡片和网页,主题、字体和版式是一家人。 侧栏多一个「歸藏设计」页面:从这里开始创作,回看做过的作品,一键「做同款」,或者用现成的内容生产工作流。 歸藏设计插件页面 装上以后有什么 五个技能 | 技能 | 命令 | 做什么 | 产出 | | 网页 PPT | /guizang-ppt-skill | 横向翻页的演示稿,杂志风或瑞士风;WebGL 背景、演讲者视图、讲稿备注、数据大字报 | 单个 HTML 文件 | | 图文卡片 | /guizang-social-card-skill | 小红书 3:4 组图、公众号 21:9 头图和 1:1 分享卡,一条命令出图并核对尺寸 | PNG | | 网页排版 | /guizang-page-skill | 把文章、笔记排成精排单页网页,忠实模式或解释模式;可导出 PDF 和长图 | HTML / PDF / 长图 | | 去 AI 味 | /humanizer-zh | 删掉中文里的空话、重复和模板化表达,保留事实、确定程度和作者自己的语气 | 改好的文字 |
展开完整文档(README 剩余 1 节)
歸藏设计 · dsh-guizang-design

DeepSeek Harness(dsh)插件。把歸藏的内容生产技能装进 dsh:网页 PPT、图文卡片、网页排版、去 AI 味,外加一个学你写作语气的语气档案。前三个共用同一套设计系统,同一篇内容做成 PPT、卡片和网页,主题、字体和版式是一家人。

侧栏多一个「歸藏设计」页面:从这里开始创作,回看做过的作品,一键「做同款」,或者用现成的内容生产工作流。

歸藏设计插件页面

装上以后有什么

五个技能

| 技能 | 命令 | 做什么 | 产出 |
| 网页 PPT | /guizang-ppt-skill | 横向翻页的演示稿,杂志风或瑞士风;WebGL 背景、演讲者视图、讲稿备注、数据大字报 | 单个 HTML 文件 |
| 图文卡片 | /guizang-social-card-skill | 小红书 3:4 组图、公众号 21:9 头图和 1:1 分享卡,一条命令出图并核对尺寸 | PNG |
| 网页排版 | /guizang-page-skill | 把文章、笔记排成精排单页网页,忠实模式或解释模式;可导出 PDF 和长图 | HTML / PDF / 长图 |
| 去 AI 味 | /humanizer-zh | 删掉中文里的空话、重复和模板化表达,保留事实、确定程度和作者自己的语气 | 改好的文字 |
| 语气档案 | /guizang-voice | 从你在 DeepSeek 里发过的消息和你写过的文章学出你的写作习惯,存成本机的一份档案 | 一份 Markdown 档案 |

在输入框里打 / 就能看到它们。不用记命令也行:直接说「帮我把这篇文章排成网页」,模型会自己选技能。

一套设计系统

PPT、卡片、网页三个技能用同一套 token:

- 杂志风 6 套主题:墨水经典、靛蓝瓷、森林墨、牛皮纸、沙丘,以及深色的午夜墨(午夜墨用于卡片和网页)。
- 瑞士风 4 套主题:克莱因蓝、柠檬黄、柠檬绿、安全橙。
- 品牌色:给一个品牌色或 logo 主色,按色彩科学(OKLCH)收进风格允许的明度和彩度范围,生成一套受约束的品牌主题;文字、线条和强调色小字都按对比度规则(WCAG + APCA)算好,不会直接用原色。
- 字体:中英文字体按固定版本加载;卡片出图和网页 --embed 时按实际用字子集化内置,离线也能正确显示。

插件页面

| 页面 | 内容 |
| 概览 | 作品、专栏、工作流、语气档案的数量;四个技能的入口;最近作品;工作流;官方示例 |
| 我的作品 | 做过的作品,带缩略图;按技能筛选、搜索;连载的作品按专栏归在一起,可以直接「做新一期」 |
| 内容生产工作流 | 跨技能的常用组合,见下表 |
| 语气档案 | 档案内容和状态;「从我的 DeepSeek 对话学习」「用我写过的文章补充」 |
| 官方示例 | 各技能的样张,可以打开看,也可以「做同款」 |

点作品卡片打开作品;「做同款」会开一个新对话,按这份作品的主题和版式填好草稿,你补上新内容就能发。作品交付时技能会自己把它登记到作品库。

我的作品

内容生产工作流

| 工作流 | 步骤 | 用途 |
| 一篇文章,三种出口 | 网页 → 卡片 | 同一篇文章排成网页,再做小红书组图和公众号封面,三者同一套主题 |
| 先去 AI 味,再排版 | 去 AI 味 → 网页 | 先把文字改自然,确认改动后再排版 |
| 演讲回收 | 网页 → 去 AI 味 | 讲完的 PPT 按每页内容和讲稿备注整理成文章,排成网页 |
| 品牌套件 | PPT → 卡片 | 用品牌色生成受约束的主题,PPT 和卡片封面统一用它 |
| 封面矩阵 | 卡片 | 一次做齐公众号 21:9 头图、1:1 分享卡和小红书 3:4 首图 |
| 中英双版本 | 网页 | 一篇文章出中文和英文两版网页,英文按英文读者的习惯重写 |

点「使用工作流」会开一个新对话并填好草稿;后面几步用到的技能,模型会接着调用。

点击后新对话里的草稿

语气档案

语气档案记的是你自己的写作习惯:常用的词和从来不用的词、句子长短、开头和结尾的方式、标点和称呼。它从两处学:

1. 你在 DeepSeek 里发过的消息:插件页面点「从我的 DeepSeek 对话学习」,插件读取本机 dsh 的会话记录,只取你亲手发的消息(不含技能注入和系统消息),长段文字优先,整理成学习素材,再开一个新对话让模型建档。
2. 你写过的文章:点「用我写过的文章补充」,把文件、链接或正文交给模型。

每条特征都要在样本里找到至少两处证据,建完给你过目,哪条不对就改哪条。之后你在对话里纠正措辞(「别用这个词」「我一般这么说」),它会记下来。

档案用在两件事上:去 AI 味时保留你本来的说法,只删真正的套话;替你写文案、讲稿、卡片标题时,照着你的语气写。

安装

需要 dsh 0.2.1-rc.2 及以上、0.3.0 以下。

在插件页面安装(桌面版和网页版都适用,推荐)

1. 侧栏打开「插件」,点「添加插件」。
2. 包名填 dsh-guizang-design,点安装。
3. 装完点「立即启用」。直接关掉对话框的话,插件是装上了但没打开,要回到插件列表里把它的开关打开。

侧栏会出现「歸藏设计」。

升级:在插件页面把它卸载,再按上面的步骤装一次(插件页面对第三方插件的升级方式就是这样)。卸载:在插件页面打开它,点「卸载」。

用命令行安装(网页版)

自己运行 dsh web 的话,也可以用命令行,需要 Node.js 22.19 及以上和 pnpm:

dsh plugin --profile web add dsh-guizang-design

装完重启 dsh web 再刷新页面。dsh plugin 会把后面的参数原样交给 pnpm,所以 pnpm 的写法都能用:

dsh plugin --profile web add github:op7418/dsh-guizang-design # 从 GitHub 装,跟着 main 的最新提交bash
dsh plugin --profile web add dsh-guizang-design@0.1.0 # 指定版本
dsh plugin --profile web update dsh-guizang-design --latest # 升级
dsh plugin --profile web remove dsh-guizang-design # 卸载

用的不是 web 这个配置档时,把 --profile web 换成你自己的。桌面版不能用命令行:桌面版用的 desktop 配置档只能由 App 管理,dsh plugin --profile desktop 会直接报错,请走插件页面。

按需准备

- 卡片出图用 Playwright 的 Chromium。第一次出图如果提示缺少浏览器,运行 npx playwright install chromium。
- 网页导出 PDF / 长图用本机的 Chrome(或用 CHROME_PATH 指定)。

使用

- 侧栏点「歸藏设计」打开插件页面;点 skill 卡片、「使用工作流」「做同款」「做新一期」都会开一个新对话并填好草稿。
- 在输入框里直接用命令,比如 /guizang-page-skill 把这篇文章排成网页。
- 作品交付时会自动登记进作品库。以前做的作品,在对话里说「把 <文件路径> 登记进歸藏设计的作品库」就行。

插件给模型的两个工具

作品库和语气档案放在工作区外(见下面的「数据和隐私」),模型在沙箱里跑的命令写不进去,所以插件注册了两个工具,由 dsh 主进程执行:

| 工具 | 做什么 |
| guizang_library_add | 把交付的作品登记进作品库:PPT 和网页给 HTML 文件,卡片给任务目录(会收 output/ 里的图);同一个文件重复登记只会更新 |
| guizang_voice | 读写语气档案:读、追加一条对话里学到的、整份保存、整理聊天记录素材 |

它们只读写 guizang-design/ 这一个目录。

在终端里也可以手动处理: bash
node <插件目录>/scripts/library.mjs add --skill guizang-ppt-skill --title "标题" [--column "专栏名"]
node <插件目录>/scripts/library.mjs list
node <插件目录>/scripts/library.mjs remove <id>
node <插件目录>/scripts/voice.mjs show

数据和隐私

所有数据都在本机的 $DSH_HOME/guizang-design/(默认 ~/.dsh/guizang-design/):

| 文件 | 内容 |
| library.json | 作品库:只记作品的路径和标题等信息,不复制作品文件 |
| thumbs/ | 网页作品的缩略图 |
| voice.md | 语气档案 |
| voice-corpus.md | 从会话记录整理出来的学习素材(你发过的消息) |

插件不会把这些内容发到任何地方。「从我的 DeepSeek 对话学习」整理出的素材,会在你点了以后交给你当前选用的模型去分析,和你平时在对话里发消息一样。不想保留时直接删除对应文件;移出作品库不会删除作品文件本身。

和独立 skill 仓库的关系

四个 skill 都有自己的独立仓库,在 Claude Code、Codex 等其他智能体里也能单独用:

- guizang-ppt-skill
- guizang-social-card-skill
- guizang-pages-skill
- Humanizer-zh

插件里的 skills/ 是这些仓库在固定提交上的快照,版本记在 skills/manifest.json,插件页面左下角也会显示。加载时插件会做两处调整:去掉只适用于 git clone 安装的步骤(PPT skill 开头的「检查更新」,插件里的 skill 随插件版本更新);在末尾补几条插件环境下的说明(依赖已装好、交付后登记作品、写文案前读语气档案)。

你在 ~/.dsh/skills 或项目的 .dsh/skills 里装了同名 skill 时,那一份优先,插件自带的这份让位。

常见问题

插件页面里的作品是空的?
作品要在装了插件之后做出来才会自动登记。之前做过的,在对话里说「把 <文件路径> 登记进歸藏设计的作品库」。

语气档案提示「还没找到成段的消息」?
插件只取 30 字以上、你亲手发的消息。对话少的时候先用「用我写过的文章补充」。

卡片出图报错找不到浏览器?
运行 npx playwright install chromium 后重试。

字体在国内网络加载慢?
卡片出图默认内置字体;网页渲染时加 --embed 也会内置,生成的页面离线可看。

开发 bash
git clone https://github.com/op7418/dsh-guizang-design.git
cd dsh-guizang-design
npm install
npm test
dsh plugin --profile web add link:$PWD # 本地调试

| 目录 | 说明 |
| lib/ | 插件本体:index.js(Host 半边:skill 提供方、工具、页面和接口)、tools.js(给模型的两个工具)、client.js(浏览器半边:侧栏入口、开新对话) |
| gallery/ | 插件页面。gz-swiss.css 由设计系统生成,不要手改 |
| skills/ | 独立仓库的快照,用 node tools/vendor-skills.mjs 更新,不要直接改 |
| own-skills/ | 插件自己的 skill(语气档案) |
| examples/ | 官方示例,用 node tools/vendor-examples.mjs 生成 |
| scripts/ | library.mjs(作品库)、voice.mjs(语气档案)的命令行版本,手动处理用 |

许可证

AGPL-3.0。打包的技能各自保留自己的 LICENSE(humanizer-zh 是 MIT)。
预览分享卡片长什么样 ↓op7418/dsh-guizang-design
分享 · DeepSeek Harness Hub
op7418/dsh-guizang-design

歸藏设计 · DeepSeek Harness 插件:网页 PPT、图文卡片、网页排版、去 AI 味四个…

回到顶部