按需安装个人维护的对话归档、外观与媒体增强插件
30.7/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/18 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add xiaoxiao44443/dfy-dsh-plugins该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · tool
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 17 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件发起外部网络请求
查看扫描证据(共 59 处,展示前 55 条)
- 读取本地文件packages/image-protocol/src/session-storage.ts:79
const manifest = JSON.parse(await readFile(join(directory, 'manifest.json'), 'utf8')) as unknown; - 读取本地文件packages/image-protocol/src/session-storage.ts:82
const existing = await readFile(join(directory, fileName(ref.mediaType))); - 写入本地文件packages/image-protocol/src/session-storage.ts:94
await mkdir(temporaryDirectory, { recursive: false }); - 写入本地文件packages/image-protocol/src/session-storage.ts:95
await writeFile(join(temporaryDirectory, fileName(ref.mediaType)), data, { flag: 'wx' }); - 写入本地文件packages/image-protocol/src/session-storage.ts:96
await writeFile( - 写入本地文件packages/image-protocol/src/session-storage.ts:102
await rename(temporaryDirectory, finalDirectory); - 删除本地文件递归packages/image-protocol/src/session-storage.ts:107
await rm(temporaryDirectory, { recursive: true, force: true }); - 删除本地文件递归packages/image-protocol/src/session-storage.ts:112
await rm(temporaryDirectory, { recursive: true, force: true }).catch(() => {}); - 写入本地文件packages/image-protocol/src/session-storage.ts:127
await mkdir(root, { recursive: true }); - 删除本地文件递归packages/image-protocol/src/session-storage.ts:153
await Promise.all(created.map((directory) => rm(directory, { recursive: true, force: true }).catch(() => {}))); - 读取本地文件packages/image-protocol/src/session-storage.ts:173
const info = await stat(candidate); - 读取本地文件packages/image-protocol/src/session-storage.ts:175
const [realRoot, realCandidate] = await Promise.all([realpath(root), realpath(candidate)]); - 读取本地文件packages/image-protocol/src/session-storage.ts:179
const data = new Uint8Array(await readFile(realCandidate)); - 读取本地文件packages/resource-core/src/settings.ts:33
try { await readFile(marker); return; } catch (error) { - 读取本地文件packages/resource-core/src/settings.ts:40
const document = record(parse(await readFile(join(profile.home, filename), 'utf8'))); - 写入本地文件packages/resource-core/src/settings.ts:51
await mkdir(profile.dir, { recursive: true }); - 写入本地文件packages/resource-core/src/settings.ts:52
await writeFile(marker, JSON.stringify({ version: 1, namespace, entryId }) + '\n', { mode: 0o600 }); - 发起网络请求plugins/archive-manager/src/client.ts:161
fetch('/api/dsh-archive-manager/list') - 发起网络请求plugins/archive-manager/src/client.ts:196
fetch(`/api/dsh-archive-manager/${action === 'restore' ? 'unarchive' : 'delete'}`, { - 发起网络请求plugins/archive-manager/src/client.ts:226
fetch('/api/dsh-archive-manager/delete-all', { method: 'POST' }) - 读取本地文件plugins/archive-manager/src/logic.ts:56
const raw = await readFile(workspaceJsonPath(), 'utf8'); - 读取本地文件plugins/archive-manager/src/logic.ts:104
return JSON.parse(await readFile(path, 'utf8')) as T; - 读取本地文件plugins/archive-manager/src/logic.ts:254
const entries = await readdir(sessionDirectory, { withFileTypes: true }); - 读取本地文件plugins/archive-manager/src/logic.ts:271
return titleFromJsonLines((await readFile(join(sessionDirectory, filename), 'utf8')).split('\n')); - 读取本地文件plugins/archive-manager/src/logic.ts:273
const buffer = await readFile(join(sessionDirectory, filename)); - 读取本地文件plugins/archive-manager/src/logic.ts:314
projects = await readdir(sessionsRoot()); - 删除本地文件递归plugins/archive-manager/src/logic.ts:379
await rm(join(sessionsRoot(), project, entry), { recursive: true }); - 写入本地文件plugins/codex-bridge/src/index.ts:98
await mkdir(dirname(DISCOVERY_PATH), { recursive: true }); - 写入本地文件plugins/codex-bridge/src/index.ts:100
await writeFile(temporary, discoveryDocument(origin, token), { encoding: 'utf8', mode: 0o600 }); - 写入本地文件plugins/codex-bridge/src/index.ts:101
await rename(temporary, DISCOVERY_PATH); - 读取本地文件plugins/codex-bridge/src/index.ts:106
const current = JSON.parse(await readFile(DISCOVERY_PATH, 'utf8')) as { token?: unknown }; - 删除本地文件plugins/codex-bridge/src/index.ts:107
if (current.token === token) await rm(DISCOVERY_PATH, { force: true }); - 发起网络请求plugins/image-generation/src/index.ts:312
const response = await fetch(url, { signal, redirect: 'follow' }); - 发起网络请求plugins/image-generation/src/index.ts:368
response = await fetch(imageApiEndpoint(config.baseUrl, operation), { - 发起网络请求plugins/image-generation/src/index.ts:387
response = await fetch(imageApiEndpoint(config.baseUrl, operation), { - 写入本地文件plugins/visualize/src/index.ts:189
await mkdir(join(temporaryDirectory, 'assets'), { recursive: true }); - 写入本地文件plugins/visualize/src/index.ts:191
await writeFile(join(temporaryDirectory, 'index.html'), renderedHtml, { encoding: 'utf8', flag: 'wx' }); - 写入本地文件plugins/visualize/src/index.ts:194
await writeFile(join(temporaryDirectory, 'assets', asset.name), asset.data, { flag: 'wx' }); - 写入本地文件plugins/visualize/src/index.ts:196
await writeFile(join(temporaryDirectory, 'manifest.json'), `${JSON.stringify({ - 写入本地文件plugins/visualize/src/index.ts:203
await rename(temporaryDirectory, finalDirectory); - 删除本地文件递归plugins/visualize/src/index.ts:205
await rm(temporaryDirectory, { recursive: true, force: true }).catch(() => {}); - 读取本地文件plugins/visualize/src/index.ts:363
const [realRoot, realCandidate] = await Promise.all([realpath(artifactRoot), realpath(candidate)]); - 读取本地文件plugins/visualize/src/index.ts:426
const data = await readFile(file); - 读取本地文件plugins/wallpaper/src/index.ts:83
await stat(DATA_DIR); - 写入本地文件plugins/wallpaper/src/index.ts:88
await mkdir(dirname(DATA_DIR), { recursive: true, mode: 0o700 }); - 写入本地文件plugins/wallpaper/src/index.ts:90
await rename(LEGACY_DATA_DIR, DATA_DIR); - 读取本地文件plugins/wallpaper/src/index.ts:111
const parsed = JSON.parse(await readFile(CONFIG_FILE, 'utf8')) as Partial<StoredConfig>; - 读取本地文件plugins/wallpaper/src/index.ts:137
return (await stat(imageFile(target))).isFile(); - 写入本地文件plugins/wallpaper/src/index.ts:213
await mkdir(dirname(file), { recursive: true, mode: 0o700 }); - 写入本地文件plugins/wallpaper/src/index.ts:216
await writeFile(temporary, content, { flag: 'wx', mode: 0o600 }); - 写入本地文件plugins/wallpaper/src/index.ts:217
await rename(temporary, file); - 删除本地文件plugins/wallpaper/src/index.ts:219
await rm(temporary, { force: true }); - 读取本地文件plugins/wallpaper/src/index.ts:288
const info = await stat(imageFile(target)); - 读取本地文件plugins/wallpaper/src/index.ts:294
const stream = createReadStream(imageFile(target)); - 删除本地文件plugins/wallpaper/src/index.ts:338
await rm(imageFile(target), { force: true });
扫描于 2026/11/3(1 天前) · 范围 全包扫描 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
README
由 DeepSeek 最新模型翻译生成DFY DSH Plugins
个人维护的 DeepSeek Harness 插件集合。仓库用 pnpm workspace 管理,每个插件都保留独立的 package.json、README、版本号、构建和测试脚本。
公共库
- @dfy-plugins/resource-core:普通 npm 库,提供版本化不透明资源引用、进程内 provider 注册表和安全文本降级;它不是 Harness 插件。
- @dfy-plugins/image-protocol:普通 npm 库,提供官方图片块、Attachment 图片引用、格式识别和图片结果降级;它不是 Harness 插件。
插件可以独立发布,并把这些库声明为普通依赖。进程内注册表使用稳定的 Symbol.for ABI,因此各插件即使各自打包了一份 resource-core,仍共享 provider,不需要依赖 media-blocks 的私有协议。
插件
- @dfy-plugins/dsh-bundle:包含以下维护中插件的原生组合包,一次安装、统一更新,在官方详情页分别启停;也可继续单独安装。
- @dfy-plugins/dsh-archive-manager:按项目查看已归档对话,支持取消归档和永久删除。
展开完整文档(README 剩余 1 节)
DFY DSH Plugins 个人维护的 DeepSeek Harness 插件集合。仓库用 pnpm workspace 管理,每个插件都保留独立的 package.json、README、版本号、构建和测试脚本。 公共库 - @dfy-plugins/resource-core:普通 npm 库,提供版本化不透明资源引用、进程内 provider 注册表和安全文本降级;它不是 Harness 插件。 - @dfy-plugins/image-protocol:普通 npm 库,提供官方图片块、Attachment 图片引用、格式识别和图片结果降级;它不是 Harness 插件。 插件可以独立发布,并把这些库声明为普通依赖。进程内注册表使用稳定的 Symbol.for ABI,因此各插件即使各自打包了一份 resource-core,仍共享 provider,不需要依赖 media-blocks 的私有协议。 插件 - @dfy-plugins/dsh-bundle:包含以下维护中插件的原生组合包,一次安装、统一更新,在官方详情页分别启停;也可继续单独安装。 - @dfy-plugins/dsh-archive-manager:按项目查看已归档对话,支持取消归档和永久删除。 - @dfy-plugins/dsh-appearance:在设置侧栏提供独立「外观」页,可调节回复与过程行距,并为本地文件提供右键菜单;新版字体与字号使用官方设置。 - @dfy-plugins/dsh-wallpaper:为 Harness 设置可配置图片背景,支持多种适应模式、模糊、遮罩和界面透明度。 - @dfy-plugins/dsh-media-blocks:提供持久聊天媒体块和可扩展的多媒体展示;上传入口使用 DSH 自带的附件按钮,不再添加重复的图片按钮。图片基础协议来自公共库,未来视频、网页等块仍可通过 MediaResourceMap 扩展。 - @dfy-plugins/dsh-vision:已停止维护,仅保留历史源码。 - @dfy-plugins/dsh-image-generation:通过按需 Skill 和固定工具调用独立图片模型,支持官方图片块、参考图编辑与 Tool 内图片预览;media-blocks 为可选增强。 - @dfy-plugins/dsh-visualize:通过 dfy-visualize Skill 和 dfy_visualize_render 工具,将工作区 HTML 安全发布为对话内可交互的会话级可视化产物。 - @dfy-plugins/dsh-codex-bridge:通过本机鉴权 MCP 将 Harness 会话、工具与 Skills 提供给 Codex;DSH 端与 Codex 伴生插件分别安装。 - @dfy-plugins/dsh-turn-guard:为单轮任务提供收敛提醒、重复调用检测和可配置的硬停止预算。 当前维护版本最低要求 DSH 0.1.7-alpha.1,开发依赖固定到该版本;为仍支持的旧运行时保留必要的能力检测分支。 外观插件在 DSH 0.2.1 使用官方字体与字号,只保留行距和本地文件菜单等扩展;旧版 DSH 保留原字号控制。过程折叠使用 DSH 自带的展示模式。旧设置迁入新版配置树,旧对话由桌面端的历史内容准入修复和官方 V4 迁移共同处理。 视觉理解插件已停止维护,npm 上的已发布版本已撤回。仓库仅保留历史源码,并从工作区构建、npm 发布批次和桌面插件目录移除;图片识别使用模型原生多模态能力。 已适配 DSH 0.1.7-rc.1 的文件链接与工具准备阶段,详见 rc.1 配套更新;最低版本与开发依赖保持不变。基础验证范围见 0.1.7-alpha.1 适配记录。 DSH 0.2.1-rc.2 适配与功能重叠检查见 兼容性记录。配套版本为外观 0.1.7、媒体内容 0.1.5、组合包 0.1.3,详见 本批更新说明。 可视化 0.1.5 收紧技能触发范围,组合包 0.1.2 同步包含该修正,详见 可视化更新说明。 所有发布包使用 @dfy-plugins npm scope;运行时 ID、API、CSS 和持久化目录按各自的兼容性要求命名,不会随包名做全局替换。新增或修改插件前请先阅读: - DEVELOPMENT.md:客户端 HMR、样式和资源生命周期规范。 - NAMING.md:发布包、运行时 ID、API、CSS 和数据目录命名规范。 开发 桌面端插件目录 根目录的 catalog.json 供桌面端「DFY 插件」页读取。version 是目录格式版本,当前为 1;plugins 数组顺序即展示顺序,每项包含 name(npm 包名)、title(中文名称)、category(分类)、description(简介)、repository(该插件的 GitHub 目录或仓库地址),可选 note(安装后的配置提示)。卡片上的 GitHub 图标打开各自的 repository 地址。目录不保存 npm 版本号,桌面端会查询最新发布版本。 新增插件时,先发布对应的 npm 包,再将条目加入目录并推送到 main。桌面端刷新即可发现,无需发布新版客户端。只列出可安装的 @dfy-plugins/ 插件,公共依赖不进入目录。运行 pnpm catalog:check 校验字段、重复包名及对应插件包。 发布准备、npm 首次上传和 GitHub Actions 可信发布见 npm 发布指南。 bash pnpm install pnpm check pnpm build 针对准备发布的实际 DSH 运行环境,额外核对运行文件的具名导出(包括仅存在于前端 bundle 的模块): bash node scripts/check-runtime-exports.mjs ../dfy-dsh-desktop/build/harness-runtime node scripts/test-runtime-compat.mjs ../dfy-dsh-desktop/build/harness-runtime 前者核对具名导出,后者使用目标 DSH 的 AgentLoop、ToolRuntime、审批服务和 Session Controller 做内存集成测试。两者均不调用真实模型或读写用户对话;它们不替代界面交互及热更新验收。 本地安装归档插件: bash dsh plugin --profile web add ./plugins/archive-manager 本地安装外观插件: bash dsh plugin --profile web add ./plugins/appearance 本地安装壁纸插件: bash dsh plugin --profile web add ./plugins/wallpaper 本地安装媒体内容插件: bash dsh plugin --profile web add ./plugins/media-blocks 本地安装图像生成插件: bash dsh plugin --profile web add ./plugins/image-generation 本地安装可视化插件: bash dsh plugin --profile web add ./plugins/visualize 本地安装 Codex Bridge 的 DSH 端: bash dsh plugin --profile web add ./plugins/codex-bridge 本地安装任务守卫插件: bash dsh plugin --profile web add ./plugins/turn-guard 将仓库添加为 Codex Plugin Marketplace: bash codex plugin marketplace add xiaoxiao44443/dfy-dsh-plugins 然后在 Codex 桌面端的插件列表中打开 DFY DSH Plugins,安装 DFY DSH。安装或更新后请新建 Codex 任务;已经打开的任务不会热加载插件和 MCP。 许可证 本仓库中的插件和公共库基于 MIT License 开源。DeepSeek Harness 及其他第三方依赖仍分别遵循其各自的许可证。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
xiaoxiao44443/dfy-dsh-plugins
按需安装个人维护的对话归档、外观与媒体增强插件
相关插件 · 工具 / 效率
破甲管控台kingcharleslzy-ai/dsh-purge
dsh-purge Community · DeepSeek Harness 社区维护版:宿主兼容、状态诊断、提示词管理、更新与本机备份回滚。基于小杨 / YuJunZhiXue 的 dsh-purge。
★ 4,330已汉化DeepSeek 客户端
74.5
网文长卷lingfengQAQ/webnovel-writer
基于 Claude Code 的长篇网文辅助创作系统,解决 AI 写作中的「遗忘」和「幻觉」问题,支持 200…
★ 7,636已汉化DSH
72.2
多智能体协作HKUDS/AutoSwarm
AutoSwarm: Unify Your Agents. Unify Your Context (Codex · Claude Code · DeepSeek Harness · Muse · Grok · WorkBuddy· nanobot · and more)
★ 2,349已汉化DSH
71.6
Vox 拼贴视频生成Alisa0808/vox-director
🎬 Vox Director拼贴动效导演
★ 2,129已汉化DSH
71.4
Agent 演化引擎Q00/ouroboros
智能体 OS:智能体自己变聪明,我们只守住底线:面试准入、分阶段评估、带预算的进化循环。MCP 服务器,14 种运行时:Claude Code、Codex CLI、Gemini CLI、OpenCode、Copilot、Kiro 等。
★ 6,311已汉化DSH
71.4
智能体运行框架路由HarnessRouter/harnessrouter
智能体 harness 的统一接口。
★ 3,984已汉化DSH
71.3
这是你的仓库?认领条目