DeepSHPlugins
dsh-plugin-yet-another-subagent 專案預覽
GITHUB / COMMUNITY PROJECT

dsh-plugin-yet-another-subagent

Agent 與自動化JavaScript

可配置的 subagent profile 系統:單一 subagent 工具 + profile 引數選擇,支援 Web UI 設定、實時進度展示(工具呼叫/token/活動)、子代理樹標籤頁與點選跳轉子會話,支援前臺與後臺兩種執行模式。

15 StarsHuanLinOTO 更新時間 2026-09-06
訪問 GitHub 倉庫
dsh-plugin-yet-another-subagent 專案預覽

專案介紹

中文

可配置的 subagent profile 系統:單一 subagent 工具 + profile 引數選擇,支援 Web UI 設定、實時進度展示(工具呼叫/token/活動)、子代理樹標籤頁與點選跳轉子會話,支援前臺與後臺兩種執行模式。

English

A configurable subagent profile system: one subagent tool + a profile parameter — Web UI settings, live progress (tool calls/tokens/activity), a subagent-tree tab with click-to-jump, foreground and background modes.

專案資訊與收錄訊號

快照 2026-09-11
作者 / 組織
HuanLinOTO
倉庫
HuanLinOTO/dsh-plugin-yet-another-subagent
GitHub Stars
15
Forks
0
開發語言
JavaScript
許可證
未記錄
最近推送
2026-09-06
Manifest
資料中檢測到宣告

公開倉庫不自動等於可商用;許可證與當前相容性以原專案文件為準。Manifest 和資料評分不構成安裝安全認證。

資料評分

66/ 100
維護活躍
97
文件與實用資訊
50
生態關注度
34
安裝便捷訊號
100
專案宣告訊號
80

近 5 天仍在更新;標準命令一鍵安裝。

評分來自已有資料快照的五維模型,僅作瀏覽參考,不是實際使用評測或安全檢測結論。

安裝與使用

所有專案資料與許可均以對應 GitHub 倉庫為準。

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

複製命令不會自動執行。請先閱讀倉庫文件,確認環境要求與許可證。

專案截圖

倉庫 README

GitHub 原文

已儲存的倉庫文件快照;文件抓取時間未記錄,可能與上方目錄介紹處於不同版本。安裝前請核對當前倉庫說明。

儲存庫檔案保留原文,指令與授權文字不作自動改寫。

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 字段

字段类型默认值说明
idstring(小写字母/数字/连字符,1-32 字符)—Profile 唯一标识
labelstring—显示名
model.kind'auto' \'manual'—auto 继承父代理模型;manual 指定
model.providerstring''Provider(仅 manual 时使用)
model.modelstring''模型 ID(仅 manual 时使用)
persona.kind'inherit' \'custom''inherit'inherit 跟随部署人设;custom 自定义
persona.textstring''自定义人设文本(仅 custom 时使用)
toolFilter.kind'none' \'allow' \'deny''none'工具过滤策略
toolFilter.toolsstring[][]过滤工具列表
maxDepthnumber3最大递归深度
backgroundMode'continuable' \'one-shot''continuable'run_in_background: true 时的后台策略
builtinbooleanfalse是否为内置 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.yaml 的 packages/*/* 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.yaml 的 ya-subagent 命名空间。cordis.yml 的 profiles 字段是组合 base(首次启动种子),运行时变更通过 scope.replace() 写入用户层。外部 yaml 编辑通过 scope.watch 热重载。

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

RPC API

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

endpointpayloadresult (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

使用前核對

安裝步驟、相容版本與授權範圍以原專案當前文件為準。Stars 和評分是快照中的導航訊號。

安裝與排錯 · 專案問題反饋

同類專案