CastMate 是一个面向宿主智能体的技能,用于把合适的工作交给合适的 AI 模型。宿主是发起方,所谓 castmate 指的是本机已安装的其他 AI 编程 CLI(如 Codex、Claude、Gemini、Amp、OpenCode、Cursor、Kiro 等)。该技能通过自身目录下的 scripts/castmate.py 调用这些 CLI,由宿主决定调用谁、撰写提示词、读取返回内容并向用户说明结果。该项目改编自 Aaron Francis 的 counselors(MIT 许可),把发现、提示词撰写与结果综合从代码移到工作流中,模型列表移入配置以避免过时。
主要能力
- 列出可用的 castmate、分组、安装状态与只读状态:python3 <skill-dir>/scripts/castmate.py list
- 测试各 castmate 是否可用(每个需回复“OK”):python3 <skill-dir>/scripts/castmate.py test codex fable
- 运行任务并输出 JSON:python3 <skill-dir>/scripts/castmate.py run -c codex-sol-high,fable-high -f prompt.md --json
三种使用模式
- Delegate:单个 castmate,返回只读答案或使用 --write 写入。适合把具体任务交出,例如让 codex 写迁移脚本、让 haiku 总结日志。
- Fan-out:2–4 个只读 castmate,对方案、diff 或决策获取独立第二意见,请求模糊时默认使用两个 castmate 的 fan-out。
- Rounds:2–4 个 castmate、2–4 轮,只读,用于查找缺陷、安全问题、性能问题等需要后轮基于前轮继续深入的场景。宿主自行按轮运行,每轮输出到独立新文件夹,最后跨轮综合并标注哪些发现经受住了质疑。
配置与状态 配置目录为 ${MAKERSKILLS_CONFIG:-$HOME/.config/makerskills}/castmate,位于安装目录之外。config.json 与 references/tools.json 结构一致并叠加在其上,可添加 castmate 别名、分组或新的 CLI 适配器;casting.local.md 保存用户自己的“用 X 做 Y”规则,在 references/casting.md 之前读取;runs/ 是默认输出目录,每次运行一个子文件夹。新模型无需配置,可用 -c codex:gpt-5.7@high 或 -c claude:some-new-model 直接把模型 ID 传给 CLI,验证有用后再提议保存别名。
使用流程
- 选择模式:模糊请求默认 fan-out;指名 castmate 加任务则为 delegate。
- 决定调用:运行 list 展示与本任务相关的 castmate,读取 casting.local.md 与 references/casting.md,为每个推荐给出单行理由;未验证的适配器和 best-effort 只读级别需提前说明,派发前确认确切名单,--write 运行必须确认并指明工作目录。
- 撰写提示词:使用 references/prompt-template.md 中的 Delegate 或 Review 模板;先收集上下文(请求中提到的文件、git status、git diff、最多 5 个相关文件),按路径引用而非粘贴内容;评审变更时把 diff 粘贴进提示词;盲审时不要透露自己的结论。提示词保存为临时文件或用 -f - 管道传入。
- 派发:运行 run 命令,可指定 --write、--cwd、--timeout(示例 540)和 --json;每个 castmate 可能耗时 2–15 分钟,应告知预计时间并在支持时后台运行,脚本每 30 秒在 stderr 打印运行状态。--write 只接受一个 castmate,运行前应确保工作区已提交或暂存。只有 Codex 通过 workspace sandbox 把写入限制在 --cwd 内,Claude、Gemini、Antigravity 等拥有用户完整文件访问权限,仅被要求留在 --cwd。退出码:0 表示至少一个成功,1 表示全部失败,2 表示设置错误,130/143 表示被中断。--out 必须是新文件夹或空文件夹,只读运行拒绝位于 --cwd 内的 --out。
- 读取结果:输出文件夹中的 run.json 列出每个 castmate 的状态、耗时、字数、输出文件、错误文件和确切命令;success 读取 outputFile,timeout 使用部分输出并标注,error/empty 先转述报告中的 hint,否则读取 stderrFile。
- 呈现结果:delegate 需审阅执行者产出,--write 后查看 git diff、运行测试与 lint 并报告变更;fan-out 与 rounds 需综合而非拼接,按“一致点、分歧点、风险提示、盲区、建议”结构输出,并给出 2–3 个后续动作。
首次使用与限制 首次调用前应对计划使用的 castmate 运行 test(约 5–15 秒),list 只显示 CLI 已安装,不保证已登录或账号拥有该模型。若未安装或测试失败,参照 references/cli-setup.md 进行设置;登录为交互式,需用户在自己的终端执行。切勿让用户在聊天中粘贴 API 密钥。已知注意事项:Gemini CLI 在个人账号上不再支持 Google 登录(自 2026-06 起需 API 密钥),Antigravity 的安装程序会修改 shell 配置文件且其只读模式为 best-effort。best-effort 只读的 castmate 在用户未编写的代码(克隆仓库、他人 PR)上使用前需先说明。Antigravity 在无头模式拒绝某次工具调用时会返回空结果,可改用更窄的提示词或换用其他 castmate。