dsh-lead-panel
Verifieddsh-lead-panel · v0.9.0 · MIT · Web UI
DSH 领导面板:领导可在 DSH 官方 / 官方 Codex(GPT)/ Claude Code 之间切换,外部 harness 的模型直接在面板里换、一键打开它自己的界面或配置;支持单平台、跨平台分工、同题会诊、跨平台流水线四种协作模式,并实时显示 token/金额/用时。团队与 harness 能力都来自官方,本插件只做面板
Install
dsh plugin add dsh-lead-panel Confirm the layer applied with dsh --profile default --dump-config — see the install guide.
Source
Tags
Readme
dsh-lead-panel
关于「领导」模板:把 agent 当「人」用
这一节是作者的初衷,跟代码无关。 「领导 / 工人」是本插件的用法比喻;底下真正干活的那套团队机制是官方 Agent Teams (见下一节「官方能力 vs 本插件」)。
- 传统的 agent 主要用于一次性对话:做完这个「任务」后无法继续进行对话 —— 这样很浪费 token,缓存命中率也白搭。
- 而「领导」这个模板把这些 agent 当作单独的对话使用,并且可以相互通报、提交进度。
- 这样子搞的话,到时候要修改,直接让领导通知对应的(工人)模板就行。
- 效果类似于(中国古代的)「分封制」:
- 你是最高权力的**「老板」**,可以管理「领导」;
- 「领导」管理「工人」,可以控制一切的选择和过程;
- 而「领导」永远不会控制「老板」。
- 个人推荐:「强模型」(领导)把任务给「次模型 / 本地模型」(工人) (唯一的缺点可能就是速度问题)。
- 其实本质上就是让 AI 管外包,但是有「领导」看着:它可以实时地管理它们, 甚至可以随时关掉它们 —— 防止出现**「层层外包」**这一情况。
三点说明
- 关于总结:领导会总结几个关键点用于简单说明(这方面主要给使用者看; 如果你认为不行,可以让它对任务或者是计划进行修改)。
- 目前无法切换创建后的(工人)「模型」(如同上面说的)—— 面板上能切换的只是领导自己的模型;想换工人的模型,只能让它重新造一个。
- 你可以不用「领导按钮」(我也觉得这个没有用……)。 按钮只是入口:领导会话说到底就是个普通 DSH 会话,在会话列表里直接打开它、 跟它说话,效果一样;面板的价值只在于「看得见过程与花费」。
DSH 网页版的「领导面板」插件:在输入框的**「完全权限」右边**加一个 领导 按钮。
按下去弹出对话框,你和「领导」聊需求 —— 聊完让它总结并派活,运行期间实时显示
token、估算金额、用时和预计剩余时间。
派活时可以选择工人来源:官方 Agent Teams 现场组队,或者直接把活交给官方 Codex / Claude Code 的 subagent 提供方(都是 DSH 官方能力,本插件只负责发指令和显示过程)。
领导本身也能换平台:顶部的「领导平台」可以在 DSH 官方、Codex(GPT)、Claude Code
之间切换 —— 选外部 harness 时,它就是领导,每轮带着对话历史跑一次,「派活」= 直接让它把活干完。
还能跨平台干活:顶部的「协作模式」有 单平台 / 分工 / 会诊 / 流水线 四种 ——
同一个任务可以拆给多个平台分工、同时发给多个平台各答一遍对比、或按顺序接力处理。
外部领导的模型也能直接换:切到 Codex / Claude Code 当领导时,面板会读出它自己配置里的 模型,选一下就能换(下一条回复生效),旁边还有「打开 Codex」「配置」两个按钮—— 一键进它自己的界面,或直接改它的配置文件。
当前版本 0.9.0 | 更新说明 | 自检 96 项 + Host 冒烟 92 项全过 | 依赖官方 Agent Teams / 官方 Codex、Claude Code subagent 提供方(实验性)

