dsh-plugin-approval-alert
doncelee229-cmyk
DeepSeek Harness 审批/选择方案系统级通知提醒,显示工作区名、点击跳转、多语言。Approval & decision alerts with native notifications for DeepSeek Harnes…
PROJECT TOPICS
PROJECT README
非官方社区实验。 本项目与 DeepSeek AI 无隶属或背书关系,不是生产安全承诺。
一个面向 DeepSeek Harness 的最小企业审批策略插件:在官方 tools/pre-execute 扩展点上,把工具调用分成 allow、deny、requireApproval 三类,并生成脱敏 JSONL 审计记录。需要人工确认时,插件返回 DSH 原生 ask 决策,由 DSH 内置审批服务和 Web UI 完成一次性授权;本项目不修改官方核心。
| 项目 | 验证值 |
|---|---|
| DSH npm | @deepseek-ai/dsh@0.1.0-rc.6 |
| DSH 源码 | 47f943859bef60e4160492346772ded9b24f765a |
| Node.js | v24.19.0 |
| 验证日期 | 2026-08-15 |
| 项目版本 | 0.1.0-beta.1 |
DSH 当前仍处于 developer preview,官方明确提示会有不兼容改动;升级 DSH 后请重新执行本文的配置检查和测试。
low、medium、high、critical 风险。critical 默认拒绝;其他风险按 developer、production、strict 预设处理。allow 会继续委托后续策略,不会绕过 DSH 自带安全控制。requireApproval 使用 DSH 原生审批通道;无可用审批通道时由 DSH 自动拒绝。ApprovalTransport 接口,以及用于无界面调试的本地 TTY transport。这个 PoC 不提供 SSO、RBAC、多级会签、远程 Webhook、不可篡改日志或合规认证。
从 GitHub 安装到 Web profile:
npx @deepseek-ai/dsh plugin --profile web add github:lasoloryan/dsh-approval-flow-poc
npx @deepseek-ai/dsh --profile web --dump-config
npx @deepseek-ai/dsh web
在配置输出中应看到:
- id: approval-flow-policy
name: dsh-approval-flow-poc
从本地 checkout 验证:
npm install
npm run check
npx @deepseek-ai/dsh plugin --profile web add .
npx @deepseek-ai/dsh web
如果 pnpm 阻止 Git 依赖的 prepare 脚本,请按 pnpm 输出的精确提示在对应 profile 的 pnpm-workspace.yaml 中允许该包构建,然后重新执行安装;不要关闭全部构建保护。
| 预设 | low | medium | high | critical | 适用场景 |
|---|---|---|---|---|---|
developer |
委托/允许 | 委托/允许 | 人工审批 | 拒绝 | 本地开发 |
production |
委托/允许 | 人工审批 | 人工审批 | 拒绝 | 预生产或受控运行 |
strict |
委托/允许 | 人工审批 | 拒绝 | 拒绝 | 高敏感演示 |
allow 实际上调用 next(),所以后续 DSH 策略仍可拒绝该调用。
切换预设时,在 profile 的 cordis.patch.yml 覆盖完整配置:
- id: approval-flow-policy
config:
preset: production
auditPath: .dsh-approval-flow/audit.jsonl
approvalTimeoutMs: 45000
localPrompt: false
include: []
exclude: []
注意:DSH patch 对同一 row 的 config 是整体替换,不是深度合并,因此覆盖时应写全字段。
export interface ApprovalRequest {
requestId: string
callId: string
toolName: string
summary: string
risk: 'low' | 'medium' | 'high' | 'critical'
createdAt: string
expiresAt: string
}
export interface ApprovalDecision {
requestId: string
decision: 'allow' | 'deny'
reason: string
decidedAt: string
}
export interface ApprovalTransport {
requestApproval(request: ApprovalRequest, signal?: AbortSignal): Promise<ApprovalDecision>
}
当前 DSH 适配器把 requireApproval 映射为官方 { kind: 'ask' }。ApprovalTransport 为后续 Webhook/飞书/企微适配保留稳定的最小 seam;本版本只提供本地 TTY 实现。
{"schemaVersion":1,"event":"policy-decision","timestamp":"2026-08-15T00:00:00.000Z","request":{"requestId":"…","callId":"…","toolName":"bash","summary":"{\"cmd\":\"deploy\",\"token\":\"[REDACTED]\"}","risk":"high","createdAt":"…","expiresAt":"…"},"decision":"requireApproval","reason":"high-risk action requires one-time approval"}
日志默认写到当前项目的 .dsh-approval-flow/audit.jsonl。它是调试和取证线索,不是防篡改账本;生产环境应接入受保护的集中日志系统。
npm run check
当前测试覆盖:风险分类、允许/拒绝/需要审批、敏感字段脱敏、本地批准/拒绝、审批超时默认拒绝和 JSONL 审计。
请在 GitHub Issues 提交可复现问题。工具包、训练营和企业诊断仅做需求验证,不在本 Beta 中收费交付。
MIT
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。