dshbase

插件目录 / AI Models / dsh-plugin-yet-another-subagent

dsh-plugin-yet-another-subagent

未验证 HuanLinOTO

✓ 持续维护 基于 17 个官方 DSH 包

查看 GitHub ↗ ← 返回插件目录

15Stars
0Forks
0未关闭 issue
JavaScript语言
2026-08-23最近推送
跨平台平台

功能简介

无描述。

我们的评价
未验证 — 尚未实测

无描述。 尚未验证——请自行安装测试。

「未验证」表示我们的自动化 CI 尚未安装过该插件。功能描述与版本兼容性均为作者声明。这不是安全审计,也不代表对第三方代码的背书。

你是插件作者? 想拿到「已验证」标签——提交你自己的验证证据(截图、日志或短视频),我们审核通过后即改为「已验证」。

提交验证证据 ↗

README

dsh-plugin-yet-another-subagent card

yet-another-subagent

npm version

可配置的子代理(subagent)profile 系统,提供单一 subagent 工具 + profile 参数选择,支持 Web UI 设置、实时进度展示(工具调用/token/活动)、子代理树标签页、点击跳转子会话。

架构

单 bundle,三入口(host . + invariant ./invariant + client ./client)。

  • Host 半src/index.ts):
    • 单一 subagent 工具,通过 profile 枚举参数选择 profile(非每 profile 一个工具)
    • 复用官方 spawn provider,支持前台(foreground)和后台(continuable / one-shot)两种模式
    • Profile 状态通过 settings seam 持久化到 $DSH_HOME/settings.yaml
    • RPC CRUD:profiles.list / .add / .update / .remove(专用 /ya-subagent 通道,不共享 /api
    • 两个 session projection:subagentProfile(父会话 childId→profileId 映射 + callId→childId)+ yaSubagentProgress(子会话实时 toolcall/token/活动状态)
  • Client 半src/client/index.ts):
    • settings.section — Profile 编辑页
    • tool.call.toolview(key subagent)— SubagentCard 工具调用卡片
    • conversation.view(id subagent-tree)— SubagentTreeView 子代理树标签页

cordis.patch.yml 只禁用官方 tool-subagent(spawn 路径),保留 tool-subagent-fork(无名称冲突)。

配置

# cordis.patch.yml
- id: tool-subagent
  disabled: true

- insert:
    - id: yet-another-subagent
      name: '@huanlin/dsh-plugin-yet-another-subagent'
      config:
        profiles:
          - id: general
            label: General
            model: { kind: 'auto' }
            persona: { kind: 'inherit' }
            toolFilter: { kind: 'none' }
            maxDepth: 3
            backgroundMode: continuable
            builtin: true
        generalFixed: true

Profile 字段

字段 类型 默认值 说明
id string(小写字母/数字/连字符,1-32 字符) Profile 唯一标识
label string 显示名
model.kind 'auto' | 'manual' auto 继承父代理模型;manual 指定
model.provider string '' Provider(仅 manual 时使用)
model.model string '' 模型 ID(仅 manual 时使用)
persona.kind 'inherit' | 'custom' 'inherit' inherit 跟随部署人设;custom 自定义
persona.text string '' 自定义人设文本(仅 custom 时使用)
toolFilter.kind 'none' | 'allow' | 'deny' 'none' 工具过滤策略
toolFilter.tools string[] [] 过滤工具列表
maxDepth number 3 最大递归深度
backgroundMode 'continuable' | 'one-shot' 'continuable' run_in_background: true 时的后台策略
builtin boolean false 是否为内置 profile(仅展示用)

开发

pnpm install          # 安装开发依赖 + zod(唯一运行时 npm 依赖)
pnpm run typecheck    # tsc --noEmit(通过 ../dsh 解析 DSH 源码)
pnpm test             # vitest run
pnpm run build        # tsc + tsdown → lib/index.js, lib/invariant.js, lib/client.js

类型检查

