dsh-approve-for-me
by shifan3
DeepSeek Harness 的替我批准模式:审批请求经 LLM 安全自动批准;高风险破坏性命令仍询问用户
Approve-for-me mode for DeepSeek Harness: LLM safety auto-approval for approval requests; high-risk destructive commands still ask the user.
安装
dsh plugin --profile web add github:shifan3/dsh-approve-for-meGitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试
安装与环境配置指引、插件开发教程见 DSH 中文社区文档 ↗
安装即在你的机器上以你的权限运行第三方代码——它可读写文件、使用凭据、访问网络,DSH 的工具审批不会为插件代码加沙箱。「检测到 manifest」仅代表发现 dsh.bundle / dsh.plugin 清单,不构成兼容性或安全审查;安装前请审阅源码,不熟悉的插件先在不含密钥的环境试用。
README
一个 DeepSeek Harness(DSH)宿主插件,为 DSH 增加 approve-for-me 审批模式。
启用后,每个到达 DSH answerer 链的审批请求都会先交给一个 LLM 安全评审模型,结合此前的对话摘要判断是否放行,模型只回答 ALLOW 或 REJECT。破坏性高危命令——rm -r、rm -rf、drop table、drop database 等——会跳过模型,直接走正常的交互式用户审批弹窗。
插件不会新增
approve-for-me这个审批策略枚举(它硬编码在宿主包dsh-user-approval里)。它工作在现有ask审批策略之内:插件启用即代表模式开启,禁用即回到“每次都问用户”。DSH 的审批审计事件(approval/asked+approval/decided)仍然正常记录。
行为
- 以
prepend: true监听approval/request,因此会抢在交互式(用户弹窗)answerer 之前运行。 - 提取本次请求的具体动作文本:
- bash 工具调用参数里的
command, - 其他工具的调用参数 JSON,
- 或退回到请求的
reason。
- bash 工具调用参数里的
- 如果动作(或请求 reason)命中高危模式 →
next(),即正常弹窗问用户。 - 否则把以下内容发给大模型:
- 对话摘要(最近约 12k 字符的用户消息、助手工具活动、工具调用),
- 本次请求动作(工具名、reason、命令/参数)。
- 模型必须只回答一个词:
ALLOW或REJECT。ALLOW→allowed-onceREJECT→rejected- 无法解析 / 超时 / 模型错误 / 无模型服务 →
next()(回退为询问用户;绝不静默放行,也绝不静默拒绝)
高危模式
以下模式会对提取出的动作文本做精确匹配(不区分大小写的正则,无 g 标志):
rm -r、rm -rf、rm -fr、rm -R、rm -rfv等(任何带r标志的rm)rm ... /(递归/强制删除根目录)drop table、drop database、drop schematruncate table ...delete from ...mkfs、mkfs.ext4等dd if=shred、wipefsgit push -f/git push --forcegit reset --hardchmod -R 777、chown -R- fork bomb
:(){ :|:& };:
安装(静态,重启后仍生效)
方式 A:dsh plugin add(推荐)
本包声明了 dsh.bundle.patch,因此 dsh plugin add 会安装它,并自动把它加入该 profile 的 dsh.profile.bundles——不需要手动改补丁。
克隆仓库,然后在仓库所在目录的上层执行:
git clone https://github.com/shifan3/dsh-approve-for-me.git
dsh plugin --profile web add ./dsh-approve-for-me
或用绝对路径:
dsh plugin --profile web add /path/to/dsh-approve-for-me
发布到 npm 后也可以:
dsh plugin --profile web add dsh-approve-for-me
然后重启 dsh web。该命令会在 ~/.dsh/profiles/web/ 内执行 pnpm add,然后根据已安装的包对账 dsh.profile.bundles。激活插件的行就在本仓库的 cordis.patch.yml 里。
方式 B:手动 home 补丁层
如果不想用 dsh plugin,可以克隆仓库到 DSH home,并手动往 ~/.dsh/cordis.patch.yml 插入一行(对所有 profile 生效):
mkdir -p ~/.dsh/plugins
git clone https://github.com/shifan3/dsh-approve-for-me.git ~/.dsh/plugins/approve-for-me
然后创建或扩展 ~/.dsh/cordis.patch.yml:
- insert:
- id: approve-for-me
name: '../../plugins/approve-for-me/lib/index.js'
config:
enabled: true
provider: deepseek-official
model: deepseek-v4-flash
maxTokens: 512
summaryMaxChars: 12000
timeoutMs: 60000
然后重启 dsh web。相对路径 name 会相对于每个 profile 目录(~/.dsh/profiles/<name>/)解析,所以 ../../plugins/... 恰好指向 ~/.dsh/plugins/...,对自带的 web、tui、cc-tui profile 都成立。
如果你之前用方式 B 装过,之后想换成方式 A,请先删掉
~/.dsh/cordis.patch.yml里的approve-for-meinsert,避免同一id出现两次。
启用 / 禁用 / 配置
- 禁用:把行配置里的
enabled改为false,然后重启。- 方式 A:在 profile 补丁(
~/.dsh/profiles/web/cordis.patch.yml)里加一个按 id 覆盖的配置:- id: approve-for-me config: enabled: false - 方式 B:编辑
~/.dsh/cordis.patch.yml里的 insert 块。
- 方式 A:在 profile 补丁(
- 卸载:
- 方式 A:
dsh plugin --profile web remove dsh-approve-for-me,然后重启。 - 方式 B:删除该 insert 块(或整个补丁文件),然后重启。
- 方式 A:
- 配置项(都可选):
enabled(默认true)provider(默认deepseek-official)model(默认deepseek-v4-flash)maxTokens(默认512)summaryMaxChars(默认12000)timeoutMs(默认60000)reasoningEffort(默认off;保持off,避免推理消耗 token 导致裁决词没输出)
安装(动态,单次运行)
如果不想写 ~/.dsh,可以把 host-code.js 作为动态 Cordis Host 包加载(重启后失效):
- Web UI:打开 Cordis 面板 → 新建 Plugin(id 前缀如
afm)→ 把host-code.js粘贴为 Host 代码 → 运行。 - 使用
cordis_define/cordis_run:读取host-code.js,作为code.host传入。
文件
lib/index.js— 静态宿主插件(ESM,无运行时依赖)。host-code.js— 动态 Cordis Host 包变体(相同逻辑,沙箱安全子集)。cordis.patch.yml— bundle 补丁(通过dsh.bundle.patch声明),用于激活插件行。
限制
- 动态版运行在 DSH 动态宿主 vm 沙箱里:没有
setTimeout/AbortController,其超时依赖 LLM adapter 自身的streamIdleTimeoutMs(默认 300s)。静态版使用真实的AbortSignal.timeout。 - 会话的审批策略仍显示为
ask;插件是一个前置 answerer,不是新的策略枚举。 - 只应启用一个 approve-for-me answerer:如果同时加载静态版和动态版,后加载(后 prepend)的那个生效。
License
MIT
原始 README: https://github.com/shifan3/dsh-approve-for-me/blob/main/README.zh.md ↗
同类插件
查看全部 →
agent-vision-toolkit
为纯文本模型"看图“设计更好的视觉工具箱和技能,支持多图理解,图片问答,前端UI还原、GUI 自动化等,并可选无缝接入多个主流agent,直接识别粘贴图片| A vision toolkit and skill designed for text-only llms — image Q&A, long-screenshot OCR, frontend UI restoration, and GUI automation, with optional seamless integration for Codex, Claude Code, Pi, Oh My Pi, and OpenCode

api-relay-audit
从 DeepSeek Harness 对 AI API 中转站和 LLM 代理运行本地安全审计,生成 Markdown 报告,覆盖提示词注入、模型替换信号、工具调用改写、错误泄漏、流完整性和按 profile 启用的 Web3 风险。

OpenStory
✨ OpenStory 现已支持 DeepSeek Harness 插件! 现在可以通过 dsh-openstory 将 OpenStory 多智能体推演接入 DeepSeek Harness,让 agent 直接启动模拟、查看角色、下达指令并逐回合推进故事。查看 DSH 插件配置与使用指南。

phi
pi的编码代理 ∞ 提供者、子代理、hashline编辑和权限门

anysearch-dsh
DeepSeek Harness(DSH)的 AnySearch 网络搜索提供方与高级搜索工具。

codex-switch
Codex Switch 是一个 macOS 工具,一键配置 Codex 的自定义 API,同时保留官方 OpenAI 登录。保存后 Codex 的模型选择器里只会出现你选的那个 provider 的模型。也支持 Claude Code 的官方 / 自定义 API 切换。Codex Switch is a lightweight helper for configuring multiple coding-agent API routes. For Codex, it keeps Official OpenAI and a custom API provider configured in parallel, registers the custom model in Codex's mod