擋下明確帶 haiku 的 subagent 派工;agent 定義 pin 到 haiku 的只記一行提醒(Stan harness mod)

我的 Claude Code 編輯器配置、自訂代理人與工作流程指南,用於在多台電腦間同步設定。
careful_guard.py — 小心模式,封鎖危險指令(rm -rf、force push、DROP TABLE 等)research_guard.py — 研究模式,封鎖所有寫入操作放置在 ~/.claude/agents/ 目錄,讓 Claude 可以呼叫這些專屬子代理人:
| 檔案 | 說明 |
|---|---|
backend-architect.md | 後端架構設計專家 |
frontend-architect.md | 前端架構設計專家 |
system-architect.md | 系統整體架構規劃 |
security-engineer.md | 資安檢查與建議 |
performance-engineer.md | 效能分析與優化 |
refactoring-expert.md | 程式碼重構指導 |
requirements-analyst.md | 需求分析與釐清 |
tech-stack-researcher.md | 技術選型研究 |
technical-writer.md | 技術文件撰寫 |
deep-research-agent.md | 深度研究與資料蒐集 |
learning-guide.md | 學習路徑與教學引導 |
放置在 ~/.claude/commands/ 目錄,作為可重用的提示範本:
| 檔案 / 目錄 | 說明 |
|---|---|
new-task.md | 建立新任務的標準流程 |
industry-report.md | 產業報告生成指令 |
reels.md | 短影音腳本生成指令 |
api/ | API 相關指令集 |
supabase/ | Supabase 資料庫操作指令 |
ui/ | UI 元件生成指令 |
misc/ | 其他雜項指令 |
將整個倉庫內容複製到 Claude Code 設定目錄:
Linux / macOS
cp settings.json ~/.claude/settings.json
cp CLAUDE.md ~/.claude/CLAUDE.md
cp -r agents ~/.claude/agents
cp -r commands ~/.claude/commands
cp hooks/*.py ~/.claude/hooks/
Windows
copy settings.json $env:USERPROFILE\.claude\settings.json
copy CLAUDE.md $env:USERPROFILE\.claude\CLAUDE.md
xcopy agents $env:USERPROFILE\.claude\agents /E /I
xcopy commands $env:USERPROFILE\.claude\commands /E /I
xcopy hooks $env:USERPROFILE\.claude\hooks /E /I
注意:
settings.json中的 hooks 路徑使用$HOME/.claude/hooks/,需確認你的系統支援此變數展開。
在任何一台電腦上更新設定後,提交並推送到這個倉庫,其他電腦就可以拉取最新配置:
git add .
git commit -m "更新設定"
git push
其他裝置執行:
git pull
然後重新將檔案複製到 ~/.claude/ 目錄即可。
hooks/register.js 21 lines1// Stan 2026-10-02 決定任何地方都不用 haiku。這個 mod 在 subagent 啟動前檢查模型。
2// 擋得到:Agent 工具明確帶 model: "haiku"(或任何含 haiku 的完整 id)。
3// 擋不到:沒帶 model、由 agent 定義 frontmatter pin 到 haiku 的;那時模型還沒解析,只能事後記一行。
4const HAIKU = /haiku/i
5
6export function register(on) {
7 on('agent.spawn', async ($, e, next) => {
8 // fork 一律繼承父模型、忽略 model 參數,不用擋
9 if (!e.fork && HAIKU.test(e.model ?? '')) {
10 return {
11 deny: 'Stan 不用 haiku。拿掉 model 參數讓角色 agent 用定義裡的模型,或改帶 model: "sonnet" 或 "opus",再重派一次。',
12 }
13 }
14 const started = await next(e)
15 if (HAIKU.test(started.model ?? '')) {
16 $.ui.log(`${e.subagentType} 實際跑在 ${started.model},它的 agent 定義 pin 了 haiku,要改 frontmatter`)
17 }
18 return started
19 })
20}
21