面板长这样:顶部是状态、「领导平台」切换、模型选择(当前模型名 + provider 胶囊 + 推理强度)与 「工人来源」切换(官方团队 / Codex / Claude Code / 自动选),中间是计划卡片、 对话与工人区,底部是 token / 估算金额 / 用时 / 预计剩余 / 速度五个指标块, 以及「总结并派活」「发送」两个按钮。
它做什么
| 面板区域 | 内容 |
|---|---|
| 顶部 | 领导当前状态(运行中 / 空闲)、「领导平台」切换(DSH 官方 / Codex / Claude Code,见下一节)、模型下拉框(列出本机所有 provider/模型,按 provider 分组、模型全名、当前项打勾,选一下即切换),并常显当前模型 + provider 胶囊 + 推理强度;另有打断、重开 |
| 领导模型 | 只在外部 harness 当领导时出现:它自己的配置里的模型 + 换模型 + 打开 <平台> + 配置,见「换外部领导的模型」那一节 |
| 领导平台 | DSH 官方 / Codex(GPT) / Claude Code 三选一。DSH 官方是普通会话(模型可切、能组队派活);外部 harness 让它自己当领导,每轮带着对话历史跑一次,派活 = 直接动手 |
| 协作模式 | 单平台 / 分工 / 会诊 / 流水线 四选一,下面跟着一句说明;非单平台模式会出现「参与平台」多选(DSH 官方 / Codex / Claude Code),结果区按平台列出状态、耗时与答复 |
| 工人来源 | 官方团队 / Codex / Claude Code / 自动选 四选一。没装官方提供方的来源会置灰,鼠标悬停有提示;选择记在 Host 里,下次打开面板还是它 |
| 计划卡 | 领导总结的四段:【需求】【效果】【分工】【预计时间】,自动抽成卡片 |
| 中部 | 与领导的对话;助手消息下面挂它调用的工具名(spawn_teammate、subagent_codex 等) |
| 工人区 | 领导派出去的工人 AI:名字、状态、负责什么、各自的 token 与金额、最后一句结论;外部 harness 的工人带「外部」标记,完成后显示它的最终答复 |
| 底部 | 实时指标块:token / 估算金额 / 用时 / 预计剩余 / tok/s,下面是输入框、「总结并派活」、「发送」 |
「总结并派活」会给领导一条按来源不同的固定指令:让它先按四段回答,再立刻派活 ——
官方团队 用 Agent Teams 的 spawn_teammate 组队;Codex 调一次 subagent_codex;
Claude Code 调一次 subagent_claude_code;自动选 则由领导按任务性质自己决定。
官方能力 vs 本插件(先说清楚)
一句话:团队是官方的,这个插件是官方的「仪表盘 + 对讲机」。
| 能力 | 提供方 |
|---|---|
团队协作;spawn_teammate / send_message / team_task_* / list_agents / wait_agent 等工具;成员名册;共享任务看板;DSH 自带的「智能体团队」面板 |
官方(实验性功能,就是设置里那个「智能体团队」开关:"启用团队协作、团队工具、成员列表和共享任务看板") |
输入框旁的 领导 按钮;面板里的对话、模型切换、计划卡片、工人区、token / 估算金额 / 用时 / 预计剩余 |
本插件 |
本插件不实现任何团队逻辑:它只是建一个普通 DSH 会话当「领导」,把指令发给它,
再读官方的名册(ctx.agentTeams.listMembers)与用量投影,把过程显示出来。
代码里唯一出现 spawn_teammate 的地方,是发给领导的指令文本,不是它的实现。
前置条件:官方那个「智能体团队」开关必须打开,否则插件拿不到 agentTeams 服务,
「工人区」会是空的(面板会直接把原因显示出来)。
和官方的 Agent Teams 一起用
这个面板本质上是 Agent Teams 的「驾驶舱」:你只跟「领导」说话,造队友、派活、 收结果都由它自己完成(都是官方工具),而你在旁边看得见全过程。
1. 本地 AI 现场给你造队友
一句「你派几个子智能体来做」就够了 —— 领导自己起名字、定职责,用 spawn_teammate
把队友拉起来(下图里它自己造了「定位分析器 / 翻译 / 配置管理器」三个):

2. 队友之间互相汇报、统一推进
队友不是各干各的:它们能用 send_message 互发上下文与结论,领导再用
wait_agent 收口、team_task_* 协调分工,最后汇总成一份结果:

