{"schemaVersion":2,"dataVersion":"20260822T105549Z-0a0b366f","generatedAt":"2026-08-22T10:55:49.138Z","source":{"id":"perrylink-dsh-memento","slug":"perrylink-dsh-memento","rank":88,"url":"https://github.com/PerryLink/dsh-memento","name":"PerryLink/dsh-memento","category":"memory","description":{"zh":"有界、分层、带审批门、可审计的跨会话记忆：`ctx.memory` 服务 + 零依赖 SQLite 存储 + `memory` 工具与冻结快照注入，并预演 dsh-memory-protocol v1——适配器注册表与可分发的一致性套件。","en":"Bounded, layered, approval-gated, auditable cross-session memory: a typed `ctx.memory` seam with a zero-dependency SQLite provider, a `memory` tool, and frozen snapshot injection, plus the dsh-memory-protocol v1 rehearsal with an adapter registry and a distributable conformance suite."},"stars":59,"starsCheckedAt":"2026-08-21","repository":{"owner":"PerryLink","repo":"dsh-memento","requestedRef":null,"subpath":""},"npm":"dsh-memento","downloads":1292,"installMode":"npm","upstreamInstall":"dsh plugin --profile web add dsh-memento","tarball":null,"added":"2026-08-14","page":"https://awesome-dsh-plugin.com/p/PerryLink/dsh-memento/","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":"perrylink-dsh-memento","slug":"perrylink-dsh-memento","policyVersion":"HT-DSH-0.2.2","scannedAt":"2026-08-22T08:20:39.095Z","scanStatus":"static-complete","verdict":"caution","score":94,"commit":"6a87b7e67ac5487598c591b5f17204aa30496dc5","commitDate":"2026-08-21T12:31:48+08:00","artifactDigest":"sha256:f549af6f92a04b7c2be08e1d90485fa50f0d01d741ba5e1e86ae44b47002d679","downloadUrl":"https://github.com/PerryLink/dsh-memento/archive/6a87b7e67ac5487598c591b5f17204aa30496dc5.tar.gz","installMode":"npm","installCommand":"dsh plugin --profile web add dsh-memento","manifest":{"found":true,"path":"package.json","parseError":null,"packageName":"dsh-memento","packageVersion":"0.4.3","bundle":{"patch":"./cordis.patch.yml"},"client":{"platform":"web","immediately":true},"lifecycleScripts":{},"peerDependencies":["@deepseek-ai/cordis","@deepseek-ai/dsh-session","@deepseek-ai/dsh-tools","@deepseek-ai/schemastery"]},"identity":{"status":"found","installMode":"npm","upstreamNpm":"dsh-memento","manifestName":"dsh-memento","nameMatch":true,"npm":{"name":"dsh-memento","latestVersion":"0.4.3","publishedAt":"2026-08-21T05:56:29.440Z","createdAt":"2026-08-14T15:29:36.911Z","versionCount":7,"maintainers":1,"repository":"git+https://github.com/PerryLink/dsh-memento.git","hasInstallScripts":false,"deprecated":false},"repositoryMatch":"match","provenance":"none","tarballHost":null,"versionMatch":"match"},"permissions":{"bundlePatch":"cordis.patch.yml","inserts":[{"id":"memento","name":"dsh-memento","path":"cordis.patch.yml","disabled":false}],"overrides":[],"jsExpressions":0,"clientPlatform":"web","parseErrors":[]},"capabilities":["agent-control","browser-ui","environment","filesystem","host-bundle","network","session","subprocess"],"outboundHosts":[],"findings":[{"id":"HT-CLIENT-001","title":"浏览器端使用危险 HTML 注入点","severity":"medium","confidence":"medium","layer":"static","path":"client/client.js","pathClass":"source","line":104,"evidence":".innerHTML =","remediation":"使用安全 DOM API，并在不可避免时对不可信内容进行严格清洗。","hash":"98db7f5bee507f85c7d51135"},{"id":"HT-CLIENT-001","title":"浏览器端使用危险 HTML 注入点","severity":"medium","confidence":"medium","layer":"static","path":"client/client.js","pathClass":"source","line":150,"evidence":".innerHTML =","remediation":"使用安全 DOM API，并在不可避免时对不可信内容进行严格清洗。","hash":"98db7f5bee507f85c7d51135"},{"id":"HT-INSTALL-001","title":"安装阶段执行高风险生命周期脚本","severity":"high","confidence":"low","layer":"supply-chain","path":"package.json","pathClass":"manifest","line":100,"evidence":"\"install\": \"docs/OMDSH_REVIEW.md\"","remediation":"移除安装期执行，或提供可复现构建产物并将脚本降为显式命令。","hash":"7c81349919b16c3ba0d49931","review":{"verdict":"placeholder","reason":"命中的是dshWorkshop.evidence.install字段，值为文档路径docs/OMDSH_REVIEW.md，并非npm scripts.install生命周期钩子，实际scripts块中无install项，不会被npm执行。","model":"sonnet","reviewedAt":"2026-08-21T10:47:12.930Z"}},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"scripts/check-coverage.mjs","pathClass":"source","line":12,"evidence":"spawnSync","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"ab8aaa59ffa0833fe2a63cca"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"scripts/check-coverage.mjs","pathClass":"source","line":12,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"17366b6da2d245d3850d8484"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"scripts/verify-artifacts.mjs","pathClass":"source","line":4,"evidence":"execFileSync","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"309f2fc4707d8e487c23ef10"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"scripts/verify-artifacts.mjs","pathClass":"source","line":4,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"4d3264e6977950901b849b57"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"low","layer":"static","path":"test/composition.test.mjs","pathClass":"test-example-docs","line":9,"evidence":"spawnSync","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","note":"位于测试、示例或文档目录","hash":"17c4fefb916e28d3222089a2"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"low","layer":"static","path":"test/composition.test.mjs","pathClass":"test-example-docs","line":9,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","note":"位于测试、示例或文档目录","hash":"4983bc57545e54949d7e5ec4"}],"counts":{"critical":0,"high":0,"medium":2,"low":4},"rawCounts":{"critical":0,"high":1,"medium":2,"low":6},"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":72,"bytesScanned":670883,"truncated":false,"lockfiles":["package-lock.json"],"pathClasses":{"test-example-docs":29,"markdown":17,"source":22,"cordis":1,"data":2,"manifest":1}},"limitations":["此结果为源码静态检测，不等同于无漏洞证明。","尚未比对 npm 发布包与源码的一致性，也未执行隔离运行和人工复核。","危险能力可能是插件功能所需，需结合用途与证据人工判断。"],"limitationKeys":["static-analysis-only","no-artifact-runtime-human-review","capability-needs-context"],"review":{"model":"sonnet","reviewedAt":"2026-08-22T08:20:39.096Z","summary":null,"intentMatch":null,"findingsReviewed":1,"findingsCandidates":1,"fromCache":1,"usage":null}},"timeline":[{"scannedAt":"2026-08-22T08:20:39.095Z","commit":"6a87b7e67ac5487598c591b5f17204aa30496dc5","policyVersion":"HT-DSH-0.2.2","verdict":"caution","status":"static-complete"},{"scannedAt":"2026-08-21T11:19:25.161Z","commit":"6a87b7e67ac5487598c591b5f17204aa30496dc5","policyVersion":"HT-DSH-0.2.1","verdict":"caution","status":"static-complete"},{"scannedAt":"2026-08-21T10:47:12.930Z","commit":"6a87b7e67ac5487598c591b5f17204aa30496dc5","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":"6a87b7e67ac5487598c591b5f17204aa30496dc5","policyVersion":"HT-DSH-0.2.2","at":"2026-08-22T08:20:39.095Z"},{"kind":"policy-change","from":"HT-DSH-0.2.0","to":"HT-DSH-0.2.1","commit":"6a87b7e67ac5487598c591b5f17204aa30496dc5","policyVersion":"HT-DSH-0.2.1","at":"2026-08-21T11:19:25.161Z"},{"kind":"first-scan","from":null,"to":"caution","commit":"6a87b7e67ac5487598c591b5f17204aa30496dc5","policyVersion":"HT-DSH-0.2.0","at":"2026-08-21T10:47:12.930Z"}]}