pstack自动路由钩子解析:任务如何被自动分发给poteto-mode
【免费下载链接】pstack-claudeClaude Code, Codex, Copilot, Pi, OpenCode, Gemini, and Prime Agent versions of Poteto's pstack. Rigorous agent workflows with Cursor primitives translated for other harnesses.项目地址: https://gitcode.com/GitHub_Trending/ps/pstack-claude
pstack 是一个为 Claude Code、Codex、Pi 等 AI 编码代理提供严格工作流的技能插件,它的核心机制是自动路由钩子:会话一启动,插件就把一份"路由指令"悄悄注入上下文,让 AI 根据任务类型自动把活分派给 poteto-mode,无需你手动喊话。本文带你看懂这条路由链路的工作原理。
一、自动路由解决什么问题 🎯
大多数 agent 插件的问题是:你要么手动输入/poteto-mode触发工作流,要么指望模型"自觉"走规范流程——结果往往是你写了个小需求,它却只改了一行,没做验证。
pstack 的答案是用钩子代替自觉。它在会话开始的那一刻就把路由规则写进上下文,从此:
- 复杂任务 → 自动进入 poteto-mode 的完整工作流(调查、分派、验证)
- 简单任务 → 直接动手,不被流程拖累
整个过程对你是透明的,这就是"自动路由"的含义。
二、钩子如何生效:SessionStart 三件套 🔍
路由钩子的全部配置只有三个文件,都在 plugins/pstack/hooks/ 目录下:
1. 声明触发时机:hooks.json
hooks.json 注册了一个SessionStart钩子,matcher 为startup|resume|clear|compact——也就是说,启动、恢复会话、清空上下文、压缩上下文这四种时刻都会触发。这意味着即使你中途/clear或上下文被压缩,路由指令也会被重新注入,不会"丢"。
Claude Code 按约定读取该文件;Codex 则通过 codex-hooks.json 加载,Windows 上还准备了 session-start.ps1 作为 PowerShell 版本。
2. 执行检查:session-start.sh
session-start.sh 是钩子实际执行的脚本,逻辑非常克制,只有两步:
- 看开关:读取当前运行时的配置表(Claude Code 是
~/.claude/pstack-models.md,Codex 是~/.codex/pstack-models.md)。如果表里写着一行session hook: off,直接退出,什么都不注入。 - 无开关则注入:把路由指令文件的全文打印到会话上下文中。
3. 路由指令本体:session-start-context.md
session-start-context.md 就是注入给 AI 的那段"路由规则",用一段<EXTREMELY_IMPORTANT>包裹,大意是三条分流:
| 任务特征 | 路由去向 |
|---|---|
| 改多个文件、改动其他文件会调用的签名 | 调用pstack:poteto-mode |
| 涉及设计或架构决策 | 调用pstack:poteto-mode |
| 原因不明的 bug、性能问题 | 调用pstack:poteto-mode |
| 单文件小改动、提问、一行修改 | 直接干活,并在真实产物上验证 |
| 意图已明确(如明确要 TDD、架构评审) | 直达对应技能:pstack:tdd、pstack:architect、pstack:how、pstack:why、pstack:arena、pstack:interrogate |
规则最后还加了一句兜底:用户自己的指令(CLAUDE.md、AGENTS.md、直接要求)优先级最高,自动路由永远服从你。
三、poteto-mode:路由的第二级 🧭
任务落到 poteto-mode 之后,并不是"套个模板",而是再走一次playbook 匹配。poteto-mode 的技能文件 SKILL.md 里维护了 20 多个 playbook,例如:
- Bug fix:复现 → 定位根因 → 修复 → 用运行时证据验证
- Investigation:只读调查,交付带引用的答案
- Feature:新行为开发,从数据形状建模开始
- Refactoring:保行为的重构
- Babysit / Shipping:PR 看护到合入的完整后半程
- Autonomous run:"我下班了,你跑完它"这类长时任务
它会把匹配的 playbook 步骤原样抄进 todolist,逐步执行;跨函数边界的设计会先拉起architect技能做并行设计探索,争议性设计交给interrogate做多模型对抗评审,产出文字再过unslop清理。一句话:钩子负责"该不该走流程",poteto-mode 负责"走哪条流程"。
四、如何关闭自动路由钩子 ⚙️
如果你希望完全手动控制(比如只想偶尔用一次 poteto-mode),项目提供了官方开关,无需改代码:
- 在会话中运行
/setup-pstack(对应 setup-pstack 技能) - 它会在配置表
pstack-models.md中写入session hook: on或session hook: off - 没有配置表、或没有这一行时,默认是开着的
Codex 用户还多一步:插件钩子需要先通过/hooks命令信任后才会运行。这套开合同时有测试守护,见 session-hook.test.mjs——它实际执行每个运行时打包的钩子命令,验证指令确实被注入、且指令里点名的技能都真实存在。
五、小结 📌
| 环节 | 文件 | 职责 |
|---|---|---|
| 触发声明 | hooks.json | 启动/恢复/清空/压缩时运行钩子 |
| 执行脚本 | session-start.sh | 查开关,决定是否注入 |
| 路由规则 | session-start-context.md | 定义什么任务进 poteto-mode |
| 工作流 | poteto-mode/SKILL.md | 匹配 playbook 并执行 |
| 配置开关 | setup-pstack/SKILL.md | 控制钩子开/关与模型角色 |
这套设计的巧妙之处在于:路由逻辑不靠模型"记住",而是靠钩子每次会话都强制送达;而规则本身只有三条分流标准,简单任务不被打扰,复杂任务自动走严格流程。这就是 pstack 自动路由钩子的全部奥秘。更多项目细节可参考 README.md 与 docs/reference.md。
【免费下载链接】pstack-claudeClaude Code, Codex, Copilot, Pi, OpenCode, Gemini, and Prime Agent versions of Poteto's pstack. Rigorous agent workflows with Cursor primitives translated for other harnesses.项目地址: https://gitcode.com/GitHub_Trending/ps/pstack-claude
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考