{"schemaVersion":2,"dataVersion":"20260822T105549Z-0a0b366f","generatedAt":"2026-08-22T10:55:49.138Z","source":{"id":"1624318455-dsh-plugin-tts","slug":"1624318455-dsh-plugin-tts","rank":308,"url":"https://github.com/1624318455/dsh-plugin-tts","name":"1624318455/dsh-plugin-tts","category":"voice","description":{"zh":"用免费 Edge TTS 或你自己的 RVC 音色朗读 AI 回复：消息朗读与自动朗读、长文自适应分块渐进播放（无缝衔接）、音色包仓库一键安装、便携 RVC 运行时。","en":"Reads assistant replies aloud via free Edge TTS or your own RVC voice models: read-aloud buttons + auto-read, adaptive chunked progressive playback (gapless long reads), one-click voice-pack installs from a registry, and a portable RVC runtime."},"stars":9,"starsCheckedAt":"2026-08-21","repository":{"owner":"1624318455","repo":"dsh-plugin-tts","requestedRef":null,"subpath":""},"npm":null,"downloads":null,"installMode":"github-source","upstreamInstall":"dsh plugin --profile web add github:1624318455/dsh-plugin-tts","tarball":null,"added":"2026-08-15","page":"https://awesome-dsh-plugin.com/p/1624318455/dsh-plugin-tts/","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":"1624318455-dsh-plugin-tts","slug":"1624318455-dsh-plugin-tts","policyVersion":"HT-DSH-0.2.2","scannedAt":"2026-08-22T08:23:29.949Z","scanStatus":"static-complete","verdict":"caution","score":94,"commit":"136ed935bcaa741e623164dd7f9328f1bfce5481","commitDate":"2026-08-19T14:13:15+08:00","artifactDigest":"sha256:80e48ced186f8e7ec48316dcd4df4d482837e236c96a299fc533cc146628be1a","downloadUrl":"https://github.com/1624318455/dsh-plugin-tts/archive/136ed935bcaa741e623164dd7f9328f1bfce5481.tar.gz","installMode":"github-source","installCommand":"dsh plugin --profile web add github:1624318455/dsh-plugin-tts","manifest":{"found":true,"path":"package.json","parseError":null,"packageName":"@dsh-external/dsh-plugin-tts","packageVersion":"0.3.0","bundle":{"patch":"./cordis.patch.yml"},"client":{"platform":"web","inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-slots"]},"lifecycleScripts":{},"peerDependencies":["@deepseek-ai/cordis","@deepseek-ai/dsh-web"]},"identity":{"status":"not-published","installMode":"github-source","upstreamNpm":null,"manifestName":"@dsh-external/dsh-plugin-tts","nameMatch":null,"npm":null,"repositoryMatch":"not-checked","provenance":"not-checked","tarballHost":null},"permissions":{"bundlePatch":"cordis.patch.yml","inserts":[{"id":"tts","name":"@dsh-external/dsh-plugin-tts","path":"cordis.patch.yml","disabled":false}],"overrides":[],"jsExpressions":0,"clientPlatform":"web","parseErrors":[]},"capabilities":["browser-ui","environment","filesystem","host-bundle","network","subprocess"],"outboundHosts":[{"host":"download.pytorch.org","count":1},{"host":"mirrors.aliyun.com","count":1}],"findings":[{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"lib/index.mjs","pathClass":"source","line":13,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"6ad413e2de7cabee66887976"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"rvc-server.py","pathClass":"source","line":228,"evidence":"subprocess.run","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"a1e5da06fd47efbffce2223d"},{"id":"HT-RUNTIME-001","title":"动态代码执行","severity":"high","confidence":"low","layer":"static","path":"tests/client-load.mjs","pathClass":"test-example-docs","line":90,"evidence":"new Function(","remediation":"使用静态模块和受约束的配置解析器，避免在宿主权限下执行动态字符串。","note":"位于测试、示例或文档目录","hash":"39fdcdb734368c450ab51461"},{"id":"HT-RUNTIME-001","title":"动态代码执行","severity":"high","confidence":"low","layer":"static","path":"tests/client-load.mjs","pathClass":"test-example-docs","line":106,"evidence":"new Function(","remediation":"使用静态模块和受约束的配置解析器，避免在宿主权限下执行动态字符串。","note":"位于测试、示例或文档目录","hash":"39fdcdb734368c450ab51461"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"low","layer":"static","path":"tests/package-runtime-patch.mjs","pathClass":"test-example-docs","line":7,"evidence":"execFileSync","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","note":"位于测试、示例或文档目录","hash":"553f1a922400dbf3ae6deac9"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"low","layer":"static","path":"tests/package-runtime-patch.mjs","pathClass":"test-example-docs","line":7,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","note":"位于测试、示例或文档目录","hash":"7feeda030a74df02ea6c634f"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"low","layer":"static","path":"tests/rvc-server-live.mjs","pathClass":"test-example-docs","line":16,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","note":"位于测试、示例或文档目录","hash":"79c79e83eee42774e3a7920d"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"low","layer":"static","path":"tests/smoke.mjs","pathClass":"test-example-docs","line":9,"evidence":"execFileSync","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","note":"位于测试、示例或文档目录","hash":"ba86361c08192440af853e21"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"low","layer":"static","path":"tests/smoke.mjs","pathClass":"test-example-docs","line":9,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","note":"位于测试、示例或文档目录","hash":"419b7a5472563763f3266798"},{"id":"HT-RUNTIME-001","title":"动态代码执行","severity":"medium","confidence":"medium","layer":"static","path":"tools/gen-ui-preview.mjs","pathClass":"source","line":125,"evidence":"new Function(","remediation":"使用静态模块和受约束的配置解析器，避免在宿主权限下执行动态字符串。","hash":"454cf9ff8bb353f1a9bac8fc","review":{"verdict":"functional","reason":"该 new Function 位于 tools/gen-ui-preview.mjs 开发预览脚本中，仅在本地 mock window/document 环境执行插件自身构建产物 CLIENT，不加载远程或用户输入代码，不属于插件运行时发布路径。","model":"sonnet@p2","reviewedAt":"2026-08-21T11:24:44.282Z"}}],"counts":{"critical":0,"high":0,"medium":1,"low":2},"rawCounts":{"critical":0,"high":2,"medium":1,"low":7},"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":30,"bytesScanned":459736,"truncated":false,"lockfiles":[],"pathClasses":{"test-example-docs":11,"markdown":9,"cordis":1,"source":6,"manifest":1,"yaml":1,"script":1}},"limitations":["此结果为源码静态检测，不等同于无漏洞证明。","尚未比对 npm 发布包与源码的一致性，也未执行隔离运行和人工复核。","危险能力可能是插件功能所需，需结合用途与证据人工判断。"],"limitationKeys":["static-analysis-only","no-artifact-runtime-human-review","capability-needs-context"],"review":{"model":"sonnet","reviewedAt":"2026-08-22T08:23:29.949Z","summary":null,"intentMatch":null,"findingsReviewed":1,"findingsCandidates":1,"fromCache":1,"usage":null}},"timeline":[{"scannedAt":"2026-08-22T08:23:29.949Z","commit":"136ed935bcaa741e623164dd7f9328f1bfce5481","policyVersion":"HT-DSH-0.2.2","verdict":"caution","status":"static-complete"},{"scannedAt":"2026-08-21T11:24:44.282Z","commit":"136ed935bcaa741e623164dd7f9328f1bfce5481","policyVersion":"HT-DSH-0.2.1","verdict":"caution","status":"static-complete"},{"scannedAt":"2026-08-21T10:53:30.455Z","commit":"136ed935bcaa741e623164dd7f9328f1bfce5481","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":"136ed935bcaa741e623164dd7f9328f1bfce5481","policyVersion":"HT-DSH-0.2.2","at":"2026-08-22T08:23:29.949Z"},{"kind":"policy-change","from":"HT-DSH-0.2.0","to":"HT-DSH-0.2.1","commit":"136ed935bcaa741e623164dd7f9328f1bfce5481","policyVersion":"HT-DSH-0.2.1","at":"2026-08-21T11:24:44.282Z"},{"kind":"first-scan","from":null,"to":"caution","commit":"136ed935bcaa741e623164dd7f9328f1bfce5481","policyVersion":"HT-DSH-0.2.0","at":"2026-08-21T10:53:30.455Z"}]}