dsh-plugin-slayer:两套委派形态与调用层工具 guard

前言

在 DSH(DeepSeek Harness)里,host 层往往同时挂着 subagent 与 Agent Team 那套 spawn_teammate / team_task_*。会话里只靠「口头约定」选一种用法,模型两套工具都能摸到,容易出现一次性点工和长期工位混账——上下文、任务板和交接会乱。

yuna78/dsh-slayer(npm 包名 dsh-plugin-slayer)做的是工作流侧的「赛博包工头」:在模式选择器里提供两种 preset,并在调用时用 guard 拒绝越界工具,同时给出中文理由,而不是静默失败。下面介绍它解决什么问题、怎么装、两种形态差在哪,以及项目侧的 SLAYER.md 手册怎么用。

这是什么

  • 维护者:yuna78(package.json 作者字段为 Yuna)
  • 分类:工作流(社区目录 skillhub.cn)
  • 版本与许可:v0.1.0 · MIT
  • DSH 要求:>=0.2.1-rc.2 <0.3.0;Node ^22.19 || >=24

插件在 web profile 里增加两种会话模式:「SLAYER · 终身奴」与「SLAYER · 日结奴」。装好后,新开会话可在模式选择器里选其一;进入会话后 persona 会先有一段固定风格的表忠心开场,再开始按模式派活。若当前目录被识别为项目(存在 .git、AGENTS.md、CLAUDE.md 或 package.json),项目根还会出现 SLAYER.md、SLAYER-FEEDBACK.md 与 .slayer/。

名字 SLAYER 不是缩写:README 说明原意接近 slaver,为仓库可读性改了一个字母;产品层是角色扮演用的包工头话术,被压榨的对象是模型里的工位,不是真人。

核心功能:两种 preset 与硬隔离

一张表对照两种形态

终身奴 · The Lifers 日结奴 · Day Rate
preset id slayer-lifers slayer-dayrate
编制 1 包工头 + 8 固定工位(满编 9;代码 maxTeammates: 8) 1 包工头 + 一次最多 3 个点工(上限写在手册与 persona,非代码硬顶)
委派工具 Team:spawn_teammate / team_task_* / wait_agent 一次性:subagent / subagent_fork / workflow
越界时 不能调 subagent 等一次性点工 不能调 spawn_teammate、team_task_*、wait_agent
工人身份 8 个固定 target(如 planner、impl-core、reviewer 等 ASCII 名) 干完即散,不建名册

终身奴 8 席在 spawn_teammate 调用时数人头拦截;guard 拒绝时会返回人话,例如「终身奴不派一次性点工」「日结奴不建名册」「本队 8 个工位已满」等。

三层怎么落

README 归纳了三层:cordis.patch.yml 负责装配(含 Team maxMembers: 9 等)与 preset 里装哪套工具目录;host 层仍可能同时可见多种工具;真正边界在 mode.js 的调用层 guard。preset 作用域里挂 Team 工具曾试过但不会注册,因此退回「host 层保留工具 + 调用时拦截」。

工地手册与 feedback 迭代

SLAYER.md 分六节:交底、纪律、席位、流水线、金句、迭代日志。负责人原话写入 SLAYER-FEEDBACK.md 后,可用 slayer-sync 做 headless 消化(备份、sha1 去重、只追加),可选 slayer-schedule 在 macOS 上定时跑 sync;Linux 需自行用 cron 调 slayer-sync --commit。

汇报格式在 persona 里固定为四段(过去一小时 / 卡住待领主 / 发现与记录 / 提效决定)。事实不许为讨好而编造,是 README「人格声明」里写明的约束。

安装与启用

需要本机已有 dsh 与 pnpm(dsh plugin 内部用 pnpm 装包,缺少会报 pnpm was not found)。

# 1. 装进 web profile
dsh plugin --profile web add dsh-plugin-slayer
# npm 尚未发布时,README 给出的等价方式:
# dsh plugin --profile web add github:yuna78/dsh-slayer

