Letter2025/dsh-approval-llm1

dsh-approval-llm

Model-based permission approval (approve-for-me) for DeepSeek Harness: an approval/request answerer backed by a separate reviewer model

AI 分析

核心用途是实现自动化的安全审批,由副模型评估主模型的敏感操作请求。适合希望减少人工确认弹窗、实现高自动化且兼顾安全性的用户。

パッケージ
dsh-approval-llm
バージョン
0.1.1
最終更新
2026/08/14

インストール

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:Letter2025/dsh-approval-llm

ドキュメント

README 全文を読む ↗

Configuration

All fields are validated by the Loader schema; defaults apply when omitted.

FieldDefaultMeaning
enabledtrueMaster switch; when false every request is delegated unchanged.
modePresetmodel-approvalThe permission preset that activates the reviewer. When set, the plugin only answers asks from sessions whose effective preset equals this name; every other session delegates to the human channel. Set to '' to review every ask.
provider / modelunsetExplicit reviewer route. Must be set together; when unset the plugin reuses the conversation route from the last request/header in the session log, and fails to human when the log has none.
timeoutMs60000End-to-end reviewer deadline; on expiry the request is handed to a human (TIMEOUT, not counted in the breaker).
maxOutputTokens256Reviewer output cap.
systemPromptbuilt-in policyCustom security policy for the reviewer. The built-in policy is a short allow-by-default, deny-on-critical-harm rule set; see src/reviewer.ts.
allowlist[]Tool names auto-approved without a model call (SAFE_ALLOW).
denyList[]Tool names rejected outright without a model call. Wins over the allowlist.
humanOnlyList[]Tool names that must be decided by a human; never auto-reviewed.
maxConsecutiveDenials3Consecutive DENY threshold per session before the reviewer hands off to a human; 0 disables the breaker. ALLOW resets the counter.
maxArgsChars4000Cap on tool-argument JSON rendered to the reviewer.
includeArgstrueRecover tool arguments from the session log for the review.
notifyUsertrueAppend a user-visible decision message (✅ 模型审批通过/❌ 模型审批拒绝 with the risk and reason) to the session after every model ALLOW/DENY, so the main chain records why.

Example overlay (cordis.patch.yml of your profile):

- id: approval-llm
  config:
    provider: deepseek-official
    model: deepseek-v4-flash
    allowlist: [read, read_image, glob, grep]
    humanOnlyList: [delete, terminal_send]
    denyList: [job_kill]
    maxConsecutiveDenials: 3