🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

多智能体总指挥 qinglang8609/deepseek_herdr

DeepSeek Harness
qinglang860962 天前有提交已提供中文文档扫描:含敏感能力

在对话里开智能体、派活并实时查看进度

26.4/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/4 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add qinglang8609/deepseek_herdr
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:待复验
是什么
dsh 原生插件 · skill
装得上吗
曾在 dsh 0.2.0-rc.2 下真实安装成功,但当前 dsh 已更新至 0.2.1-rc.5,本站尚未在新版下复验
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 62 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 99 处,展示前 33 条)
  • 读取本地文件
    plugin/lib/index.js:246
    for (const entry of readdirSync(dir, { withFileTypes: true })) {
  • 读取本地文件
    plugin/lib/index.js:260
    total += statSync(p).size;
  • 读取本地文件
    plugin/lib/index.js:268
    return statSync(p).size;
  • 读取本地文件
    plugin/lib/index.js:275
    return statSync(p);
  • 读取本地文件
    plugin/lib/index.js:282
    const data = readFileSync(p);
  • 写入本地文件
    plugin/lib/index.js:283
    writeFileSync(`${p}.gz`, gzipSync(data, { level: 9 }));
  • 删除本地文件
    plugin/lib/index.js:285
    unlinkSync(p);
  • 读取本地文件
    plugin/lib/index.js:375
    for (const dir of readdirSync(prebuilds)) candidates.push(join(prebuilds, dir, "spawn-helper"));
  • 写入本地文件
    plugin/lib/index.js:378
    for (const helper of candidates) if (existsSync(helper)) chmodSync(helper, 0o755);
  • 写入本地文件
    plugin/lib/index.js:459
    mkdirSync(targetDir, { recursive: true });
  • 写入本地文件
    plugin/lib/index.js:460
    writeFileSync(target, content, "utf8");
  • 写入本地文件
    plugin/lib/index.js:581
    mkdirSync(cwd, { recursive: true });
  • 写入本地文件
    plugin/lib/index.js:583
    mkdirSync(memoryRoot, { recursive: true });
  • 启用终端会话(PTY)
    plugin/lib/index.js:1013
    pty: this.nodePty.spawn(binary, [], {
  • 启用终端会话(PTY)
    plugin/lib/index.js:1104
    handle.pty = this.nodePty.spawn(binary, [], {
  • 执行外部命令固定命令
    plugin/lib/index.js:1716
    const id = execFileSync("/usr/bin/sqlite3", [db, `SELECT id FROM session WHERE directory='${esc}' AND time_archived IS NULL AND time_created >= ${Math
  • 启用终端会话(PTY)
    plugin/lib/index.js:1767
    pty: this.nodePty.spawn(binary, args, {
  • 删除本地文件
    plugin/lib/index.js:2135
    if (ghosts.length === 0) unlinkSync(file);
  • 删除本地文件
    plugin/lib/index.js:2235
    try { unlinkSync(file); } catch {}
  • 删除本地文件
    plugin/lib/index.js:2261
    if (next.length === 0) unlinkSync(file);
  • 发起网络请求
    plugin/lib/client.js:7355
    const res = await fetch(API_BASE + path, { headers: { accept: "application/json" } });
  • 发起网络请求
    plugin/lib/client.js:7361
    const res = await fetch(API_BASE + path, {
  • 发起网络请求
    plugin/lib/client.js:7371
    const res = await fetch(API_BASE + path, { method: "DELETE" });
  • 执行外部命令来自配置/变量
    plugin/lib/session-scanner.js:27
    execFile(cmd, args, { timeout: 10000, maxBuffer: 4 * 1024 * 1024, ...opts }, (error, stdout) => {
  • 读取本地文件
    plugin/lib/session-scanner.js:73
    if (!existsSync(dir)) return [];
  • 读取本地文件
    plugin/lib/session-scanner.js:75
    for (const f of readdirSync(dir).filter((x) => x.endsWith(".jsonl"))) {
  • 读取本地文件
    plugin/lib/session-scanner.js:77
    const st = statSync(full);
  • 读取本地文件
    plugin/lib/session-scanner.js:95
    if (!existsSync(OPENCODE_DB)) return [];
  • 读取本地文件
    plugin/lib/session-scanner.js:119
    if (!existsSync(CODEX_SESSIONS)) return [];
  • 读取本地文件
    plugin/lib/session-scanner.js:124
    entries = readdirSync(dir, { withFileTypes: true });
  • 删除本地文件
    plugin/lib/session-scanner.js:187
    if (existsSync(p)) unlinkSync(p);
  • 删除本地文件
    plugin/lib/session-scanner.js:192
    if (existsSync(p)) unlinkSync(p);
  • 删除本地文件
    plugin/lib/session-scanner.js:233
    if (match(meta)) unlinkSync(p);
扫描于 2026/11/1(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 开启并指挥智能体团队
  • 实时查看智能体进度
  • 共享记忆与任务看板编排

多智能体总指挥插件(DeepSeek Harness 原生版) ——让 DeepSeek 高效打开并指挥一个 claude / opencode / codex 智能体团队,实时看到每个智能体在做什么,通过共享记忆与任务看板编排多人协作。

README

由 DeepSeek 最新模型翻译生成
dsh-agent-commander 多智能体总指挥插件(DeepSeek Harness 原生版) —— 让 DeepSeek 打开并指挥一个 claude / opencode / codex 智能体团队,实时看到每个智能体在做什么,通过共享记忆与任务看板高效编排多人协作。 ┌────────────────────────────────────────────┐ │ DeepSeek Harness │ │ ┌──────────────────────┐ ┌──────────────┐ │ │ │ 中间:聊天区(原生) │ │ 右侧:智能体雷达 │ │ │ │ 你 ↔ DeepSeek(总指挥) │ │ claude working│ │ │ └──────────────────────┘ │ opencode idle │ │ │ │ 点击→实时终端 │ │ │ │ +新建(角色+技能)│ │ │ └──────────────┘ │ └────────────────────────────────────────────┘ ✨ 功能亮点
展开完整文档(README 剩余 1 节)
dsh-agent-commander

多智能体总指挥插件(DeepSeek Harness 原生版) —— 让 DeepSeek 打开并指挥一个 claude / opencode / codex 智能体团队,实时看到每个智能体在做什么,通过共享记忆与任务看板高效编排多人协作。

┌────────────────────────────────────────────┐
│ DeepSeek Harness │
│ ┌──────────────────────┐ ┌──────────────┐ │
│ │ 中间:聊天区(原生) │ │ 右侧:智能体雷达 │ │ │ │ 你 ↔ DeepSeek(总指挥) │ │ claude working│ │ │ └──────────────────────┘ │ opencode idle │ │ │ │ 点击→实时终端 │ │ │ │ +新建(角色+技能)│ │ │ └──────────────┘ │ └────────────────────────────────────────────┘

✨ 功能亮点

- 智能体雷达(右侧详情栏):所有已打开的智能体列表,实时状态徽标(working / idle / blocked / exited)、角色、工作目录;点击展开实时终端(xterm + WebSocket + node-pty),可直接打字与智能体交互
- 工作区隔离 + 自动重检:雷达列表按当前工作区(会话工作目录)隔离;切换工作区自动重新检测并恢复 .deepseek/agents.json 中保存的未运行智能体
- 新建智能体弹窗:选引擎(自动检测 claude / opencode / codex 是否安装)、命名、 角色定义(内置 6 个预设:数据库专家 / 设计专家 / 前端专家 / 测试专家 / 代码审查专家 / 架构师)、挂载技能(~/.agents/skills/)—— 角色与技能作为开场简报自动注入并回车执行
- DeepSeek 指挥工具:agent_open / agent_list / agent_read / agent_send / agent_broadcast / agent_signal / agent_close,总指挥可在对话里直接开智能体、派活、收结果
- 共享记忆协议:开智能体时自动播种 .deepseek/memory.md(长期记忆)、 .deepseek/task-board.md(任务进度)、.deepseek/experience.md(经验沉淀)、 .deepseek/handoffs/(交接文件)与 SQLite 知识库 memory.db —— 所有智能体读写同一份,天然共享上下文
- 安全设计:路径穿越防护、请求体上限、环境变量白名单、信号白名单、 Trust fence、自动审批仅限启动阶段

📦 安装

方式一:GitHub 直接安装(推荐)

安装最新 main 分支
dsh plugin add github:qinglang8609/deepseek_herdr

或锁定到发布 tag
dsh plugin add github:qinglang8609/deepseek_herdr#v0.2.2

首次安装若提示 ERR_PNPM_IGNORED_BUILDS(node-pty 构建脚本),在 profile 目录执行 pnpm approve-builds 放行 node-pty 即可。

方式二:tarball 安装

cd plugin && pnpm pack
dsh plugin --profile web add ./dsh-agent-commander-0.2.2.tgz

方式三:一键脚本(自动标准流程 + 回退)

bash install.sh # 默认 profile: web;优先走 dsh plugin add 标准流程 bash install.sh --profile <name> # 指定 profile bash install.sh --remove # 卸载 bash install.sh --skill-only # 只装 skill

装完重启 DeepSeek Harness 生效(插件集变更需要重启)。

🚀 快速开始

1. 重启后,右侧「智能体雷达」面板自动打开(主界面右上角有悬浮「🤖 雷达」按钮可弹出/收起)
2. 点「+ 新建」→ 选引擎、写角色(如"数据库专家")、勾选技能 → 创建
3. 点击智能体行展开实时终端(xterm + WebSocket),直接打字下达指令
4. 对 DeepSeek 说: "用 agent_open 打开一个 opencode,角色定为前端专家,派它修复 xx 页面的样式问题"
5. 切换工作区时,雷达会自动重新检测新文件夹的智能体列表

⚙️ 配置(Config schema)

插件导出标准 Schemastery Config schema,所有参数可在 profile 的 cordis.patch.yml 覆盖:

- id: agent-commander
config:
maxAgents: 12 # 同时打开的最大智能体数(默认 8) transcriptLimit: 2097152 # 每个智能体转录环上限字节(默认 1048576 = 1 MiB,示例为 2 MiB) rolePresets:
- 数据库专家
- 安全专家 # 自定义预设会出现在「新建智能体」弹窗里 memoryDir: .deepseek # 共享记忆目录名(默认 .deepseek)
allowedSignals: [SIGINT, SIGTSTP, SIGTERM]
baseCwd: /path/to/project # 无会话工作目录时的默认项目根 monitorIntervalMs: 30000 # 会话定时监控间隔(毫秒,默认 30000;0 = 关闭)会话定时监控:服务端按 monitorIntervalMs 巡检当前工作区的会话状态(运行中 / 启动中 / 已退出 / 空闲),仅在状态变化时经 WebSocket 推送,雷达面板静默替换列表 —— 不弹提示、不闪 loading。面板顶部一行显示「定时监控 ·每 30秒 巡检 · 已同步 15:04:05」。

完整字段表见 plugin/README.md。

📦 发布流程

node scripts/release.mjs patch # patch | minor | major | 显式版本号;需在 main 分支、工作区干净
node scripts/release.mjs --no-commit --allow-branch # 试跑:构建+升版本+打包,不提交不打 tag

脚本自动完成:构建 client bundle → 同步 plugin/ 与根 package.json 版本 → pnpm pack(失败自动回退 npm pack,缓存指向 dist/ 绕开权限问题)→
git commit release: vX.Y.Z + tag → 输出发布清单(push remote + dsh plugin add github:…)。
打包产物在 dist/(已 gitignore)。

🔧 开发

plugin/
├── lib/
│ ├── index.js # node 端:Config schema + AgentRegistry(node-pty) + 共享记忆 + agent_ 工具 + WS/HTTP 路由 │ ├── session-scanner.js # 四引擎会话历史扫描(claude/opencode/codex/codebuddy) │ ├── session-monitor.js # 会话定时监控:会话列表构建 + 按 monitorIntervalMs 巡检(变化才推送) │ └── client.js # client bundle(构建产物,勿手改) ├── src/client/ # client 源码(app.js 雷达面板 / panel.css;vendored xterm 终端小窗) │ └── vendor/ # 内联的 xterm + addon-fit + xterm.css ├── skill/agent-commander/skill.md # 总指挥 skill(随插件包分发,启动时自动装到 ~/.agents/skills/) ├── scripts/build-client.mjs # 组装 client.js ├── cordis.patch.yml # 激活补丁 └── package.json templates/experience.md # 经验总结模板 install.sh # 一键安装脚本 scripts/release.mjs # 发布流程(构建+升版本+打包+commit/tag+清单)

改完 client 源码后重新构建:

ELECTRON_RUN_AS_NODE=1 "/Applications/DeepSeek Harness.app/Contents/MacOS/DeepSeek Harness" plugin/scripts/build-client.mjs
bash install.sh

node 端实现为 cordis Service 类(AgentCommanderService),其他插件只需
inject: ['agentCommander'] 即可调用其公开 API(list / open / send / read /
approve / signal / close / memory.* / scan / restore),详见 plugin/README.md。

🏷 版本历史

| 版本 | 内容 |
| v0.2.2 | (未发布)终端宿主重构:移除 herdr 三件套(herdr-adapter / herdr-registry / composite-registry)与 docs/ 两个相关设计文档、失效测试 plugin/test/herdr-e2e.mjs;宿主统一为node-pty 网页终端(xterm + WebSocket 实时输出);雷达改两段独立展示(「运行中」= 活跃终端 /「会话历史」= 四引擎持久会话);新增 /ws/terminal 终端流、SessionScanner(四引擎扫描) + SessionMonitor(定时巡检);buildSessionList 历史只做 running 精确标注(未命中历史会话的运行窗口合成精确 live: 卡片,引擎写入首条消息后自动消失) |
| v0.2.1 | 修复 4 CRITICAL + 5 HIGH(渲染期 ref 副作用 / WebSocket 泄漏 / 竞态 / prompt 注入 / schema 文档不一致 / VACUUM 吞错 / resize 节流 / busy 未重置)+ 状态卡死专项(周期巡检 idle 回落);支持 dsh plugin add github:... 直接安装 |
| v0.2.0 | 插件标准化:Config schema、tarball 标准安装、skill 随包分发、SQLite 记忆层、依赖解析兜底 |

📄 许可

详见 plugin/README.md 与插件包内文件。
预览分享卡片长什么样 ↓qinglang8609/deepseek_herdr
分享 · DeepSeek Harness Hub
qinglang8609/deepseek_herdr

在对话里开智能体、派活并实时查看进度

回到顶部