3. 全队状态一目了然
DSH 自带的「智能体团队」面板列出每个成员与状态(谁是当前会话、谁在跑):

面板里的「工人」区块读的就是同一份名册(ctx.agentTeams.listMembers),
额外补上每个队友花掉的 token 与估算金额 —— 即使队友干完活被卸载了,
数字仍然从它的持久日志里折叠出来。
4. 队伍可以随着任务长大
人不够就继续造:下图是一支 8 人队伍 —— 一个 lead 加七个各管一段的工人
(本地化分析、翻译、配置管理、BepInEx 安装、构建、字符串提取、字体排查):

5. 派活不是发一段 prompt,而是开一张任务板
领导把活拆成带编号的共享任务(谁能写哪些文件、交付物是什么、验收标准是什么), 每个任务有 owner、有写入范围;成员名册与任务板就是它的施工图:

6. 给工人的指令是一份交付规格,不是一句「你去做」
任务卡里写明目标、环境事实、步骤、交付物(可复用的脚本 + 报告), 甚至规定「严禁修改游戏目录内任何文件」这种边界:

连算法都写死到这种程度 —— 判据、保留规则、丢弃规则、去重、分类, 工人照着做就行,不需要它自己「发挥」:

这种「规格级」的派活方式正是「领导」模板的价值:决策留在领导,执行交给工人, 出问题时能一眼看出是哪一层的责任。
把活派给 Codex / Claude Code(0.6.0 新增)
一句话:harness 是官方的,本插件只是把「派给谁」和「它干得怎么样」搬到面板上。
DSH 官方本来就带两个 subagent 提供方包:
| 官方包 | 面板上的来源 | 模型侧工具 | 本机要求 |
|---|---|---|---|
@deepseek-ai/dsh-subagent-codex |
Codex |
subagent_codex |
本机 Codex 已登录(~/.codex/auth.json) |
@deepseek-ai/dsh-subagent-claude-code |
Claude Code |
subagent_claude_code |
本机先跑一次 claude 完成登录 |
它们做的事很单纯:每次运行拉起一个全新的、无人值守的一次性会话,把一段任务文本 交给真正的 Codex / Claude Code,等它跑完,只把最终答案或失败诊断交回来。 推理过程、工具调用、stderr、工作区 diff 都不会进入领导的上下文(这是官方包的约定)。
装法(本机是 DSH 源码检出,所以用 link)
把两个官方包 link 进 profile(它们就在检出里,不用下载):
# <dsh-checkout> 换成你的检出目录 cmd /c mklink /J "%USERPROFILE%\.dsh\profiles\web\node_modules\@deepseek-ai\dsh-subagent-codex" "<dsh-checkout>\packages\subagent\subagent-codex" cmd /c mklink /J "%USERPROFILE%\.dsh\profiles\web\node_modules\@deepseek-ai\dsh-subagent-claude-code" "<dsh-checkout>\packages\subagent\subagent-claude-code"若 DSH 是 npm 安装版,用官方的安装方式(
dsh plugin --profile web add @deepseek-ai/dsh-subagent-codex等)即可。在 profile 的
cordis.patch.yml里挂上两个提供方(它们只注册「休眠的提供方」,不启动进程):- insert: - id: subagent-codex name: '@deepseek-ai/dsh-subagent-codex' config: permissionMode: approve-for-me # 工作区可写,审批由 Codex 自动评审 - id: subagent-claude-code name: '@deepseek-ai/dsh-subagent-claude-code' config: permissionMode: acceptEdits在领导的 agent preset(默认
anchored-standard)里启用工具行 —— 官方 preset 默认把它们disabled: true收着,删掉这一行即可:- id: tool-subagent-codex name: '@deepseek-ai/dsh-tool-subagent' config: { provider: codex, toolName: subagent_codex, backgroundMode: one-shot, maxDepth: provider-managed } - id: tool-subagent-claude-code name: '@deepseek-ai/dsh-tool-subagent' config: { provider: claude-code, toolName: subagent_claude_code, backgroundMode: one-shot, maxDepth: provider-managed }重启 DSH,打开面板,把「工人来源」切到
Codex,发需求、点「总结并派活」。
你会看到什么
- 领导先给四段计划,然后调用
subagent_codex/subagent_claude_code; - 工人区出现一条带「外部」标记的记录:状态 running → done(或 failed), 跑完显示 Codex / Claude Code 的最终答复;
- 它耗时比较真实(冷启动 + 自己的思考),简单的写文件任务大约 1~2 分钟。

