{"schemaVersion":2,"dataVersion":"20260822T105549Z-0a0b366f","generatedAt":"2026-08-22T10:55:49.138Z","source":{"id":"ll-cmyk-so-dsh-balance-widget","slug":"ll-cmyk-so-dsh-balance-widget","rank":1073,"url":"https://github.com/LL-cmyk-so/dsh-balance-widget","name":"LL-cmyk-so/dsh-balance-widget","category":"usage","description":{"zh":"DSH Web GUI 的余额与成本小部件：侧边栏底部卡片显示账户余额、剩余比例条与今日花费；点击展开四层级成本明细（最近提问 / 本会话 / 今日·本项目 / 今日·全部），带名词解释与一键充值入口。零依赖，兼容 Node 24。","en":"A balance and cost widget for the DSH web GUI: a sidebar footer card shows the account balance, a remaining-ratio bar and today costs; clicking opens a four-tier cost breakdown (last prompt / this session / today-this-project / today-all) with term explanations and a one-click top-up link. Zero external dependencies, works on Node 24."},"stars":1,"starsCheckedAt":"2026-08-21","repository":{"owner":"LL-cmyk-so","repo":"dsh-balance-widget","requestedRef":null,"subpath":""},"npm":"dsh-balance-widget","downloads":1488,"installMode":"npm","upstreamInstall":"dsh plugin --profile web add dsh-balance-widget","tarball":null,"added":"2026-08-20","page":"https://awesome-dsh-plugin.com/p/LL-cmyk-so/dsh-balance-widget/","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":"ll-cmyk-so-dsh-balance-widget","slug":"ll-cmyk-so-dsh-balance-widget","policyVersion":"HT-DSH-0.2.2","scannedAt":"2026-08-22T08:31:23.709Z","scanStatus":"static-complete","verdict":"caution","score":94,"commit":"ea2db425f35605660c9d1ac043802251393c47f6","commitDate":"2026-08-18T22:37:23+08:00","artifactDigest":"sha256:15f1fffde9c60b1590a269df2c6780ce2234b7a74b8a51433517ec89cb1ac019","downloadUrl":"https://github.com/LL-cmyk-so/dsh-balance-widget/archive/ea2db425f35605660c9d1ac043802251393c47f6.tar.gz","installMode":"npm","installCommand":"dsh plugin --profile web add dsh-balance-widget","manifest":{"found":true,"path":"package.json","parseError":null,"packageName":"dsh-balance-widget","packageVersion":"0.4.5","bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-conversation"],"platform":"web"},"lifecycleScripts":{},"peerDependencies":[]},"identity":{"status":"found","installMode":"npm","upstreamNpm":"dsh-balance-widget","manifestName":"dsh-balance-widget","nameMatch":true,"npm":{"name":"dsh-balance-widget","latestVersion":"0.4.5","publishedAt":"2026-08-18T14:39:23.448Z","createdAt":"2026-08-18T09:50:39.644Z","versionCount":11,"maintainers":1,"repository":"git+https://github.com/LL-cmyk-so/dsh-balance-widget.git","hasInstallScripts":false,"deprecated":false},"repositoryMatch":"match","provenance":"none","tarballHost":null,"versionMatch":"match"},"permissions":{"bundlePatch":"cordis.patch.yml","inserts":[{"id":"balance-widget","name":"dsh-balance-widget","path":"cordis.patch.yml","disabled":false}],"overrides":[],"jsExpressions":0,"clientPlatform":"web","parseErrors":[]},"capabilities":["browser-ui","credentials","environment","filesystem","host-bundle","network","subprocess"],"outboundHosts":[{"host":"platform.deepseek.com","count":1},{"host":"api.deepseek.com","count":1},{"host":"api-docs.deepseek.com","count":1}],"findings":[{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"lib/index.js","pathClass":"source","line":419,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"89dedaa9e6429e9e52b8af60"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"lib/index.js","pathClass":"source","line":442,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"89dedaa9e6429e9e52b8af60"},{"id":"HT-DATA-001","title":"同一模块同时接触凭据与网络","severity":"medium","confidence":"medium","layer":"static","path":"lib/index.js","pathClass":"source","line":162,"evidence":"credential access at line 162 + outbound network at line 202","remediation":"拆分能力边界，限定目的域名，并提供不会发送凭据值的可验证证明。","hash":"58cd225b39c582266b23d99d","review":{"verdict":"functional","reason":"resolveApiKey经credentials.resolve/launchEnvironment/process.env取得DeepSeek API Key后仅用于向官方/user/balance端点发起请求，是余额小部件核心功能且请求入口受loopback+guard限制。","model":"sonnet","reviewedAt":"2026-08-22T08:31:23.709Z"}}],"counts":{"critical":0,"high":0,"medium":1,"low":2},"rawCounts":{"critical":0,"high":0,"medium":1,"low":2},"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":6,"bytesScanned":76996,"truncated":false,"lockfiles":[],"pathClasses":{"markdown":2,"cordis":1,"source":2,"manifest":1}},"limitations":["此结果为源码静态检测，不等同于无漏洞证明。","尚未比对 npm 发布包与源码的一致性，也未执行隔离运行和人工复核。","危险能力可能是插件功能所需，需结合用途与证据人工判断。"],"limitationKeys":["static-analysis-only","no-artifact-runtime-human-review","capability-needs-context"],"review":{"model":"sonnet","reviewedAt":"2026-08-22T08:31:23.709Z","summary":"该插件声称为DSH侧边栏余额/成本小部件，代码通过宿主credentials服务或环境变量解析用户自己的DeepSeek API Key，仅用于查询官方DeepSeek /user/balance接口，并以loopback+guard限制本地HTTP接口访问，行为与描述一致；需注意API Key解析优先级链及本地HTTP服务访问控制是否足够严格。","intentMatch":"consistent","findingsReviewed":1,"findingsCandidates":1,"fromCache":0,"usage":{"inputTokens":6,"outputTokens":1420,"costUsd":0.0338368,"durationMs":17992}}},"timeline":[{"scannedAt":"2026-08-22T08:31:23.709Z","commit":"ea2db425f35605660c9d1ac043802251393c47f6","policyVersion":"HT-DSH-0.2.2","verdict":"caution","status":"static-complete"},{"scannedAt":"2026-08-21T11:34:55.715Z","commit":"ea2db425f35605660c9d1ac043802251393c47f6","policyVersion":"HT-DSH-0.2.1","verdict":"review","status":"static-complete"},{"scannedAt":"2026-08-21T11:03:49.745Z","commit":"ea2db425f35605660c9d1ac043802251393c47f6","policyVersion":"HT-DSH-0.2.0","verdict":"caution","status":"static-complete"}],"events":[{"kind":"verdict-change","from":"review","to":"caution","commit":"ea2db425f35605660c9d1ac043802251393c47f6","policyVersion":"HT-DSH-0.2.2","at":"2026-08-22T08:31:23.709Z"},{"kind":"verdict-change","from":"caution","to":"review","commit":"ea2db425f35605660c9d1ac043802251393c47f6","policyVersion":"HT-DSH-0.2.1","at":"2026-08-21T11:34:55.715Z"},{"kind":"first-scan","from":null,"to":"caution","commit":"ea2db425f35605660c9d1ac043802251393c47f6","policyVersion":"HT-DSH-0.2.0","at":"2026-08-21T11:03:49.745Z"}]}