{"schemaVersion":2,"dataVersion":"20260822T105549Z-0a0b366f","generatedAt":"2026-08-22T10:55:49.138Z","source":{"id":"perrylink-dsh-auto-review","slug":"perrylink-dsh-auto-review","rank":79,"url":"https://github.com/PerryLink/dsh-auto-review","name":"PerryLink/dsh-auto-review","category":"security","description":{"zh":"审批链上的第二模型自动审查：只读审查子代理返回带理由的 allow/deny 结构化裁决，默认 fail-closed。","en":"Second-model auto-review on the approval answerer chain: a read-only reviewer subagent returns structured allow/deny verdicts with reasons, fail-closed by default."},"stars":71,"starsCheckedAt":"2026-08-21","repository":{"owner":"PerryLink","repo":"dsh-auto-review","requestedRef":null,"subpath":""},"npm":"dsh-auto-review","downloads":1115,"installMode":"npm","upstreamInstall":"dsh plugin --profile web add dsh-auto-review","tarball":null,"added":"2026-08-15","page":"https://awesome-dsh-plugin.com/p/PerryLink/dsh-auto-review/","screenshots":[],"discovery":{"provider":"awesome-dsh-plugin","channel":"plugins.json","indexUrl":"https://github.com/awesome-dsh-plugin/awesome-dsh-plugin","selection":"all curated entries"}},"report":{"sourceId":"perrylink-dsh-auto-review","slug":"perrylink-dsh-auto-review","policyVersion":"HT-DSH-0.2.2","scannedAt":"2026-08-21T13:16:27.078Z","scanStatus":"static-complete","verdict":"caution","score":84,"commit":"252e5b098db2b501e1055c4b882c3b2c6b6db31f","commitDate":"2026-08-21T13:09:40+08:00","artifactDigest":"sha256:1b0e0734ee216f0db2ddf833b035c790f000722591ebeb0236d819ff1e61c68e","downloadUrl":"https://github.com/PerryLink/dsh-auto-review/archive/252e5b098db2b501e1055c4b882c3b2c6b6db31f.tar.gz","installMode":"npm","installCommand":"dsh plugin --profile web add dsh-auto-review","manifest":{"found":true,"path":"package.json","parseError":null,"packageName":"dsh-auto-review","packageVersion":"0.5.3","bundle":{"patch":"./cordis.patch.yml"},"client":{"platform":"web","inject":["@deepseek-ai/dsh-client-connection","@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-ui-slots","@deepseek-ai/dsh-client-ui-conversation"]},"lifecycleScripts":{"prepare":"node scripts/prepare.mjs"},"peerDependencies":["@deepseek-ai/cordis","@deepseek-ai/dsh-agent","@deepseek-ai/dsh-brand","@deepseek-ai/dsh-commands","@deepseek-ai/dsh-invariants","@deepseek-ai/dsh-llm","@deepseek-ai/dsh-session","@deepseek-ai/dsh-session-projection","@deepseek-ai/dsh-subagent","@deepseek-ai/dsh-tools","@deepseek-ai/dsh-user-approval","@deepseek-ai/schemastery"]},"identity":{"status":"found","installMode":"npm","upstreamNpm":"dsh-auto-review","manifestName":"dsh-auto-review","nameMatch":true,"npm":{"name":"dsh-auto-review","latestVersion":"0.5.3","publishedAt":"2026-08-21T05:52:36.781Z","createdAt":"2026-08-15T08:15:10.381Z","versionCount":6,"maintainers":1,"repository":"git+https://github.com/PerryLink/dsh-auto-review.git","hasInstallScripts":false,"deprecated":false},"repositoryMatch":"match","provenance":"none","tarballHost":null,"versionMatch":"match"},"permissions":{"bundlePatch":"cordis.patch.yml","inserts":[{"id":"auto-review","name":"dsh-auto-review","path":"cordis.patch.yml","disabled":false}],"overrides":[{"id":"spine","tier":"normal","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-agent-spine-demo","keys":["agents","includeHarnessIdentity","includeRuntimeContext","persona","workspaceContext","goals","toolBash","toolJobs"],"path":"eval/cordis.yml"},{"id":"settings","tier":"sensitive","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-settings-file","keys":[],"path":"eval/cordis.yml"},{"id":"credentials","tier":"critical","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-credentials-local","keys":[],"path":"eval/cordis.yml"},{"id":"llm-deepseek","tier":"normal","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-llm-deepseek","keys":["thinking","reasoningEffort","models"],"path":"eval/cordis.yml"},{"id":"session-persistence-jsonl","tier":"sensitive","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-session-persistence-jsonl","keys":["root","compression"],"path":"eval/cordis.yml"},{"id":"session-projection","tier":"sensitive","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-session-projection","keys":[],"path":"eval/cordis.yml"},{"id":"subagent","tier":"sensitive","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-subagent","keys":[],"path":"eval/cordis.yml"},{"id":"subagent-spawn-in-process","tier":"sensitive","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-subagent-spawn-in-process","keys":["providerName"],"path":"eval/cordis.yml"},{"id":"subagent-fork-in-process","tier":"sensitive","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-subagent-fork-in-process","keys":["providerName"],"path":"eval/cordis.yml"},{"id":"approval","tier":"critical","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-user-approval","keys":["policy"],"path":"eval/cordis.yml"},{"id":"sandbox","tier":"critical","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-sandbox-local","keys":[],"path":"eval/cordis.yml"},{"id":"sandbox-policy","tier":"critical","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-sandbox-policy","keys":["mode","workspaceRoot"],"path":"eval/cordis.yml"},{"id":"subprocess","tier":"critical","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-subprocess-local","keys":[],"path":"eval/cordis.yml"},{"id":"fs-sandbox","tier":"normal","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-fs-sandbox","keys":[],"path":"eval/cordis.yml"},{"id":"fs-observation-policy","tier":"critical","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-fs-observation-policy","keys":[],"path":"eval/cordis.yml"},{"id":"tool-fs","tier":"sensitive","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-tool-fs","keys":[],"path":"eval/cordis.yml"},{"id":"tool-fs-search","tier":"sensitive","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-tool-fs-search","keys":["sampleOverCapGlobResults"],"path":"eval/cordis.yml"},{"id":"commands","tier":"sensitive","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-commands","keys":[],"path":"eval/cordis.yml"},{"id":"auto-review","tier":"normal","mode":"override","disabled":false,"replacesImplementation":true,"name":"../lib/index.js","keys":[],"path":"eval/cordis.yml"}],"jsExpressions":3,"clientPlatform":"web","parseErrors":[]},"capabilities":["agent-control","browser-ui","environment","filesystem","host-bundle","network","session","subprocess","telemetry"],"outboundHosts":[],"findings":[{"id":"HT-CONFIG-001","title":"Cordis 配置包含可执行 !!js 表达式","severity":"medium","confidence":"high","layer":"dsh-semantics","path":"eval/cordis.yml","pathClass":"cordis","line":63,"evidence":"!!js \"process.env.DSH_EVAL_SESSIONS_ROOT ?? dshHomePath('sessions')\"","remediation":"!!js 是 DSH 的官方配置机制；只在表达式引入模块、访问进程或网络时需要额外解释。","note":"表达式访问模块、进程或网络，超出读取注入服务的常规用法","hash":"6764bb7e31c50f51e5c8b85d"},{"id":"HT-CONFIG-001","title":"Cordis 配置包含可执行 !!js 表达式","severity":"medium","confidence":"high","layer":"dsh-semantics","path":"eval/cordis.yml","pathClass":"cordis","line":64,"evidence":"!!js \"process.env.DSH_EVAL_SESSION_COMPRESSION ?? 'none'\"","remediation":"!!js 是 DSH 的官方配置机制；只在表达式引入模块、访问进程或网络时需要额外解释。","note":"表达式访问模块、进程或网络，超出读取注入服务的常规用法","hash":"0689263515b204ea056bbf2a"},{"id":"HT-INSTALL-001","title":"安装阶段执行高风险生命周期脚本","severity":"high","confidence":"low","layer":"supply-chain","path":"package.json","pathClass":"manifest","line":114,"evidence":"\"install\": \"docs/omdsh-evidence/install.md\"","remediation":"移除安装期执行，或提供可复现构建产物并将脚本降为显式命令。","hash":"9def3ff5ee3cc39bc4fc64e3","review":{"verdict":"placeholder","reason":"该字段是 dshWorkshop.evidence.install 指向的文档路径说明，并非 npm scripts.install 生命周期钩子，不会被执行。","model":"sonnet","reviewedAt":"2026-08-21T10:47:09.578Z"}},{"id":"HT-INSTALL-002","title":"Git 安装会触发 prepare 构建脚本","severity":"medium","confidence":"low","layer":"supply-chain","path":"package.json","pathClass":"manifest","line":208,"evidence":"\"prepare\": \"node scripts/prepare.mjs\"","remediation":"发布预构建制品（npm 或 GitHub Release tarball），并记录源码与发布包的一致性证明。","note":"该插件以 npm/tarball 预构建方式分发，prepare 不在用户机器上执行","hash":"fe611574a2e9dd5156aca68d"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"scripts/prepare.mjs","pathClass":"source","line":7,"evidence":"spawnSync","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"a25b2e787ff1f6e5fc685d33"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"scripts/prepare.mjs","pathClass":"source","line":7,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"7f1b508b50e536d42221f442"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"scripts/smoke-package.mjs","pathClass":"source","line":11,"evidence":"spawnSync","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"80faa980f7c5629c40b2d6ba"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"scripts/smoke-package.mjs","pathClass":"source","line":11,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"0979e7ee1664b570d5ea6ddf"},{"id":"HT-RUNTIME-001","title":"动态代码执行","severity":"high","confidence":"low","layer":"static","path":"src/eval/report.ts","pathClass":"source","line":106,"evidence":"eval (","remediation":"使用静态模块和受约束的配置解析器，避免在宿主权限下执行动态字符串。","note":"出现在字符串或注释中","hash":"ad20b877d6b95620bc224dd8"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"low","layer":"static","path":"test/composition.spec.ts","pathClass":"test-example-docs","line":14,"evidence":"spawnSync","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","note":"位于测试、示例或文档目录","hash":"36ed0e6ebbc9a1c01ff7d9d3"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"low","layer":"static","path":"test/composition.spec.ts","pathClass":"test-example-docs","line":14,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","note":"位于测试、示例或文档目录","hash":"5235510b36c777191204a04e"},{"id":"HT-PERMISSION-002","title":"覆盖敏感宿主能力","severity":"medium","confidence":"medium","path":"eval/cordis.yml","line":37,"evidence":"override: id=settings name=@deepseek-ai/dsh-settings-file","remediation":"安全关键 seam 的替换必须逐项解释、最小化，并接受人工复核；用户安装前应知晓该能力被谁接管。","note":"替换实现 设置（settings）；该配置随包分发但未被 dsh.bundle 引用，只有用户手动应用时才生效","layer":"dsh-semantics","pathClass":"cordis","hash":"798fff7275154bb7d6a331a5"},{"id":"HT-PERMISSION-001","title":"覆盖安全关键宿主能力","severity":"medium","confidence":"medium","path":"eval/cordis.yml","line":40,"evidence":"override: id=credentials name=@deepseek-ai/dsh-credentials-local","remediation":"安全关键 seam 的替换必须逐项解释、最小化，并接受人工复核；用户安装前应知晓该能力被谁接管。","note":"替换实现 凭据存取（credentials）；该配置随包分发但未被 dsh.bundle 引用，只有用户手动应用时才生效","layer":"dsh-semantics","pathClass":"cordis","hash":"ca27b488f9a1c5a4a042616c","review":{"verdict":"functional","reason":"仅存在于 eval/cordis.yml，是 dsh-eval CLI 独立评测环境的组成部分，使用官方 @deepseek-ai/dsh-credentials-local，未被 dsh.bundle 引用，不影响用户主机 profile。","model":"sonnet","reviewedAt":"2026-08-21T13:16:27.078Z"}},{"id":"HT-PERMISSION-002","title":"覆盖敏感宿主能力","severity":"medium","confidence":"medium","path":"eval/cordis.yml","line":60,"evidence":"override: id=session-persistence-jsonl name=@deepseek-ai/dsh-session-persistence-jsonl config[root,compression]","remediation":"安全关键 seam 的替换必须逐项解释、最小化，并接受人工复核；用户安装前应知晓该能力被谁接管。","note":"替换实现 会话持久化（session-persistence-jsonl）；该配置随包分发但未被 dsh.bundle 引用，只有用户手动应用时才生效","layer":"dsh-semantics","pathClass":"cordis","hash":"6ac65ba9db1eeb51c0cf5a7f"},{"id":"HT-PERMISSION-002","title":"覆盖敏感宿主能力","severity":"medium","confidence":"medium","path":"eval/cordis.yml","line":68,"evidence":"override: id=session-projection name=@deepseek-ai/dsh-session-projection","remediation":"安全关键 seam 的替换必须逐项解释、最小化，并接受人工复核；用户安装前应知晓该能力被谁接管。","note":"替换实现 session-projection；该配置随包分发但未被 dsh.bundle 引用，只有用户手动应用时才生效","layer":"dsh-semantics","pathClass":"cordis","hash":"2a53ce4c7a442ced53eb0dc5"},{"id":"HT-PERMISSION-002","title":"覆盖敏感宿主能力","severity":"medium","confidence":"medium","path":"eval/cordis.yml","line":72,"evidence":"override: id=subagent name=@deepseek-ai/dsh-subagent","remediation":"安全关键 seam 的替换必须逐项解释、最小化，并接受人工复核；用户安装前应知晓该能力被谁接管。","note":"替换实现 subagent；该配置随包分发但未被 dsh.bundle 引用，只有用户手动应用时才生效","layer":"dsh-semantics","pathClass":"cordis","hash":"d34c1036f29e54d8df03b74f"},{"id":"HT-PERMISSION-002","title":"覆盖敏感宿主能力","severity":"medium","confidence":"medium","path":"eval/cordis.yml","line":74,"evidence":"override: id=subagent-spawn-in-process name=@deepseek-ai/dsh-subagent-spawn-in-process config[providerName]","remediation":"安全关键 seam 的替换必须逐项解释、最小化，并接受人工复核；用户安装前应知晓该能力被谁接管。","note":"替换实现 subagent-spawn-in-process；该配置随包分发但未被 dsh.bundle 引用，只有用户手动应用时才生效","layer":"dsh-semantics","pathClass":"cordis","hash":"174fdf83a2d5e46264514a92"},{"id":"HT-PERMISSION-002","title":"覆盖敏感宿主能力","severity":"medium","confidence":"medium","path":"eval/cordis.yml","line":79,"evidence":"override: id=subagent-fork-in-process name=@deepseek-ai/dsh-subagent-fork-in-process config[providerName]","remediation":"安全关键 seam 的替换必须逐项解释、最小化，并接受人工复核；用户安装前应知晓该能力被谁接管。","note":"替换实现 subagent-fork-in-process；该配置随包分发但未被 dsh.bundle 引用，只有用户手动应用时才生效","layer":"dsh-semantics","pathClass":"cordis","hash":"ed672096b1f51f0fb6bf26ef"},{"id":"HT-PERMISSION-001","title":"覆盖安全关键宿主能力","severity":"medium","confidence":"medium","path":"eval/cordis.yml","line":86,"evidence":"override: id=approval name=@deepseek-ai/dsh-user-approval config[policy]","remediation":"安全关键 seam 的替换必须逐项解释、最小化，并接受人工复核；用户安装前应知晓该能力被谁接管。","note":"替换实现 工具审批（approval）；该配置随包分发但未被 dsh.bundle 引用，只有用户手动应用时才生效","layer":"dsh-semantics","pathClass":"cordis","hash":"8fd44572c3c6664ae8f0001d","review":{"verdict":"functional","reason":"policy: never 是评测 CLI 的严格 fail-closed 无人值守策略（拒绝而非放行），与插件声明的 fail-closed 语义一致，仅在手动运行 dsh-eval 时生效。","model":"sonnet","reviewedAt":"2026-08-21T13:16:27.078Z"}},{"id":"HT-PERMISSION-001","title":"覆盖安全关键宿主能力","severity":"medium","confidence":"medium","path":"eval/cordis.yml","line":92,"evidence":"override: id=sandbox name=@deepseek-ai/dsh-sandbox-local","remediation":"安全关键 seam 的替换必须逐项解释、最小化，并接受人工复核；用户安装前应知晓该能力被谁接管。","note":"替换实现 命令沙箱（sandbox）；该配置随包分发但未被 dsh.bundle 引用，只有用户手动应用时才生效","layer":"dsh-semantics","pathClass":"cordis","hash":"eb24b6fce72de7e254edb73b","review":{"verdict":"functional","reason":"使用官方 @deepseek-ai/dsh-sandbox-local，为独立评测组合提供文件效果边界，非替换用户主机 sandbox 实现。","model":"sonnet","reviewedAt":"2026-08-21T13:16:27.078Z"}},{"id":"HT-PERMISSION-001","title":"覆盖安全关键宿主能力","severity":"medium","confidence":"medium","path":"eval/cordis.yml","line":94,"evidence":"override: id=sandbox-policy name=@deepseek-ai/dsh-sandbox-policy config[mode,workspaceRoot]","remediation":"安全关键 seam 的替换必须逐项解释、最小化，并接受人工复核；用户安装前应知晓该能力被谁接管。","note":"替换实现 沙箱策略（sandbox-policy）；该配置随包分发但未被 dsh.bundle 引用，只有用户手动应用时才生效","layer":"dsh-semantics","pathClass":"cordis","hash":"ce1119da4f5ca23edb4b5f3f","review":{"verdict":"functional","reason":"sandbox-policy 设为 workspace-write 且 workspaceRoot 限定在 DSH_EVAL_WORKSPACE_ROOT/cwd，权限范围受限，是评测沙箱的必要配置。","model":"sonnet","reviewedAt":"2026-08-21T13:16:27.078Z"}},{"id":"HT-PERMISSION-001","title":"覆盖安全关键宿主能力","severity":"medium","confidence":"medium","path":"eval/cordis.yml","line":103,"evidence":"override: id=subprocess name=@deepseek-ai/dsh-subprocess-local","remediation":"安全关键 seam 的替换必须逐项解释、最小化，并接受人工复核；用户安装前应知晓该能力被谁接管。","note":"替换实现 子进程执行（subprocess）；该配置随包分发但未被 dsh.bundle 引用，只有用户手动应用时才生效","layer":"dsh-semantics","pathClass":"cordis","hash":"4e9edb1b8c2108da74a7fdaf","review":{"verdict":"functional","reason":"官方 @deepseek-ai/dsh-subprocess-local 用于评测环境中 ripgrep 等托管子进程，非隐藏的宿主级子进程劫持。","model":"sonnet","reviewedAt":"2026-08-21T13:16:27.078Z"}},{"id":"HT-PERMISSION-001","title":"覆盖安全关键宿主能力","severity":"medium","confidence":"medium","path":"eval/cordis.yml","line":109,"evidence":"override: id=fs-observation-policy name=@deepseek-ai/dsh-fs-observation-policy","remediation":"安全关键 seam 的替换必须逐项解释、最小化，并接受人工复核；用户安装前应知晓该能力被谁接管。","note":"替换实现 文件可见性策略（fs-observation-policy）；该配置随包分发但未被 dsh.bundle 引用，只有用户手动应用时才生效","layer":"dsh-semantics","pathClass":"cordis","hash":"e7756e1c7bbda5c79935d126","review":{"verdict":"functional","reason":"官方 @deepseek-ai/dsh-fs-observation-policy 组件，是评测组合内文件可见性策略的标准挂载，未覆盖用户实际 profile。","model":"sonnet","reviewedAt":"2026-08-21T13:16:27.078Z"}},{"id":"HT-PERMISSION-002","title":"覆盖敏感宿主能力","severity":"medium","confidence":"medium","path":"eval/cordis.yml","line":112,"evidence":"override: id=tool-fs name=@deepseek-ai/dsh-tool-fs","remediation":"安全关键 seam 的替换必须逐项解释、最小化，并接受人工复核；用户安装前应知晓该能力被谁接管。","note":"替换实现 文件工具（tool-fs）；该配置随包分发但未被 dsh.bundle 引用，只有用户手动应用时才生效","layer":"dsh-semantics","pathClass":"cordis","hash":"bf9c54c92f2a9206002e7084"},{"id":"HT-PERMISSION-002","title":"覆盖敏感宿主能力","severity":"medium","confidence":"medium","path":"eval/cordis.yml","line":115,"evidence":"override: id=tool-fs-search name=@deepseek-ai/dsh-tool-fs-search config[sampleOverCapGlobResults]","remediation":"安全关键 seam 的替换必须逐项解释、最小化，并接受人工复核；用户安装前应知晓该能力被谁接管。","note":"替换实现 tool-fs-search；该配置随包分发但未被 dsh.bundle 引用，只有用户手动应用时才生效","layer":"dsh-semantics","pathClass":"cordis","hash":"bd8a01685249db5331b42675"},{"id":"HT-PERMISSION-002","title":"覆盖敏感宿主能力","severity":"medium","confidence":"medium","path":"eval/cordis.yml","line":122,"evidence":"override: id=commands name=@deepseek-ai/dsh-commands","remediation":"安全关键 seam 的替换必须逐项解释、最小化，并接受人工复核；用户安装前应知晓该能力被谁接管。","note":"替换实现 commands；该配置随包分发但未被 dsh.bundle 引用，只有用户手动应用时才生效","layer":"dsh-semantics","pathClass":"cordis","hash":"bcdbadabe7a99c2e2c3f9551"}],"counts":{"critical":0,"high":0,"medium":17,"low":4},"rawCounts":{"critical":0,"high":2,"medium":18,"low":6},"vulnerabilities":[],"coverage":{"source":"complete","manifest":"complete","bundleConfig":"complete","dependencies":"lockfile-present","vulnerabilities":"complete","identity":"complete","artifact":"not-compared","llmReview":"complete","dynamicRuntime":"not-run","humanReview":"not-run"},"inventory":{"filesScanned":92,"bytesScanned":966310,"truncated":false,"lockfiles":["pnpm-lock.yaml"],"pathClasses":{"test-example-docs":39,"markdown":11,"source":34,"cordis":2,"yaml":3,"manifest":1,"data":2}},"limitations":["此结果为源码静态检测，不等同于无漏洞证明。","尚未比对 npm 发布包与源码的一致性，也未执行隔离运行和人工复核。","危险能力可能是插件功能所需，需结合用途与证据人工判断。"],"limitationKeys":["static-analysis-only","no-artifact-runtime-human-review","capability-needs-context"],"review":{"model":"sonnet","reviewedAt":"2026-08-21T13:16:27.078Z","summary":"六条命中均位于 eval/cordis.yml，这是随包分发但独立于 dsh.bundle 的 dsh-eval CLI 自测评测组合，仅在用户手动运行该 CLI 时生效，不会覆盖用户真实主机 profile 的 credentials/approval/sandbox 等安全关键行。所有被“覆盖”的能力均使用官方 @deepseek-ai 包，approval 设为 never（更严格的拒绝而非放行），sandbox 限定在工作区根目录内，符合插件自述的 fail-closed、只读审查语义。真正影响用户主机的是 cordis.patch.yml，其中仅插入 auto-review 应答器并将 bash/write 工具审批交给 AI 复核，human 兜底未被短路，与描述一致。需用户注意：一旦启用该插件，bash 与 write 工具的审批将由第二模型自动裁决，若未添加 edit 到 overrides 则 edit 仍走人工。","intentMatch":"consistent","findingsReviewed":7,"findingsCandidates":7,"fromCache":1,"usage":{"inputTokens":2,"outputTokens":2510,"costUsd":0.11704200000000001,"durationMs":31780}}},"timeline":[{"scannedAt":"2026-08-21T13:16:27.078Z","commit":"252e5b098db2b501e1055c4b882c3b2c6b6db31f","policyVersion":"HT-DSH-0.2.2","verdict":"caution","status":"static-complete"},{"scannedAt":"2026-08-21T13:16:09.783Z","commit":"252e5b098db2b501e1055c4b882c3b2c6b6db31f","policyVersion":"HT-DSH-0.2.2","verdict":"caution","status":"static-complete"},{"scannedAt":"2026-08-21T11:19:22.928Z","commit":"252e5b098db2b501e1055c4b882c3b2c6b6db31f","policyVersion":"HT-DSH-0.2.1","verdict":"caution","status":"static-complete"},{"scannedAt":"2026-08-21T10:47:09.578Z","commit":"252e5b098db2b501e1055c4b882c3b2c6b6db31f","policyVersion":"HT-DSH-0.2.0","verdict":"caution","status":"static-complete"}],"events":[{"kind":"policy-change","from":"HT-DSH-0.2.1","to":"HT-DSH-0.2.2","commit":"252e5b098db2b501e1055c4b882c3b2c6b6db31f","policyVersion":"HT-DSH-0.2.2","at":"2026-08-21T13:16:09.783Z"},{"kind":"policy-change","from":"HT-DSH-0.2.0","to":"HT-DSH-0.2.1","commit":"252e5b098db2b501e1055c4b882c3b2c6b6db31f","policyVersion":"HT-DSH-0.2.1","at":"2026-08-21T11:19:22.928Z"},{"kind":"first-scan","from":null,"to":"caution","commit":"252e5b098db2b501e1055c4b882c3b2c6b6db31f","policyVersion":"HT-DSH-0.2.0","at":"2026-08-21T10:47:09.578Z"}]}