{"schemaVersion":2,"dataVersion":"20260822T105549Z-0a0b366f","generatedAt":"2026-08-22T10:55:49.138Z","source":{"id":"ccch1mneyyy-dsh-tui","slug":"ccch1mneyyy-dsh-tui","rank":10,"url":"https://github.com/ccch1mneyyy/dsh-TUI","name":"ccch1mneyyy/dsh-TUI","category":"ui","description":{"zh":"Claude Code 风格全屏终端 UI：像素鲸鱼顶栏、实时工作状态行、思考流式展开。","en":"Claude Code-style full-screen terminal UI: pixel-whale header, live status line, and streaming thought expansion."},"stars":2267,"starsCheckedAt":"2026-08-21","repository":{"owner":"ccch1mneyyy","repo":"dsh-TUI","requestedRef":null,"subpath":""},"npm":"@deepseek-harness-tui/dsh-tui","downloads":21552,"installMode":"npm","upstreamInstall":"dsh plugin --profile web add @deepseek-harness-tui/dsh-tui","tarball":null,"added":"2026-08-14","page":"https://awesome-dsh-plugin.com/p/ccch1mneyyy/dsh-TUI/","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":"ccch1mneyyy-dsh-tui","slug":"ccch1mneyyy-dsh-tui","policyVersion":"HT-DSH-0.2.2","scannedAt":"2026-08-22T08:19:36.500Z","scanStatus":"static-complete","verdict":"caution","score":84,"commit":"f4e302b764afa71596025713b859cbbffcd52a9f","commitDate":"2026-08-22T13:30:39+08:00","artifactDigest":"sha256:1a6c43eeaa5f31d25b3612403a0b31f4ccb8b3448e0b0e147b7e7698f94a6dd6","downloadUrl":"https://github.com/ccch1mneyyy/dsh-TUI/archive/f4e302b764afa71596025713b859cbbffcd52a9f.tar.gz","installMode":"npm","installCommand":"dsh plugin --profile web add @deepseek-harness-tui/dsh-tui","manifest":{"found":true,"path":"package.json","parseError":null,"packageName":"@deepseek-harness-tui/dsh-tui","packageVersion":"0.8.8","bundle":{"patch":"./cordis.patch.yml"},"client":null,"lifecycleScripts":{"prepare":"node scripts/prepare-guard.mjs && npm run compile"},"peerDependencies":["@deepseek-ai/cordis","@deepseek-ai/dsh-agent","@deepseek-ai/dsh-agent-instructions","@deepseek-ai/dsh-agent-presets","@deepseek-ai/dsh-atomic-write","@deepseek-ai/dsh-commands","@deepseek-ai/dsh-cordis-host-runner","@deepseek-ai/dsh-invariants","@deepseek-ai/dsh-llm","@deepseek-ai/dsh-persona","@deepseek-ai/dsh-session","@deepseek-ai/dsh-settings","@deepseek-ai/dsh-skill","@deepseek-ai/dsh-storage","@deepseek-ai/dsh-storage-domain","@deepseek-ai/dsh-storage-json","@deepseek-ai/dsh-system-prompt","@deepseek-ai/dsh-terminal","@deepseek-ai/dsh-terminal-bash","@deepseek-ai/dsh-tool-ask-user","@deepseek-ai/dsh-tool-bash-persistent","@deepseek-ai/dsh-tool-cordis","@deepseek-ai/dsh-user-approval","@deepseek-ai/dsh-user-questions","@deepseek-ai/dsh-workspace","@deepseek-ai/schemastery"]},"identity":{"status":"found","installMode":"npm","upstreamNpm":"@deepseek-harness-tui/dsh-tui","manifestName":"@deepseek-harness-tui/dsh-tui","nameMatch":true,"npm":{"name":"@deepseek-harness-tui/dsh-tui","latestVersion":"0.8.7","publishedAt":"2026-08-21T08:05:04.937Z","createdAt":"2026-08-14T21:17:35.460Z","versionCount":18,"maintainers":6,"repository":"git+https://github.com/ccch1mneyyy/dsh-TUI.git","hasInstallScripts":false,"deprecated":false},"repositoryMatch":"match","provenance":"attested","tarballHost":null,"versionMatch":"differs"},"permissions":{"bundlePatch":"cordis.patch.yml","inserts":[{"id":"dsh-tui-storage","name":"@deepseek-ai/dsh-storage","path":"cordis.patch.yml","disabled":false},{"id":"dsh-tui-storage-json","name":"@deepseek-ai/dsh-storage-json","path":"cordis.patch.yml","disabled":false},{"id":"dsh-tui-storage-domain","name":"@deepseek-ai/dsh-storage-domain","path":"cordis.patch.yml","disabled":false},{"id":"dsh-tui-workspace","name":"@deepseek-ai/dsh-workspace","path":"cordis.patch.yml","disabled":false},{"id":"dsh-tui-workspaces","name":"@deepseek-harness-tui/dsh-tui/workspaces","path":"cordis.patch.yml","disabled":false},{"id":"dsh-tui-command-trees","name":"@deepseek-harness-tui/dsh-tui/command-trees","path":"cordis.patch.yml","disabled":false},{"id":"dsh-tui-settings-sections","name":"@deepseek-harness-tui/dsh-tui/settings-sections","path":"cordis.patch.yml","disabled":false},{"id":"dsh-tui-scenes","name":"@deepseek-harness-tui/dsh-tui/scenes","path":"cordis.patch.yml","disabled":false},{"id":"dsh-tui-plugin-host","name":"@deepseek-harness-tui/dsh-tui/plugin-host","path":"cordis.patch.yml","disabled":false},{"id":"dsh-tui-extensions","name":"@deepseek-harness-tui/dsh-tui/extensions","path":"cordis.patch.yml","disabled":false},{"id":"dsh-tui-agent-presets","name":"@deepseek-ai/dsh-agent-presets","path":"cordis.patch.yml","disabled":false},{"id":"dsh-tui-cordis-host-runner","name":"@deepseek-ai/dsh-cordis-host-runner","path":"cordis.patch.yml","disabled":false},{"id":"dsh-tui","name":"@deepseek-harness-tui/dsh-tui","path":"cordis.patch.yml","disabled":false},{"id":"working-activity","name":"@deepseek-harness-tui/dsh-tui/working-activity","path":"cordis.patch.yml","disabled":false}],"overrides":[{"id":"system-prompt","tier":"sensitive","mode":"override","disabled":false,"replacesImplementation":false,"name":null,"keys":["persona"],"path":"cordis.patch.yml"},{"id":"llm-deepseek","tier":"normal","mode":"override","disabled":false,"replacesImplementation":false,"name":null,"keys":["apiKeyEnv","baseURL","thinking","reasoningEffort"],"path":"cordis.patch.yml"},{"id":"agent-loop","tier":"normal","mode":"override","disabled":false,"replacesImplementation":false,"name":null,"keys":["agents"],"path":"cordis.patch.yml"},{"id":"agent-instructions","tier":"sensitive","mode":"override","disabled":true,"replacesImplementation":false,"name":null,"keys":[],"path":"cordis.patch.yml"},{"id":"command-compact","tier":"normal","mode":"override","disabled":true,"replacesImplementation":false,"name":null,"keys":[],"path":"cordis.patch.yml"},{"id":"compaction-basic","tier":"sensitive","mode":"override","disabled":true,"replacesImplementation":false,"name":null,"keys":[],"path":"cordis.patch.yml"},{"id":"plan-mode","tier":"sensitive","mode":"override","disabled":true,"replacesImplementation":false,"name":null,"keys":[],"path":"cordis.patch.yml"},{"id":"skill-filesystem","tier":"sensitive","mode":"override","disabled":true,"replacesImplementation":false,"name":null,"keys":[],"path":"cordis.patch.yml"},{"id":"tool-bash","tier":"sensitive","mode":"override","disabled":true,"replacesImplementation":false,"name":null,"keys":[],"path":"cordis.patch.yml"},{"id":"tool-fs","tier":"sensitive","mode":"override","disabled":true,"replacesImplementation":false,"name":null,"keys":[],"path":"cordis.patch.yml"},{"id":"tool-fs-search","tier":"sensitive","mode":"override","disabled":true,"replacesImplementation":false,"name":null,"keys":[],"path":"cordis.patch.yml"},{"id":"tool-goal","tier":"normal","mode":"override","disabled":true,"replacesImplementation":false,"name":null,"keys":[],"path":"cordis.patch.yml"},{"id":"tool-jobs","tier":"sensitive","mode":"override","disabled":true,"replacesImplementation":false,"name":null,"keys":[],"path":"cordis.patch.yml"},{"id":"tool-pwsh","tier":"sensitive","mode":"override","disabled":true,"replacesImplementation":false,"name":null,"keys":[],"path":"cordis.patch.yml"},{"id":"tool-ralph","tier":"normal","mode":"override","disabled":true,"replacesImplementation":false,"name":null,"keys":[],"path":"cordis.patch.yml"},{"id":"tool-result-pruner","tier":"normal","mode":"override","disabled":true,"replacesImplementation":false,"name":null,"keys":[],"path":"cordis.patch.yml"},{"id":"tool-skill","tier":"sensitive","mode":"override","disabled":true,"replacesImplementation":false,"name":null,"keys":[],"path":"cordis.patch.yml"},{"id":"tool-str-replace-editor","tier":"normal","mode":"override","disabled":true,"replacesImplementation":false,"name":null,"keys":[],"path":"cordis.patch.yml"},{"id":"tool-subagent","tier":"sensitive","mode":"override","disabled":true,"replacesImplementation":false,"name":null,"keys":[],"path":"cordis.patch.yml"},{"id":"tool-subagent-control","tier":"sensitive","mode":"override","disabled":true,"replacesImplementation":false,"name":null,"keys":[],"path":"cordis.patch.yml"},{"id":"tool-subagent-fork","tier":"sensitive","mode":"override","disabled":true,"replacesImplementation":false,"name":null,"keys":[],"path":"cordis.patch.yml"},{"id":"tool-subagent-list-agents","tier":"normal","mode":"override","disabled":true,"replacesImplementation":false,"name":null,"keys":[],"path":"cordis.patch.yml"},{"id":"tool-todo","tier":"normal","mode":"override","disabled":true,"replacesImplementation":false,"name":null,"keys":[],"path":"cordis.patch.yml"},{"id":"tool-web","tier":"normal","mode":"override","disabled":true,"replacesImplementation":false,"name":null,"keys":[],"path":"cordis.patch.yml"},{"id":"tool-workflow","tier":"sensitive","mode":"override","disabled":true,"replacesImplementation":false,"name":null,"keys":[],"path":"cordis.patch.yml"},{"id":"workflow-worker-thread","tier":"sensitive","mode":"override","disabled":true,"replacesImplementation":false,"name":null,"keys":[],"path":"cordis.patch.yml"},{"id":"sandbox-policy","tier":"critical","mode":"override","disabled":false,"replacesImplementation":false,"name":null,"keys":["mode","workspaceRoot"],"path":"cordis.patch.yml"},{"id":"approval","tier":"critical","mode":"override","disabled":false,"replacesImplementation":false,"name":null,"keys":["policy"],"path":"cordis.patch.yml"},{"id":"session-persistence-jsonl","tier":"sensitive","mode":"override","disabled":false,"replacesImplementation":false,"name":null,"keys":["root"],"path":"cordis.patch.yml"},{"id":"user-questions","tier":"normal","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-user-questions","keys":[],"path":"cordis.yml"},{"id":"approval","tier":"critical","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-user-approval","keys":["policy"],"path":"cordis.yml"},{"id":"dsh-tui-workspaces","tier":"normal","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-harness-tui/dsh-tui/workspaces","keys":[],"path":"cordis.yml"},{"id":"dsh-tui-command-trees","tier":"normal","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-harness-tui/dsh-tui/command-trees","keys":[],"path":"cordis.yml"},{"id":"dsh-tui-settings-sections","tier":"normal","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-harness-tui/dsh-tui/settings-sections","keys":[],"path":"cordis.yml"},{"id":"dsh-tui-scenes","tier":"normal","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-harness-tui/dsh-tui/scenes","keys":[],"path":"cordis.yml"},{"id":"dsh-tui-plugin-host","tier":"normal","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-harness-tui/dsh-tui/plugin-host","keys":[],"path":"cordis.yml"},{"id":"dsh-tui-extensions","tier":"normal","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-harness-tui/dsh-tui/extensions","keys":[],"path":"cordis.yml"},{"id":"dsh-tui","tier":"normal","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-harness-tui/dsh-tui","keys":["provider","fullscreen","effort","sessionId","workspace"],"path":"cordis.yml"},{"id":"llm-deepseek","tier":"normal","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-llm-deepseek","keys":["apiKeyEnv","baseURL","thinking","reasoningEffort"],"path":"cordis.yml"},{"id":"subprocess","tier":"critical","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-subprocess-local","keys":[],"path":"cordis.yml"},{"id":"bash","tier":"normal","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-bash-local","keys":["cwd","timeoutMs"],"path":"cordis.yml"},{"id":"fs","tier":"normal","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-fs-local","keys":["cwd"],"path":"cordis.yml"},{"id":"fs-policy","tier":"normal","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-fs-observation-policy","keys":[],"path":"cordis.yml"},{"id":"tool-fs","tier":"sensitive","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-tool-fs","keys":[],"path":"cordis.yml"},{"id":"tool-todo","tier":"normal","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-tool-todo","keys":["allowParallelInProgress"],"path":"cordis.yml"},{"id":"subagent","tier":"sensitive","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-subagent","keys":[],"path":"cordis.yml"},{"id":"subagent-spawn","tier":"normal","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-subagent-spawn-in-process","keys":["providerName"],"path":"cordis.yml"},{"id":"subagent-fork","tier":"normal","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-subagent-fork-in-process","keys":["providerName"],"path":"cordis.yml"},{"id":"tool-subagent","tier":"sensitive","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-tool-subagent","keys":["provider","toolName","backgroundMode","maxDepth"],"path":"cordis.yml"},{"id":"tool-subagent-fork","tier":"sensitive","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-tool-subagent","keys":["provider","toolName","backgroundMode","maxDepth"],"path":"cordis.yml"},{"id":"agent-spine","tier":"normal","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-agent-spine-demo","keys":["persona","workspaceContext","skills","goals"],"path":"cordis.yml"},{"id":"commands","tier":"sensitive","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-commands","keys":[],"path":"cordis.yml"},{"id":"plan-mode","tier":"sensitive","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-plan-mode","keys":["section"],"path":"cordis.yml"},{"id":"command-goal","tier":"normal","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-command-goal","keys":[],"path":"cordis.yml"},{"id":"working-activity","tier":"normal","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-harness-tui/dsh-tui/working-activity","keys":["publish","publishIntervalMs"],"path":"cordis.yml"},{"id":"sessions","tier":"normal","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-session-persistence-jsonl","keys":["root"],"path":"cordis.yml"},{"id":"session-query","tier":"normal","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-session-query","keys":[],"path":"cordis.yml"},{"id":"session-checkpoints","tier":"normal","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-session-checkpoint-policy","keys":[],"path":"cordis.yml"},{"id":"token-meter","tier":"normal","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-token-meter","keys":[],"path":"cordis.yml"},{"id":"compact","tier":"normal","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-compaction-basic","keys":["thresholdRatio","retainRatio"],"path":"cordis.yml"},{"id":"tool-bootstrap","tier":"normal","mode":"override","disabled":false,"replacesImplementation":true,"name":"./tool-bootstrap.mjs","keys":["bootstrapTools","promoteOn","includeSubagents","suppressedContextSources"],"path":"presets/liangshen/agent.cordis.yml"},{"id":"persona","tier":"normal","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-persona","keys":["text","complete","includeRuntimeContext"],"path":"presets/liangshen/agent.cordis.yml"},{"id":"instruction-hint","tier":"normal","mode":"override","disabled":false,"replacesImplementation":true,"name":"./instruction-hint.mjs","keys":["promoteOn","includeSubagents"],"path":"presets/liangshen/agent.cordis.yml"},{"id":"tool-bash","tier":"sensitive","mode":"override","disabled":true,"replacesImplementation":true,"name":"@deepseek-ai/dsh-tool-bash","keys":[],"path":"presets/liangshen/agent.cordis.yml"},{"id":"tool-pwsh","tier":"sensitive","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-tool-pwsh","keys":[],"path":"presets/liangshen/agent.cordis.yml"},{"id":"persistent-shell","tier":"normal","mode":"override","disabled":false,"replacesImplementation":true,"name":"cordis:group","keys":["0","1","2"],"path":"presets/liangshen/agent.cordis.yml"},{"id":"custom-bash","tier":"normal","mode":"override","disabled":false,"replacesImplementation":true,"name":"./custom-bash.mjs","keys":[],"path":"presets/liangshen/agent.cordis.yml"},{"id":"tool-fs","tier":"sensitive","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-tool-fs","keys":[],"path":"presets/liangshen/agent.cordis.yml"},{"id":"tool-fs-search","tier":"sensitive","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-tool-fs-search","keys":["sampleOverCapGlobResults"],"path":"presets/liangshen/agent.cordis.yml"},{"id":"bootstrap-filesystem","tier":"normal","mode":"override","disabled":false,"replacesImplementation":true,"name":"cordis:group","keys":["0","1"],"path":"presets/liangshen/agent.cordis.yml"},{"id":"tool-jobs","tier":"sensitive","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-tool-jobs","keys":[],"path":"presets/liangshen/agent.cordis.yml"},{"id":"skill-filesystem","tier":"sensitive","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-skill-filesystem","keys":[],"path":"presets/liangshen/agent.cordis.yml"},{"id":"skill-search","tier":"normal","mode":"override","disabled":false,"replacesImplementation":true,"name":"./skill-search.mjs","keys":[],"path":"presets/liangshen/agent.cordis.yml"},{"id":"tool-goal","tier":"normal","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-tool-goal","keys":[],"path":"presets/liangshen/agent.cordis.yml"},{"id":"planning","tier":"normal","mode":"override","disabled":false,"replacesImplementation":true,"name":"cordis:group","keys":["0"],"path":"presets/liangshen/agent.cordis.yml"},{"id":"compaction","tier":"normal","mode":"override","disabled":false,"replacesImplementation":true,"name":"cordis:group","keys":["0","1","2"],"path":"presets/liangshen/agent.cordis.yml"},{"id":"delegation","tier":"normal","mode":"override","disabled":false,"replacesImplementation":true,"name":"cordis:group","keys":["0","1","2","3","4","5","6","7","8"],"path":"presets/liangshen/agent.cordis.yml"},{"id":"tool-ask-user","tier":"normal","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-tool-ask-user","keys":[],"path":"presets/liangshen/agent.cordis.yml"},{"id":"tool-todo","tier":"normal","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-tool-todo","keys":["allowParallelInProgress"],"path":"presets/liangshen/agent.cordis.yml"},{"id":"tool-web","tier":"normal","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-tool-web","keys":["fetch","searchTimeoutMs"],"path":"presets/liangshen/agent.cordis.yml"}],"jsExpressions":31,"clientPlatform":null,"parseErrors":[]},"capabilities":["agent-control","browser-ui","credentials","environment","filesystem","host-bundle","mcp","network","session","subprocess","telemetry"],"outboundHosts":[{"host":"css-tricks.com","count":8},{"host":"gw.example","count":4},{"host":"mirror.example.com","count":2},{"host":"env-registry.example.com","count":2},{"host":"lower-registry.example.com","count":2},{"host":"sw.kovidgoyal.net","count":2},{"host":"anthropic.slack.com","count":2},{"host":"api.example.com","count":1},{"host":"mitchellh.com","count":1},{"host":"a.com","count":1},{"host":"b.com","count":1},{"host":"ghostty.org","count":1},{"host":"iterm2.com","count":1},{"host":"www.robvanderwoude.com","count":1},{"host":"qntm.org","count":1}],"findings":[{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"bin/dsh-tui.js","pathClass":"source","line":30,"evidence":"spawnSync","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"936874e5bc61c6021846f48d"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"bin/dsh-tui.js","pathClass":"source","line":30,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"c21d5e53464d7af3fe6cc96f"},{"id":"HT-CONFIG-001","title":"Cordis 配置包含可执行 !!js 表达式","severity":"medium","confidence":"high","layer":"dsh-semantics","path":"cordis.patch.yml","pathClass":"cordis","line":18,"evidence":"!!js process.env.DSH_TUI_PERSONA ?? 'You are a coding agent.'","remediation":"!!js 是 DSH 的官方配置机制；只在表达式引入模块、访问进程或网络时需要额外解释。","note":"表达式访问模块、进程或网络，超出读取注入服务的常规用法","hash":"12f80e86d172ddff00e526a5"},{"id":"HT-CONFIG-001","title":"Cordis 配置包含可执行 !!js 表达式","severity":"medium","confidence":"high","layer":"dsh-semantics","path":"cordis.patch.yml","pathClass":"cordis","line":29,"evidence":"!!js process.env.DEEPSEEK_BASE_URL","remediation":"!!js 是 DSH 的官方配置机制；只在表达式引入模块、访问进程或网络时需要额外解释。","note":"表达式访问模块、进程或网络，超出读取注入服务的常规用法","hash":"1db986ec7e3a4c19aaa97826"},{"id":"HT-CONFIG-001","title":"Cordis 配置包含可执行 !!js 表达式","severity":"medium","confidence":"high","layer":"dsh-semantics","path":"cordis.yml","pathClass":"cordis","line":24,"evidence":"!!js \"process.platform === 'win32' ? 'never' : ((process.env.DSH_PERMISSION_MODE ?? 'workspace-write') === 'danger-full-access' ? 'never' : 'ask')\"","remediation":"!!js 是 DSH 的官方配置机制；只在表达式引入模块、访问进程或网络时需要额外解释。","note":"表达式访问模块、进程或网络，超出读取注入服务的常规用法","hash":"6a901b64b70d5bf315a29a69"},{"id":"HT-CONFIG-001","title":"Cordis 配置包含可执行 !!js 表达式","severity":"medium","confidence":"high","layer":"dsh-semantics","path":"cordis.yml","pathClass":"cordis","line":85,"evidence":"!!js process.env.DSH_TUI_RESUME_SESSION ?? process.env.DSH_CC_RESUME_SESSION ?? undefined","remediation":"!!js 是 DSH 的官方配置机制；只在表达式引入模块、访问进程或网络时需要额外解释。","note":"表达式访问模块、进程或网络，超出读取注入服务的常规用法","hash":"0f8b4afdae0fa34745049eae"},{"id":"HT-INSTALL-002","title":"Git 安装会触发 prepare 构建脚本","severity":"medium","confidence":"low","layer":"supply-chain","path":"package.json","pathClass":"manifest","line":88,"evidence":"\"prepare\": \"node scripts/prepare-guard.mjs && npm run compile\"","remediation":"发布预构建制品（npm 或 GitHub Release tarball），并记录源码与发布包的一致性证明。","note":"该插件以 npm/tarball 预构建方式分发，prepare 不在用户机器上执行","hash":"024e8d0eda32b79e8b5c04d9"},{"id":"HT-CONFIG-001","title":"Cordis 配置包含可执行 !!js 表达式","severity":"medium","confidence":"high","layer":"dsh-semantics","path":"presets/liangshen/agent.cordis.yml","pathClass":"cordis","line":110,"evidence":"!!js process.platform !== 'win32'","remediation":"!!js 是 DSH 的官方配置机制；只在表达式引入模块、访问进程或网络时需要额外解释。","note":"表达式访问模块、进程或网络，超出读取注入服务的常规用法","hash":"dab0f8ed459553c8f7e66ab1"},{"id":"HT-CONFIG-001","title":"Cordis 配置包含可执行 !!js 表达式","severity":"medium","confidence":"high","layer":"dsh-semantics","path":"presets/liangshen/agent.cordis.yml","pathClass":"cordis","line":125,"evidence":"!!js process.platform === 'win32'","remediation":"!!js 是 DSH 的官方配置机制；只在表达式引入模块、访问进程或网络时需要额外解释。","note":"表达式访问模块、进程或网络，超出读取注入服务的常规用法","hash":"3c26d6424df73a3ffa57cc1c"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"scripts/dev-test.mjs","pathClass":"source","line":3,"evidence":"spawnSync","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"a969113ef5a396839a186bb0"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"scripts/dev-test.mjs","pathClass":"source","line":3,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"4d49e7edb61124a2a6fcf707"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"scripts/leak-pty-stress.cjs","pathClass":"source","line":8,"evidence":"execSync","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"ce96e0ed95ff8d9ef40b7006"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"scripts/leak-pty-stress.cjs","pathClass":"source","line":8,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"744442448446f5fded3dc538"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"scripts/verify-bun-package.mjs","pathClass":"source","line":6,"evidence":"spawnSync","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"26896907c5856565affe20ad"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"scripts/verify-bun-package.mjs","pathClass":"source","line":6,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"bfb5a2723bb04609870edf49"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"scripts/verify-child-stderr.tsx","pathClass":"source","line":20,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"93f956ff525752aa7e7168c8"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"scripts/verify-child-stderr.tsx","pathClass":"source","line":40,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"93f956ff525752aa7e7168c8"},{"id":"HT-RUNTIME-001","title":"动态代码执行","severity":"high","confidence":"low","layer":"static","path":"scripts/verify-cordis-approval.mjs","pathClass":"source","line":44,"evidence":"new Function(","remediation":"使用静态模块和受约束的配置解析器，避免在宿主权限下执行动态字符串。","hash":"fed5e6a48d4afe45e4120131","review":{"verdict":"sanitized","reason":"new Function 仅在开发期校验脚本中对仓库自身 cordis.yml/cordis.patch.yml 内硬编码的 !!js 表达式求值做回归测试，输入不来自用户或网络。","model":"sonnet","reviewedAt":"2026-08-21T10:44:00.530Z"}},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"scripts/verify-jediterm.tsx","pathClass":"source","line":37,"evidence":"spawnSync","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"2ce4f007789356e043fdb650"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"scripts/verify-jediterm.tsx","pathClass":"source","line":37,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"d795f31e11ae3cb80acee181"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"scripts/verify-launcher.mjs","pathClass":"source","line":24,"evidence":"spawnSync","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"d4f4d004f6e3345e34dd3eeb"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"scripts/verify-launcher.mjs","pathClass":"source","line":24,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"c271bf1e8b6715253f204d3a"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"scripts/verify-prompt-debug.mjs","pathClass":"source","line":10,"evidence":"spawnSync","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"5eea27300bbf3929e9e37110"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"scripts/verify-prompt-debug.mjs","pathClass":"source","line":10,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"f5814bf1dbf84dcd6ddd4aa0"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"scripts/verify-resume-legacy-events.mjs","pathClass":"source","line":35,"evidence":"spawnSync","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"e4527e55e4700965beb5a9b7"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"scripts/verify-resume-legacy-events.mjs","pathClass":"source","line":35,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"bdb8ac5c3a9aa502a5968151"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"scripts/with-publish-manifest.mjs","pathClass":"source","line":4,"evidence":"spawnSync","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"a2c8eeaf6d28b9d7230b99aa"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"scripts/with-publish-manifest.mjs","pathClass":"source","line":4,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"e3019d1b7569e2d55c32af7f"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"src/dsh-adapter/childStderr.ts","pathClass":"source","line":15,"evidence":"child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"f23a5a14e2753f24cf8aeb6a"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"src/dsh-adapter/childStderr.ts","pathClass":"source","line":22,"evidence":"child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"f23a5a14e2753f24cf8aeb6a"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"src/update.ts","pathClass":"source","line":1,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"ee8551807b78a8081e99ee2e"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"src/utils/clipboard.ts","pathClass":"source","line":37,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"3454c5a9bb06caca5f44bd62"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"src/utils/execFileNoThrow.ts","pathClass":"source","line":1,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"5cb317ee248e7ef5e81c489a"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"src/utils/externalEditor.ts","pathClass":"source","line":37,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"306eda2d02c6ff00859b9bae"},{"id":"HT-PERMISSION-002","title":"覆盖敏感宿主能力","severity":"medium","confidence":"high","path":"cordis.patch.yml","line":16,"evidence":"override: id=system-prompt config[persona]","remediation":"安全关键 seam 的替换必须逐项解释、最小化，并接受人工复核；用户安装前应知晓该能力被谁接管。","note":"改写配置 系统提示词（system-prompt）","layer":"dsh-semantics","pathClass":"cordis","hash":"8c306903e619888183e61d08"},{"id":"HT-PERMISSION-002","title":"覆盖敏感宿主能力","severity":"medium","confidence":"high","path":"cordis.patch.yml","line":55,"evidence":"override: id=agent-instructions disabled=true","remediation":"安全关键 seam 的替换必须逐项解释、最小化，并接受人工复核；用户安装前应知晓该能力被谁接管。","note":"关闭 Agent 指令（agent-instructions）","layer":"dsh-semantics","pathClass":"cordis","hash":"6d5ee3706426e0421093c73c"},{"id":"HT-PERMISSION-002","title":"覆盖敏感宿主能力","severity":"medium","confidence":"high","path":"cordis.patch.yml","line":66,"evidence":"override: id=compaction-basic disabled=true","remediation":"安全关键 seam 的替换必须逐项解释、最小化，并接受人工复核；用户安装前应知晓该能力被谁接管。","note":"关闭 compaction-basic","layer":"dsh-semantics","pathClass":"cordis","hash":"89d6fe4b202e656e7213e541"},{"id":"HT-PERMISSION-002","title":"覆盖敏感宿主能力","severity":"medium","confidence":"high","path":"cordis.patch.yml","line":68,"evidence":"override: id=plan-mode disabled=true","remediation":"安全关键 seam 的替换必须逐项解释、最小化，并接受人工复核；用户安装前应知晓该能力被谁接管。","note":"关闭 plan-mode","layer":"dsh-semantics","pathClass":"cordis","hash":"1f19d63c124f7218fb84a851"},{"id":"HT-PERMISSION-002","title":"覆盖敏感宿主能力","severity":"medium","confidence":"high","path":"cordis.patch.yml","line":71,"evidence":"override: id=skill-filesystem disabled=true","remediation":"安全关键 seam 的替换必须逐项解释、最小化，并接受人工复核；用户安装前应知晓该能力被谁接管。","note":"关闭 skill-filesystem","layer":"dsh-semantics","pathClass":"cordis","hash":"320738620f2a0ca3f0cdb644"},{"id":"HT-PERMISSION-002","title":"覆盖敏感宿主能力","severity":"medium","confidence":"high","path":"cordis.patch.yml","line":74,"evidence":"override: id=tool-bash disabled=true","remediation":"安全关键 seam 的替换必须逐项解释、最小化，并接受人工复核；用户安装前应知晓该能力被谁接管。","note":"关闭 Bash 工具（tool-bash）","layer":"dsh-semantics","pathClass":"cordis","hash":"507cbe1cba44a2b8ebb4dd5c"},{"id":"HT-PERMISSION-002","title":"覆盖敏感宿主能力","severity":"medium","confidence":"high","path":"cordis.patch.yml","line":77,"evidence":"override: id=tool-fs disabled=true","remediation":"安全关键 seam 的替换必须逐项解释、最小化，并接受人工复核；用户安装前应知晓该能力被谁接管。","note":"关闭 文件工具（tool-fs）","layer":"dsh-semantics","pathClass":"cordis","hash":"418208270050a102c00ab3dd"},{"id":"HT-PERMISSION-002","title":"覆盖敏感宿主能力","severity":"medium","confidence":"high","path":"cordis.patch.yml","line":80,"evidence":"override: id=tool-fs-search disabled=true","remediation":"安全关键 seam 的替换必须逐项解释、最小化，并接受人工复核；用户安装前应知晓该能力被谁接管。","note":"关闭 tool-fs-search","layer":"dsh-semantics","pathClass":"cordis","hash":"e0a2359bdc33f8915835baeb"},{"id":"HT-PERMISSION-002","title":"覆盖敏感宿主能力","severity":"medium","confidence":"high","path":"cordis.patch.yml","line":86,"evidence":"override: id=tool-jobs disabled=true","remediation":"安全关键 seam 的替换必须逐项解释、最小化，并接受人工复核；用户安装前应知晓该能力被谁接管。","note":"关闭 tool-jobs","layer":"dsh-semantics","pathClass":"cordis","hash":"59570d764fb6551297c4b02a"},{"id":"HT-PERMISSION-002","title":"覆盖敏感宿主能力","severity":"medium","confidence":"high","path":"cordis.patch.yml","line":89,"evidence":"override: id=tool-pwsh disabled=true","remediation":"安全关键 seam 的替换必须逐项解释、最小化，并接受人工复核；用户安装前应知晓该能力被谁接管。","note":"关闭 tool-pwsh","layer":"dsh-semantics","pathClass":"cordis","hash":"df874a66a5547f68f93034d7"},{"id":"HT-PERMISSION-002","title":"覆盖敏感宿主能力","severity":"medium","confidence":"high","path":"cordis.patch.yml","line":98,"evidence":"override: id=tool-skill disabled=true","remediation":"安全关键 seam 的替换必须逐项解释、最小化，并接受人工复核；用户安装前应知晓该能力被谁接管。","note":"关闭 tool-skill","layer":"dsh-semantics","pathClass":"cordis","hash":"312039675160959d1702685c"},{"id":"HT-PERMISSION-002","title":"覆盖敏感宿主能力","severity":"medium","confidence":"high","path":"cordis.patch.yml","line":108,"evidence":"override: id=tool-subagent disabled=true","remediation":"安全关键 seam 的替换必须逐项解释、最小化，并接受人工复核；用户安装前应知晓该能力被谁接管。","note":"关闭 tool-subagent","layer":"dsh-semantics","pathClass":"cordis","hash":"29634b5373faf7df689644c2"},{"id":"HT-PERMISSION-002","title":"覆盖敏感宿主能力","severity":"medium","confidence":"high","path":"cordis.patch.yml","line":110,"evidence":"override: id=tool-subagent-control disabled=true","remediation":"安全关键 seam 的替换必须逐项解释、最小化，并接受人工复核；用户安装前应知晓该能力被谁接管。","note":"关闭 tool-subagent-control","layer":"dsh-semantics","pathClass":"cordis","hash":"efc657ad2aff6999a5a4f9b0"},{"id":"HT-PERMISSION-002","title":"覆盖敏感宿主能力","severity":"medium","confidence":"high","path":"cordis.patch.yml","line":113,"evidence":"override: id=tool-subagent-fork disabled=true","remediation":"安全关键 seam 的替换必须逐项解释、最小化，并接受人工复核；用户安装前应知晓该能力被谁接管。","note":"关闭 tool-subagent-fork","layer":"dsh-semantics","pathClass":"cordis","hash":"862312910b9d680ab6e3f535"},{"id":"HT-PERMISSION-002","title":"覆盖敏感宿主能力","severity":"medium","confidence":"high","path":"cordis.patch.yml","line":125,"evidence":"override: id=tool-workflow disabled=true","remediation":"安全关键 seam 的替换必须逐项解释、最小化，并接受人工复核；用户安装前应知晓该能力被谁接管。","note":"关闭 tool-workflow","layer":"dsh-semantics","pathClass":"cordis","hash":"6e65d3a39e7d565c02c46d34"},{"id":"HT-PERMISSION-002","title":"覆盖敏感宿主能力","severity":"medium","confidence":"high","path":"cordis.patch.yml","line":128,"evidence":"override: id=workflow-worker-thread disabled=true","remediation":"安全关键 seam 的替换必须逐项解释、最小化，并接受人工复核；用户安装前应知晓该能力被谁接管。","note":"关闭 workflow-worker-thread","layer":"dsh-semantics","pathClass":"cordis","hash":"42d3c3793a761d4cb9cd2c0b"},{"id":"HT-PERMISSION-001","title":"覆盖安全关键宿主能力","severity":"medium","confidence":"high","path":"cordis.patch.yml","line":135,"evidence":"override: id=sandbox-policy config[mode,workspaceRoot]","remediation":"安全关键 seam 的替换必须逐项解释、最小化，并接受人工复核；用户安装前应知晓该能力被谁接管。","note":"改写配置 沙箱策略（sandbox-policy）","layer":"dsh-semantics","pathClass":"cordis","hash":"6b3afd028c9f834f77e16aab","review":{"verdict":"functional","reason":"sandbox-policy覆盖仅在Windows无沙箱后端时退化为danger-full-access，其余平台默认workspace-write且可经DSH_PERMISSION_MODE配置，属TUI作为终端前门的标准权限管理。","model":"sonnet@p2","reviewedAt":"2026-08-21T13:16:28.700Z"}},{"id":"HT-PERMISSION-001","title":"覆盖安全关键宿主能力","severity":"medium","confidence":"high","path":"cordis.patch.yml","line":142,"evidence":"override: id=approval config[policy]","remediation":"安全关键 seam 的替换必须逐项解释、最小化，并接受人工复核；用户安装前应知晓该能力被谁接管。","note":"改写配置 工具审批（approval）","layer":"dsh-semantics","pathClass":"cordis","hash":"87434ad3813f019b531a29c4","review":{"verdict":"functional","reason":"approval覆盖policy与sandbox-policy逻辑一致，仅Windows或danger-full-access模式下跳过询问，其余场景仍为ask，是TUI承接交互式审批面板的必要行为。","model":"sonnet@p2","reviewedAt":"2026-08-21T13:16:28.700Z"}},{"id":"HT-PERMISSION-002","title":"覆盖敏感宿主能力","severity":"medium","confidence":"high","path":"cordis.patch.yml","line":150,"evidence":"override: id=session-persistence-jsonl config[root]","remediation":"安全关键 seam 的替换必须逐项解释、最小化，并接受人工复核；用户安装前应知晓该能力被谁接管。","note":"改写配置 会话持久化（session-persistence-jsonl）","layer":"dsh-semantics","pathClass":"cordis","hash":"30cf91fcdde69e50cb9373e1"},{"id":"HT-PERMISSION-001","title":"覆盖安全关键宿主能力","severity":"medium","confidence":"medium","path":"cordis.yml","line":21,"evidence":"override: id=approval name=@deepseek-ai/dsh-user-approval config[policy]","remediation":"安全关键 seam 的替换必须逐项解释、最小化，并接受人工复核；用户安装前应知晓该能力被谁接管。","note":"替换实现 工具审批（approval）；该配置随包分发但未被 dsh.bundle 引用，只有用户手动应用时才生效","layer":"dsh-semantics","pathClass":"cordis","hash":"fa42b2700cf42fd5364af449","review":{"verdict":"functional","reason":"cordis.yml中approval行注册dsh-tui自身为交互式审批实现，policy表达式与patch完全一致，且备注说明该独立配置需用户手动应用才生效，非默认自动执行。","model":"sonnet@p2","reviewedAt":"2026-08-21T13:16:28.700Z"}},{"id":"HT-PERMISSION-001","title":"覆盖安全关键宿主能力","severity":"medium","confidence":"medium","path":"cordis.yml","line":101,"evidence":"override: id=subprocess name=@deepseek-ai/dsh-subprocess-local","remediation":"安全关键 seam 的替换必须逐项解释、最小化，并接受人工复核；用户安装前应知晓该能力被谁接管。","note":"替换实现 子进程执行（subprocess）；该配置随包分发但未被 dsh.bundle 引用，只有用户手动应用时才生效","layer":"dsh-semantics","pathClass":"cordis","hash":"e288c5dd903df94867b18a2c","review":{"verdict":"functional","reason":"subprocess行仅声明bash执行器所需的本地子进程管理实现@deepseek-ai/dsh-subprocess-local，无参数覆盖，是终端代理运行bash工具的必要组件。","model":"sonnet@p2","reviewedAt":"2026-08-21T13:16:28.700Z"}},{"id":"HT-PERMISSION-002","title":"覆盖敏感宿主能力","severity":"medium","confidence":"medium","path":"cordis.yml","line":121,"evidence":"override: id=tool-fs name=@deepseek-ai/dsh-tool-fs","remediation":"安全关键 seam 的替换必须逐项解释、最小化，并接受人工复核；用户安装前应知晓该能力被谁接管。","note":"替换实现 文件工具（tool-fs）；该配置随包分发但未被 dsh.bundle 引用，只有用户手动应用时才生效","layer":"dsh-semantics","pathClass":"cordis","hash":"f43a874ab1557778d8f07762"},{"id":"HT-PERMISSION-002","title":"覆盖敏感宿主能力","severity":"medium","confidence":"medium","path":"cordis.yml","line":136,"evidence":"override: id=subagent name=@deepseek-ai/dsh-subagent","remediation":"安全关键 seam 的替换必须逐项解释、最小化，并接受人工复核；用户安装前应知晓该能力被谁接管。","note":"替换实现 subagent；该配置随包分发但未被 dsh.bundle 引用，只有用户手动应用时才生效","layer":"dsh-semantics","pathClass":"cordis","hash":"4e0dbe60e9fe9da01ff843c4"},{"id":"HT-PERMISSION-002","title":"覆盖敏感宿主能力","severity":"medium","confidence":"medium","path":"cordis.yml","line":148,"evidence":"override: id=tool-subagent name=@deepseek-ai/dsh-tool-subagent config[provider,toolName,backgroundMode,maxDepth]","remediation":"安全关键 seam 的替换必须逐项解释、最小化，并接受人工复核；用户安装前应知晓该能力被谁接管。","note":"替换实现 tool-subagent；该配置随包分发但未被 dsh.bundle 引用，只有用户手动应用时才生效","layer":"dsh-semantics","pathClass":"cordis","hash":"dc7a23c2bfb3402b02e3bd04"},{"id":"HT-PERMISSION-002","title":"覆盖敏感宿主能力","severity":"medium","confidence":"medium","path":"cordis.yml","line":156,"evidence":"override: id=tool-subagent-fork name=@deepseek-ai/dsh-tool-subagent config[provider,toolName,backgroundMode,maxDepth]","remediation":"安全关键 seam 的替换必须逐项解释、最小化，并接受人工复核；用户安装前应知晓该能力被谁接管。","note":"替换实现 tool-subagent-fork；该配置随包分发但未被 dsh.bundle 引用，只有用户手动应用时才生效","layer":"dsh-semantics","pathClass":"cordis","hash":"812ff4206add8eb24e9249d0"},{"id":"HT-PERMISSION-002","title":"覆盖敏感宿主能力","severity":"medium","confidence":"medium","path":"cordis.yml","line":185,"evidence":"override: id=commands name=@deepseek-ai/dsh-commands","remediation":"安全关键 seam 的替换必须逐项解释、最小化，并接受人工复核；用户安装前应知晓该能力被谁接管。","note":"替换实现 commands；该配置随包分发但未被 dsh.bundle 引用，只有用户手动应用时才生效","layer":"dsh-semantics","pathClass":"cordis","hash":"fee208b05a981a37877f0638"},{"id":"HT-PERMISSION-002","title":"覆盖敏感宿主能力","severity":"medium","confidence":"medium","path":"cordis.yml","line":191,"evidence":"override: id=plan-mode name=@deepseek-ai/dsh-plan-mode config[section]","remediation":"安全关键 seam 的替换必须逐项解释、最小化，并接受人工复核；用户安装前应知晓该能力被谁接管。","note":"替换实现 plan-mode；该配置随包分发但未被 dsh.bundle 引用，只有用户手动应用时才生效","layer":"dsh-semantics","pathClass":"cordis","hash":"d55936676a4113b4ad6cea93"},{"id":"HT-PERMISSION-002","title":"覆盖敏感宿主能力","severity":"medium","confidence":"medium","path":"presets/liangshen/agent.cordis.yml","line":99,"evidence":"override: id=tool-bash disabled=true name=@deepseek-ai/dsh-tool-bash","remediation":"安全关键 seam 的替换必须逐项解释、最小化，并接受人工复核；用户安装前应知晓该能力被谁接管。","note":"关闭 Bash 工具（tool-bash）；该配置随包分发但未被 dsh.bundle 引用，只有用户手动应用时才生效","layer":"dsh-semantics","pathClass":"cordis","hash":"493cfc73e47061c37a04bf3a"},{"id":"HT-PERMISSION-002","title":"覆盖敏感宿主能力","severity":"medium","confidence":"medium","path":"presets/liangshen/agent.cordis.yml","line":107,"evidence":"override: id=tool-pwsh name=@deepseek-ai/dsh-tool-pwsh","remediation":"安全关键 seam 的替换必须逐项解释、最小化，并接受人工复核；用户安装前应知晓该能力被谁接管。","note":"替换实现 tool-pwsh；该配置随包分发但未被 dsh.bundle 引用，只有用户手动应用时才生效","layer":"dsh-semantics","pathClass":"cordis","hash":"6b9978271df2017825344889"},{"id":"HT-PERMISSION-002","title":"覆盖敏感宿主能力","severity":"medium","confidence":"medium","path":"presets/liangshen/agent.cordis.yml","line":170,"evidence":"override: id=tool-fs name=@deepseek-ai/dsh-tool-fs","remediation":"安全关键 seam 的替换必须逐项解释、最小化，并接受人工复核；用户安装前应知晓该能力被谁接管。","note":"替换实现 文件工具（tool-fs）；该配置随包分发但未被 dsh.bundle 引用，只有用户手动应用时才生效","layer":"dsh-semantics","pathClass":"cordis","hash":"e66793458deb24a2eb36a09c"},{"id":"HT-PERMISSION-002","title":"覆盖敏感宿主能力","severity":"medium","confidence":"medium","path":"presets/liangshen/agent.cordis.yml","line":172,"evidence":"override: id=tool-fs-search name=@deepseek-ai/dsh-tool-fs-search config[sampleOverCapGlobResults]","remediation":"安全关键 seam 的替换必须逐项解释、最小化，并接受人工复核；用户安装前应知晓该能力被谁接管。","note":"替换实现 tool-fs-search；该配置随包分发但未被 dsh.bundle 引用，只有用户手动应用时才生效","layer":"dsh-semantics","pathClass":"cordis","hash":"20738d28d43c2b187b01dcc0"},{"id":"HT-PERMISSION-002","title":"覆盖敏感宿主能力","severity":"medium","confidence":"medium","path":"presets/liangshen/agent.cordis.yml","line":209,"evidence":"override: id=tool-jobs name=@deepseek-ai/dsh-tool-jobs","remediation":"安全关键 seam 的替换必须逐项解释、最小化，并接受人工复核；用户安装前应知晓该能力被谁接管。","note":"替换实现 tool-jobs；该配置随包分发但未被 dsh.bundle 引用，只有用户手动应用时才生效","layer":"dsh-semantics","pathClass":"cordis","hash":"f99d5d76523db8ea780973bb"},{"id":"HT-PERMISSION-002","title":"覆盖敏感宿主能力","severity":"medium","confidence":"medium","path":"presets/liangshen/agent.cordis.yml","line":223,"evidence":"override: id=skill-filesystem name=@deepseek-ai/dsh-skill-filesystem","remediation":"安全关键 seam 的替换必须逐项解释、最小化，并接受人工复核；用户安装前应知晓该能力被谁接管。","note":"替换实现 skill-filesystem；该配置随包分发但未被 dsh.bundle 引用，只有用户手动应用时才生效","layer":"dsh-semantics","pathClass":"cordis","hash":"06b4e0f53f958e3388311487"}],"counts":{"critical":0,"high":0,"medium":39,"low":26},"rawCounts":{"critical":0,"high":1,"medium":40,"low":26},"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":560,"bytesScanned":5779459,"truncated":false,"lockfiles":["pnpm-lock.yaml"],"pathClasses":{"test-example-docs":3,"markdown":44,"source":496,"cordis":3,"script":2,"manifest":1,"data":3,"yaml":3,"i18n":5}},"limitations":["此结果为源码静态检测，不等同于无漏洞证明。","尚未比对 npm 发布包与源码的一致性，也未执行隔离运行和人工复核。","危险能力可能是插件功能所需，需结合用途与证据人工判断。"],"limitationKeys":["static-analysis-only","no-artifact-runtime-human-review","capability-needs-context"],"review":{"model":"sonnet","reviewedAt":"2026-08-22T08:19:36.500Z","summary":null,"intentMatch":null,"findingsReviewed":5,"findingsCandidates":5,"fromCache":5,"usage":null}},"timeline":[{"scannedAt":"2026-08-22T08:19:36.500Z","commit":"f4e302b764afa71596025713b859cbbffcd52a9f","policyVersion":"HT-DSH-0.2.2","verdict":"caution","status":"static-complete"},{"scannedAt":"2026-08-21T13:16:28.700Z","commit":"9f9b1def99a044574ed8930cde4b3de3ff51c8f0","policyVersion":"HT-DSH-0.2.2","verdict":"caution","status":"static-complete"},{"scannedAt":"2026-08-21T13:16:11.803Z","commit":"9f9b1def99a044574ed8930cde4b3de3ff51c8f0","policyVersion":"HT-DSH-0.2.2","verdict":"review","status":"static-complete"},{"scannedAt":"2026-08-21T11:17:22.644Z","commit":"9f9b1def99a044574ed8930cde4b3de3ff51c8f0","policyVersion":"HT-DSH-0.2.1","verdict":"review","status":"static-complete"},{"scannedAt":"2026-08-21T10:44:00.530Z","commit":"9f9b1def99a044574ed8930cde4b3de3ff51c8f0","policyVersion":"HT-DSH-0.2.0","verdict":"caution","status":"static-complete"}],"events":[{"kind":"commit-change","from":"9f9b1def99a044574ed8930cde4b3de3ff51c8f0","to":"f4e302b764afa71596025713b859cbbffcd52a9f","commit":"f4e302b764afa71596025713b859cbbffcd52a9f","policyVersion":"HT-DSH-0.2.2","at":"2026-08-22T08:19:36.500Z"},{"kind":"verdict-change","from":"review","to":"caution","commit":"9f9b1def99a044574ed8930cde4b3de3ff51c8f0","policyVersion":"HT-DSH-0.2.2","at":"2026-08-21T13:16:28.700Z"},{"kind":"policy-change","from":"HT-DSH-0.2.1","to":"HT-DSH-0.2.2","commit":"9f9b1def99a044574ed8930cde4b3de3ff51c8f0","policyVersion":"HT-DSH-0.2.2","at":"2026-08-21T13:16:11.803Z"},{"kind":"verdict-change","from":"caution","to":"review","commit":"9f9b1def99a044574ed8930cde4b3de3ff51c8f0","policyVersion":"HT-DSH-0.2.1","at":"2026-08-21T11:17:22.644Z"},{"kind":"first-scan","from":null,"to":"caution","commit":"9f9b1def99a044574ed8930cde4b3de3ff51c8f0","policyVersion":"HT-DSH-0.2.0","at":"2026-08-21T10:44:00.530Z"}]}