{"schemaVersion":2,"dataVersion":"20260822T105549Z-0a0b366f","generatedAt":"2026-08-22T10:55:49.138Z","source":{"id":"qimidandapigu-ai","slug":"qimidandapigu-ai","rank":356,"url":"https://github.com/qimidandapigu/dsh-xiaotangyuan-game/tree/main/apps/harness-plugin","name":"qimidandapigu/单机游戏内 AI 同伴「小汤圆」","category":"fun","description":{"zh":"单机游戏内 AI 同伴「小汤圆」：理解游戏画面，支持文字或按住说话交流并语音回复；现已支持《星露谷物语》，《饥荒联机版》和《缺氧》正在迁移接入。","en":"XiaoTangYuan, an in-game AI companion for single-player games: understands the game screen, chats by text or push-to-talk, and speaks replies aloud; Stardew Valley is supported, with Don't Starve Together and Oxygen Not Included integrations in progress."},"stars":8,"starsCheckedAt":"2026-08-21","repository":{"owner":"qimidandapigu","repo":"dsh-xiaotangyuan-game","requestedRef":"main","subpath":"apps/harness-plugin"},"npm":null,"downloads":null,"installMode":"tarball","upstreamInstall":"dsh plugin --profile web add \"https://github.com/qimidandapigu/dsh-xiaotangyuan-game/releases/download/plugin-v0.5.1/qimidandapigu-dsh-xiaotangyuan-game-0.5.1.tgz\"","tarball":"https://github.com/qimidandapigu/dsh-xiaotangyuan-game/releases/download/plugin-v0.5.1/qimidandapigu-dsh-xiaotangyuan-game-0.5.1.tgz","added":"2026-08-18","page":"https://awesome-dsh-plugin.com/p/qimidandapigu/dsh-xiaotangyuan-game--apps-harness-plugin/","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":"qimidandapigu-ai","slug":"qimidandapigu-ai","policyVersion":"HT-DSH-0.2.2","scannedAt":"2026-08-22T08:24:07.245Z","scanStatus":"static-complete","verdict":"caution","score":94,"commit":"25b85506af144f3b5e7f04e498e6296f1469f2c9","commitDate":"2026-08-21T00:28:44+08:00","artifactDigest":"sha256:dff2a2ddb180e389ce3d39419f12a4c76dcf42d9a65c9b46bad14edb295b0a40","downloadUrl":"https://github.com/qimidandapigu/dsh-xiaotangyuan-game/archive/25b85506af144f3b5e7f04e498e6296f1469f2c9.tar.gz","installMode":"tarball","installCommand":"dsh plugin --profile web add \"https://github.com/qimidandapigu/dsh-xiaotangyuan-game/releases/download/plugin-v0.5.1/qimidandapigu-dsh-xiaotangyuan-game-0.5.1.tgz\"","manifest":{"found":true,"path":"package.json","parseError":null,"packageName":"@qimidandapigu/dsh-xiaotangyuan-game","packageVersion":"0.7.6","bundle":{"patch":"./cordis.patch.yml"},"client":null,"lifecycleScripts":{},"peerDependencies":["@deepseek-ai/cordis","@deepseek-ai/dsh-agent","@deepseek-ai/dsh-agent-default-model","@deepseek-ai/dsh-attachment","@deepseek-ai/dsh-credentials","@deepseek-ai/dsh-llm","@deepseek-ai/dsh-session","@deepseek-ai/dsh-tools"]},"identity":{"status":"not-published","installMode":"tarball","upstreamNpm":null,"manifestName":"@qimidandapigu/dsh-xiaotangyuan-game","nameMatch":null,"npm":null,"repositoryMatch":"not-checked","provenance":"not-checked","tarballHost":"github-release"},"permissions":{"bundlePatch":"cordis.patch.yml","inserts":[{"id":"xiaotangyuan-game","name":"@qimidandapigu/dsh-xiaotangyuan-game","path":"cordis.patch.yml","disabled":false}],"overrides":[],"jsExpressions":0,"clientPlatform":null,"parseErrors":[]},"capabilities":["agent-control","browser-ui","credentials","environment","filesystem","host-bundle","network","session","subprocess"],"outboundHosts":[{"host":"openspeech.bytedance.com","count":4},{"host":"xiaotangyuan-feedback-receiver.qimidandapigu-xiaotangyuan-feedback-receiver.workers.dev","count":1},{"host":"api.github.com","count":1},{"host":"www.curseforge.com","count":1}],"findings":[{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"src/installation/dont-starve-together.ts","pathClass":"source","line":1,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"b522d450b74a2dd81b02a879"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"src/installation/stardew-valley.ts","pathClass":"source","line":1,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"5f9e16b0c4e5432c4351739e"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"low","layer":"static","path":"src/runtime/media/windows-media-host.ts","pathClass":"test-example-docs","line":1,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","note":"位于测试、示例或文档目录","hash":"4c4f67fb05e9d1650bcc8ec3"},{"id":"HT-DATA-001","title":"同一模块同时接触凭据与网络","severity":"high","confidence":"low","layer":"static","path":"src/runtime/feedback/signed-feedback-client.ts","pathClass":"source","line":66,"evidence":"credential access at line 66 + outbound network at line 101","remediation":"拆分能力边界，限定目的域名，并提供不会发送凭据值的可验证证明。","hash":"902944ee1dc490f76a4cf658","review":{"verdict":"sanitized","reason":"credentialRef 对应的密钥仅用于 createHmac('sha256', secret) 生成签名（第33行），密钥本身从不随请求外发，仅用户填写的反馈文本被发往固定 feedback.endpoint，未构成凭据泄露。","model":"sonnet@p2","reviewedAt":"2026-08-21T11:25:20.561Z"}},{"id":"HT-DATA-001","title":"同一模块同时接触凭据与网络","severity":"medium","confidence":"medium","layer":"static","path":"src/runtime/speech/volcengine-speech-provider.ts","pathClass":"source","line":176,"evidence":"credential access at line 176 + outbound network at line 220","remediation":"拆分能力边界，限定目的域名，并提供不会发送凭据值的可验证证明。","hash":"63e8e3e629c5746b6d4111f5","review":{"verdict":"functional","reason":"apiKey() 取用户配置的 VOLCENGINE_API_KEY 并放入 x-api-key 请求头（第191行）发送给 credentialRef 指定的火山引擎语音服务，是实现语音识别/合成功能的必要行为。","model":"sonnet@p2","reviewedAt":"2026-08-21T11:25:20.561Z"}}],"counts":{"critical":0,"high":0,"medium":1,"low":2},"rawCounts":{"critical":0,"high":1,"medium":1,"low":3},"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":43,"bytesScanned":275120,"truncated":false,"lockfiles":[],"pathClasses":{"markdown":1,"cordis":1,"manifest":1,"source":27,"test-example-docs":12,"data":1}},"limitations":["此结果为源码静态检测，不等同于无漏洞证明。","尚未比对 npm 发布包与源码的一致性，也未执行隔离运行和人工复核。","危险能力可能是插件功能所需，需结合用途与证据人工判断。"],"limitationKeys":["static-analysis-only","no-artifact-runtime-human-review","capability-needs-context"],"review":{"model":"sonnet","reviewedAt":"2026-08-22T08:24:07.245Z","summary":null,"intentMatch":null,"findingsReviewed":2,"findingsCandidates":2,"fromCache":2,"usage":null}},"timeline":[{"scannedAt":"2026-08-22T08:24:07.245Z","commit":"25b85506af144f3b5e7f04e498e6296f1469f2c9","policyVersion":"HT-DSH-0.2.2","verdict":"caution","status":"static-complete"},{"scannedAt":"2026-08-21T11:25:20.561Z","commit":"25b85506af144f3b5e7f04e498e6296f1469f2c9","policyVersion":"HT-DSH-0.2.1","verdict":"caution","status":"static-complete"},{"scannedAt":"2026-08-21T10:53:53.927Z","commit":"25b85506af144f3b5e7f04e498e6296f1469f2c9","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":"25b85506af144f3b5e7f04e498e6296f1469f2c9","policyVersion":"HT-DSH-0.2.2","at":"2026-08-22T08:24:07.245Z"},{"kind":"policy-change","from":"HT-DSH-0.2.0","to":"HT-DSH-0.2.1","commit":"25b85506af144f3b5e7f04e498e6296f1469f2c9","policyVersion":"HT-DSH-0.2.1","at":"2026-08-21T11:25:20.561Z"},{"kind":"first-scan","from":null,"to":"caution","commit":"25b85506af144f3b5e7f04e498e6296f1469f2c9","policyVersion":"HT-DSH-0.2.0","at":"2026-08-21T10:53:53.927Z"}]}