三个限制(官方包本身的约束,不是插件的 bug)
- 单次任务、不会反问 —— 领导必须把目标、文件、验收标准一次写进 prompt。
- 不回传 token —— 所以底部金额 / 速度只统计领导自己;外部 harness 的消耗请以各自订阅为准。
- 一次一个外部任务 —— 官方提供方是一次性运行;要多人并行请切回
官方团队。
和 Agent Teams 怎么选
| 场景 | 建议来源 |
|---|---|
| 需要多个人并行、边做边汇报、共享任务看板 | 官方团队 |
| 单点硬活:代码改动、跑构建/测试、命令行操作 | Codex |
| 大段文本重构、审阅、写文档、长上下文分析 | Claude Code |
| 懒得选 | 自动选 |
让 Codex / Claude Code 当「领导」(0.7.0 新增)
一句话:领导也可以不是 DSH 会话 —— 直接把面板顶部的「领导平台」切到 Codex / Claude Code, 让它的 GPT / Claude 来当这个领导。

| 领导平台 | 领导是谁 | 能干的事 |
|---|---|---|
DSH 官方 |
一个普通 DSH 会话(模型可切) | 聊天、出计划、用 Agent Teams 派活给工人;也是 Codex / Claude Code「工人模式」的前提 |
Codex(GPT) |
官方 Codex harness | 每轮带着对话历史跑一次;派活 = 它直接动手做(自己读写文件、跑命令) |
Claude Code |
官方 Claude Code harness | 同上,需要本机先登录 Claude Code |
选外部 harness 当领导时:
- 面板自己保存对话记录,每轮把「角色说明 + 历史 + 新消息」拼成一条 prompt 交给官方提供方;
- 「工人」暂时不适用(它自己就是执行者),按钮从「总结并派活」变成「让它直接干活」, 点下去它先给四段计划、再直接把活做完;
- 官方提供方只回传最终答案,不回传 token,所以底部金额 / 速度显示「—」;
- 切回
DSH 官方就恢复原来的领导 + 工人模式,两边的对话记录各自保留(存在<DSH_HOME>\lead-panel\state.json的transcripts里)。
多挂几个「人」
0.9.0 起不用这么麻烦了:直接在面板的「领导模型」里换即可(读写它自己的原生配置,见下一节)。 下面这种做法留给「一台机器上想同时挂几个写死了模型的 Codex 实例」:provider 行里写的
model优先级高于原生配置,多挂几个 provider(不同providerName+model)就会各占一个 「领导平台」格,展示名用插件配置leaders覆盖:
- id: dsh-lead-panel
config:
leaders:
codex: Codex · GPT(原生配置)
codex-gpt54: Codex · GPT-5.4
claude-code: Claude Code
跨平台协作:分工 / 会诊 / 流水线(0.8.0 新增)

