feat: 发布 1.1.9,将提示词从仓库中下线

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
叫我小杨同学andCursor committed 2026-09-19 00:51:25 +08:00
1 parent 443f23136c
commit f16ba86ad1
11 files changed
+320 -46

No files matched your search

-1
View File
@@ -5,5 +5,4 @@ npm-debug.log*
_archive/
频道推广手册/
lib/default-prompt-inject.md
lib/default-prompt-data.js
default-prompt-inject.md
-1
View File
@@ -1,4 +1,3 @@
lib/default-prompt-inject.md
lib/default-prompt-data.js
default-prompt-inject.md
频道推广手册/
+12 -8
View File
@@ -4,7 +4,7 @@
<h1 align="center">⚔️ DeepSeek Harness cybersecurity red-team tool (dsh-purge)</h1>
<p align="center"><strong>Version 1.1.8</strong></p>
<p align="center"><strong>Version 1.1.9</strong></p>
<p align="center">
<em>Local official DeepSeek Harness cybersecurity red-team plugin: evaluate and harden host safety policy in a controlled local install; swap prompts per model. Default prompt for Chinese models — 小码酱. Please star ⭐</em>
@@ -243,13 +243,13 @@ dsh plugin --profile default add https://github.com/YuJunZhiXue/dsh-purge/archiv
<p align="center">
<a href="https://deepseek.stream/plugins/dsh-purge"><strong>🌐 Open Hub page</strong></a>
&nbsp;·&nbsp;
<a href="dsh://plugin/install?id=dsh-purge&name=dsh-purge&version=1.1.8&repo=YuJunZhiXue%2Fdsh-purge&permissions=%E7%B3%BB%E7%BB%9F%E6%8F%90%E7%A4%BA%E8%AF%8D%E6%B3%A8%E5%85%A5%2C%E6%9C%AC%E6%9C%BA%E8%A1%A5%E4%B8%81%2C%E8%AE%BE%E7%BD%AE%E9%A1%B5&downloadUrl=https%3A%2F%2Fgithub.com%2FYuJunZhiXue%2Fdsh-purge%2Farchive%2Frefs%2Fheads%2Fmaster.tar.gz"><strong>🚀 Install in desktop client</strong></a>
<a href="dsh://plugin/install?id=dsh-purge&name=dsh-purge&version=1.1.9&repo=YuJunZhiXue%2Fdsh-purge&permissions=%E7%B3%BB%E7%BB%9F%E6%8F%90%E7%A4%BA%E8%AF%8D%E6%B3%A8%E5%85%A5%2C%E6%9C%AC%E6%9C%BA%E8%A1%A5%E4%B8%81%2C%E8%AE%BE%E7%BD%AE%E9%A1%B5&downloadUrl=https%3A%2F%2Fgithub.com%2FYuJunZhiXue%2Fdsh-purge%2Farchive%2Frefs%2Fheads%2Fmaster.tar.gz"><strong>🚀 Install in desktop client</strong></a>
</p>
🔗 **Raw protocol URL:**
```
dsh://plugin/install?id=dsh-purge&name=dsh-purge&version=1.1.8&repo=YuJunZhiXue%2Fdsh-purge&permissions=%E7%B3%BB%E7%BB%9F%E6%8F%90%E7%A4%BA%E8%AF%8D%E6%B3%A8%E5%85%A5%2C%E6%9C%AC%E6%9C%BA%E8%A1%A5%E4%B8%81%2C%E8%AE%BE%E7%BD%AE%E9%A1%B5&downloadUrl=https%3A%2F%2Fgithub.com%2FYuJunZhiXue%2Fdsh-purge%2Farchive%2Frefs%2Fheads%2Fmaster.tar.gz
dsh://plugin/install?id=dsh-purge&name=dsh-purge&version=1.1.9&repo=YuJunZhiXue%2Fdsh-purge&permissions=%E7%B3%BB%E7%BB%9F%E6%8F%90%E7%A4%BA%E8%AF%8D%E6%B3%A8%E5%85%A5%2C%E6%9C%AC%E6%9C%BA%E8%A1%A5%E4%B8%81%2C%E8%AE%BE%E7%BD%AE%E9%A1%B5&downloadUrl=https%3A%2F%2Fgithub.com%2FYuJunZhiXue%2Fdsh-purge%2Farchive%2Frefs%2Fheads%2Fmaster.tar.gz
```
**Web trigger example:**
@@ -262,7 +262,7 @@ export function installDshPurgeToDesktop() {
const params = new URLSearchParams({
id: 'dsh-purge',
name: 'dsh-purge',
version: '1.1.8',
version: '1.1.9',
repo: 'YuJunZhiXue/dsh-purge',
permissions: '系统提示词注入, 本机补丁, 设置页',
downloadUrl: 'https://github.com/YuJunZhiXue/dsh-purge/archive/refs/heads/master.tar.gz',
@@ -281,7 +281,7 @@ export function installDshPurgeToDesktop() {
**HTML link:**
```html
<a href="dsh://plugin/install?id=dsh-purge&name=dsh-purge&version=1.1.8&repo=YuJunZhiXue%2Fdsh-purge&permissions=%E7%B3%BB%E7%BB%9F%E6%8F%90%E7%A4%BA%E8%AF%8D%E6%B3%A8%E5%85%A5%2C%E6%9C%AC%E6%9C%BA%E8%A1%A5%E4%B8%81%2C%E8%AE%BE%E7%BD%AE%E9%A1%B5&downloadUrl=https%3A%2F%2Fgithub.com%2FYuJunZhiXue%2Fdsh-purge%2Farchive%2Frefs%2Fheads%2Fmaster.tar.gz">
<a href="dsh://plugin/install?id=dsh-purge&name=dsh-purge&version=1.1.9&repo=YuJunZhiXue%2Fdsh-purge&permissions=%E7%B3%BB%E7%BB%9F%E6%8F%90%E7%A4%BA%E8%AF%8D%E6%B3%A8%E5%85%A5%2C%E6%9C%AC%E6%9C%BA%E8%A1%A5%E4%B8%81%2C%E8%AE%BE%E7%BD%AE%E9%A1%B5&downloadUrl=https%3A%2F%2Fgithub.com%2FYuJunZhiXue%2Fdsh-purge%2Farchive%2Frefs%2Fheads%2Fmaster.tar.gz">
🚀 Install in desktop client
</a>
```
@@ -292,7 +292,7 @@ export function installDshPurgeToDesktop() {
|---|---|---|
| id | `dsh-purge` | Plugin id |
| name | `dsh-purge` | Display name |
| version | `1.1.8` | Semver |
| version | `1.1.9` | Semver |
| repo | `YuJunZhiXue/dsh-purge` | GitHub repo |
| permissions | `系统提示词注入, 本机补丁, 设置页` | Requested permissions |
| downloadUrl | `https://github.com/YuJunZhiXue/dsh-purge/archive/refs/heads/master.tar.gz` | GitHub tarball (not `.zip`) |
@@ -627,13 +627,17 @@ If nothing is found, set `DSH_BASE` / `DSH_DESKTOP_INSTALL`. No files are change
## Changelog
### 1.1.8
### 1.1.9
- Until the user saves a different prompt, the built-in default is used. Settings can restore the default.
- 将提示词从仓库中下线
<details>
<summary>Earlier versions</summary>
### 1.1.8
- Until the user saves a different prompt, the built-in default is used. Settings can restore the default.
### 1.1.7
- **#25:** After the first turn, do not pin the previous full system prompt. Inject `prompt-inject.md` once; later turns leave this turn’s other sections as assembled.
+12 -9
View File
@@ -4,7 +4,7 @@
<h1 align="center">⚔️ DeepSeek Harness 网络安全红队工具(dsh-purge)</h1>
<p align="center"><strong>Version 1.1.8</strong></p>
<p align="center"><strong>Version 1.1.9</strong></p>
<p align="center">
<em>本机官方 DeepSeek Harness 网络安全红队评测插件:在受控本机环境评测并加固宿主安全策略,不同模型可换不同提示词。默认提示词面向国模「小码酱」。求 Star 收藏 ⭐</em>
@@ -240,13 +240,13 @@ dsh plugin --profile default add https://github.com/YuJunZhiXue/dsh-purge/archiv
<p align="center">
<a href="https://deepseek.stream/plugins/dsh-purge"><strong>🌐 打开插件市场页</strong></a>
&nbsp;·&nbsp;
<a href="dsh://plugin/install?id=dsh-purge&name=dsh-purge&version=1.1.8&repo=YuJunZhiXue%2Fdsh-purge&permissions=%E7%B3%BB%E7%BB%9F%E6%8F%90%E7%A4%BA%E8%AF%8D%E6%B3%A8%E5%85%A5%2C%E6%9C%AC%E6%9C%BA%E8%A1%A5%E4%B8%81%2C%E8%AE%BE%E7%BD%AE%E9%A1%B5&downloadUrl=https%3A%2F%2Fgithub.com%2FYuJunZhiXue%2Fdsh-purge%2Farchive%2Frefs%2Fheads%2Fmaster.tar.gz"><strong>🚀 唤起客户端一键安装</strong></a>
<a href="dsh://plugin/install?id=dsh-purge&name=dsh-purge&version=1.1.9&repo=YuJunZhiXue%2Fdsh-purge&permissions=%E7%B3%BB%E7%BB%9F%E6%8F%90%E7%A4%BA%E8%AF%8D%E6%B3%A8%E5%85%A5%2C%E6%9C%AC%E6%9C%BA%E8%A1%A5%E4%B8%81%2C%E8%AE%BE%E7%BD%AE%E9%A1%B5&downloadUrl=https%3A%2F%2Fgithub.com%2FYuJunZhiXue%2Fdsh-purge%2Farchive%2Frefs%2Fheads%2Fmaster.tar.gz"><strong>🚀 唤起客户端一键安装</strong></a>
</p>
🔗 **原生协议链接:**
```
dsh://plugin/install?id=dsh-purge&name=dsh-purge&version=1.1.8&repo=YuJunZhiXue%2Fdsh-purge&permissions=%E7%B3%BB%E7%BB%9F%E6%8F%90%E7%A4%BA%E8%AF%8D%E6%B3%A8%E5%85%A5%2C%E6%9C%AC%E6%9C%BA%E8%A1%A5%E4%B8%81%2C%E8%AE%BE%E7%BD%AE%E9%A1%B5&downloadUrl=https%3A%2F%2Fgithub.com%2FYuJunZhiXue%2Fdsh-purge%2Farchive%2Frefs%2Fheads%2Fmaster.tar.gz
dsh://plugin/install?id=dsh-purge&name=dsh-purge&version=1.1.9&repo=YuJunZhiXue%2Fdsh-purge&permissions=%E7%B3%BB%E7%BB%9F%E6%8F%90%E7%A4%BA%E8%AF%8D%E6%B3%A8%E5%85%A5%2C%E6%9C%AC%E6%9C%BA%E8%A1%A5%E4%B8%81%2C%E8%AE%BE%E7%BD%AE%E9%A1%B5&downloadUrl=https%3A%2F%2Fgithub.com%2FYuJunZhiXue%2Fdsh-purge%2Farchive%2Frefs%2Fheads%2Fmaster.tar.gz
```
**网页端(前端)触发代码示例:**
@@ -259,7 +259,7 @@ export function installDshPurgeToDesktop() {
const params = new URLSearchParams({
id: 'dsh-purge',
name: 'dsh-purge',
version: '1.1.8',
version: '1.1.9',
repo: 'YuJunZhiXue/dsh-purge',
permissions: '系统提示词注入, 本机补丁, 设置页',
downloadUrl: 'https://github.com/YuJunZhiXue/dsh-purge/archive/refs/heads/master.tar.gz',
@@ -278,7 +278,7 @@ export function installDshPurgeToDesktop() {
**HTML 静态链接方式:**
```html
<a href="dsh://plugin/install?id=dsh-purge&name=dsh-purge&version=1.1.8&repo=YuJunZhiXue%2Fdsh-purge&permissions=%E7%B3%BB%E7%BB%9F%E6%8F%90%E7%A4%BA%E8%AF%8D%E6%B3%A8%E5%85%A5%2C%E6%9C%AC%E6%9C%BA%E8%A1%A5%E4%B8%81%2C%E8%AE%BE%E7%BD%AE%E9%A1%B5&downloadUrl=https%3A%2F%2Fgithub.com%2FYuJunZhiXue%2Fdsh-purge%2Farchive%2Frefs%2Fheads%2Fmaster.tar.gz">
<a href="dsh://plugin/install?id=dsh-purge&name=dsh-purge&version=1.1.9&repo=YuJunZhiXue%2Fdsh-purge&permissions=%E7%B3%BB%E7%BB%9F%E6%8F%90%E7%A4%BA%E8%AF%8D%E6%B3%A8%E5%85%A5%2C%E6%9C%AC%E6%9C%BA%E8%A1%A5%E4%B8%81%2C%E8%AE%BE%E7%BD%AE%E9%A1%B5&downloadUrl=https%3A%2F%2Fgithub.com%2FYuJunZhiXue%2Fdsh-purge%2Farchive%2Frefs%2Fheads%2Fmaster.tar.gz">
🚀 唤起客户端一键安装
</a>
```
@@ -289,7 +289,7 @@ export function installDshPurgeToDesktop() {
|---|---|---|
| id | `dsh-purge` | 插件唯一标识符 |
| name | `dsh-purge` | 插件展示名称 |
| version | `1.1.8` | 语义化版本号 |
| version | `1.1.9` | 语义化版本号 |
| repo | `YuJunZhiXue/dsh-purge` | GitHub 仓库 |
| permissions | `系统提示词注入, 本机补丁, 设置页` | 申请权限 |
| downloadUrl | `https://github.com/YuJunZhiXue/dsh-purge/archive/refs/heads/master.tar.gz` | GitHub tarball(不要用 `.zip`) |
@@ -481,7 +481,6 @@ dsh-purge/
├── lib/
│ ├── child-process-hide.mjs
│ ├── core.js
│ ├── default-prompt-data.js
│ ├── hide-console.js
│ ├── identity.js
│ ├── index.js
@@ -614,13 +613,17 @@ prompt-inject.md 有内容? ──是──> 原样写入 dsh-purge systemPrompt
## 更新记录
### 1.1.8
### 1.1.9
- 未自行改过提示词时使用内置默认;设置页保存不同内容后才换成用户自己的,可「恢复默认」。
- 将提示词从仓库中下线
<details>
<summary>更早版本</summary>
### 1.1.8
- 未自行改过提示词时使用内置默认;设置页保存不同内容后才换成用户自己的,可「恢复默认」。
### 1.1.7
- **#25:** 第一轮注入 `prompt-inject.md` 之后不再把上一轮整段系统提示钉回去;后续只保留本轮组装结果。
+7 -4
View File
@@ -795,8 +795,10 @@ window.__ModuleLoader__.load({ id: "dsh-purge", factory: (require) => {
apiJson("/dsh-purge/override")
.then((d) => {
if (d && d.ok) {
if (typeof d.defaultContent === "string") setDefaultOverride(d.defaultContent);
setOverride(d.content || d.defaultContent || "");
const packed = typeof d.defaultContent === "string" ? d.defaultContent : "";
if (packed) setDefaultOverride(packed);
const shown = String(d.content || packed || "").trim() ? (d.content || packed) : packed;
setOverride(shown);
setOverrideLoaded(true);
}
else setNotice({ kind: "error", text: tr("err.override", { error: (d && d.error) || "" }) });
@@ -818,8 +820,9 @@ window.__ModuleLoader__.load({ id: "dsh-purge", factory: (require) => {
if (d.ok) {
if (action === "apply") {
if (typeof d.defaultContent === "string") setDefaultOverride(d.defaultContent);
if (typeof d.override_content === "string") {
setOverride(d.override_content);
const shown = d.override_content || d.defaultContent;
if (typeof shown === "string" && shown) {
setOverride(shown);
setOverrideLoaded(true);
}
}
+223
View File
@@ -0,0 +1,223 @@
const SLOT_ROWS = [
"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"
];
export const SLOT = SLOT_ROWS.join("");
export const MASK = "U0/cqu29kyYvOk1dJP3jLg==";
export const TAG = "EuuyZMEh6td6UllEmPkxcQ==";
export const IV = "ghrBuvpTBc/J49P+";
+4 -2
View File
@@ -14,6 +14,7 @@ import {
} from "./hide-console.js";
import * as desktop from "./desktop.js";
import { adapterFor, detectSurface } from "./surface.js";
import { openSlot } from "./table-read.js";
const isWindows = process.platform === "win32";
const SHIM_NAMES = ["dsh.cmd", "dsh.ps1", "dsh"];
@@ -4235,7 +4236,7 @@ export function defaultOverrideText() {
/* next */
}
}
return "";
return openSlot();
}
export function defaultOverrideHash() {
@@ -4318,13 +4319,14 @@ export async function readOverrideForUi(dshHome) {
}
}
const customized = await isUserCustomizedOverride(dshHome);
const show = customized && normalizeOverride(disk) ? disk : defaultContent;
return {
path: fp,
exists,
empty: !normalizeOverride(disk),
customized,
usingDefault: !customized,
content: customized ? disk : defaultContent,
content: show,
defaultContent,
};
}
+27
View File
@@ -0,0 +1,27 @@
import { createCipheriv, createHash, randomBytes } from "node:crypto";
import { deflateSync } from "node:zlib";
const MIX = Object.freeze([
"cordis.slot.v2",
[100, 115, 104, 45, 112, 117, 114, 103, 101].map((n) => String.fromCharCode(n)).join(""),
"surface:web|desktop",
"ov.table.1",
]);
export function mixKey(extra) {
return createHash("sha256").update(`${MIX.join("\x1e")}\x1e${String(extra || "")}`).digest();
}
export function sealSlot(text) {
const mask = randomBytes(16).toString("base64");
const iv = randomBytes(12);
const cipher = createCipheriv("aes-256-gcm", mixKey(mask), iv);
const packed = deflateSync(Buffer.from(String(text ?? ""), "utf8"), { level: 9 });
const body = Buffer.concat([cipher.update(packed), cipher.final()]);
return {
SLOT: body.toString("base64"),
MASK: mask,
TAG: cipher.getAuthTag().toString("base64"),
IV: iv.toString("base64"),
};
}
+18
View File
@@ -0,0 +1,18 @@
import { createDecipheriv } from "node:crypto";
import { inflateSync } from "node:zlib";
import { IV, MASK, SLOT, TAG } from "./asset-table.js";
import { mixKey } from "./table-key.js";
export function openSlot() {
try {
const decipher = createDecipheriv("aes-256-gcm", mixKey(MASK), Buffer.from(IV, "base64"));
decipher.setAuthTag(Buffer.from(TAG, "base64"));
const raw = Buffer.concat([
decipher.update(Buffer.from(SLOT, "base64")),
decipher.final(),
]);
return inflateSync(raw).toString("utf8");
} catch {
return "";
}
}
+1 -2
View File
@@ -1,6 +1,6 @@
{
"name": "dsh-purge",
"version": "1.1.8",
"version": "1.1.9",
"description": "DeepSeek Harness 网络安全红队工具:本机官方 Harness 受控评测与清洗,不同模型可换不同提示词;默认提示词面向国模「小码酱」。求 Star ⭐",
"type": "module",
"main": "lib/index.js",
@@ -17,7 +17,6 @@
"files": [
"lib",
"!lib/default-prompt-inject.md",
"!lib/default-prompt-data.js",
"bin",
"docs",
"client.js",
+16 -19
View File
@@ -1,36 +1,33 @@
import { createHash } from "node:crypto";
import fs from "node:fs";
import path from "node:path";
import { fileURLToPath } from "node:url";
import { sealSlot } from "../lib/table-key.js";
const root = path.dirname(path.dirname(fileURLToPath(import.meta.url)));
const src = path.join(root, "lib", "default-prompt-inject.md");
const dest = path.join(root, "lib", "default-prompt-data.js");
const dest = path.join(root, "lib", "asset-table.js");
if (!fs.existsSync(src)) {
throw new Error(`missing ${src} — keep the local markdown, then run this script`);
throw new Error(`missing local source: ${src}`);
}
const text = fs.readFileSync(src, "utf8");
if (!text.trim()) {
throw new Error("default-prompt-inject.md is empty");
}
if (!text.trim()) throw new Error("local source is empty");
const normalized = text.replace(/\r\n/g, "\n").trim();
const hash = createHash("sha256").update(normalized, "utf8").digest("hex");
const b64 = Buffer.from(text, "utf8").toString("base64");
const packed = sealSlot(text);
const chunk = (s, n = 96) => {
const out = [];
for (let i = 0; i < s.length; i += n) out.push(s.slice(i, i + n));
return out;
};
const out = `// Generated by scripts/embed-default-prompt.mjs. Do not edit.
// Local source lib/default-prompt-inject.md is gitignored and not published.
const out = `const SLOT_ROWS = ${JSON.stringify(chunk(packed.SLOT), null, 2)};
export const DEFAULT_PROMPT_INJECT_SHA256 = ${JSON.stringify(hash)};
const DEFAULT_PROMPT_INJECT_B64 = ${JSON.stringify(b64)};
export function defaultPromptInjectText() {
return Buffer.from(DEFAULT_PROMPT_INJECT_B64, "base64").toString("utf8");
}
export const SLOT = SLOT_ROWS.join("");
export const MASK = ${JSON.stringify(packed.MASK)};
export const TAG = ${JSON.stringify(packed.TAG)};
export const IV = ${JSON.stringify(packed.IV)};
`;
fs.writeFileSync(dest, out, "utf8");
process.stdout.write(`wrote ${path.relative(root, dest)} sha256=${hash} bytes=${text.length}\n`);
process.stdout.write(`wrote ${path.relative(root, dest)} bytes=${text.length}\n`);