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

预设生成器 ckanner/dsh-preset-generator

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

从应用基底生成并写入 agent 预设配置

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

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

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add ckanner/dsh-preset-generator
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

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

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

读写/删除本地文件
查看扫描证据(共 2 处,展示前 2 条)
  • 读取本地文件
    src/gen-presets.mjs:343
    const before = readFileSync(target, 'utf8')
  • 写入本地文件
    src/gen-presets.mjs:357
    writeFileSync(target, spliceBlock(before, body), { mode: 0o600 })
扫描于 2026/11/1(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 生成智能体预设
  • 写入预设配置

从应用内置的基础预设生成 DeepSeek Harness 智能体预设。

README

由 DeepSeek 最新模型翻译生成
dsh-preset-generator 从应用内自带的基底 preset 生成 DeepSeek Harness 的 agent preset。 node src/gen-presets.mjs # 写进 ~/.dsh/profiles/desktop node src/gen-presets.mjs --dry-run # 只打印块,不写文件 node src/gen-presets.mjs --out FILE # 写到别处 node src/gen-presets.mjs --daily-only # 文件里已有 heavy 时拒绝 为什么需要它 DSH 的 agent preset 没有继承。一个 preset 的 plugins 列表就是它完整的组合,而 patch 是整体替换一个条目而不是合并进去。所以自定义 preset 必须把基底 preset 重述一遍 —— 而基底随应用一起发布、会随 DSH 升级变化,手抄注定跟不上。 本工具做的就是这份"重述":从已安装的 app.asar 里读出基底,套用一份策略,写进某个 profile 的 cordis.patch.yml 的标记区间。 它刻意不属于任何插件。它生成的 preset 服务于不止一个插件,而它写入的那个区间DSH 自己的设置 UI 也会写。
展开完整文档(README 剩余 1 节)
dsh-preset-generator

从应用内自带的基底 preset 生成 DeepSeek Harness 的 agent preset。

node src/gen-presets.mjs # 写进 ~/.dsh/profiles/desktop
node src/gen-presets.mjs --dry-run # 只打印块,不写文件
node src/gen-presets.mjs --out FILE # 写到别处
node src/gen-presets.mjs --daily-only # 文件里已有 heavy 时拒绝

为什么需要它

DSH 的 agent preset 没有继承。一个 preset 的 plugins 列表就是它完整的组合,而 patch 是整体替换一个条目而不是合并进去。所以自定义 preset 必须把基底 preset 重述一遍 —— 而基底随应用一起发布、会随 DSH 升级变化,手抄注定跟不上。

本工具做的就是这份"重述":从已安装的 app.asar 里读出基底,套用一份策略,写进某个 profile 的 cordis.patch.yml 的标记区间。

它刻意不属于任何插件。它生成的 preset 服务于不止一个插件,而它写入的那个区间DSH 自己的设置 UI 也会写。一个属于某个插件的工具,最后就在改写一个多方共有的文件;这个工具不属于任何一方,这才是诚实的描述。

标记是承重的

BEGIN 标记里写着这个文件曾经所在的路径。它必须继续写着那个路径:在本次搬迁之前生成的 profile 里已经含有那串确切文本,换一串会让本脚本追加第二个块而不是替换第一个。

它写什么

| preset | 基底 | 策略 |
| daily(日常) | 自带的 ptc preset | 各插件行;Codex 委派由一套独立 provider 提供 |
| heavy(重活) | 同上,且 tool-presentation: both | 以上全部,外加 computer use |

tool-presentation: both 是刻意的:纯 ptc 呈现下模型只看得到 run_code,一个可直接调用的工具就得嵌成另一个 JavaScript 程序里的字符串。

官方的 tool-subagent-codex 行保持禁用 —— 和基底一致。另有一套独立 provider 自己注册 subagent_codex,而两行在同一个 scope 里注册同名工具会冲突:后一次注册抛错,它的工具永远不会出现。

它绝不能碰的东西

标记之间的区间不是本脚本独占的。DSH 的设置 UI 会把它的条目追加在那里 —— agent-preset-registry 和 subagent-model-selection-settings 都曾落在标记之间 —— 别的往 profile patch 里写东西的组件也可能如此。

所以一次运行只替换它自己那一个条目:那个携带 preset 行的 - insert: 外壳。区间内其他一切逐字节留在原位。

这比"小心处理它们"是更强的性质。早先的实现替换整个区间,然后把不是自己写的条目重新发到块后面,再对区间外的副本做去重 —— 三个机制,每一个都在补前一个的失败:

| 做法 | 出了什么问题 |
| 替换整个区间 | 静默删掉了设置项 |
| 把它们重新发到块后 | 下一次设置写入又落进区间,每次运行多留一份 |
| 按 id 去重 | 对了,但那是约 60 行只为撤销一次本不该发生的搬动 |

只替换一个条目就不存在这些失败模式,因为什么都不搬动:没有副本要去重,也没有东西会累积。不属于我们的条目连读都不读、不重写、不搬移 —— 包括我们不会选的值。

开发

npm test # node --test;基底来自已安装的应用

测试跑在一份合成的 profile patch 上,应用未安装时自动跳过,所以在本地有意义、在 CI 上也能过。

许可

MIT。
预览分享卡片长什么样 ↓ckanner/dsh-preset-generator
分享 · DeepSeek Harness Hub
ckanner/dsh-preset-generator

从应用基底生成并写入 agent 预设配置

回到顶部