面板顶部的「协作模式」有四种,点一下就切换,模式下面会自动跟一句说明:
| 模式 | 干什么 | 适合 |
|---|---|---|
单平台 |
原来的用法:领导(任意平台)聊天 / 派活给一个工人来源 | 日常 |
分工 |
领导(DSH 官方)把同一个任务拆给勾选的多个平台,各干一部分,最后汇总 | 一个任务里有代码、审阅、并行子任务 |
会诊 |
同一个任务同时发给勾选的每个平台各做一遍,结果并排对比 | 拿不准谁做得更好 / 想要多方案 |
流水线 |
按勾选顺序依次执行,上一步结果作为下一步输入 | 实现 → 审阅 → 验证这类接力 |
- 参与平台:
DSH 官方/Codex/Claude Code,没挂载的会自动置灰;会诊、流水线至少勾一个,分工建议勾两个以上。 - 会诊是并行跑的(谁先完成都行);流水线是严格串行,出结果的顺序就是勾选顺序。
- 结果区显示每个平台的状态、耗时和最终答复;跑完会存进状态文件,面板刷新后还在(「重开」会清掉)。
- 外部平台仍由官方 subagent 提供方执行、不回传 token,所以 token / 金额只统计 DSH 自己的部分。
- 分工模式要求领导是
DSH 官方(只有它手里有 Agent Teams 和 harness 工具);会诊、流水线不限制领导平台。
换外部领导的模型 + 一键打开它(0.9.0 新增)
一句话:外部 harness 的模型不再只是「由它自己定」四个字 —— 面板直接读它自己的配置、 给你换,还能一键打开它本人或它的配置文件。

外部 harness(Codex / Claude Code)当领导时,顶部多出这一行:
| 控件 | 作用 |
|---|---|
| 模型胶囊 | 显示它现在真正在用的模型(读自它自己的配置文件),点一下是快捷下拉 |
换模型 |
下拉里选,或手动输入模型 id;写进它自己的配置,下一条领导回复就生效,DSH 不用重启 |
打开 Codex / 打开 Claude Code |
新开一个终端窗口跑它的 CLI(在里面还能用 /model 等原生命令) |
配置 |
用记事本打开它的配置文件 |
模型从哪来:
| 平台 | 配置文件 | 字段 |
|---|---|---|
| Codex | $CODEX_HOME/config.toml(默认 ~/.codex/config.toml) |
model;快捷选项读 model_catalog_json 指向的模型目录 |
| Claude Code | ~/.claude/settings.json |
model(留空 = 用它自己的默认;sonnet / opus / haiku 这类别名也认) |
点模型胶囊就是快捷下拉(Codex 的选项来自它自己的模型目录,当前项打勾):

