{"schemaVersion":2,"dataVersion":"20260822T105549Z-0a0b366f","generatedAt":"2026-08-22T10:55:49.138Z","source":{"id":"dickpy-dsh-imagegen","slug":"dickpy-dsh-imagegen","rank":269,"url":"https://github.com/dickpy/dsh-imagegen","name":"dickpy/dsh-imagegen","category":"vision","description":{"zh":"面向 DSH Web GUI 的 AI 生图插件：通过可配置的 OpenAI 兼容端点（gpt-image-2 / gpt-image-1 / dall-e-3）实现文生图与图生图，提供 api_url/api_key 设置卡片与侧边栏分栏生图工作台。","en":"AI image generation for the DSH Web GUI: text-to-image and image-to-image through a configurable OpenAI-compatible endpoint (gpt-image-2 / gpt-image-1 / dall-e-3), with an api_url/api_key settings card and a sidebar split-pane generation studio."},"stars":10,"starsCheckedAt":"2026-08-21","repository":{"owner":"dickpy","repo":"dsh-imagegen","requestedRef":null,"subpath":""},"npm":"@dickpy/dsh-imagegen","downloads":1578,"installMode":"npm","upstreamInstall":"dsh plugin --profile web add @dickpy/dsh-imagegen","tarball":null,"added":"2026-08-16","page":"https://awesome-dsh-plugin.com/p/dickpy/dsh-imagegen/","screenshots":["https://raw.githubusercontent.com/dickpy/dsh-imagegen/main/docs/images/image-generation-studio.png","https://raw.githubusercontent.com/dickpy/dsh-imagegen/main/docs/images/plugin-settings.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":"dickpy-dsh-imagegen","slug":"dickpy-dsh-imagegen","policyVersion":"HT-DSH-0.2.2","scannedAt":"2026-08-22T08:23:00.931Z","scanStatus":"static-complete","verdict":"caution","score":94,"commit":"26e6520da8f788451338e7c31c2697fbc0c0935f","commitDate":"2026-08-22T00:41:44+08:00","artifactDigest":"sha256:77e53a3f868f3e171afa4c9f9c7544c40f5f5926a38a7304dfd1e3a75375dc5b","downloadUrl":"https://github.com/dickpy/dsh-imagegen/archive/26e6520da8f788451338e7c31c2697fbc0c0935f.tar.gz","installMode":"npm","installCommand":"dsh plugin --profile web add @dickpy/dsh-imagegen","manifest":{"found":true,"path":"package.json","parseError":null,"packageName":"@dickpy/dsh-imagegen","packageVersion":"1.0.20","bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-connection","@deepseek-ai/dsh-client-ui-settings"],"platform":"web"},"lifecycleScripts":{},"peerDependencies":[]},"identity":{"status":"found","installMode":"npm","upstreamNpm":"@dickpy/dsh-imagegen","manifestName":"@dickpy/dsh-imagegen","nameMatch":true,"npm":{"name":"@dickpy/dsh-imagegen","latestVersion":"1.0.9","publishedAt":"2026-08-19T15:12:07.027Z","createdAt":"2026-08-15T18:38:23.421Z","versionCount":9,"maintainers":1,"repository":"git+https://github.com/dickpy/dsh-imagegen.git","hasInstallScripts":false,"deprecated":false},"repositoryMatch":"match","provenance":"none","tarballHost":null,"versionMatch":"differs"},"permissions":{"bundlePatch":"cordis.patch.yml","inserts":[{"id":"imagegen","name":"@dickpy/dsh-imagegen","path":"cordis.patch.yml","disabled":false}],"overrides":[],"jsExpressions":0,"clientPlatform":"web","parseErrors":[]},"capabilities":["agent-control","browser-ui","credentials","environment","filesystem","host-bundle","network","subprocess"],"outboundHosts":[{"host":"api.openai.com","count":5},{"host":"vibeui.top","count":4},{"host":"example.test","count":2},{"host":"new.example","count":1},{"host":"api.github.com","count":1}],"findings":[{"id":"HT-RUNTIME-001","title":"动态代码执行","severity":"high","confidence":"low","layer":"static","path":"scripts/smoke.mjs","pathClass":"source","line":406,"evidence":"vm.runInNewContext(","remediation":"使用静态模块和受约束的配置解析器，避免在宿主权限下执行动态字符串。","hash":"5958d578a2a71a148c63d2e5","review":{"verdict":"placeholder","reason":"同上，line 540 同样出自 smoke.mjs 测试脚本，用 jsdom 沙箱回归测试客户端 bundle 的 UI 注册逻辑，不在插件实际运行路径中，不构成运行时风险。","model":"sonnet@p2","reviewedAt":"2026-08-21T11:23:30.302Z"}},{"id":"HT-RUNTIME-001","title":"动态代码执行","severity":"high","confidence":"low","layer":"static","path":"scripts/smoke.mjs","pathClass":"source","line":540,"evidence":"vm.runInNewContext(","remediation":"使用静态模块和受约束的配置解析器，避免在宿主权限下执行动态字符串。","hash":"5958d578a2a71a148c63d2e5","review":{"verdict":"placeholder","reason":"同上，line 540 同样出自 smoke.mjs 测试脚本，用 jsdom 沙箱回归测试客户端 bundle 的 UI 注册逻辑，不在插件实际运行路径中，不构成运行时风险。","model":"sonnet@p2","reviewedAt":"2026-08-21T11:23:30.302Z"}},{"id":"HT-CLIENT-001","title":"浏览器端使用危险 HTML 注入点","severity":"medium","confidence":"medium","layer":"static","path":"src/client/sidebar-entry.ts","pathClass":"source","line":54,"evidence":".innerHTML =","remediation":"使用安全 DOM API，并在不可避免时对不可信内容进行严格清洗。","hash":"c7b53ba2524f6b772c4b85cf"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"src/updater.ts","pathClass":"source","line":3,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"a2036ced4d86d38cc85868cf"}],"counts":{"critical":0,"high":0,"medium":1,"low":1},"rawCounts":{"critical":0,"high":2,"medium":1,"low":1},"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":37,"bytesScanned":1467710,"truncated":false,"lockfiles":["pnpm-lock.yaml"],"pathClasses":{"test-example-docs":4,"markdown":1,"cordis":1,"script":1,"manifest":1,"yaml":1,"source":27,"data":1}},"limitations":["此结果为源码静态检测，不等同于无漏洞证明。","尚未比对 npm 发布包与源码的一致性，也未执行隔离运行和人工复核。","危险能力可能是插件功能所需，需结合用途与证据人工判断。"],"limitationKeys":["static-analysis-only","no-artifact-runtime-human-review","capability-needs-context"],"review":{"model":"sonnet","reviewedAt":"2026-08-22T08:23:00.931Z","summary":null,"intentMatch":null,"findingsReviewed":2,"findingsCandidates":2,"fromCache":2,"usage":null}},"timeline":[{"scannedAt":"2026-08-22T08:23:00.931Z","commit":"26e6520da8f788451338e7c31c2697fbc0c0935f","policyVersion":"HT-DSH-0.2.2","verdict":"caution","status":"static-complete"},{"scannedAt":"2026-08-21T11:23:30.302Z","commit":"9807242f692c0b07999de75898ded787743dd920","policyVersion":"HT-DSH-0.2.1","verdict":"caution","status":"static-complete"},{"scannedAt":"2026-08-21T10:52:14.855Z","commit":"9807242f692c0b07999de75898ded787743dd920","policyVersion":"HT-DSH-0.2.0","verdict":"review","status":"static-complete"}],"events":[{"kind":"policy-change","from":"HT-DSH-0.2.1","to":"HT-DSH-0.2.2","commit":"26e6520da8f788451338e7c31c2697fbc0c0935f","policyVersion":"HT-DSH-0.2.2","at":"2026-08-22T08:23:00.931Z"},{"kind":"verdict-change","from":"review","to":"caution","commit":"9807242f692c0b07999de75898ded787743dd920","policyVersion":"HT-DSH-0.2.1","at":"2026-08-21T11:23:30.302Z"},{"kind":"first-scan","from":null,"to":"review","commit":"9807242f692c0b07999de75898ded787743dd920","policyVersion":"HT-DSH-0.2.0","at":"2026-08-21T10:52:14.855Z"}]}