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

破甲补丁 canyexiren/dsh-purge

DeepSeek 客户端
canyexiren10 天前有提交已提供中文文档扫描:含敏感能力兼容 / 相关生态

按模型切换提示词,重写宿主策略做可控评测

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

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

相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/canyexiren/dsh-purge.git

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么
生态应用
桌面端 / Web 外壳,不以 dsh plugin add 安装
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 10 天前
档位由哪些信号合成

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

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

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

可执行外部命令读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 238 处,展示前 118 条)
  • 发起网络请求
    client.js:59
    const r = await fetch(apiUrl(p), Object.assign({ cache: "no-store", credentials: "same-origin", signal: ctrl.signal }, init || {}));
  • 发起网络请求
    client.js:1564
    fetch("/dsh-purge/" + action, {
  • 发起网络请求
    client.js:1653
    fetch("/dsh-purge/override", {
  • 发起网络请求
    client.js:1723
    fetch("/", { cache: "no-store", credentials: "same-origin" })
  • 发起网络请求
    client.js:1965
    fetch("/dsh-purge/own-servers", {
  • 发起网络请求
    client.js:2583
    fetch("/dsh-purge/status", { cache: "no-store", credentials: "same-origin" })
  • 写入剪贴板
    client.js:4090
    await navigator.clipboard.writeText(value)
  • 读取本地文件
    lib/redteam/index.js:55
    if (!existsSync(paths.setupScript)) return { action: 'missing', path: target }
  • 读取本地文件
    lib/redteam/index.js:58
    wanted = readFileSync(paths.setupScript, 'utf8')
  • 写入本地文件
    lib/redteam/index.js:63
    mkdirSync(redteamDataDir(), { recursive: true })
  • 读取本地文件
    lib/redteam/index.js:64
    if (existsSync(target)) {
  • 读取本地文件
    lib/redteam/index.js:66
    try { current = readFileSync(target, 'utf8') } catch { current = '' }
  • 写入本地文件
    lib/redteam/index.js:69
    try { chmodSync(target, 0o755) } catch { }
  • 写入本地文件
    lib/redteam/index.js:72
    writeFileSync(target, wanted, { encoding: 'utf8', mode: 0o755 })
  • 写入本地文件
    lib/redteam/index.js:75
    writeFileSync(target, wanted, { encoding: 'utf8', mode: 0o755 })
  • 读取本地文件
    lib/redteam/index.js:137
    if (!existsSync(paths.skills)) return { action: 'missing', path: target, copied: 0 }
  • 写入本地文件
    lib/redteam/index.js:138
    mkdirSync(target, { recursive: true })
  • 读取本地文件
    lib/redteam/index.js:140
    for (const file of readdirSync(paths.skills)) {
  • 写入本地文件
    lib/redteam/index.js:147
    writeFileSync(dest, wanted)
  • 读取本地文件
    lib/redteam/store.js:46
    const pkg = JSON.parse(readFileSync(new URL(rel, import.meta.url), 'utf8'))
  • 读取本地文件
    lib/redteam/ui.js:60
    if (!existsSync(raw)) continue
  • 读取本地文件
    lib/redteam/ui.js:62
    const md = readdirSync(real).filter((f) => f.endsWith('.md'))
  • 读取本地文件
    lib/redteam/ui.js:128
    const left = existsSync(a) ? realpathSync(a) : resolve(a)
  • 读取本地文件
    lib/redteam/ui.js:129
    const right = existsSync(b) ? realpathSync(b) : resolve(b)
  • 读取本地文件
    lib/redteam/ui.js:161
    const cwd = typeof options.cwd === 'string' && options.cwd !== '' && existsSync(options.cwd) ? options.cwd : undefined
  • 执行外部命令来自配置/变量
    lib/redteam/ui.js:162
    child = spawn(command, args, {
  • 读取本地文件
    lib/redteam/ui.js:233
    return JSON.parse(readFileSync(join(dir, 'package.json'), 'utf8'))
  • 写入本地文件
    lib/redteam/ui.js:422
    mkdirSync(root, { recursive: true })
  • 写入本地文件
    lib/redteam/ui.js:425
    writeFileSync(scriptPath, restartScript(process.pid, port, command, rest, logPath, process.cwd()), { encoding: 'utf8', mode: 0o755 })
  • 执行外部命令来自配置/变量
    lib/redteam/ui.js:426
    const child = spawn(process.execPath, [scriptPath], { detached: true, stdio: 'ignore' })
  • 读取本地文件
    lib/redteam/tools.js:72
    if (!pkg || !existsSync(pkg)) continue
  • 读取本地文件
    lib/redteam/tools.js:481
    if (existsSync(envFile)) {
  • 读取本地文件
    lib/redteam/tools.js:501
    if (existsSync(toolkit)) {
  • 读取本地文件
    lib/redteam/tools.js:510
    const hasMarker = existsSync(markerFile)
  • 读取本地文件
    lib/redteam/tools.js:511
    const hasSetupScript = existsSync(setupScript)
  • 读取本地文件
    lib/redteam/tools.js:516
    const hasVps = existsSync(vpsKey)
  • 执行外部命令来自配置/变量
    lib/core.js:116
    return execFileSync(bin, args, HIDDEN_EXEC).trim();
  • 执行外部命令固定命令
    lib/core.js:1123
    execFileSync("schtasks", ["/Query", "/TN", "DSH Doctor Supervisor"], {
  • 执行外部命令固定命令
    lib/core.js:1133
    execFileSync("schtasks", ["/Delete", "/F", "/TN", "DSH Doctor Supervisor"], {
  • 执行外部命令来自配置/变量
    lib/core.js:7418
    const child = spawn(cmd, args, {
  • 执行外部命令固定命令
    lib/skills.js:409
    const result = spawnSync("tar", ["-tf", archivePath], {
  • 执行外部命令固定命令
    lib/skills.js:416
    const unzip = spawnSync("unzip", ["-Z1", archivePath], {
  • 执行外部命令固定命令
    lib/skills.js:447
    const result = spawnSync("tar", ["-xf", archivePath, "-C", dest], {
  • 执行外部命令固定命令
    lib/update.js:243
    execFileSync("git", ["-C", dir, "rev-parse", "--is-inside-work-tree"], HIDDEN);
  • 执行外部命令固定命令
    lib/update.js:256
    return execFileSync("git", ["-C", dir, "rev-parse", "HEAD"], HIDDEN).trim();
  • 发起网络请求
    lib/update.js:401
    const req = lib.request(parsed, {
  • 执行外部命令固定命令
    lib/update.js:797
    const out = execFileSync(
  • 执行外部命令固定命令
    lib/update.js:821
    return execFileSync("git", ["-C", dir, ...args], {
  • 执行外部命令来自配置/变量
    lib/update.js:927
    run = spawnSync(process.execPath, ["--expose-internals", cli], {
  • 读取本地文件
    lib/redteam/role-section.js:96
    const id = safeEngagementId(readFileSync(join(root, 'current'), 'utf8'))
  • 读取本地文件
    lib/redteam/role-section.js:98
    if (!existsSync(join(root, 'engagements', id, 'agents'))) return ''
  • 读取本地文件
    lib/redteam/role-section.js:110
    if (!existsSync(path)) return ''
  • 读取本地文件
    lib/redteam/role-section.js:111
    return readFileSync(path, 'utf8').trim()
  • 读取本地文件
    lib/drill-grant.js:15
    if (!existsSync(file)) return { granted: false, path: file };
  • 读取本地文件
    lib/drill-grant.js:17
    const raw = JSON.parse(readFileSync(file, "utf8"));
  • 写入本地文件
    lib/drill-grant.js:30
    mkdirSync(dirname(file), { recursive: true });
  • 写入本地文件
    lib/drill-grant.js:33
    writeFileSync(tmp, `${JSON.stringify({ granted: true, at }, null, 2)}\n`, "utf8");
  • 读取本地文件
    lib/drill-grant.js:35
    if (existsSync(file)) unlinkSync(file);
  • 删除本地文件
    lib/drill-grant.js:35
    if (existsSync(file)) unlinkSync(file);
  • 写入本地文件
    lib/drill-grant.js:36
    renameSync(tmp, file);
  • 删除本地文件
    lib/drill-grant.js:38
    try { unlinkSync(tmp); } catch { }
  • 读取本地文件
    lib/drill-grant.js:47
    if (!existsSync(file)) return false;
  • 删除本地文件
    lib/drill-grant.js:48
    unlinkSync(file);
  • 读取本地文件
    lib/redteam/preset-composition.js:392
    return readFileSync(join(dir, name), "utf8");
  • 读取本地文件
    lib/redteam/store-core.js:164
    if (!existsSync(path)) return undefined
  • 读取本地文件
    lib/redteam/store-core.js:166
    for (const line of readFileSync(path, 'utf8').split('\n')) {
  • 写入本地文件
    lib/redteam/store-core.js:185
    writeFileSync(path, lines.join('\n') + '\n', 'utf8')
  • 写入本地文件
    lib/redteam/store-core.js:942
    mkdirSync(this.engagementsDir, { recursive: true })
  • 读取本地文件
    lib/redteam/store-core.js:951
    const raw = readFileSync(this.currentPath(), 'utf8').trim()
  • 读取本地文件
    lib/redteam/store-core.js:952
    if (raw && existsSync(this.dbPathOf(raw))) return raw
  • 读取本地文件
    lib/redteam/store-core.js:960
    if (!id || !existsSync(this.dbPathOf(id))) return false
  • 写入本地文件
    lib/redteam/store-core.js:961
    mkdirSync(this.root, { recursive: true })
  • 写入本地文件
    lib/redteam/store-core.js:962
    writeFileSync(this.currentPath(), String(id), 'utf8')
  • 读取本地文件
    lib/redteam/store-core.js:981
    if (!existsSync(this.dbPathOf(id))) {
  • 写入本地文件
    lib/redteam/store-core.js:983
    mkdirSync(this.dirOf(id), { recursive: true })
  • 写入本地文件
    lib/redteam/store-core.js:1008
    mkdirSync(this.engagementsDir, { recursive: true })
  • 发起网络请求
    lib/redteam/store-core.js:3995
    const res = await fetch(s.url, { method: 'GET', redirect: 'manual', signal: controller.signal })
  • 删除本地文件
    lib/redteam/store-core.js:4348
    if (existsSync(p)) rmSync(p, { force: true })
  • 删除本地文件递归
    lib/redteam/store-core.js:4843
    rmSync(dir, { recursive: true, force: true })
  • 读取本地文件
    lib/redteam/skill-availability.js:94
    try { names = readdirSync(dir) } catch { continue }
  • 读取本地文件
    lib/redteam/skill-availability.js:101
    try { content = readFileSync(filePath, 'utf8') } catch { content = '' }
  • 读取本地文件
    lib/redteam/skill-availability.js:136
    try { entries = readdirSync(dir, { withFileTypes: true }) } catch { return [] }
  • 读取本地文件
    lib/redteam/skill-availability.js:152
    if (seen.has(name) || !existsSync(filePath)) continue
  • 读取本地文件
    lib/redteam/skill-availability.js:154
    try { content = readFileSync(filePath, 'utf8') } catch { continue }
  • 读取本地文件
    lib/redteam/skill-availability.js:198
    try { if (existsSync(file)) return { path: file, content: readFileSync(file, 'utf8') } } catch { }
  • 读取本地文件
    lib/redteam/settings.js:28
    if (!existsSync(settingsPathOf(root))) return {}
  • 读取本地文件
    lib/redteam/settings.js:29
    const parsed = JSON.parse(readFileSync(settingsPathOf(root), 'utf8'))
  • 写入本地文件
    lib/redteam/settings.js:37
    mkdirSync(String(root || '.'), { recursive: true })
  • 写入本地文件
    lib/redteam/settings.js:38
    writeFileSync(settingsPathOf(root), JSON.stringify(next, null, 2) + '\n', 'utf8')
  • 读取本地文件
    lib/redteam/platform-config.js:87
    if (!existsSync(file)) return Object.assign({}, base, { path: file, exists: false })
  • 读取本地文件
    lib/redteam/platform-config.js:89
    const raw = JSON.parse(readFileSync(file, 'utf8'))
  • 写入本地文件
    lib/redteam/platform-config.js:121
    mkdirSync(dir, { recursive: true })
  • 写入本地文件
    lib/redteam/platform-config.js:148
    writeFileSync(file, JSON.stringify(next, null, 2), 'utf8')
  • 读取本地文件
    lib/redteam/platform-config.js:162
    if (c.nucleiTemplatesDir && existsSync(c.nucleiTemplatesDir)) return resolve(c.nucleiTemplatesDir)
  • 读取本地文件
    lib/redteam/platform-config.js:187
    if (!dir || !existsSync(dir)) return null
  • 读取本地文件
    lib/redteam/platform-config.js:191
    if (existsSync(p)) {
  • 读取本地文件
    lib/redteam/platform-config.js:193
    const st = statSync(p)
  • 执行外部命令固定命令
    lib/desktop.js:353
    text = execFileSync("powershell.exe", ["-NoProfile", "-Command", REGISTRY_INSTALL_SCRIPT], {
  • 执行外部命令固定命令
    lib/desktop.js:458
    text = execFileSync("powershell.exe", ["-NoProfile", "-Command", PROCESS_EXE_SCRIPT], {
  • 执行外部命令固定命令
    lib/desktop.js:517
    text = execFileSync("powershell.exe", ["-NoProfile", "-Command", SHORTCUT_EXE_SCRIPT], {
  • 执行外部命令来自配置/变量
    lib/desktop.js:830
    const child = spawn(process.execPath, [helper], {
  • 执行外部命令固定命令
    lib/desktop.js:1036
    const child = spawn(
  • 执行外部命令固定命令
    lib/desktop.js:1058
    const child = spawn("/bin/sh", [script, asar, exe, lock], {
  • 执行外部命令来自配置/变量
    lib/web.js:57
    const child = spawn(process.execPath, [helper], {
  • 执行外部命令来自配置/变量
    lib/zip-extract.js:103
    execFileSync(file, args, {
  • 发起网络请求
    lib/redteam/client.js:567
    const api = (req) => fetch('/redteam/api', {
  • 写入剪贴板
    lib/redteam/client.js:719
    await navigator.clipboard.writeText(value)
  • 执行外部命令固定命令
    lib/restart-desktop.js:81
    const out = execFileSync("tasklist", ["/FI", `IMAGENAME eq ${image}`, "/FO", "CSV", "/NH"], {
  • 执行外部命令固定命令
    lib/restart-desktop.js:105
    return execFileSync("defaults", ["read", path.join(bundle, "Contents", "Info"), "CFBundleName"], {
  • 执行外部命令固定命令
    lib/restart-desktop.js:113
    return execFileSync("plutil", ["-extract", "CFBundleName", "raw", infoPlist], {
  • 执行外部命令固定命令
    lib/restart-desktop.js:127
    out = execFileSync("ps", ["-Ao", "pid=,command="], {
  • 执行外部命令固定命令
    lib/restart-desktop.js:163
    out = execFileSync("ps", ["-Ao", "pid=,command="], {
  • 执行外部命令固定命令
    lib/restart-desktop.js:237
    execFileSync(
  • 执行外部命令固定命令
    lib/restart-web.js:32
    spawnSync("taskkill", ["/PID", String(pid), "/F"], { windowsHide: true, stdio: "ignore" });
  • 执行外部命令固定命令
    lib/restart-web.js:41
    spawn("cmd.exe", ["/d", "/s", "/c", "start", "", url], {
  • 执行外部命令来自配置/变量
    lib/restart-web.js:49
    spawn(opener, [url], { detached: true, stdio: "ignore" }).unref();
  • 执行外部命令来自配置/变量
    lib/restart-web.js:71
    const child = spawn(info.execPath, info.argv, {
  • 执行外部命令来自配置/变量
    lib/uninstall-restart.js:65
    const child = spawn(info.execPath, info.argv, {
扫描于 2026/10/31(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
展开完整介绍(135 字)↓

DeepSeek Harness 破甲:让所有模型都能破甲,不同模型可换不同提示词;默认提示词面向国模「小码酱」。Jailbreak for every model — swap prompts per model. 求 Star 收藏 ⭐ 如要二开,请查看署名要求部分

README

由 DeepSeek 最新模型翻译生成
⚔️ dsh-purge v1.1.68 DeepSeek Harness 破甲:让所有模型都能破甲,不同模型可换不同提示词;默认提示词面向国模「小码酱」。 Jailbreak for every model — swap prompts per model. 求 Star 收藏 ⭐ 如要二开,请查看署名要求部分。 这是什么 dsh-purge 是提示词注入 / 本机补丁插件,装在本机已装好的官方 DeepSeek Harness 上。 它不跟你讲「模型会不会答」,它处理的是宿主层:Harness 在运行时重写系统提示词、审批门、沙箱策略、会话迁移。 把这层和「模型拒答」拆开看,你才能在自己的机器上做可控评测,也能一眼看出哪条默认策略收紧过头了。 - 官方 Web(dsh web)与官方 桌面 EXE(0.2.0-rc.2)都支持,分开安装、分开 Apply。 - 目标只有你本机的官方 @deepseek-ai 包与本地配置;不改 Harness 源码树。 - 默认提示词面向国模「小码酱」,可整体替换;换模型就换一份提示词,规则集可并存多套。 - 启动自检 + 自动重放:npm 把 node_modules 覆盖掉之后,不用手改文件。
展开完整文档(README 剩余 1 节)
⚔️ dsh-purge

v1.1.68

DeepSeek Harness 破甲:让所有模型都能破甲,不同模型可换不同提示词;默认提示词面向国模「小码酱」。
Jailbreak for every model — swap prompts per model. 求 Star 收藏 ⭐ 如要二开,请查看署名要求部分。

这是什么

dsh-purge 是提示词注入 / 本机补丁插件,装在本机已装好的官方 DeepSeek Harness 上。
它不跟你讲「模型会不会答」,它处理的是宿主层:Harness 在运行时重写系统提示词、审批门、沙箱策略、会话迁移。
把这层和「模型拒答」拆开看,你才能在自己的机器上做可控评测,也能一眼看出哪条默认策略收紧过头了。

- 官方 Web(dsh web)与官方 桌面 EXE(0.2.0-rc.2)都支持,分开安装、分开 Apply。
- 目标只有你本机的官方 @deepseek-ai 包与本地配置;不改 Harness 源码树。
- 默认提示词面向国模「小码酱」,可整体替换;换模型就换一份提示词,规则集可并存多套。
- 启动自检 + 自动重放:npm 把 node_modules 覆盖掉之后,不用手改文件。

能力

| 你会看到 | 它做什么 |
| dsh-purge 面板 | 会话标题旁一个按钮,右侧停靠;两页:Clean 与 Drill |
| Clean | 分组补丁状态、Apply / Restore / Uninstall、提示词编辑器、多套规则集 |
| Drill | 授权后的资产、技能与本机环境视图(仅限你自己管的宿主 / 离线靶标 / 书面授权演练) |
| 宿主策略 | 默认文案、权限策略、工具上限;官方能力保留,不另造第二身份 |
| 启动时 | 校验并重放补丁,状态落 $DSH_HOME/dsh-purge/ |

支持宿主

| 宿主 | profile | 版本 |
| 官方 dsh web | web | dsh 0.2(0.2.0-rc.2) |
| 官方 Harness 桌面 EXE | desktop | 0.2.0-rc.2 |

老版本 dsh(0.1.7 及更早)要配对应旧版插件。补丁不匹配时保持 pending / skipped,不会盲改。

安装

先把插件装进 profile,再在界面上 Apply —— 装插件本身不改宿主。

官方 Web
dsh plugin --profile web add https://github.com/canyexiren/dsh-purge/archive/refs/heads/main.tar.gz

官方桌面 EXE
dsh plugin --profile desktop add https://github.com/canyexiren/dsh-purge/archive/refs/heads/main.tar.gz

已经是本地 clone
dsh plugin --profile web add .

装完三步:

1. 完全退出刚装的那个宿主再打开(dsh web 停掉重起;桌面端连托盘一起退)。
2. 在那个宿主里点会话标题旁的 dsh-purge → Clean 页 → Apply。
3. Apply 成功会重启一次让补丁加载;没跑完就不会重启。重启后新开一个会话,注入才进上下文。

Web 与 Desktop 的 Apply / Restart / Uninstall 互不影响,不要跨宿主 Apply。

换提示词

- 改默认提示词:Clean 页的提示词编辑器直接改;落盘在 $DSH_HOME/prompt-inject.md,与插件内密封的默认文本比对后判定「是否用户手改」。
- 换模型就换一份:编辑器里整体替换,或把不同模型的版本各存一份规则集,用时切。
- 规则集:写入 AGENTS.md / CLAUDE.md 目标,不参与 system 注入链(磁盘与 UI/注入保持一致)。
- 插件内置默认提示词:lib/default-prompt-inject.md,构建时由 scripts/embed-default-prompt.mjs 密封进 lib/asset-table.js(AES-256-GCM + deflate),运行时 lib/table-read.js#openSlot() 解封;宿主提示词文件不被读取,身份只来自插件自带那份。

工作原理

1. 定位 DSH 家目录:$DSH_HOME → dsh 启动器旁的 .dsh → ~/.dsh(不写死盘符)。
2. 对官方 @deepseek-ai 包与本机配置打分组补丁,逐条校验命中,不匹配就挂起。
3. 重写提示词装配链:注入进 system,而不是拼在用户消息里。
4. 启动时自检 + 重放;npm 覆盖安装后自动恢复,不用手改。
5. 桌面端 Apply 会解 app.asar、给官方入口加 app/ 回退与 app/runtime 链接。

恢复原状

- Restore:Clean 页还原被改的宿主文件。
- Uninstall:移除插件与补丁,重启宿主。
- 只想看状态:会话里 /purge status,会打印 DSH_HOME 与补丁清单。

目录

lib/ 核心:core.js 补丁引擎、identity.js 注入链、rules.js 规则集、 host.js 宿主探测、reapply.js 重放、update.js 升级、redteam/ Drill bin/ CLI 入口 client.js 构建产物(Web 端 UI,由 scripts/build-client.mjs 生成) presets/ redteam 预设与锚点门 skills/ 随插件分发的技能文档 scripts/ 构建 / 嵌提示词 / 导出报告 / 设仓库地址 docs/ banner、预览图、原作者完整 README(docs/original/)

署名要求

借用本项目的名称、思路、代码或提示词,必须署名作者并注明来源仓库。

- 作者:昔人
- 本仓库:https://github.com/canyexiren/dsh-purge

不署名、隐去来源、改头换面当作原创,会被追究。二次开发请保留 LICENSE 的版权行与本文件说明。

来源与改动记录见 NOTICE.md。

使用边界

本项目是本地安全评测工具:只作用于你本机已装的官方 DeepSeek Harness 与本地配置,不针对任何第三方站点、服务器或账号。
完整合规声明沿用原作者版本,见 docs/original/README.en.md。
商用、付费转售、以及任何违法或灰产用途一律禁止。

MIT License · Copyright (c) 2026 昔人
预览分享卡片长什么样 ↓canyexiren/dsh-purge
分享 · DeepSeek Harness Hub
canyexiren/dsh-purge

按模型切换提示词,重写宿主策略做可控评测

回到顶部