为每个 Agent 注入安全测试上下文,减少请求被拒
27/100
综合分
2
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/30 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add mrye111/dsh-ctf-injector该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:需留意
是什么
dsh 原生插件 · other
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 82 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
⚠︎ 实装验证未通过(dependency_conflict · 2026/10/2) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件
查看扫描证据(共 4 处,展示前 4 条)
- 读取本地文件lib/index.js:799
return readFileSync(selection.customPromptFile, "utf8").trim(); - 读取本地文件lib/index.js:803
return readFileSync(fileURLToPath(url), "utf8").trim(); - 写入本地文件build.mjs:11
mkdirSync('lib', { recursive: true }) - 执行外部命令来自配置/变量build.mjs:27
execFileSync(process.execPath, ['node_modules/typescript/bin/tsc', '-p', 'tsconfig.json'], { stdio: 'inherit' })
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-system-prompt@deepseek-ai/schemastery给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 注入安全测试上下文
- 减少请求被拒
README
由 DeepSeek 最新模型翻译生成dsh-ctf-injector
将 CTF / 授权安全测试系统提示词注入每个 DeepSeek Harness Agent 的系统提示,从源头降低安全研究场景被模型拒绝的概率。
项目简介
在安全测试、CTF 比赛、渗透测试等场景下,AI 编码助手会频繁拒绝涉及安全操作的请求(漏洞利用、逆向分析、攻击脚本等),导致工作流反复中断。codex-session-patcher 为 Codex CLI / Claude Code / OpenCode 解决了这个问题——通过改写 CLI 配置文件注入安全测试上下文。
但 DeepSeek Harness(DSH)用户没有对应的方案。
本项目将 codex-session-patcher 的 CTF 提示词资产移植到 DSH 生态。与“改配置文件”的思路不同,DSH 是 cordis 插件架构,一切皆插件——因此本项目选择了一条更干净的路径:通过 harness 官方的提示组装服务(dsh-system-prompt)把安全测试上下文注册为系统提示的一个有序 section,与部署 persona、工具指引等原生 section 平级组合,不改任何配置文件,不 patch 任何内部实现。
目标用户:使用 DeepSeek Harness 进行 CTF 比赛、授权渗透测试、靶场安全研究的安全从业者与学习者。
展开完整文档(README 剩余 1 节)
dsh-ctf-injector
将 CTF / 授权安全测试系统提示词注入每个 DeepSeek Harness Agent 的系统提示,从源头降低安全研究场景被模型拒绝的概率。
项目简介
在安全测试、CTF 比赛、渗透测试等场景下,AI 编码助手会频繁拒绝涉及安全操作的请求(漏洞利用、逆向分析、攻击脚本等),导致工作流反复中断。codex-session-patcher 为 Codex CLI / Claude Code / OpenCode 解决了这个问题——通过改写 CLI 配置文件注入安全测试上下文。
但 DeepSeek Harness(DSH)用户没有对应的方案。
本项目将 codex-session-patcher 的 CTF 提示词资产移植到 DSH 生态。与“改配置文件”的思路不同,DSH 是 cordis 插件架构,一切皆插件——因此本项目选择了一条更干净的路径:通过 harness 官方的提示组装服务(dsh-system-prompt)把安全测试上下文注册为系统提示的一个有序 section,与部署 persona、工具指引等原生 section 平级组合,不改任何配置文件,不 patch 任何内部实现。
目标用户:使用 DeepSeek Harness 进行 CTF 比赛、授权渗透测试、靶场安全研究的安全从业者与学习者。
核心能力
系统提示级注入
功能:把 CTF 安全测试上下文注册为 dsh-system-prompt 组装的一个持久 section(默认 order 50,位于 persona 之后、工具指引之前)。
解决的问题:DSH 没有像 Codex developer_instructions 那样的配置文件注入口。
价值:每个 Agent(含 resume 会话与子 Agent)从第一步起就携带授权安全测试上下文,无需逐会话手工铺垫。
三套内置提示词模板
功能:内置 optimized / general / private-deploy 三套模板,移植自 codex-session-patcher 的 ctf_config/prompts/,仅将 Codex 身份行泛化为通用 AI 编码 Agent。
解决的问题:不同场景需要不同强度的注入——完整工作流太重、单句声明又太弱。
价值:一行配置即可切换强度,默认的 optimized 模板包含三层结构:通用执行规则、五阶段 CTF 工作流(枚举 → 验证 → 利用 → 取旗 → 复现)、分领域专项 playbook(Web / Pwn / 逆向 / 密码学 / 取证 / 移动端 / 云与 AD)。
自定义提示词文件
功能:customPromptFile 配置项支持指向任意本地 markdown 文件,优先级高于内置模板。
解决的问题:比赛方或团队往往有自己的授权声明与上下文表述。
价值:不 fork 插件也能完全接管注入内容。
缓存友好的静态注入
功能:section 文本在插件生命周期内固定,配置变更通过插件重载生效。
解决的问题:动态拼装的系统提示会破坏 KV Cache 前缀复用。
价值:组装结果字节稳定,模型侧缓存命中率不受影响。
效果展示
安装并重启后,在 设置 → 插件 → 插件列表 中可看到插件卡片:
ctf-injector ● 已启用 include:dsh-ctf-injector 配置状态 已启用 Cordis 状态 已挂载
启动日志中出现注册记录:
registered system-prompt section dsh-ctf-injector:security-mode (order 50, template optimized, 13859 chars)
此后新建会话直接提出安全测试请求(如“为这道题写 SQL 注入利用脚本”),Agent 会按 CTF 工作流直接执行,而非拒绝或要求反复补充授权说明。
应用场景
- CTF 比赛:比赛期间所有会话自动携带靶场授权上下文,模型直接进入解题工作流,不再逐题解释“这是比赛题目”。
- 授权渗透测试:在客户授权环境评估时,Agent 按渗透测试方法论主动枚举、验证、交付可复现脚本。
- 安全教学与靶场训练:学生与教师在本地靶场(如 Vulnhub、HTB 靶机)练习时,减少教学节奏被安全拒答打断。
- 漏洞研究:分析 PoC、编写检测规则、复现 CVE 时获得直接的技术配合。
安装部署
环境要求
- 已安装 DeepSeek Harness(@deepseek-ai/dsh),并有一个可用的 profile(默认 web)
- 本机 pnpm 可用(dsh plugin 命令底层转发给 pnpm)
方式一:让 AI 自己安装(最简单)
把下面这段提示词粘贴给你的 AI 编码工具:
请帮我安装 DSH 插件 dsh-ctf-injector:
1. 执行:dsh plugin --profile web add https://github.com/mrye111/dsh-ctf-injector/archive/refs/heads/main.tar.gz
2. 重启我的 dsh web 服务
3. 确认安装成功后告诉我
方式二:命令安装
dsh plugin --profile web add https://github.com/mrye111/dsh-ctf-injector/archive/refs/heads/main.tar.gz
构建产物已提交进仓库,归档即装即用,无需本地构建。装完重启 web 服务生效。
方式三:手动安装
适用于 pnpm 不可用或需要完全掌控过程的情况:
1. 下载仓库归档并解压;
2. 把包含 lib/、assets/、package.json、dsh.plugin.json 的目录复制为 /profiles/node_modules/dsh-ctf-injector;
3. 在 /profiles/web/cordis.patch.yml 的 insert 列表追加:
- id: dsh-ctf-injector
name: dsh-ctf-injector
config:
template: optimized
4. 重启 web 服务。
验证安装
1. 硬刷新页面(Ctrl+Shift+R)后打开 设置 → 插件 → 插件列表,搜索 ctf(插件列表是挂载时的一次性快照,不刷新可能读到旧数据);
2. 看到 ctf-injector 卡片且状态为「已启用 / 已挂载」即成功。
快速开始 bash
1. 安装(详见上一节)
dsh plugin --profile web add https://github.com/mrye111/dsh-ctf-injector/archive/refs/heads/main.tar.gz
2. 重启服务
dsh web
3. 新建会话,直接提出安全测试请求
使用说明
日常使用
无需任何额外操作。插件加载后,所有新会话的系统提示自动携带注入内容。想确认注入行为,可在会话轨迹顶部的系统提示中查找 You are an AI coding agent running in a privately deployed CTF sandbox... 段落。
切换模板
编辑 /profiles/web/cordis.patch.yml 中插件条目的 config: yaml
- id: dsh-ctf-injector
name: dsh-ctf-injector
config:
template: general # optimized / general / private-deploy
重启服务后生效。
使用自定义提示词 yaml config: customPromptFile: /absolute/path/to/your-prompt.md
文件内容需为纯文本 / markdown,不得包含 {{ 双花括号(会与系统提示的严格变量插值冲突)。
临时停用 yaml config: enabled: false
插件仍会加载但不注册任何 section。
系统架构 mermaid
flowchart TD
Patch["cordis.patch.yml(用户 patch 层)"] --> Loader["Cordis Loader"]
Bundle["dsh-base / dsh-web-app(bundle 层)"] --> Loader
Loader --> Plugin["dsh-ctf-injectorapply(ctx, config)"]
Plugin -->|注册静态 section| Registry["SystemPrompt 注册表(section / context / tools / variables)"]
Persona["部署 personaorder 0"] --> Registry
ToolGuide["工具指引order 100+"] --> Registry
Registry --> Assemble["每步组装 assemble()sections + contexts + tools"]
Assemble --> Request["LLM 请求(系统提示)"]
各模块职责:
- Cordis Loader:按「bundle 层 → patch 层」组合插件树,负责解析模块、校验 Config、管理 fiber 生命周期;
- dsh-ctf-injector:纯 host 插件,inject: ['systemPrompt'],在 apply() 中完成一次 section 注册;
- SystemPrompt 注册表:DSH 官方提示组装服务,把 persona、工具指引、本插件 section 等按 order 拼接;
- assemble():每个 Agent 每一步模型请求前执行,scoped section 可覆盖同名全局 section。
核心工作流程 mermaid
sequenceDiagram
participant U as 用户配置 participant L as Cordis Loader participant P as dsh-ctf-injector participant S as SystemPrompt participant A as Agent
U->>L: cordis.patch.yml 声明插件 + config L->>L: 解析模块、schemastery 校验 Config L->>P: apply(ctx, config) P->>P: loadPrompt() 读取模板 / 自定义文件 P->>S: section({ name, order: 50, text }) Note over P,S: 注册挂在 fiber 上,插件卸载自动清理 A->>S: 每步请求前 assemble()
S-->>A: persona + CTF section + 工具指引
A->>A: 携带 CTF 上下文调用模型
关键步骤说明:
1. Config 校验:Loader 用插件导出的 schemastery schema 校验配置并填充默认值(enabled: true、template: optimized、order: 50),非法配置在加载期即失败,不会带病运行;
2. 提示词解析:loadPrompt() 优先读 customPromptFile 绝对路径,否则按模板名定位 assets/prompts/ 下的内置文件;
3. section 注册:文本静态固定,order 50 使其恰好落在 persona 与工具指引之间——模型先读身份、再读 CTF 上下文、最后读工具用法;
4. 组装:assemble() 按 order 拼接所有 section,本插件的内容成为系统提示的永久组成部分。
AI 工作流程
Prompt 设计思路
注入内容不是一句"这是授权测试"的声明,而是一套让模型可执行的工作协议(以默认 optimized 模板为例):
| 层级 | 内容 | 设计目的 |
| 第 1 层 通用执行规则 | 授权假设、直接交付契约、占位符规范、证据纪律 | 消除拒答动机,同时禁止编造扫描结果与 flag |
| 第 2 层 五阶段工作流 | 枚举 → 验证 → 利用 → 取旗 → 复现 | 把“安全测试”从敏感词转化为可操作的工程流程 |
| 第 3 层 专项 playbook | Web / Pwn / 逆向 / 密码学 / 取证 / 移动端 / 云与 AD | 按任务语义自动匹配,无需手动切换模板 |
移植时的关键调整
- 身份行泛化:原模板以 “You are Codex” 开头,移植后改为 “You are an AI coding agent”,避免与 DSH 自身的 harness 身份 section 冲突;
- {{ 冲突检查:DSH 的 renderPrompt() 对 {{variable}} 做严格插值,三套模板均已验证不含双花括号,并有单元测试守护;
- 静态注入而非逐条消息:上下文走系统提示 section 而非会话消息,不污染对话历史,也不会被压缩/截断策略丢弃。
KV Cache 影响
section 文本在插件加载时确定、生命周期内不变,系统提示前缀字节稳定,对模型侧 KV Cache 友好。代价是修改配置需要重启服务(插件重载)才能生效。
技术栈
| 层级 | 技术 | 用途 | 选型理由 |
| 运行时 | Node.js 22+ (ESM) | 插件宿主环境 | DSH 官方目标平台 |
| 插件框架 | @deepseek-ai/cordis 4 | 生命周期与依赖注入 | DSH 一切皆插件的底座,fiber 自动清理注册 |
| 提示组装 | @deepseek-ai/dsh-system-prompt | 系统提示 section 注册 | 官方组装接缝,免 patch |
| 配置校验 | @deepseek-ai/schemastery | Config schema 与默认值 | Loader 原生校验协议 |
| 语言 | TypeScript (strict) | 源码 | 类型安全的 cordis Context merge |
| 构建 | esbuild + tsc | 单文件 ESM bundle + 声明文件 | 零运行时依赖分发 |
| 测试 | vitest | 11 个单元用例 | 模板加载、Config 行为、注册行为全覆盖 |
项目结构 text dsh-ctf-injector/ ├── src/ │ ├── index.ts # 插件入口:inject 声明、Config schema、apply() 注册 section │ └── prompts.ts # 模板解析:内置模板定位 + customPromptFile 覆盖 ├── assets/prompts/ # 三套内置提示词(移植自 codex-session-patcher) │ ├── ctf_optimized.md # 三层完整工作流(默认,约 13.9k 字符) │ ├── ctf_general.md # 精简 Security Testing Mode 规则 │ └── ctf_private_deploy.md # 最小私有部署声明 ├── tests/ # vitest 单元测试 ├── lib/ # 构建产物(已提交,归档即装即用) ├── dsh.plugin.json # DSH 插件清单 ├── build.mjs # esbuild + tsc 构建脚本 └── package.json
配置说明
| 配置项 | 类型 | 默认值 | 说明 |
| enabled | boolean | true | false 时插件加载但不注册任何 section |
| template | 'optimized' \| 'general' \| 'private-deploy' | 'optimized' | 内置模板选择 |
| customPromptFile | string | '' | 自定义 markdown 提示词绝对路径,优先于 template |
| order | number | 50 | section 在系统提示组装中的顺序(persona 为 0,工具指引为 100+) |
性能与扩展性
- 运行时开销:注册是一次性操作,组装期只做字符串拼接,开销可忽略;
- Token 成本:optimized 模板约 13.9k 字符,属于每次请求系统提示的固定开销;在意成本可切换 general(约 1.6k 字符);
- 扩展方向:自定义文件机制意味着团队可以维护自己的提示词仓库,插件本身无需演进;未来可增加按 Agent preset 作用域挂载(section 支持 scoped 覆盖)。
安全设计
- 零运行时依赖:schemastery 打进 bundle,cordis / dsh 包均为 type-only 导入,供应链面最小;
- 失败即拒载:模板文件缺失或自定义文件不可读时 apply() 抛错,Loader 标记插件 failed,不会静默降级为“没注入却以为注入了”;
- 无网络、无文件监听、无外部调用:插件只做一次本地文件读取与一次注册;
- 边界声明:本插件不能突破平台自身的最高安全策略,明确违规的请求仍可能被模型拒绝;注入内容面向授权场景,请确保你拥有目标的合法授权。
项目亮点
1. 思路转换(产品创新):把“改 CLI 配置文件”的注入思路,翻译为 DSH 插件体系下的官方组装接缝注册——不 patch、不改配置、可组合、可卸载;
2. 协议化提示词(内容创新):注入的不是免责声明,而是包含证据纪律与反编造约束的可执行工作协议,在降低拒答的同时抑制幻觉;
3. 零依赖分发(工程创新):esbuild 单文件 bundle + 提交构建产物,GitHub 归档即装即用;
4. 缓存友好(工程细节):静态 section 保 KV Cache 前缀稳定,配置变更与插件重载语义对齐 cordis 生命周期。
Roadmap
- [x] 三套内置模板移植与身份行泛化
- [x] customPromptFile 自定义提示词覆盖
- [x] 单元测试(模板加载 / Config / 注册行为)
- [x] GitHub 归档一键安装
- [ ] Agent preset 作用域挂载(只对指定 preset 的会话注入)
- [ ] 提示词改写工具移植(codex-session-patcher 的 prompt rewriter,需要 LLM 调用能力)
- [ ] Web 设置页卡片(模板切换 UI,依赖 harness 暴露 settings 命名空间白名单)
贡献指南 bash
git clone https://github.com/mrye111/dsh-ctf-injector.git
cd dsh-ctf-injector
npm install --legacy-peer-deps
npm run check # typecheck + 测试 + 构建
- 改源码后必须重新执行 npm run build 并提交 lib/(仓库约定构建产物入库,保证归档可装);
- 提交信息遵循 Conventional Commits;
- 提示词内容调整请同步更新 tests/prompts.spec.ts 中的守护用例(身份行、{{ 检查)。
FAQ
Q:装完插件列表里搜不到?
A:插件列表是设置窗口挂载时的一次性快照。先硬刷新页面(Ctrl+Shift+R),再重新打开设置窗口查看;同时确认装完后重启过 web 服务。
Q:注入后模型还是会拒绝某些请求?
A:注入的是上下文而非越狱。它能显著降低授权场景的误判拒答,但无法突破平台最高安全策略;明确违规的内容仍会被拒。
Q:换模板 / 改配置为什么不生效?
A:配置在插件加载时读取,需重启 web 服务。另外系统提示有 KV Cache 设计,运行中不会热更新。
Q:可以和 dsh-at-file 等其他插件共存吗?
A:可以。本插件只注册一个 order 50 的 section,与其他 section、工具、事件无冲突。
Q:如何彻底卸载?
A:dsh plugin --profile web remove dsh-ctf-injector,或手动删除 cordis.patch.yml 中的条目与 node_modules/dsh-ctf-injector 目录,然后重启。
License
MIT。提示词模板移植自 codex-session-patcher(MIT)。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
mrye111/dsh-ctf-injector
为每个 Agent 注入安全测试上下文,减少请求被拒
相关插件 · 其他
模型破甲清洗HunYiSage/dsh-purge
⚔️ DeepSeek Harness 网络安全红队工具dsh-purge
★ 16,993已汉化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,269已汉化DSH
70.8
这是你的仓库?认领条目