在工具执行前拦截危险操作并提示确认
30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/24 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add MrChengl11/Stop-That-Shit-DSH该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
dsh 原生插件 · security
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 8 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件
查看扫描证据(共 20 处,展示前 18 条)
- 读取本地文件vendor-sts/src/state.cjs:29
const stat = fs.statSync(lock, { throwIfNoEntry: false }); - 读取本地文件vendor-sts/src/state.cjs:37
const parsed = JSON.parse(fs.readFileSync(file, 'utf8')); - 写入本地文件vendor-sts/src/state.cjs:52
fs.mkdirSync(path.dirname(file), { recursive: true }); - 写入本地文件vendor-sts/src/state.cjs:56
fs.writeFileSync(temporary, `${JSON.stringify(state, null, 2)}\n`, { encoding: 'utf8', mode: 0o600 }); - 写入本地文件vendor-sts/src/state.cjs:61
try { fs.renameSync(temporary, file); break; } - 读取本地文件vendor-sts/src/state.cjs:68
finally { if (fs.existsSync(temporary)) fs.unlinkSync(temporary); } - 读取本地文件vendor-sts/src/state.cjs:88
const match = /^( +):/.exec(fs.readFileSync(file, 'utf8')); - 删除本地文件vendor-sts/src/state.cjs:104
try { fs.rmdirSync(directory); } - 删除本地文件vendor-sts/src/state.cjs:111
try { fs.unlinkSync(path.join(directory, owner)); } - 读取本地文件vendor-sts/src/state.cjs:121
const stat = fs.statSync(file); - 读取本地文件vendor-sts/src/state.cjs:124
const owners = fs.readdirSync(file); - 删除本地文件vendor-sts/src/state.cjs:138
if (ownerHasExited(legacyLockOwner(file))) fs.unlinkSync(file); - 写入本地文件vendor-sts/src/state.cjs:152
fs.mkdirSync(path.dirname(file), { recursive: true }); - 写入本地文件vendor-sts/src/state.cjs:156
try { fs.mkdirSync(file, { mode: 0o700 }); created = true; } - 写入本地文件vendor-sts/src/state.cjs:161
fs.writeFileSync(path.join(file, owner), '', { flag: 'wx', mode: 0o600 }); - 读取本地文件vendor-sts/src/runtime-audit.cjs:83
return fs.readdirSync(root).filter((name) => name.endsWith('.jsonl') && name !== 'annotations.jsonl') - 写入本地文件vendor-sts/src/runtime-storage.cjs:14
fs.mkdirSync(path.dirname(file), { recursive: true, mode: 0o700 }); - 写入本地文件vendor-sts/src/runtime-storage.cjs:17
fs.appendFileSync(file, `\n${JSON.stringify(record)}\n`, { encoding: 'utf8', mode: 0o600 });
扫描于 2026/11/1(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
展开完整介绍(134 字)↓
二次开发 (derivative work):Stop That Shit 的 DeepSeek Harness 适配层。上游 lennney/stop-that-shit v0.2.5 (MIT),判定引擎原样收录于 vendor-sts/,本仓库仅新增宿主粘合层。
README
由 DeepSeek 最新模型翻译生成Stop-That-Shit-DSH(STS × DeepSeek Harness 二次开发)
这是二次开发(derivative work),不是上游官方项目。
* 上游:lennney/stop-that-shit v0.2.5,MIT,作者 "Stop That Shit contributors"
* 本仓库:MrChengl11 在 DeepSeek Harness 上的移植与适配层(DSH adapter)
* 上游没有 DeepSeek Harness 适配器;本仓库的 lib/、install.mjs、cordis.patch.yml、test/、docs/、e2e/、research/ 均为本仓库新增
* 上游决策引擎(src/controller.cjs、src/decision.cjs、src/contracts.cjs 等)未做任何修改,以 MIT 条款原样收录在 vendor-sts/
* 上游 MIT 许可证与版权声明保留在 vendor-sts/LICENSE;本仓库自身代码同样以 MIT 发布,见 LICENSE
目录
| 路径 | 内容 | 来源 |
| lib/index.js | DSH 插件入口:挂 tools/pre-execute 等宿主钩子 | 本仓库新增 |
展开完整文档(README 剩余 1 节)
Stop-That-Shit-DSH(STS × DeepSeek Harness 二次开发)
这是二次开发(derivative work),不是上游官方项目。
* 上游:lennney/stop-that-shit v0.2.5,MIT,作者 "Stop That Shit contributors"
* 本仓库:MrChengl11 在 DeepSeek Harness 上的移植与适配层(DSH adapter)
* 上游没有 DeepSeek Harness 适配器;本仓库的 lib/、install.mjs、cordis.patch.yml、test/、docs/、e2e/、research/ 均为本仓库新增
* 上游决策引擎(src/controller.cjs、src/decision.cjs、src/contracts.cjs 等)未做任何修改,以 MIT 条款原样收录在 vendor-sts/
* 上游 MIT 许可证与版权声明保留在 vendor-sts/LICENSE;本仓库自身代码同样以 MIT 发布,见 LICENSE
目录
| 路径 | 内容 | 来源 |
| lib/index.js | DSH 插件入口:挂 tools/pre-execute 等宿主钩子 | 本仓库新增 |
| lib/adapter.js | DSH 工具名 → 上游 ControlEvent v2 的适配 | 本仓库新增 |
| vendor-sts/ | 上游 STS v0.2.5 源码,原样拷贝(MIT) | 上游 |
| test/conformance.mjs | 49 条 conformance 断言,不跑模型 | 本仓库新增 |
| install.mjs | 幂等安装/卸载到任意 DSH profile | 本仓库新增 |
| e2e/ | 端到端探针(真实 headless 启动 + 真实模型) | 本仓库新增 |
| research/claude-code-bridge/ | 早期走 Claude Code hook 桥接路线的探针与结论 | 本仓库新增 |
| docs/01..03 | 上游分析、DSH 扩展面取证、桥接路线记录 | 本仓库新增 |
| docs/04..05 | 兼容性判定报告、原生插件设计报告(中文) | 本仓库新增 |
与上游的关系
本仓库只提供宿主粘合层:把 DeepSeek Harness 的扩展点翻译成上游认识的事件。
| DSH 扩展点 | 用途 |
| agent/inbox/claimed | 在 harness 拼接上下文之前拿到真实用户 prompt |
| agent/pre-step | 把契约/状态提示注入本轮 |
| tools/pre-execute | before-action,可真正返回 deny |
| tools/post-execute | 子 agent 结束时释放 delegation 预留 |
| systemPrompt.context | 按请求发布当前契约状态(order 550) |
决定"拦不拦"的逻辑全部来自上游 vendor-sts/,本仓库不重写判定规则。
快速开始
也可以直接下 Releases 里的 dsh-stop-that-shit-0.1.0.tgz,解包后跑 node install.mjs。
node install.mjs # 安装到默认 profile "desktop"
node install.mjs --profile X # 指定 profile
node install.mjs --uninstall # 卸载
node test/conformance.mjs # 49 条断言
以下为插件本体文档
Stop That Shit 现在是一个原生 DeepSeek Harness 插件。
Stop That Shit 是任务边界守卫:它不给进程做沙箱,而是把智能体约束在用户用 $stop-that-shit 指令声明的模式、文件、依赖策略和委派预算之内。上游自带 Codex、Claude Code、OpenCode、Hermes Agent CLI、Pi 和 Oh My Pi 的适配器。本包是 DeepSeek Harness 适配器:原样复用上游决策引擎,只补宿主粘合层。
它做什么
| DSH 扩展点 | 用途 |
| agent/inbox/claimed | 在 harness 把上下文合并进来之前读取真实用户 prompt,这样指令仍然是第一行非空内容。 |
| agent/pre-step | 把守卫的契约/状态提示作为用户消息追加到 prompt 所属的那一步。 |
| tools/pre-execute | before-action 事件。返回 {kind:"deny", reason} —— 真正的拒绝,reason 会以 Error: <reason> 的形式送到模型那里。 |
| tools/post-execute | 子代理调用结束时,释放委派预留。 |
| systemPrompt.context | 按请求发布实时契约状态(order 550),不重写稳定的系统提示词。 |
嵌套的 PTC 子调用(run_code 派发 tools.write)会作为独立执行到达 tools/pre-execute,逐个判定。
安装
// <profile>/package.json
{
"dsh": { "profile": { "bundles": ["@deepseek-ai/dsh-base", "dsh-stop-that-shit"] } }
}
把本包放进 <profile>/node_modules/dsh-stop-that-shit(junction 也可以),再在 bundle 列表里声明它。包内声明了 dsh.bundle.patch,会往配置档树里插入一条 cordis 条目(sts-native)。
engines.dsh 为 0.2.1-rc.3;只要它存在,就由它单独决定兼容性,@deepseek-ai/dsh- 上的 peerDependencies 会被忽略。插件在运行时不导入任何 @deepseek-ai 包——链接进来的配置档 bundle 无法解析宿主包,因为配置档没有重新导出它们。
使用
指令必须是消息的第一个非空行,任务文本必须放在 -- 之后:
$stop-that-shit change files=src/app.ts -- Refactor the handler in src/app.ts.
| 字段 | 取值 |
| mode | answer review monitor change |
| level | watch guard lock |
| scope | files=a|b, 表示整棵树 |
| policies | deps=deny|ask|allow,hash=deny|ask|allow |
| budget | agents=N |
用 $stop-that-shit status、... runtime、... explain evt_...、... label evt_... correct|incorrect|inconclusive 查询。
两个语法陷阱,都继承自上游,而且都真实存在:
后面跟任务文本时,-- 是必填的。$stop-that-shit review do the thing 会返回 INVALID_DIRECTIVE_TOKEN,该轮会话保持未武装状态。
* level 是裸词,不是键值:$stop-that-shit change watch files=src/app.ts。写成 level=watch 会被当作未知指令字段拒绝。
任何不以该指令开头的消息,都会让守卫保持 unconfirmed / 仅监视状态,不会拒绝任何操作。
配置
- id: sts-native
name: dsh-stop-that-shit
config:
dataDir: C:/Users/you/.dsh/sts-data # default: $DSH_HOME/sts-data or ~/.dsh/sts-data
announceWhenUnarmed: true # publish the watch-only preamble as runtime context
announceOnPrompt: true # inject the contract after a steering prompt
验证
node test/conformance.mjs # 49 assertions, no model in the loop
测试套件在伪造的 cordis ctx 上驱动插件注册的同一批处理器,断言完整的决策矩阵:形状、指令解析、边界内/外写入、shell 分类、PTC 容器、review 模式、watch 级别、hash 与依赖策略、智能体预算、运行时命令,以及 fail-open 行为。
端到端测试(真实无头启动、真实模型)由另一套测试单独覆盖:研究空间里的 e2e-native/probe-native.mjs;它的断言取决于模型选择哪个工具,所以这套测试是确定性的关卡。
已知限制
* 不是安全边界。 Stop That Shit 自称护栏;真正的边界仍然是 DSH 沙箱和权限预设。run_code 脚本通过 node:fs 写文件,会被归类为 control,而不是文件写入,也不会做路径检查。
* 无法证明目标的 shell 命令(例如 node -e ...、python x.py)会被归为 unknown;在 files= 边界下,这类命令会以 WRITE_PATH_UNPROVEN 为由被拒绝。
* 护栏采用失败放行:钩子出错时只记录日志,动作照常放行,与上游钩子适配器的行为一致。
许可
vendor-sts/ 是上游 stop-that-shit v0.2.5 的源码,MIT 协议,原样复制;见 vendor-sts/LICENSE。本包自身的胶水代码为 MIT 协议。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
MrChengl11/Stop-That-Shit-DSH
在工具执行前拦截危险操作并提示确认
相关插件 · 安全 / 权限
智能体逆向工程morluto/rea
用智能体逆向工程任何东西,从应用行为到原生二进制。
★ 415,267已汉化DSH
73.3
智能体集群框架ruvnet/ruflo
面向 Claude Code 与 Codex 的智能体元基座meta-harness。
★ 80,414已汉化MCP
71.9
WorkBuddy 模型接入corrinehu/dsh-workbuddy-connect
2026 年 10 月 20 日起,WorkBuddy…
★ 1,604已汉化DSH
71.7
破甲一键通z91772524-ai/pojia-next
十五个 AI…
★ 967已汉化DSH
71.6
AI 代理虚拟终端strukto-ai/mirage
Mirage 是给 AI 智能体用的虚拟终端:一层 shell,统管数据、命令行和运行时。Unix…
★ 3,756已汉化DSH
70.8
Agent 操作层agentic-os-org/ANOLISA
ANOLISA(Agentic Nexus Operating Layer & Interface System Architecture)|智能体操作系统,带运行时、安全、可观测性,以及 Tokenless 响应压缩,降低 token 用量与成本。
★ 649已汉化DSH
70.7