tsconfig.json 继承 ../dsh/tsconfig.base.client.json,通过 pnpm-workspace.yamlpackages/*/* glob 解析 DSH checkout 的源码。需在 ../dsh 存在 DSH checkout 的同级目录下运行。

运行

# 从 npm 安装(推荐):
dsh plugin --profile web add @huanlin/dsh-plugin-yet-another-subagent

# 本地引用(开发热更新)
dsh plugin --profile web add "link:D:/Projects/deepseek-harness/yet-another-subagent"

安装后重启 dsh web 进程,浏览器硬刷新(Ctrl+Shift+R)。

检查

pnpm run typecheck    # 0 errors
pnpm test             # 55 tests passing
pnpm run build        # lib/index.js + lib/invariant.js + lib/client.js

产物验证

  • lib/index.js — Host bundle
  • lib/invariant.js — Invariant companion
  • lib/client.js — Client bundle(CSS-modules inline,d 前缀 hash 防 CSS 类名数字开头)
  • cordis.patch.yml — Bundle patch layer

持久化

Profile 状态通过 DSH settings seam 持久化到 $DSH_HOME/settings.yamlya-subagent 命名空间。cordis.yml 的 profiles 字段是组合 base(首次启动种子),运行时变更通过 scope.replace() 写入用户层。外部 yaml 编辑通过 scope.watch 热重载。

无 settings provider 的无头组装回退到内存状态(仅 cordis.yml 种子,不持久化)。

RPC API

Profile CRUD 走 host 的专用 /ya-subagent 通道(不共享 /api,避免与 Typert gateway 的单拦截器冲突):

endpoint payload result (ok)
profiles.list {} { profiles: SubagentProfile[] }
profiles.add { profile: SubagentProfile } { profiles: SubagentProfile[] }
profiles.update { profile: SubagentProfile } { profiles: SubagentProfile[] }
profiles.remove { id: string } { profiles: SubagentProfile[] }
tools.list {} { tools: { name, description }[] }

URL 形如 POST /ya-subagent/profiles.list。业务错误返回 { ok: false, error: { code: 'internal', message } }

已知限制

  • 旧会话不兼容completed <label> subagent <id> render 格式变更后,旧会话的结果文本无法被 parseResult 匹配,卡片不可点击。仅新会话(host 重启后)正常。
  • yaSubagentProgress stateVersion 2:projection schema 变更(activity 字段 + assistant/chunk fold)需要 host 重启才能生效。

设计参考

  • 官方 continuable subagent 设计:.agents/notes/implemented/feature/2026-07-28-continuable-subagent-conversations.md
  • 插件开发指南:plugin-development-guide.md

安装

🧩 让 Agent 自动装(推荐)

装一次目录插件,之后本站所有插件都能让 DeepSeek Harness 自动找、自动装:

dsh plugin add dshbase-catalog

然后对 agent 说「帮我装 dsh-plugin-yet-another-subagent」,它会在目录里找到并自动安装。文档:dshbase-catalog · 已验证场景包

该插件是 GitHub 源码(未发 npm)——直接从仓库装:

Web profile:

dsh plugin --profile web add github:HuanLinOTO/dsh-plugin-yet-another-subagent

Headless(CLI)profile:

dsh plugin --profile headless add github:HuanLinOTO/dsh-plugin-yet-another-subagent

实测报告

尚未 L3 验证——若已跑过,见下方失败备注。

状态:pending
备注:验证: runtime-fail (0.1.0-rc.6) 浏览全部待验证失败 →

使用场景

把一个新模型、provider 或路由策略接入循环,让 dsh 能为任务选对脑子。

适合谁

同时用多个模型或 provider、想让成本/质量/延迟自动平衡的人。

二次开发建议

provider 适配器和路由启发式是缝——加后端、调回退链,或加按任务的模型选择。

安全:尚未扫描——我们的每日静态扫描将很快覆盖它。

分享徽章

AI Models 里更多

浏览全部 7795 个插件 →