歸藏设计 · 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-designnpm 源 · dsh-guizang-design 的发布者账号已校验与本仓库一致
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · other
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 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🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
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)。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
op7418/dsh-guizang-design
歸藏设计 · DeepSeek Harness 插件:网页 PPT、图文卡片、网页排版、去 AI 味四个…
相关插件 · 其他
模型破甲清洗YuJunZhiXue/dsh-purge
⚔️ DeepSeek Harness 网络安全红队工具dsh-purge
★ 16,148已汉化DeepSeek 客户端
73
女娲蒸馏alchaincyf/nuwa-skill
输入名人名字,提炼其思维模型与决策方式供你调用
★ 37,308已汉化DSH
72
逆向分析桥接Fanqi89/dsh-rea
REA(Reverse Engineer Anything)MCP 桥接,用来把 REA 逆向工具接入 DSH 插件
★ 51已汉化DSH
72
语音女友beiyege-01/dsh-voice-ai-girlfriend
语音 AI 女友Voice AI girlfriend for DeepSeek Harness:Whisper…
★ 888已汉化DSH
71.6
红队越狱测试套件Minglink/dsh-infinite-gen-5
DeepSeek v4.1 flash 逆向工具无限五代 求 Star 收藏 ⭐欢迎大家提交项目的改进
★ 3,759已汉化DSH
71.4
协同办公空间dream-num/univer-workspace
一个让人类与 AI Agent 共同创作、协作和审阅的开源 Office 工作空间。
★ 2,266已汉化DSH
70.7