dsh-team-model
Agent Teams 队友模型:让模型和用户都能指定每个队友的模型,并在 Web UI 的会话头部、输入框工具行与设置页切换。
What it is
Agent Teams 队友模型:让模型和用户都能指定每个队友的模型,并在 Web UI 的会话头部、输入框工具行与设置页切换。
How to install
Run this in the DSH web profile, then refresh the page.
$ dsh plugin --profile web add 'git+https://github.com/Chruix/dsh-team-model.git#9ccd31b7ec718ad8ebf14bbc3e21e5599386ecd9'
DSH versions accepted
Undeclared
Author and traction
Chruix · ★ 3 · Updated 2026-11-06
About this plugin
dsh-team-model
中文 · [English](README.en.md)
> 为 [DeepSeek Harness](https://github.com/deepseek-ai) 的 Agent Teams 补上「按队友指定模型」:模型可以自己指定,用户也可以在 Web UI 里随时修改。
内置团队插件 @deepseek-ai/dsh-experimental-agent-team 在创建队友时不接受模型参数——spawn_teammate 只有 name / description / prompt / context,两个本地 subagent provider 也只认 providerName,因此所有队友都继承 Lead 当前的路由。
这个插件补上这一层,并且只使用框架的公开接口:新增一个工具、向子会话写入一条既有的 model/selection 事件、在 agent/request 中保持路由,再用一条 loopback RPC 支撑 Web UI。
功能
1. 模型可以自己指定队友的模型
新增工具 spawn_teammate_with_model,参数与内置 spawn_teammate 一致,另有三项可选:
{
"name": "reviewer", // 必填,[a-z0-9-],≤64 字符
"description": "代码审查", // 必填
"prompt": "审查这次改动…", // 必填
"context": "fresh", // fresh | fork
"provider": "openai", // 可选,省略则按 model 在目录中唯一匹配
"model": "gpt-5", // 可选,省略则继承当前会话
"reasoning_effort": "high" // 可选,模型支持时生效
}
模型会在队友的首轮请求之前写入子会话,因此第一次回复就使用新路由,不会先用继承的模型跑一轮。
2. 用户可以在三处切换
| 入口 | slot | 说明 |
| --- | --- | --- |
| 会话头部胶囊 | conversation.session.header.actions | 列出本队队友,点开选模型 |
| 输入框工具行 | conversation.input.right | 窄屏自动收成图标 + 模型名 |
| 设置 → 队友模型 | settings.section | 按会话分组,单个修改或整队统一,含离线队友 |
在队友会话里打开时会自动聚焦该队友(标题显示「模型」),只修改它自己的模型,不再列出整支团队。
3. 切换后一直有效
内置的模型选择是一次性的:selectionFor(agent).current 被一次请求消费后就清空,下一次请求回退到会话头或默认模型——表现为「切换只生效一轮」。插件在队友 agent 上挂 agent/request waterfall,按会话投影 modelSelection.pending ?? lastUsed 覆写 provider/model/reasoningEffort,因此第二轮、第三轮仍然是你选的那个模型,直到你再次修改。
4. 离线队友也能排队
不在线的队友没有运行中的 Agent,选择会进入队列(queued),在它下次启动时、第一条请求之前写入;界面会提示「该队友当前不在线,模型已记下,下次启动时生效」。
安装
插件是一个标准的 DSH bundle(package.json + cordis.patch.yml + host/client 两个入口)。
git clone https://github.com/Chruix/dsh-team-model ~/.dsh/plugins/dsh-team-model
然后在 DSH 的插件管理器里安装该目录(install_bundle),或在 profile 中插入一行:
- insert:
- id: team-model
name: dsh-team-model
依赖的 Host 服务:agents / agentTeams / tools / systemPrompt / sessionController / llm / connection / webServer。缺少任一项时,该 profile 不会激活本插件。
架构
index.js Host 半边(Cordis 插件)
├─ spawn_teammate_with_model 新增工具,只注册到 Lead 的 agent.ctx
├─ applySelection / applyOrQueue
│ ctx.sessionController.agents.selectForNextRequest(agent, selection)
│ = 追加一条 durable 的 model/selection + 同步当前选择
├─ agent/request 钩子 队友第二轮及以后仍按投影覆写路由
├─ RPC /dsh-team-model 直接挂在 ctx.get('webServer') 的 prefix 路由
│ tm.state / tm.setModel / tm.globals / tm.setAll
└─ team:model 说明段 注入 Lead 的 system prompt
client.js Web UI 半边
├─ 三个 slot 注册(header #5 / input.right #0 / settings.section #45)
├─ MenuSurface + MenuGroup 原生弹层,CSS 模块字符串注入
└─ 通过 ctx.connection.rpc.call('/dsh-team-model', endpoint, payload) 取数
Compare in this category
The five most-starred plugins in the same category.
| Plugin | Author | Stars | Version | Updated |
|---|---|---|---|---|
| dsh-our-free-model | Ebony-Vinyl | 68K | 2.1.0 | 2026-11-10 |
| next-ai-draw-io | DayuanJiang | 36.9K | 0.4.10 | 2026-11-09 |
| MemOS | MemTensor | 12.3K | 0.0.0 | 2026-11-09 |
| bisheng | dataelement | 12.2K | 0.0.0 | 2026-11-10 |
| webnovel-writer | lingfengQAQ | 7.9K | 0.0.0 | 2026-11-07 |