dsh-classmates
Verified@klarkxy/dsh-classmates · v0.2.0-rc.1 · SEE LICENSE IN LICENSE · Web UI
Teammate Roles: reusable roles for native DSH subagents and Team teammates
Install
dsh plugin add @klarkxy/dsh-classmates 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.
Readme
队友角色
队友角色把原生子智能体和团队成员共用的角色配置集中到一处:职责、工作指令、模型和思考强度都写进同一份角色库,普通子智能体和团队面板都从它取值。你也可以在 DSH 自带的创造模式里用对话完成这套配置。版本 0.2.0-rc.1 使用 npm next 预发布通道。
运行环境:Node ≥ 24、DSH ≥ 0.2.0-rc.2;本工作区按 DSH Web 0.2.0-rc.2 / Windows 施工。团队协作另需官方 Team 插件 @deepseek-ai/dsh-experimental-agent-team-profile,普通子智能体不需要它。派发、消息、任务和会话仍由 DSH 负责,本插件不替换官方消息、任务板、成员和会话管理。
安装
确认
dsh --version为0.2.0-rc.2。如需团队协作,在目标 Web profile 的原生插件管理页面启用官方智能体团队插件包:
@deepseek-ai/dsh-experimental-agent-team-profile。安装预发布通道:
dsh plugin --profile web add @klarkxy/dsh-classmates@next重启目标 profile,进入 插件 → 队友角色。若使用自定义 profile,将命令中的
web替换为它的名称。
测试使用的 bundle 顺序为:@deepseek-ai/dsh-base、@deepseek-ai/dsh-web-app、@deepseek-ai/dsh-experimental-agent-team-profile、@klarkxy/dsh-classmates。
第一次使用
手动配置请进入 插件 → 队友角色。模板页定义职责和工作指令,模型页保存模型、思考强度和用途说明;不必为每个模板绑定模型。角色保存在宿主配置,模型密钥由宿主管理,本插件没有密钥输入框。
用对话配置时,新建会话并选择 DSH 自带的 创造模式,例如“添加实现和审查模板,再把这个模型的 high 配置为复杂审查用途”。创造模式的主智能体可用 classmates_read 读取模板、模型用途配置和宿主目录,用 classmates_batch 修改模板、classmates_models_batch 修改模型用途配置;配置完成后仍可继续执行正常任务和团队协作。
配置工具仅向创造模式的主智能体开放,普通模式、子智能体和团队成员不能修改角色库。空库或角色全部停用时,创造模式仍能配置第一批角色。模型和思考强度修改的是未来成员的模板,不会切换当前会话或已有成员的模型。
内置工作指令及创造模式角色配置提示词使用英文,界面说明和回复语言保持中文或用户指定语言。已有自定义角色不会被自动改写。
独立“角色配置助手”预设已移除,角色数据和历史记录不迁移、不删除。旧助手会话不会被自动改成创造模式;后续配置请新建创造模式会话。
配置完成后,点击“开始任务”进入新的标准会话。输入框会带入可编辑的队友摘要,填写任务并发送即可;原会话和草稿保留。模型列表会显示供应商名称,目录项本身不代表连接已验证。
角色列表提供 12 个预设:Researcher、Writer、Verifier、Advisor、Explorer、Planner、Ideator、Griller、Implementer、Reviewer、User Tester、Overdesign Guard,初始均停用。Advisor 是只读咨询:不实施、不验收、不改文件。已有安装可通过“从预设添加”选择模板,保存后按需启用;不会覆盖已有角色。
角色模板可选择跟随会话、绑定模型预设或指定模型,选择会立即保存,与未保存的职责文本分开。模型预设是强绑定:预设被删除或停用后,后续派发会报错,直到改选来源或显式传入本次调用的 model_profile。旧 recommendedModelProfileId 在没有固定模型时迁移为预设绑定;已有固定模型优先,旧建议只保留为迁移提示。不会静默换预设、回退或重建预设。
请求团队协作时,在普通会话中明确说明,例如:
请使用 Classmates 的 Researcher 角色,调查这个问题并把证据发给你;你汇总最终答案。使用官方 Team 消息和共享任务。
主控获得 classmates_list 和 classmates_spawn 两个工具,列表返回角色简介和模型来源信息。省略 model_profile 时使用角色保存的来源,显式传入时只覆盖本次创建。没有可用启用角色时不挂载这两个工具。目录查询不创建成员,插件也不会自动发起对话。后续协作使用原生 Team 工具。
模型用途配置与使用前确认
主代理根据任务和用途说明,通过派发工具的 model_profile 选择模型用途配置。同一模型可以保存不同思考强度的多条配置;未指定强度时使用所选模型的默认行为。插件不自动轮询、随机选模或切换备用模型,原生结果和错误交给主代理判断下一步。配置只供选择参考,不代表连通性或质量已经验证。
未显式传入本次调用的模型预设时,使用角色保存的来源。指定模型未填思考强度时继承派发会话的强度,不兼容时拒绝创建;绑定或本次选用的模型预设则同时提供模型与强度,未填强度时使用模型默认值。解析后的配置在创建时保存,模板和预设的后续编辑、停用或删除不会改写已有实例。
在模型页为某个模型打开“使用前确认”,Classmates 每次用它创建新子智能体或团队成员前都会请求 DSH 原生审批。
- 同一供应商和模型的所有用途、思考强度共用此设置,删除用途预设不会解除保护。
- 批准只用于本次创建;已有实例继续运行和接收消息,不会逐条请求审批。
- 拒绝、取消或没有可用审批渠道时不创建,也不自动换模型。
创造模式可通过 classmates_model_protection 设置保护;要求它关闭已有保护时也会请求原生审批。用户可以在模型页直接修改开关。审批遵循宿主配置的处理链,可能由审批插件回答;现有 Safe Auto 的 smart 模式将这类请求交给后续渠道,unattended 模式拒绝。
边界:这不是预算上限或宿主全局模型禁用。原生通用 subagent、其他插件和直接修改宿主配置不在此控制范围。
普通子智能体
启用角色后,在支持原生子智能体派发的会话中提出任务,例如:
请用 Reviewer 角色派发子智能体,检查这次改动;你根据结果完成修正。
插件把每个启用角色组合成官方派发工具(例如 subagent_reviewer),主智能体会看到角色职责并选择匹配入口。职责、模型和思考强度来自同一套角色配置;未指定角色的原生 subagent 仍按宿主默认行为运行。
- 默认在后台创建可继续子智能体,后续消息、中断、结果通知和会话界面由 DSH 管理。前台调用(
run_in_background: false)等待一次性结果,完成后释放子智能体。 - 通过
model_profile选择模型用途配置时,使用其中的模型与强度;未选择时沿用旧模板覆盖和当前聊天继承规则。不兼容的思考强度会由宿主拒绝派发。 - 子智能体的模型和完整角色指令保存在 DSH 原生会话记录中。模板修改、停用、删除只影响之后的派发;恢复已有子智能体不读取最新模板,也不需要 Team 的绑定文件。
- 角色指令按原文处理,包括
{{...}}。这项兼容处理需要保留 Classmates 插件;不要在角色子智能体运行期间卸载它。 - 角色派发只在原生
subagent入口可用的会话中提供,使用官方spawn后端,继续遵守原生深度、容量、权限与取消规则。没有启用 Team 时,创造模式仍可配置角色。
看清团队成员
会话顶部沿用“智能体团队”入口。增强面板显示角色名称和具体成员名、最近请求的模型与思考强度,以及官方任务与运行状态,同一角色的多个成员仍可区分。模型未发出请求时只显示已配置值,信息缺失时不会借用主控模型;成员空闲不代表任务已经完成。
增强组件使用官方插槽覆盖机制,保留原生会话导航和任务板;卸载后恢复原面板。模板改名不会改写历史成员身份。
编辑、恢复与卸载
- 模板编辑、停用和删除只影响之后的新建成员。已有成员继续使用创建时冻结的模型、effort 和指令。
- 在左侧模板列表直接启用和停用,开关立即保存,不会提交右侧尚未保存的文字。名称、职责和工作指令通过“保存”提交;模型用途配置在模型页单独维护。
- 设置保存有版本检查。发生并发修改时保留本地输入,可以读取远端版本比较,再明确选择覆盖或放弃本地修改。
- 成员绑定位于 profile 的
data/classmates。恢复旧会话需要原 profile 配置、会话数据和这些绑定文件;不要只复制某个 Session。绑定校验和用于检测损坏,不是抵御有本地写入权限攻击者的认证机制。 - 先结束相关成员和会话,再卸载插件。 普通主会话保持可用。插件缺席时,旧 Classmates 成员无法保证恢复;热卸载正在使用的成员不提供路由绑定保证。重新安装后重启宿主,再恢复旧会话。
- “只读”“研究员”等工作指令不是权限沙箱。成员仍遵循官方工具、工作区和权限规则,可能共享工作目录。
已验收与限制
本机 OCG 下的 mimo-v2.6-flash、minimax-m3、step-5-preview 已完成真实短任务;MiniMax 的 high 已核对实际发送参数。独立重启并删除模板后,旧成员仍使用原路由。设置页的增改删、双窗口冲突、320px 窄屏和宿主深色主题纳入浏览器验收。
上述真实模型记录来自 0.1.0-alpha.1 的历史验收,不代表本轮重新测试了这些供应商。这不代表模型内部推理量、其他 DSH 版本或 Desktop/CLI/Spaces/Editor 已验证。增强面板展示宿主记录的请求路由,不推断代理服务背后的真实型号。升级宿主须重新验收。
开发与反馈
cd ../.. # monorepo 根目录
pnpm install --frozen-lockfile
pnpm --filter @klarkxy/dsh-classmates check
pnpm --filter @klarkxy/dsh-classmates pack
scripts/acceptance-host.mjs 是使用隔离 DSH_HOME 的本地验收宿主,需要预先配置该 profile 的模型列表,凭据只从环境继承。scripts/browser-acceptance.mjs 使用 DSH_ACCEPTANCE_URL 连接验收宿主,会创建并删除一个测试角色;需要本机 Edge。真实模型测试会消耗模型额度,日常单测不会。
模型来源界面回归:在本包目录运行 node scripts/recommendation-browser.mjs,也可从任意目录传入该脚本路径。脚本打包实际 React 页面,在空闲本地端口启动隔离的内存 CAS 存储并打开无头 Edge,检查跟随/预设/固定模型、即时保存、双窗口冲突、停用/缺失绑定、键盘切页及手机宽度。无需构建、安装 DSH、凭据或模型调用。夹具使用宿主原子控件测试替身,只证明源码界面行为;原生包测试和隔离宿主验收分别覆盖派发与运行时加载。
离线 Fusion 归档(不扫描 .dsh、不改配置):
npm run build
node dist/migrate-fusion.js --fusion fusion-store.json --output classmates-merged.json [--classmates classmates-export.json] [--archive archive-dir-or.html]
# 源码目录:node scripts/migrate-fusion.mjs …
# 安装后:node node_modules/@klarkxy/dsh-classmates/dist/migrate-fusion.js …
说明见 docs/fusion-migration.md。真正写入用户配置由 primary 执行。
反馈请使用 .github/ISSUE_TEMPLATE/bug_report.md,包含精确版本、脱敏路由、复现步骤及是否涉及恢复。不要上传 API Key、完整私有会话或项目文件。上游测试辅助代码的出处见 THIRD_PARTY_NOTICES.md。
本包采用 SATA 2.1,见 LICENSE;第三方署名保留在 THIRD_PARTY_NOTICES.md。预发布使用 next,有 latest 版本后再收录到稳定插件目录。
源码现在维护于 dsh-plugins/plugins/dsh-classmates。历史演示脚本需要旧 dsh-teammates 目录保留的录屏与本地模型配置;构建和单测不依赖这些文件。历史验收记录保留原路径,不代表迁移后的本轮验收。