前言¶
在 DeepSeek Harness(DSH)里做大块工程,常见做法是主会话一条线扛到底:规划、实现、审查、提交挤在同一条上下文里,模型路由也难按环节拆开。社区插件 @dyikai/dsh-hogwarts-loop 把 hogwarts-loop 方法论打包进 DSH:每个「角色」对应一个受管 subagent,各自可在客户端配置 provider / model;主会话通过 skill 或 hogwarts_dispatch 按检查点推进,而不是把所有步骤绑死在同一模型上。
下面介绍它是什么、装好后怎么触发、以及如何确认子智能体真的按角色路由在跑。
这是什么¶
dsh-hogwarts-loop 是维护者 dyikai 发布的 DSH 工作流类插件(npm 包名 @dyikai/dsh-hogwarts-loop,当前资料中版本 1.0.6,许可证 MIT)。一句话定位:Plan → build → review → commit,以 skill + 单一调度工具的形式,把大工程拆成可独立验收的小检查点(checkpoint)。
插件目录页:skillhub.cn/plugins/dyikai/dsh-hogwarts-loop。源码与说明:github.com/dyikai/dsh-hogwarts-loop(GitHub 星标在资料中为 1)。DSH 社区目录是独立站点,与 DeepSeek / 幻方无官方从属关系;安装前仍应自行阅读源码与许可证。
核心能力(与仓库结构对应)¶
资料中的能力表可概括为以下几块:
| 能力 | 形态 | 位置 |
|---|---|---|
| 闭环方法论与各角色职责 | hogwarts-loop skill(也可 /hogwarts-loop 触发) |
skill/SKILL.md、skill/references/*.md |
| 审查记录、批量校验、收敛上限与评估说明 | markdown 契约 + 合成/仓库衍生用例 | skill/references/review-contract.md、skill/references/evaluation.md、skill/assets/eval-*.md |
| 在同一父会话内创建或延续某角色 subagent | hogwarts_dispatch 工具 |
由 index.js 注册 |
| 按角色编辑 provider / model / effort / 输出上限等 | Settings → Hogwarts Loop,以及插件行 Configure | client.js(浏览器端) |
调度语义(资料原文要点):
- 一个父会话、每个角色最多一个子会话:检查点与修复轮次共用同一
childId;改description、完成 CP 或变为 inactive 不会「换一个新的 Harry」。不同角色(例如 Harry 与 Severus)历史互不混用。 - 非阻塞:应等该角色回报后再派下一个 CP;对同一角色并发调用不会拉出并行 worker。
- 绑定在插件重载、恢复同一父会话后仍保留;延续失败不会静默替换成新子会话。
cwd仅创建时有效:后续调用若传入非空cwd会被拒绝;省略则保留子会话已有工作目录。- 返回结果区分
started与continued;创建时会报告当时配置的 provider/model,延续时会标识已有 child,而不是声称已套用刚改过的默认值。
方法论层面的附加约束(workflow,非运行时强制):
- skill 要求 Harry 交付时附带复杂度报告;满足 ablation policy 时会做受控消融/替换实验(资料称为 workflow gate;仅手动 dispatch、不走 skill 时会跳过检查点/审查纪律)。
- review contract 约定:先校验 blocking 候选再修复、保留证据与 finding ID、独立验修复而非整段重审;修复/重审轮次与「仅证据批次」有单独预算。
- 工作规划、进度与审查报告默认留在会话或任务级临时存储,不会默认写入 Git 或
.gitignore背后;只有明确批准、长期维护的路标/设计文档才应持久化。
安装与启用¶
环境要求:Node.js ≥ 20,以及已配置的 DeepSeek Harness profile。无需 build;安装或修改 client.js 后 需刷新页面一次,浏览器端 settings 与插件行才会完整加载。
方式一:Add plugin 向导¶
在 Add plugin 搜索框输入 @dyikai/dsh-hogwarts-loop,点击 Install。
方式二:dsh CLI¶
dsh plugin --profile web add @dyikai/dsh-hogwarts-loop
dsh web
卸载(资料中的 plugin_manager 形式)¶
plugin_manager -> { action: "remove_bundle", target: "@dyikai/dsh-hogwarts-loop" }
插件没有「开始任务」按钮:安装后常驻,提供 hogwarts_dispatch 工具、hogwarts-loop skill 和 设置页;是否进入闭环取决于你是否触发 skill 或手动 dispatch。
典型用法¶
1、通过 skill 进入完整纪律¶
任选其一:
- 在当前会话输入
/hogwarts-loop,将 skill 内容注入会话。 - 用自然语言说明意图,例如:plan this milestone with the hogwarts loop, then implement, review and commit each checkpoint(skill 自带描述,任务匹配时模型也可能自行加载)。
2、手动 dispatch(跳过 skill 的检查点/审查纪律)¶
仅想直接派某个角色时,可明确要求使用 hogwarts_dispatch。资料示例:首次调用创建 Harry;CP1 通过后再次调用 延续 同一 Harry:
// First call creates Harry; after CP1 passes, the next call continues him.
hogwarts_dispatch({ role: "harry", description: "CP1 build", prompt: "<first brief>" })
hogwarts_dispatch({ role: "harry", description: "CP2 build", prompt: "<next brief>" })
3、如何确认「真的在工作」¶
资料给出三条可观察信号:
- 会话里出现
hogwarts_dispatch工具调用; - 对同一角色重复 dispatch 返回 相同
childId; - 子会话日志里
agentModel与config.model等于该角色在设置里配置的路由(例如harry在deepseek-flash、severus在deepseek-v4-pro),而不是主会话模型。
配置角色 cast¶
主入口:Settings → Hogwarts Loop(侧边栏底部 settings section,order 60)。同一表单也可从 Plugins → Installed plugins → @dyikai/dsh-hogwarts-loop → hogwarts-loop 行 → Configure 进入。
每个 cast 成员一行:provider、model 下拉来自宿主模型目录(remote.session.modelCatalog(),按 provider 分组);切换 provider 会把 model 切到该 provider 的第一项。Reasoning effort 来自当前 model 实际支持的档位(留空则用模型默认);max output tokens 可留空。其下 Dispatch settings 包含 subagent backend 与 delegation depth cap(资料在此处截断,保存行为为单次原子、带 version fence 的 mutate)。
适用场景与注意¶
更适合: 希望把「规划 → 实现 → 审查 → 提交」拆成带检查点的工作流,且 不同环节想用不同模型/推理档位 的 DSH 用户;愿意遵循 skill 附带的审查与 ablation 纪律时,用 /hogwarts-loop 或匹配描述触发完整闭环。
务必注意:
- 插件以 当前 dsh 进程权限 运行;安装前请阅读 仓库源码 与 MIT 许可证,自行评估风险。
- 仅手动
hogwarts_dispatch不会自动带上 skill 里的 checkpoint / review 约束;大里程碑仍建议走 skill 或明确口述同等纪律。 - 全新的父会话会启动新的 cast,并从 plan 重新 hydrate;不要假设跨会话自动继承未持久化的执行报告。
结尾¶
@dyikai/dsh-hogwarts-loop 把 hogwarts-loop 从「写在文档里的流程」变成 DSH 里可安装的 skill + 调度工具 + 客户端设置页:主会话保 orchestration,各角色 subagent 在可配置模型上独立推进检查点。若要浏览元信息与安装入口,见 SkillHub 目录页;细节与中文 README 链见 GitHub 仓库。