- 只改这一个字段:写前先把原文件备份成
<配置文件名>.lead-panel.bak,provider、MCP、审批模式 这些一概不碰;模型 id 只接受字母数字和._:/-,其它内容直接拒绝。 - 如果 profile 里的
@deepseek-ai/dsh-subagent-codex/-claude-code行写死了model,那个优先于 原生配置 —— 想让面板的「换模型」生效,就别在 profile 里给提供方写model。 - 工人来源选到 Codex / Claude Code 时,下面也会多一行「工人模型」,同样可换、可打开。
- 「打开」走
cmd /c start,只支持 Windows;接口只认白名单里的平台与动作,且只允许本机访问。 - 面板仍然只做「读一个字段 / 写一个字段 / 起一个进程」,harness 逻辑还是官方的。
安装
# 从 npm 安装(推荐)
dsh plugin --profile web add dsh-lead-panel
# 从 GitHub 安装(想跟 main 分支最新代码走就用这条)
dsh plugin --profile web add github:mutoharohfiqhiabcd-source/dsh-lead-panel
# 从本地目录安装
dsh plugin --profile web add D:\1231\dsh-lead-panel
# 或者手工:把本目录复制到 <DSH_HOME>\profiles\web\node_modules\dsh-lead-panel,
# 再往 <DSH_HOME>\profiles\web\cordis.patch.yml 追加:
#
# - insert:
# - id: dsh-lead-panel
# name: dsh-lead-panel
npm 包:https://www.npmjs.com/package/dsh-lead-panel(MIT)—— 几种装法装的是同一份 代码,装完都要重启 DSH 才会加载 Host 半边。
想用
Codex/Claude Code(无论当工人还是当领导),还要按「把活派给 Codex / Claude Code」 一节把官方 subagent 提供方挂进 profile;没装时面板会把它们置灰,其它功能不受影响。
patchReload: live 的 profile 会在 patch 变化时热重载;否则重启 DSH。
(注意:改 Host 代码后 DSH 会复用已缓存的模块,见文末「改代码时的两个坑」。)
配置(profile 的 cordis.patch.yml 里覆盖该行 config)
- id: dsh-lead-panel
config:
title: 领导 # 领导会话标题
cwd: D:\1231 # 领导会话的工作目录
leadPreset: standard # 领导会话用哪个 agent preset
leadModel: { provider: deepseek-official, model: deepseek-flash }
currency: '¥'
leaders: # 领导平台展示名(可选,见上一节)
codex: Codex · GPT
prices: # 元 / 百万 token,覆盖内置牌价
deepseek-flash: { input: 2, cacheRead: 0.2, output: 3 }
接口(Host 半边,只允许本机访问)
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /lead-panel/api/state |
面板轮询:消息 / 计划 / 工人 / 用量 / 模型清单 / 领导平台(leaders、leader、leaderKind、leaderRun)/ 协作模式(modes、mode、platforms、picks、lastRun)/ 工人来源(harnesses、dispatchHarness)/ 外部 harness 原生配置(harnessApps:当前模型、模型选项、配置路径、可执行文件) |
| GET | /lead-panel/api/health |
自检:Host 服务可用性(含 subagents 提供方列表)、领导平台列表、状态文件位置、build 标记 |
| GET | /lead-panel/api/debug-session?id=<会话id> |
排查:直接读某个会话的持久日志,看能不能算出用量 |
| POST | /lead-panel/api/ensure |
确保领导会话存在({reset:true} 重开;外部 harness 模式下同时清空面板对话记录) |
| POST | /lead-panel/api/leader |
{leader} 切换领导平台,取 dsh 或 harness:<provider> |
| POST | /lead-panel/api/mode |
{mode} 切换协作模式:single / split / consult / pipeline |
| POST | /lead-panel/api/picks |
{picks} 选择参与平台:dsh / codex / claude-code(顺序即流水线顺序) |
| POST | /lead-panel/api/run |
{text, mode?, picks?} 执行分工 / 会诊 / 流水线;会诊与流水线在后台跑,轮询 /state 的 lastRun |
| POST | /lead-panel/api/send |
{text} 给领导发消息 |
| POST | /lead-panel/api/dispatch |
{text, harness} 总结并派活;harness 取 team / codex / claude-code / auto,省略则用上次的选择。领导是外部 harness 时忽略该字段,直接让它动手 |
| POST | /lead-panel/api/model |
{provider, model} 切换领导模型(仅 DSH 官方领导可用) |
| POST | /lead-panel/api/harness-model |
{platform, model} 换外部 harness 领导的原生模型:platform 取 codex / claude-code,直接改它自己的配置文件(写前留 .bak) |
| POST | /lead-panel/api/open |
{platform, what} 打开外部平台:what: app 新开终端跑它的 CLI,what: config 用记事本打开配置文件(仅 Windows、白名单) |
| POST | /lead-panel/api/cancel |
打断领导当前回合 |
领导会话的 id 存在 <DSH_HOME>\lead-panel\state.json,重启 DSH 后复用同一个会话。
自检
npm test # 两个套件一起跑
node test/self-check.mjs # 96 项:纯逻辑 + 浏览器半边
node test/host-smoke.mjs # 92 项:假 ctx 把 Host 的 HTTP 链路整条跑一遍
self-check:用量折叠、金额折算、计划抽取、消息过滤、价目表覆盖、四种工人来源的派活指令、 从tool/call+tool/result还原外部 harness 工人、领导平台列表与外部 harness 的 prompt 拼装、跨平台三种模式的分工指令 / 会诊 prompt / 流水线交接 prompt、 外部 harness 原生模型的读写(config.toml 替换/插入、settings.json 增删、模型 id 校验、 临时CODEX_HOME下的快照与模型目录);以及在假window.__ModuleLoader__+ 假react下求值lib/client.js,确认它注册到conversation.input.left、组件可构造、防翻译标记在位。host-smoke:用假 ctx / 假服务驱动真实处理器,验证POST /send、/dispatch会给sessionController.prompt传AbortSignal(曾经漏传,面板点了报throwIfAborted)、/dispatch按harness生成不同指令且拒绝未知来源、/leader切换后/send、/dispatch走官方 subagent 提供方并写回对话记录、/mode+/picks+/run的会诊(并行)、流水线(串行、交接上一步输出)、分工(要求 DSH 领导)、/harness-model在临时CODEX_HOME里真的改掉model并留.bak、非法 id / 未知平台被拒、/open只认白名单、/state能抽出计划卡片与工人用量(含已卸载工人读持久日志、外部 harness 工人)、金额按牌价折算、异常以 JSON 返回。
两套都不依赖 DSH,改完先跑。
说明与边界
- 团队能力来自官方,不是本插件:成员名册、共享任务看板、
spawn_teammate等工具都由 官方 Agent Teams(实验性)提供;本插件只读它们、并把过程显示出来 + 提供模型切换与派活入口。 官方开关关掉时,插件只剩「和领导的对话」与用量显示。 - Codex / Claude Code 能力也来自官方:
subagent_codex/subagent_claude_code是 DSH 官方 subagent 提供方包暴露的工具,本插件不实现任何 harness 逻辑,只负责生成派活指令、并把tool/call+tool/result还原成「外部工人」显示出来。官方包一次运行只回传最终答案, 不回传 token,所以金额 / 速度只统计领导自己。 - 外部 harness 当领导是「重放式」的:官方 subagent 提供方是一次性运行、没有真正的会话
记忆。面板每轮把「角色说明 + 历史 + 新消息」重新拼成一条 prompt 发过去,所以历史越长 prompt
越大,它也看不到自己上一轮的工具调用细节(只有正文);要多人协作仍得切回
DSH 官方。 - 跨平台模式也都是「一次性运行」拼起来的:会诊并行、流水线串行、分工靠 DSH 领导调官方工具; 每个外部平台都是一次独立 subagent 运行,没有共享上下文——流水线是把上一步的最终答复手写进 下一步的 prompt,会诊则是让各平台独立作答。它们都不会回传 token,金额只覆盖 DSH 自己的部分。
- Claude Code 需要本机先登录:官方包调用的是它自己的 CLI;没登录时每次运行都会以
product: Claude Code; stage: query-run; invalid-result失败,先在终端跑一次claude完成登录即可(Codex 同理,需要~/.codex/auth.json)。面板的「打开 Claude Code」按钮就是 为这一步准备的。 - 面板会写外部 harness 的配置文件(只在你点「换模型」时):目标是
~/.codex/config.toml或~/.claude/settings.json,只改model一个字段,写前备份成*.lead-panel.bak; 「打开平台」用cmd /c start起独立窗口、不拼 shell 命令,接口只允许本机访问且平台/动作在 白名单里。 - 金额是估算:DSH 本身只有 token 计数、没有金额模型,所以插件内置一张 DeepSeek
牌价表(元/百万 token),按
未命中输入 / 命中输入 / 输出三个桶折算;牌价变了改配置即可。 - 预计剩余时间也是估算:没有历史时长库,用「已完成工人数 × 已用时长」外推; 工人还没跑完一个时显示「估算中…」。领导在计划里自己给的预计时间会出现在对话正文里。
- 面板依赖 Host 服务
sessionController(建会话/发消息/切模型)、sessionProjections(实时用量)、agentTeams(工人名册)与可选的subagents(外部 harness 可用性);缺哪个 就在面板上显示对应的错误,不会影响 DSH 其它功能。工人干完活会被卸载,插件改读它的 持久日志折叠 token,所以 settle 之后仍然能看到它花了多少。
改代码时的两个坑(实测)
- Host 模块按 package.json 的
name缓存。 改了index.js后,即使把 profile 的cordis.patch.yml里那一行删掉再加回来,DSH 仍然跑旧代码。要么换一个没用过的包名 (目录名 +package.json的name一起改),要么重启 DSH。 - 不要用脚本(PowerShell 等)去改写 profile 的
cordis.patch.yml。 实测一次Get-Content -Raw | Set-Content往返会把中文注释行拼成一行,把后面的- id:/- insert:吞进注释里,于是整段配置静默失效;更糟的是,反复替换这个文件 会让 DSH 的文件监听器失效,之后任何 patch 改动(连最小 canary 插件)都不再热加载, 只能重启 DSH。改这个文件请用编辑器逐行改。