dsh-expert-team
github.com/yangdcm/dsh-expert-team
v1.5.3
工具与效率
可执行外部程序发起网络请求写入文件
dsh「专家团」bundle:一句自然语言组建角色化多智能体「数字员工」团队,按九阶段门控流水线协作交付,实现者直接改代码并产出持久工件;带 live 团队浮层。 · Role-based multi-agent expert team for DeepSeek Harness: one sentence in, a staged and gated team delivery out.
该插件尚未翻译,显示作者原文。
dshdsh-plugindeepseekdeepseek-harnessmulti-agentai-agentsagent-teamorchestration
检测报告
关注度高。命中了不少能力模式,其中可能有需要留意的。逐条看下面的清单。
1高关注2需留意4一般17未命中
高关注需留意一般
能力清单
- 可执行外部程序
spawns-processes高关注2 处命中lib/memory-backend.js:56import { execFile as execFileCb, spawn as spawnCb } from 'node:child_process';lib/metrics/session-usage.js:23import { spawn } from 'node:child_process';- 看它调用哪些程序。调用本机已有的工具是常见做法。
- 发起网络请求
network需留意21 处命中client.js:572return fetch('/plugins/dsh-expert-team/settings').then(function (r) {client.js:599fetch('/plugins/dsh-expert-team/settings', {client.js:2162fetch('/plugins/dsh-expert-team/settings', {client.js:2178fetch('/plugins/dsh-expert-team/memory-backend', {- 看请求发往哪些域名。发往作者自己的后端是常见做法。
- 写入文件
writes-files需留意9 处命中lib/host-state-file.js:94await fh.writeFile(body, 'utf8');lib/host-state-file.js:99await rename(tmp, target); // 同目录 rename ⇒ 原子替换lib/host-state-file.js:102try { await unlink(tmp); } catch { /* 临时文件可能压根没建起来 */ }lib/host-state-file.js:144await mkdir(parent, { recursive: true, mode: dirMode });- 看写入位置。写自己的配置目录是正常的,写系统目录不是。
- 读取文件
reads-files一般25 处命中lib/metrics/collect.js:19try { return JSON.parse(await readFile(p, 'utf8')); } catch { return null; }lib/metrics/collect.js:36const entries = await readdir(root, { withFileTypes: true });lib/metrics/collect.js:65try { state = JSON.parse(await readFile(join(dir, 'STATE.json'), 'utf8')); } catch { /* 缺件按 null */ }lib/metrics/collect.js:66try { log = await readFile(join(dir, 'RUN.log.md'), 'utf8'); } catch { /* 缺件按空串 */ }- 读文件是绝大多数插件的正常工作方式,本身不构成顾虑。
- 读取环境变量
reads-env一般24 处命中lib/hindsight-config-write.js:25* 事实来源:Hindsight 0.6.1 的配置真源是 `process.env.HINDSIGHT_CONFIG || ~/.hindsight/coding-agent.json`;lib/hindsight-config-write.js:234* @param {object} [input.env] - 环境变量(默认 `process.env`,认 `HINDSIGHT_CONFIG`)。lib/hindsight-config-write.js:239export async function saveHindsightConfig({ body, env = process.env, home, io } = {}) {lib/hindsight-config.js:24* `process.env.HINDSIGHT_CONFIG || ~/.hindsight/coding-agent.json`(其 `dist/dsh.js:1301`),- 环境变量里常混有密钥。看它是否把整个 env 都读走。
- 接触凭据或密钥
credentials一般8 处命中lib/artifact-writer.js:36/(^|\/)credentials(\.json)?$/i,lib/artifact-writer.js:37/(^|\/)secrets?(\/|$)/i,client.js:2274* ① **token 值不回显** —— 输入框是 password、保存后立刻清空,界面只显示"已配置/未配置";client.js:2873h('input', { className: 'exp-hs-input', type: 'password', value: token, autoComplete: 'off', spellCheck: false,- 看它读取哪些凭据、发往哪里。用于登录自己的服务是正常的。
- 动态加载模块
dynamic-import一般4 处命中lib/host-settings.js:167const load = typeof loadSchema === 'function' ? loadSchema : () => import('@deepseek-ai/schemastery');lib/lead-toolface.js:445const loader = typeof loadScope === 'function' ? loadScope : () => import('@deepseek-ai/dsh-scope');lib/metrics/session-usage.js:77const { zstdDecompressSync } = await import('node:zlib');lib/metrics/session-usage.js:107const { zstdDecompressSync } = await import('node:zlib');- 动态导入本身无害,但会让依赖关系难以静态审阅。
逐条扫描明细
| 能力 | 标识 | 关注度 | 命中次数 |
|---|---|---|---|
| 可执行外部程序 | spawns-processes | 高关注 | 2 |
| 发起网络请求 | network | 需留意 | 21 |
| 写入文件 | writes-files | 需留意 | 9 |
| 读取文件 | reads-files | 一般 | 25 |
| 读取环境变量 | reads-env | 一般 | 24 |
| 接触凭据或密钥 | credentials | 一般 | 8 |
| 动态加载模块 | dynamic-import | 一般 | 4 |
这份报告的口径
扫描读的是包里的源码,全程不执行第三方代码。 本次读了 61 个文件,扫描于 2026-10-14。 命中次数只说明源码里出现过这类调用,不说明行为好坏——一个插件读写文件 500 次和 1 次 都会被记为「读取文件」。这是能力清单,不是信任评分,也不是安全结论: 没扫出来的能力可能只是写法没被规则覆盖。
依赖安全公告
已查询这个插件声明的全部依赖,没有匹配到已公开的安全公告。(含 DSH 框架包在内的 @deepseek-ai/* 不作查询——那是运行时自己的问题,不是插件的。)