{"schemaVersion":2,"dataVersion":"20260822T105549Z-0a0b366f","generatedAt":"2026-08-22T10:55:49.138Z","source":{"id":"jyh20030112-dsh-visual-plugin","slug":"jyh20030112-dsh-visual-plugin","rank":282,"url":"https://github.com/jyh20030112/dsh-visual-plugin","name":"jyh20030112/dsh-visual-plugin","category":"vision","description":{"zh":"给纯文本模型装上眼睛：把用户图片转发给任意 OpenAI 兼容的视觉模型生成描述，并在 Web UI 右侧面板展示结果。","en":"Gives text-only models vision: forwards user images to an OpenAI-compatible vision model and shows the descriptions in a Web UI right panel."},"stars":10,"starsCheckedAt":"2026-08-21","repository":{"owner":"jyh20030112","repo":"dsh-visual-plugin","requestedRef":null,"subpath":""},"npm":null,"downloads":null,"installMode":"github-source","upstreamInstall":"dsh plugin --profile web add github:jyh20030112/dsh-visual-plugin","tarball":null,"added":"2026-08-15","page":"https://awesome-dsh-plugin.com/p/jyh20030112/dsh-visual-plugin/","screenshots":["https://raw.githubusercontent.com/jyh20030112/dsh-visual-plugin/main/assets/screenshots/screenshot-1.png","https://raw.githubusercontent.com/jyh20030112/dsh-visual-plugin/main/assets/screenshots/screenshot-2.png","https://raw.githubusercontent.com/jyh20030112/dsh-visual-plugin/main/assets/screenshots/screenshot-3.png","https://raw.githubusercontent.com/jyh20030112/dsh-visual-plugin/main/assets/screenshots/screenshot-4.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":"jyh20030112-dsh-visual-plugin","slug":"jyh20030112-dsh-visual-plugin","policyVersion":"HT-DSH-0.2.2","scannedAt":"2026-08-22T08:23:10.647Z","scanStatus":"static-complete","verdict":"caution","score":94,"commit":"87aafef73b0cc5b591d0628bb5ae1049dcf16639","commitDate":"2026-08-21T18:47:50+08:00","artifactDigest":"sha256:ebf804b40e8dd13a07038bb89c13438fc402919a46bd3ac7ea61fa8ddcb72af3","downloadUrl":"https://github.com/jyh20030112/dsh-visual-plugin/archive/87aafef73b0cc5b591d0628bb5ae1049dcf16639.tar.gz","installMode":"github-source","installCommand":"dsh plugin --profile web add github:jyh20030112/dsh-visual-plugin","manifest":{"found":true,"path":"package.json","parseError":null,"packageName":"dsh-visual-plugin","packageVersion":"0.3.0-beta.0","bundle":{"patch":"./cordis.patch.yml"},"client":{"platform":"web","inject":["slots","connection","locale","@deepseek-ai/dsh-client-ui-conversation","@deepseek-ai/dsh-client-ui-settings-plugins"]},"lifecycleScripts":{},"peerDependencies":["@deepseek-ai/cordis","@deepseek-ai/schemastery","@deepseek-ai/dsh-tools","@deepseek-ai/dsh-settings","@deepseek-ai/dsh-credentials","@deepseek-ai/dsh-attachment","@deepseek-ai/dsh-host-webserver","@deepseek-ai/dsh-llm","@deepseek-ai/dsh-system-prompt","@deepseek-ai/dsh-invariants","@deepseek-ai/dsh-agent","@deepseek-ai/dsh-session","@deepseek-ai/dsh-client-ui-conversation","@deepseek-ai/dsh-client-ui-settings-plugins"]},"identity":{"status":"found","installMode":"github-source","upstreamNpm":null,"manifestName":"dsh-visual-plugin","nameMatch":null,"npm":{"name":"dsh-visual-plugin","latestVersion":"0.2.8","publishedAt":"2026-08-21T03:57:41.325Z","createdAt":"2026-08-14T06:59:26.935Z","versionCount":12,"maintainers":1,"repository":null,"hasInstallScripts":false,"deprecated":false},"repositoryMatch":"missing","provenance":"none","tarballHost":null,"versionMatch":"differs"},"permissions":{"bundlePatch":"cordis.patch.yml","inserts":[{"id":"vision-bridge","name":"dsh-visual-plugin","path":"cordis.patch.yml","disabled":false}],"overrides":[],"jsExpressions":0,"clientPlatform":"web","parseErrors":[]},"capabilities":["agent-control","browser-ui","credentials","environment","filesystem","host-bundle","network","session","subprocess"],"outboundHosts":[{"host":"api.deepseek.com","count":6}],"findings":[{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"lib/index.js","pathClass":"source","line":12,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"89dedaa9e6429e9e52b8af60"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"src/video/process-runner.ts","pathClass":"source","line":1,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"db7adb6049a8cc63bd636278"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"low","layer":"static","path":"tests/video-media-engine.test.mjs","pathClass":"test-example-docs","line":2,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","note":"位于测试、示例或文档目录","hash":"9794bc45fa49e68ebe3b523e"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"low","layer":"static","path":"tests/video-process-runner.test.mjs","pathClass":"test-example-docs","line":15,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","note":"位于测试、示例或文档目录","hash":"f77a48f20da109ff45e21e6a"},{"id":"HT-DATA-001","title":"同一模块同时接触凭据与网络","severity":"medium","confidence":"medium","layer":"static","path":"lib/index.js","pathClass":"source","line":2118,"evidence":"credential access at line 2118 + outbound network at line 129","remediation":"拆分能力边界，限定目的域名，并提供不会发送凭据值的可验证证明。","hash":"8257486c28deaa5776d39e00","review":{"verdict":"functional","reason":"credentials.resolve读取用户在设置面板配置的apiKeyEnv对应密钥，随后连同用户配置的url/model一起通过describeImage发往用户自定义的视觉模型端点，属于插件核心功能所必需的凭据使用与网络请求。","model":"sonnet@p2","reviewedAt":"2026-08-21T11:22:56.850Z"}}],"counts":{"critical":0,"high":0,"medium":1,"low":2},"rawCounts":{"critical":0,"high":0,"medium":1,"low":4},"vulnerabilities":[],"coverage":{"source":"complete","manifest":"complete","bundleConfig":"complete","dependencies":"lockfile-missing","vulnerabilities":"lockfile-missing","identity":"complete","artifact":"not-compared","llmReview":"complete","dynamicRuntime":"not-run","humanReview":"not-run"},"inventory":{"filesScanned":109,"bytesScanned":594578,"truncated":false,"lockfiles":[],"pathClasses":{"test-example-docs":19,"markdown":5,"cordis":1,"source":81,"manifest":1,"script":1,"data":1}},"limitations":["此结果为源码静态检测，不等同于无漏洞证明。","尚未比对 npm 发布包与源码的一致性，也未执行隔离运行和人工复核。","危险能力可能是插件功能所需，需结合用途与证据人工判断。"],"limitationKeys":["static-analysis-only","no-artifact-runtime-human-review","capability-needs-context"],"review":{"model":"sonnet","reviewedAt":"2026-08-22T08:23:10.647Z","summary":null,"intentMatch":null,"findingsReviewed":1,"findingsCandidates":1,"fromCache":1,"usage":null}},"timeline":[{"scannedAt":"2026-08-22T08:23:10.647Z","commit":"87aafef73b0cc5b591d0628bb5ae1049dcf16639","policyVersion":"HT-DSH-0.2.2","verdict":"caution","status":"static-complete"},{"scannedAt":"2026-08-21T11:22:56.850Z","commit":"87aafef73b0cc5b591d0628bb5ae1049dcf16639","policyVersion":"HT-DSH-0.2.1","verdict":"caution","status":"static-complete"},{"scannedAt":"2026-08-21T10:51:40.018Z","commit":"87aafef73b0cc5b591d0628bb5ae1049dcf16639","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":"87aafef73b0cc5b591d0628bb5ae1049dcf16639","policyVersion":"HT-DSH-0.2.2","at":"2026-08-22T08:23:10.647Z"},{"kind":"policy-change","from":"HT-DSH-0.2.0","to":"HT-DSH-0.2.1","commit":"87aafef73b0cc5b591d0628bb5ae1049dcf16639","policyVersion":"HT-DSH-0.2.1","at":"2026-08-21T11:22:56.850Z"},{"kind":"first-scan","from":null,"to":"caution","commit":"87aafef73b0cc5b591d0628bb5ae1049dcf16639","policyVersion":"HT-DSH-0.2.0","at":"2026-08-21T10:51:40.018Z"}]}