{"schemaVersion":2,"dataVersion":"20260822T105549Z-0a0b366f","generatedAt":"2026-08-22T10:55:49.138Z","source":{"id":"lzszq-dsh-scholar","slug":"lzszq-dsh-scholar","rank":155,"url":"https://github.com/lzszq/dsh-scholar","name":"lzszq/dsh-scholar","category":"tools","description":{"zh":"学术助手插件。","en":"Academic assistant plugin."},"stars":25,"starsCheckedAt":"2026-08-21","repository":{"owner":"lzszq","repo":"dsh-scholar","requestedRef":null,"subpath":""},"npm":null,"downloads":null,"installMode":"github-source","upstreamInstall":"dsh plugin --profile web add github:lzszq/dsh-scholar","tarball":null,"added":"2026-08-13","page":"https://awesome-dsh-plugin.com/p/lzszq/dsh-scholar/","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":"lzszq-dsh-scholar","slug":"lzszq-dsh-scholar","policyVersion":"HT-DSH-0.2.2","scannedAt":"2026-08-22T08:21:35.931Z","scanStatus":"static-complete","verdict":"caution","score":89,"commit":"76bfe960e9107a992dae506c3ebc298a99f57760","commitDate":"2026-08-20T22:51:16+08:00","artifactDigest":"sha256:26add2af7039d49ef5627984e1c7b7394fade4ea01a1792490569fe570412621","downloadUrl":"https://github.com/lzszq/dsh-scholar/archive/76bfe960e9107a992dae506c3ebc298a99f57760.tar.gz","installMode":"github-source","installCommand":"dsh plugin --profile web add github:lzszq/dsh-scholar","manifest":{"found":true,"path":"package.json","parseError":null,"packageName":"@dsh-scholar/research-plugin","packageVersion":"0.1.0","bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-connection","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-conversation","@deepseek-ai/dsh-client-ui-settings-plugins","@deepseek-ai/dsh-client-ui-settings"],"platform":"web"},"lifecycleScripts":{"prepare":"pnpm run build"},"peerDependencies":["@deepseek-ai/cordis","@deepseek-ai/schemastery","@deepseek-ai/dsh-commands","@deepseek-ai/dsh-client-connection","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-conversation","@deepseek-ai/dsh-client-ui-settings-plugins","@deepseek-ai/dsh-client-ui-settings","@deepseek-ai/dsh-client-ui-slots","@deepseek-ai/dsh-llm","@deepseek-ai/dsh-settings","@deepseek-ai/dsh-skill-filesystem","@deepseek-ai/dsh-tools","@deepseek-ai/dsh-user-questions"]},"identity":{"status":"not-published","installMode":"github-source","upstreamNpm":null,"manifestName":"@dsh-scholar/research-plugin","nameMatch":null,"npm":null,"repositoryMatch":"not-checked","provenance":"not-checked","tarballHost":null},"permissions":{"bundlePatch":"cordis.patch.yml","inserts":[{"id":"tool-cordis","name":"@deepseek-ai/dsh-tool-cordis","path":"configs/research-dev-selfmod.cordis.yml","disabled":false},{"id":"research-plugin","name":"@dsh-scholar/research-plugin","path":"configs/research-headless.cordis.yml","disabled":false},{"id":"research-skill","name":"@deepseek-ai/dsh-skill-filesystem","path":"configs/research-headless.cordis.yml","disabled":false},{"id":"research-plugin","name":"@dsh-scholar/research-plugin","path":"configs/research-web.cordis.yml","disabled":false},{"id":"research-skill","name":"@deepseek-ai/dsh-skill-filesystem","path":"configs/research-web.cordis.yml","disabled":false},{"id":"research-plugin","name":"@dsh-scholar/research-plugin","path":"cordis.patch.yml","disabled":false}],"overrides":[],"jsExpressions":0,"clientPlatform":"web","parseErrors":[]},"capabilities":["agent-control","browser-ui","credentials","environment","filesystem","host-bundle","network","subprocess","telemetry"],"outboundHosts":[{"host":"mineru.net","count":5},{"host":"api.crossref.org","count":2},{"host":"dsh-scholar.dev","count":1},{"host":"api.openalex.org","count":1},{"host":"export.arxiv.org","count":1}],"findings":[{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"evals/mnist-readme/capture-screenshots.mjs","pathClass":"source","line":4,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"6e556fbf5f8664752c8e8586"},{"id":"HT-INSTALL-002","title":"Git 安装会触发 prepare 构建脚本","severity":"medium","confidence":"medium","layer":"supply-chain","path":"package.json","pathClass":"manifest","line":50,"evidence":"\"prepare\": \"pnpm run build\"","remediation":"发布预构建制品（npm 或 GitHub Release tarball），并记录源码与发布包的一致性证明。","note":"源码安装需用户在 allowBuilds 中授权，此脚本会在安装期于用户机器执行","hash":"34d0fb2d8cc8e5494b8298cf"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"packages/research-kernel/src/pty-local.ts","pathClass":"source","line":45,"evidence":"spawnSync","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"f7b1629c31d227742be92ceb"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"packages/research-kernel/src/pty-local.ts","pathClass":"source","line":45,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"b855001350a38c1a1835c765"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"packages/research-kernel/src/sidecar-lifecycle.ts","pathClass":"source","line":17,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"380f5036d1b337ac0732acba"},{"id":"HT-INSTALL-002","title":"Git 安装会触发 prepare 构建脚本","severity":"medium","confidence":"medium","layer":"supply-chain","path":"plugins/research-core/.dsh-plugin/package.json","pathClass":"manifest","line":12,"evidence":"\"prepare\": \"dsh-plugin-prepare\"","remediation":"发布预构建制品（npm 或 GitHub Release tarball），并记录源码与发布包的一致性证明。","note":"源码安装需用户在 allowBuilds 中授权，此脚本会在安装期于用户机器执行","hash":"ae304e9dec161d7eb4fd9a8f"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"scripts/verify-docs.mjs","pathClass":"source","line":185,"evidence":"execFileSync","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"bcf62396228666b6b88216cb"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"scripts/verify-docs.mjs","pathClass":"source","line":185,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"1ae47455939cb6a8efb6d9a0"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"src/plugin/workspace-patch.ts","pathClass":"source","line":10,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"ea0e51138f969e11ff2d8176"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"low","layer":"static","path":"tests/browser/ocr-settings-layout.mjs","pathClass":"test-example-docs","line":4,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","note":"位于测试、示例或文档目录","hash":"96bd5fa8b9c4ca3ae3b0d223"},{"id":"HT-SECRET-001","title":"疑似硬编码凭据","severity":"critical","confidence":"low","layer":"static","path":"tests/unit/intake.test.ts","pathClass":"test-example-docs","line":179,"evidence":"AKIAABCDEFGHIJKLMNOP","remediation":"立即吊销凭据，并改用 DSH credentials 服务或环境引用。","note":"包含占位/示例词汇；位于测试、示例或文档目录","hash":"b56e6e9bc342c53001a63f9e"},{"id":"HT-SECRET-001","title":"疑似硬编码凭据","severity":"critical","confidence":"low","layer":"static","path":"tests/unit/intake.test.ts","pathClass":"test-example-docs","line":189,"evidence":"AKIAABCDEFGHIJKLMNOP","remediation":"立即吊销凭据，并改用 DSH credentials 服务或环境引用。","note":"包含占位/示例词汇；位于测试、示例或文档目录","hash":"b56e6e9bc342c53001a63f9e"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"low","layer":"static","path":"tests/unit/packaging.test.ts","pathClass":"test-example-docs","line":17,"evidence":"execFileSync","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","note":"位于测试、示例或文档目录","hash":"ad2ae745bac24bc7a6b249ae"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"low","layer":"static","path":"tests/unit/packaging.test.ts","pathClass":"test-example-docs","line":17,"evidence":"spawnSync","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","note":"位于测试、示例或文档目录","hash":"13b644c74aa5fc19d1cac8a1"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"low","layer":"static","path":"tests/unit/private-registry-harness.test.ts","pathClass":"test-example-docs","line":2,"evidence":"spawnSync","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","note":"位于测试、示例或文档目录","hash":"b07ebb5f017b7bd333171f67"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"low","layer":"static","path":"tests/unit/private-registry-harness.test.ts","pathClass":"test-example-docs","line":2,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","note":"位于测试、示例或文档目录","hash":"ef38864fab92e3c9f89e2c5d"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"low","layer":"static","path":"tests/unit/pty-local.test.ts","pathClass":"test-example-docs","line":17,"evidence":"spawnSync","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","note":"位于测试、示例或文档目录","hash":"123a608833ea52b42ed7eeb7"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"low","layer":"static","path":"tests/unit/pty-local.test.ts","pathClass":"test-example-docs","line":17,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","note":"位于测试、示例或文档目录","hash":"5d3b6ee6c7cee01e0ac3cfaa"},{"id":"HT-SECRET-001","title":"疑似硬编码凭据","severity":"critical","confidence":"low","layer":"static","path":"tests/unit/research-panel.test.ts","pathClass":"test-example-docs","line":281,"evidence":"-----BEGIN PRIVATE KEY-----","remediation":"立即吊销凭据，并改用 DSH credentials 服务或环境引用。","note":"位于测试、示例或文档目录","hash":"d6b196e156a350ab9de25a97"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"low","layer":"static","path":"tests/unit/security.test.ts","pathClass":"test-example-docs","line":224,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","note":"位于测试、示例或文档目录","hash":"176768d1bf531ece7202f8af"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"low","layer":"static","path":"tests/unit/sidecar.test.ts","pathClass":"test-example-docs","line":22,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","note":"位于测试、示例或文档目录","hash":"659b06aa01bc75d8d561732d"},{"id":"HT-SECRET-001","title":"疑似硬编码凭据","severity":"critical","confidence":"low","layer":"static","path":"tests/unit/trajectory.test.ts","pathClass":"test-example-docs","line":171,"evidence":"xoxb-abcdefghijklmnopqrst","remediation":"立即吊销凭据，并改用 DSH credentials 服务或环境引用。","note":"包含占位/示例词汇；位于测试、示例或文档目录","hash":"a9b735f34a4666ceee22d719"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"workers/runner-gateway/src/docker-preflight.ts","pathClass":"source","line":1,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"381b413c46fb88c794dc2c8a"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"workers/runner-gateway/src/index.ts","pathClass":"source","line":15,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"d357fbc6050e290ad4a32054"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"workers/runner-gateway/src/remote-agent.ts","pathClass":"source","line":38,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"6eee6cfb48a1e489f6807feb"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"workers/runner-gateway/src/ssh-bootstrap.ts","pathClass":"source","line":9,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"438507cb84c3244e09d902c7"},{"id":"HT-DATA-001","title":"同一模块同时接触凭据与网络","severity":"medium","confidence":"medium","layer":"static","path":"workers/research-orchestrator/src/engine.ts","pathClass":"source","line":382,"evidence":"credential access at line 382 + outbound network at line 411","remediation":"拆分能力边界，限定目的域名，并提供不会发送凭据值的可验证证明。","hash":"002e232ccc725affead58ad4","review":{"verdict":"functional","reason":"第382行从环境变量读取DSH_SCHOLAR_ORCHESTRATOR_TOKEN凭证，仅用于向本地Research Kernel(127.0.0.1:7412)发送请求时鉴权，属于与自身本地后端通信的必要功能。","model":"sonnet","reviewedAt":"2026-08-22T08:21:35.931Z"}}],"counts":{"critical":0,"high":0,"medium":3,"low":11},"rawCounts":{"critical":4,"high":0,"medium":3,"low":20},"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":479,"bytesScanned":9030317,"truncated":false,"lockfiles":["pnpm-lock.yaml"],"pathClasses":{"test-example-docs":158,"markdown":39,"data":16,"yaml":3,"cordis":4,"script":33,"source":195,"manifest":11,"i18n":20}},"limitations":["此结果为源码静态检测，不等同于无漏洞证明。","尚未比对 npm 发布包与源码的一致性，也未执行隔离运行和人工复核。","危险能力可能是插件功能所需，需结合用途与证据人工判断。"],"limitationKeys":["static-analysis-only","no-artifact-runtime-human-review","capability-needs-context"],"review":{"model":"sonnet","reviewedAt":"2026-08-22T08:21:35.931Z","summary":"该插件为科研自动化编排器，Engine类从环境变量或文件读取token，用于与本地Research Kernel sidecar通信鉴权，凭据流向用户自身配置的本地服务而非第三方，属于插件宣称功能的正常组成部分，未见凭据外泄。","intentMatch":"consistent","findingsReviewed":1,"findingsCandidates":1,"fromCache":0,"usage":{"inputTokens":8,"outputTokens":2675,"costUsd":0.054240000000000003,"durationMs":33532}}},"timeline":[{"scannedAt":"2026-08-22T08:21:35.931Z","commit":"76bfe960e9107a992dae506c3ebc298a99f57760","policyVersion":"HT-DSH-0.2.2","verdict":"caution","status":"static-complete"},{"scannedAt":"2026-08-21T11:20:56.902Z","commit":"76bfe960e9107a992dae506c3ebc298a99f57760","policyVersion":"HT-DSH-0.2.1","verdict":"review","status":"static-complete"},{"scannedAt":"2026-08-21T10:48:57.414Z","commit":"76bfe960e9107a992dae506c3ebc298a99f57760","policyVersion":"HT-DSH-0.2.0","verdict":"review","status":"static-complete"}],"events":[{"kind":"verdict-change","from":"review","to":"caution","commit":"76bfe960e9107a992dae506c3ebc298a99f57760","policyVersion":"HT-DSH-0.2.2","at":"2026-08-22T08:21:35.931Z"},{"kind":"policy-change","from":"HT-DSH-0.2.0","to":"HT-DSH-0.2.1","commit":"76bfe960e9107a992dae506c3ebc298a99f57760","policyVersion":"HT-DSH-0.2.1","at":"2026-08-21T11:20:56.902Z"},{"kind":"first-scan","from":null,"to":"review","commit":"76bfe960e9107a992dae506c3ebc298a99f57760","policyVersion":"HT-DSH-0.2.0","at":"2026-08-21T10:48:57.414Z"}]}