{"schemaVersion":2,"dataVersion":"20260822T105549Z-0a0b366f","generatedAt":"2026-08-22T10:55:49.138Z","source":{"id":"wuxiangru915-dsh-review-loop","slug":"wuxiangru915-dsh-review-loop","rank":1043,"url":"https://github.com/wuxiangru915/dsh-review-loop","name":"wuxiangru915/dsh-review-loop","category":"git","description":{"zh":"增量代码审查插件：批准一批改动后只审查检查点之后的新改动，提供 Web 审查面板与 `/review` 命令，并把审查意见注入回 agent。","en":"Incremental diff reviewer for DSH: after approving a batch, only new changes since the checkpoint are shown, with a Web review panel and `/review` command that inject feedback back to the agent."},"stars":2,"starsCheckedAt":"2026-08-21","repository":{"owner":"wuxiangru915","repo":"dsh-review-loop","requestedRef":null,"subpath":""},"npm":null,"downloads":null,"installMode":"github-source","upstreamInstall":"dsh plugin --profile web add github:wuxiangru915/dsh-review-loop","tarball":null,"added":"2026-08-16","page":"https://awesome-dsh-plugin.com/p/wuxiangru915/dsh-review-loop/","screenshots":["https://raw.githubusercontent.com/wuxiangru915/dsh-review-loop/master/assets/review-panel.en.png","https://raw.githubusercontent.com/wuxiangru915/dsh-review-loop/master/assets/review-panel.zh.png"],"discovery":{"provider":"awesome-dsh-plugin","channel":"plugins.json","indexUrl":"https://github.com/awesome-dsh-plugin/awesome-dsh-plugin","selection":"all curated entries"}},"report":{"sourceId":"wuxiangru915-dsh-review-loop","slug":"wuxiangru915-dsh-review-loop","policyVersion":"HT-DSH-0.2.2","scannedAt":"2026-08-22T08:31:05.327Z","scanStatus":"static-complete","verdict":"pass","score":99,"commit":"eb4190498ef76daec21dfcf5c24c44f337a61ed3","commitDate":"2026-08-21T19:16:29+08:00","artifactDigest":"sha256:37769b600a68d533c45c312235fde72103f7e61cf14261c967f07806691e6ee9","downloadUrl":"https://github.com/wuxiangru915/dsh-review-loop/archive/eb4190498ef76daec21dfcf5c24c44f337a61ed3.tar.gz","installMode":"github-source","installCommand":"dsh plugin --profile web add github:wuxiangru915/dsh-review-loop","manifest":{"found":true,"path":"package.json","parseError":null,"packageName":"@dsh-plugin/dsh-review-loop","packageVersion":"0.1.0","bundle":{"patch":"./cordis.patch.yml"},"client":{"platform":"web","inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-slots","@deepseek-ai/dsh-client-locale"]},"lifecycleScripts":{},"peerDependencies":["@deepseek-ai/cordis","@deepseek-ai/dsh-agent","@deepseek-ai/dsh-commands","@deepseek-ai/dsh-host-webserver","@deepseek-ai/dsh-llm","@deepseek-ai/dsh-session","@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-slots","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-ui-conversation","@deepseek-ai/dsh-client-ui-primitives"]},"identity":{"status":"not-published","installMode":"github-source","upstreamNpm":null,"manifestName":"@dsh-plugin/dsh-review-loop","nameMatch":null,"npm":null,"repositoryMatch":"not-checked","provenance":"not-checked","tarballHost":null},"permissions":{"bundlePatch":"cordis.patch.yml","inserts":[{"id":"review-loop","name":"@dsh-plugin/dsh-review-loop","path":"cordis.patch.yml","disabled":false}],"overrides":[],"jsExpressions":0,"clientPlatform":"web","parseErrors":[]},"capabilities":["browser-ui","environment","filesystem","host-bundle","network","session","subprocess","telemetry"],"outboundHosts":[],"findings":[{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"lib/index.mjs","pathClass":"source","line":5,"evidence":"spawnSync","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"c71b1161a2a15c530b21b7cd"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"lib/index.mjs","pathClass":"source","line":5,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"6ad413e2de7cabee66887976"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"src/git.ts","pathClass":"source","line":2,"evidence":"spawnSync","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"f2620169d580d80c213dcd6e"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"src/git.ts","pathClass":"source","line":7,"evidence":"spawnSync","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"f2620169d580d80c213dcd6e"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"low","layer":"static","path":"tests/review-loop.spec.ts","pathClass":"test-example-docs","line":1,"evidence":"execSync","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","note":"位于测试、示例或文档目录","hash":"053742a3d7fa5afcfaec1d95"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"low","layer":"static","path":"tests/review-loop.spec.ts","pathClass":"test-example-docs","line":1,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","note":"位于测试、示例或文档目录","hash":"3ee74eeb7eefb6d2c93bd83b"}],"counts":{"critical":0,"high":0,"medium":0,"low":4},"rawCounts":{"critical":0,"high":0,"medium":0,"low":6},"vulnerabilities":[],"coverage":{"source":"complete","manifest":"complete","bundleConfig":"complete","dependencies":"lockfile-present","vulnerabilities":"complete","identity":"complete","artifact":"not-compared","llmReview":"not-needed","dynamicRuntime":"not-run","humanReview":"not-run"},"inventory":{"filesScanned":18,"bytesScanned":134052,"truncated":false,"lockfiles":["pnpm-lock.yaml"],"pathClasses":{"markdown":2,"cordis":1,"source":11,"manifest":1,"yaml":1,"test-example-docs":1,"data":1}},"limitations":["此结果为源码静态检测，不等同于无漏洞证明。","尚未比对 npm 发布包与源码的一致性，也未执行隔离运行和人工复核。","危险能力可能是插件功能所需，需结合用途与证据人工判断。"],"limitationKeys":["static-analysis-only","no-artifact-runtime-human-review","capability-needs-context"]},"timeline":[{"scannedAt":"2026-08-22T08:31:05.327Z","commit":"eb4190498ef76daec21dfcf5c24c44f337a61ed3","policyVersion":"HT-DSH-0.2.2","verdict":"pass","status":"static-complete"},{"scannedAt":"2026-08-21T11:34:31.038Z","commit":"eb4190498ef76daec21dfcf5c24c44f337a61ed3","policyVersion":"HT-DSH-0.2.1","verdict":"pass","status":"static-complete"},{"scannedAt":"2026-08-21T11:03:24.831Z","commit":"fc67d8ae8d5989fd35625b7305f5c2634cc6b85b","policyVersion":"HT-DSH-0.2.0","verdict":"pass","status":"static-complete"}],"events":[{"kind":"policy-change","from":"HT-DSH-0.2.1","to":"HT-DSH-0.2.2","commit":"eb4190498ef76daec21dfcf5c24c44f337a61ed3","policyVersion":"HT-DSH-0.2.2","at":"2026-08-22T08:31:05.327Z"},{"kind":"policy-change","from":"HT-DSH-0.2.0","to":"HT-DSH-0.2.1","commit":"eb4190498ef76daec21dfcf5c24c44f337a61ed3","policyVersion":"HT-DSH-0.2.1","at":"2026-08-21T11:34:31.038Z"},{"kind":"first-scan","from":null,"to":"pass","commit":"fc67d8ae8d5989fd35625b7305f5c2634cc6b85b","policyVersion":"HT-DSH-0.2.0","at":"2026-08-21T11:03:24.831Z"}]}