# 2. 重启 DSH

# 3. 新开会话,在模式选择器选「SLAYER · 终身奴」或「SLAYER · 日结奴」

验证是否加载成功:

dsh --profile web --dump-config | grep -E "slayer-guard|preset-slayer"

期望出现 preset-slayer-lifers、preset-slayer-dayrate,以及两条 slayer-guard(mode 分别为 lifers / dayrate)。

终身奴的前置:实验性 Team 组合包

subagent / subagent_fork / workflow 由 @deepseek-ai/dsh-base 提供,日结奴开箱即用。

spawn_teammate / team_task_* 来自 @deepseek-ai/dsh-experimental-agent-team-profile,须出现在当前 profile 的 package.json → dsh.profile.bundles 里,例如:

// ~/.dsh/profiles/web/package.json
"dsh": {
  "profile": {
    "bundles": [
      "@deepseek-ai/dsh-base",
      "@deepseek-ai/dsh-web-app",
      "@deepseek-ai/dsh-experimental-agent-team-profile",
      "dsh-plugin-slayer"
    ]
  }
}

未挂载时 boot 可能出现 patch: entry "agent-team" not found 类警告;preset 仍会出现,但终身奴没有 spawn_teammate。本插件不会自动改 profile 的 bundles。

卸载:

dsh plugin --profile web remove dsh-plugin-slayer

然后重启 DSH;已打开会话不受影响(preset 首轮后锁定)。

典型用法

选手模式开干

  1. 安装并重启 DSH。
  2. 新会话选终身奴或日结奴。
  3. 在项目根维护 SLAYER.md 交底与纪律;用 SLAYER-FEEDBACK.md 记负责人原话。

初始化项目骨架

node bin/slayer-init.mjs --project .

幂等,不覆盖已有文件;--force 才覆盖。若通过 dsh plugin add 安装,命令在插件包内,不在 PATH,可用:

npx --package dsh-plugin-slayer slayer-init --project .

消化 feedback

node bin/slayer-sync.mjs --project . --dry-run
node bin/slayer-sync.mjs --project . --commit

macOS 定时(仅 LaunchAgent 实现):

node bin/slayer-schedule.mjs --project . --time 03:30
node bin/slayer-schedule.mjs --project . --remove

适用场景与注意

适合:一条能并行拆开的活;愿意先对齐 SLAYER.md 交底;能接受 persona 里的工地黑色幽默口吻。

不适合:期望一键全自动、不想维护手册、或无法接受开场表忠心话术的用户——README 说明可随时卸载,不绑定项目。

局限(README 已知项):

  • guard 是调用时拦截并给理由,不是从目录里「藏工具」;真隐藏需改 DSH 本体。
  • 终身奴依赖 profile 已挂实验性 Team 组合包。
  • 日结奴 3 人上限靠纪律,非代码硬顶。
  • slayer-schedule 仅 macOS;人数顶是进程级,多开 DSH 各自计数。
  • DSH 升级导致 preset plugins 对不齐时,需同步 cordis.patch.yml。

安全与信任:插件以当前 DSH 进程权限运行,会读写项目根下的 SLAYER.md、.slayer/ 等;安装前可在 GitHub 仓库 查看源码与 MIT 许可证。DeepSeek Harness 社区插件目录(skillhub.cn)为独立站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-plugin-slayer 的价值不在「多开几个 agent」,而在两套委派记账方式的分工:长期 8 席 Team 与最多 3 人的一次性 subagent/workflow,由 preset 加 mode.js guard 在调用层隔开,并配合 SLAYER.md 把项目交底从对话里抽成可加载的文件。

  • 目录页:https://www.skillhub.cn/plugins/yuna78/dsh-slayer
  • 源码与完整文档:https://github.com/yuna78/dsh-slayer(含 docs/install.md、docs/manual.md、README.en.md)
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