Khorsheed/dsh-plugins--packages-local-agent-dsh ↗★ 0

@khorsheed/dsh-local-agent-dsh

集成子DSH作为本地CLI代理 适合需要在DSH中嵌套委派任务给另一个DSH进程的用户。

包名
@khorsheed/dsh-local-agent-dsh
兼容性
待验证
Harness 依赖范围
^0.1.0-rc.6
Cordis 依赖范围
^4.0.1
版本
0.1.0-rc.7
许可证
MIT
最近更新
2026年9月28日

安装

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:Khorsheed/dsh-plugins#548eeabe331c121621b2d08deab4278ad81d6312&path:packages/local-agent-dsh

配置

字段默认含义
profileNameheadless-local-agent-dshscoped home 下的子 dsh profile
apiKeyRefDEEPSEEK_API_KEY子 dsh 解析的凭据引用
cliLaunch父级自身启动dsh 启动 argv 前缀覆盖
headlessBundleDir从安装解析子 profile 符号链接指向的 headless bundle 目录(scoped home 被多个文件系统解析时必须 pin,见下文「容器内委派」)
permissions不写(跟随 dsh-base)子 dsh 的权限档:read-only / workspace-write / danger-full-access,由 provisioning 写进子 profile 的 patch 层,见下文「权限边界」
model不写(跟随宿主默认)每轮委派以它起子 dsh(`--model
`),见下文「默认模型」
livefalse长驻驱动:每成员常驻一个 --serve 子 dsh 进程,委派 = 向活着的 runtime 发 turn(runtime 级优雅中断、事件推送镜像);关闭或通道不可用即回一次性 exec 路径
liveIdleMs1800000(30 分钟)长驻 runtime 的空闲回收时限

默认模型(model)

T30a 给三家 CLI harness 加了 model 插件配置键时,dsh 没拿到——因为无头子 dsh 的启动面上当时没有可以按次指定模型的位置。现在有了:headless 的 --model 覆盖子实例的默认模型选择,所以这个 harness 也有了同一把键。

**不写 = 今天的表现。**没有这个键时,本插件在 argv 上不加 --model:跑哪个模型由宿主实例自己的 agentDefaultModel 当前选择决定,与从前一模一样。

**写了 = 每轮委派以它起子 dsh。**新起一轮与续接(resume)同等对待,--model 排在 --session-id / --resume 之后。值写成 provider/model(与 effectiveSettings.model 报的形状相同);只写模型名则沿用宿主实例的 provider。按第一个 / 切分,所以模型 id 里再带斜杠也不会被切坏。

设置卡「默认模型」修改后续轮次使用的 provider 配置。共享选择器展示当前作用域的模型目录、发现来源和完整性,并保留按需填写模型 ID 的入口。清空选择后跟随有效配置及默认值链。保存不会打断当前轮次,也无需重载;共享选择器不可用时,卡片保留文本输入兜底。成员级模型和推理强度修改使用下文的持久控制面。

丰富目录还通过可用的公开 resolveModelInfo 保留适配器显示名、解析路由和原生推理选项。目录共用 core 缓存与刷新订阅,区分部分枚举,整体刷新失败保留成功数据。宿主目录不证明被单独修改的 scoped 运行时配置相同。共用模型菜单和成员 effort 控制已接入。运行中选择排到下一完整轮次(含工具续跑);core 统一持有当前/待生效配置、撤销与重试,冻结评测成员禁止变更。

委派级的模型优先。编排器可以经门面 DelegationCallOptions.model 给某一次委派点名模型,它排在这个键之前(固定顺序:会话覆盖 > 委派记录 > 本键 > 宿主默认选择 > CLI 内置)。首轮请求的值记进委派记录,resume 轮照它重发——resume 不接受 model 参数。常驻模式下带模型的轮次不再被拒绝:它成为该成员的起始模型,在 --serve 子 dsh 起进程时以 --model 绑定;若该成员的常驻 runtime 绑定的是另一个模型,先回收重生(子 dsh 会话从盘上 resume 续上),再以所点模型起新一轮。

**成员级切换(作曲器模型选择器)。**成员会话里可以按会话切换模型:一个内存中的会话级覆盖,优先级最高,宿主重启即失。切换在有轮次进行中时被拒绝;空闲时若成员有常驻 runtime 且绑定模型不同,切换即回收该 runtime——下一轮以新模型重生,子 dsh 会话本身延续。一次性(exec)驱动下没有常驻进程,覆盖直接决定下一轮的 --model。

**这不是评测的缺口。**评测 run 的条件在建立时冻结:run 跑到一半改这个键,下一轮的模型回读会发现声明模型 ≠ 实测模型,run 直接判为 misattributed 而失败(冻结决策 5)。

评测快照(effectiveSettings)。 本 harness 向注册表声明的公平性设置快照有 drive(exec/live)、端点未固定、CLI 版本(拿委派真正要 spawn 的那条 launch argv 去问 --version,按入口脚本路径+mtime 缓存——无头子 dsh 复制的就是父实例自己的 build)与已配置模型(读宿主 agentDefaultModel 的当前选择,provider/model 格式——无头子 dsh 继承它;服务缺位或选择不可读就不给字段,绝不猜值):sandbox 是子 profile 钉住的权限档,配了才报(缺位仍然是诚实的条件输入——这个作用域不钉边界,跑的就是 dsh-base 组成的那一档),端点即宿主实例的模型配置,本 provider 从不覆盖。/dsh status 与 LocalAgentStatus Remote 附带同一份快照。