Skip to content

agent-team-dsh

Verified

@gxx-labs/agent-team-dsh · v0.1.9 · MIT · Web UI

DSH 插件:团队 —— 可保存复用的团队模板,成员可各自使用不同 Agent 预设(能力不同),在会话输入框选中后由队长调度协作并统一汇总。

Install

dsh plugin add @gxx-labs/agent-team-dsh

Confirm the layer applied with dsh --profile default --dump-config — see the install guide.

Source

Published to npm without a public repository. Inspect the package contents before installing.

Tags

Readme

@gxx-labs/agent-team-dsh

DSH 插件:团队。

把「一位队长 + 若干成员」的协作方式保存成可复用的团队模板,并让每个成员运行在你指定的 Agent 预设上 (因而真正具备不同的能力)。在会话里选中团队后,队长就能按模板调度成员协作,并统一汇总结果。

包名:@gxx-labs/agent-team-dsh

它解决什么问题

不用这个插件,你也能让队长带队友干活。插件唯一不可替代的价值是: 让每个成员真的运行在模板指定的预设上——minimal 成员只有终端工具、standard 成员能改文件、 cordis 成员能碰插件,而不是"看起来像不同角色、实际能力都一样"。

因此有两条硬规则:

  1. 不用角色提示词冒充不同预设。 预设(决定能力)与职责(决定角色)是两个独立字段,分别生效、 分别可见。
  2. 做不到就明确失败。 目标预设不存在或损坏、或队友名不在模板里,一律明确报错, 绝不静默退回队长的预设——那会交付一个"假异构"。

安装

推荐:在 DSH 的插件页里安装 @gxx-labs/agent-team-dsh。本包随包携带 bundle 声明, 装好后重启 DSH 即可,不需要手工改配置。

手动安装
npm i @gxx-labs/agent-team-dsh --prefix "$env:USERPROFILE\.dsh\profiles\desktop"

并把包名加进该 profile 的 package.json:dependencies 与 dsh.profile.bundles 各一处。 改完需要托盘完整重启 DSH(不是关窗口)。

同一个插件不要以两个包名并存(例如又装 npm 版、又留一份本地目录版):会形成两个活跃的 Loader 源,插件会直接失效。迁移时是替换,不是并存。

可选:把队友名额从默认 8 提高。默认值包含失败成员,且失败成员永久占位、无法删除或回收。

- id: agent-team
  config:
    maxMembers: 24

使用

  1. 打开左侧栏的**「团队」**页,点「新建团队」。填团队名称、队长预设,再逐个添加成员: 通信名(队长创建成员时用的名字,须与模板一致)、显示名、成员预设、职责。 新建与编辑都在弹出框里完成,保存立即生效;保存失败时表单保持打开并给出原因。

    通信名只能用小写字母、数字与连字符(lower-kebab-case,例如 reviewer), 且不能是 lead。这是原生团队服务的硬限制,不是本插件自定的规则。 输入框不做任何限制:中文、大写、空格都能照常输入(输入法组字不会被干扰)。 内容不合规时,输入框下方会实时显示红色提示说明原因。 点保存时若仍有成员不合规:不会保存、弹出框保持打开,并指明是第几位成员、哪里不对, 因此不会出现"填了中文、保存后弹窗关掉却没存下"的情况。 显示名可以用中文,只有通信名受限。

  2. 在会话里选中团队:点输入框工具行的团队选择器,或输入 /team。

  3. 正常打字派活。队长会按模板创建成员;成员名必须取模板里的通信名,否则会被明确拒绝并列出可用名字。

操作失败时会在顶部弹出提示(与「会话已归档」同款),内容就是具体原因, 例如"该会话已开始,且团队队长预设 X 与当前预设 Y 不同,无法绑定"。

绑定规则

  • 会话尚未开始时可以绑定,并会把队长切到模板指定的预设。
  • 会话已经开始时也可以绑定,前提是模板的队长预设与当前预设相同——此时不切换任何东西, 绑定只影响之后创建的成员。
  • 一个会话对应一个团队实例;同一个模板可以在多个会话各起一个实例,各自的成员记忆、任务与消息互不共享。

数据与诊断

  • 模板与绑定关系存在 ~/.dsh/agent-team/(teams.json、instances.json), 写入是原子替换并带版本校验,损坏时会降级而不是崩溃。
  • 排障入口:GET http://127.0.0.1:19387/api/agent-team/diag——返回进程信息、 客户端半是否加载成功、以及插件自检诊断(正常情况下 diagnostics 为空数组)。

已知限制

  1. 停用或卸载本插件前,请先结束团队会话。 重绑钩子随插件卸载消失,成员下次恢复会回落到队长的预设, 而记录里仍写着目标预设——降级方向是权限变大。插件载入时会自检并尝试修复,diagnostics 可查。
  2. 队友名额包含失败成员,且永久占位:原生不提供删除、重命名或回收,失败的名字也不复用。 撞满后只能新建会话——请把 maxMembers 配足。
  3. 成员无法发起审批:需要审批的操作会被自动拒绝,必须回到队长或你自己处理。
  4. 成员与队长共享同一个工作目录;写入范围只是提示而非锁,队长需要协调重叠写入并复核最终结果。
  5. 成员的 inactive 只表示当前没有运行轮次,不代表任务完成。
  6. 向非驻留成员投递消息失败时,原生邮箱只会在宿主日志里留一条记录、对外表现为消息停在队列里。 本插件已把所有自身原因(监听器抛错、提示注入失败)记录到上面的 diagnostics,便于定位; 若 diagnostics 为空而消息仍停在队列,则成因在原生路径,重启 DSH 后重试。
  7. 成员的实际预设以成员自己会话里的 agent-preset/selected 为准;成员会话头部的 agentPreset 是创建时的值,会误导。

开发

见 DEVELOPMENT.md。

许可

MIT