以下是内容的中文翻译,保持原有格式不变:
name: spawn-agent description: “在新终端中生成一个AI编码代理(Claude, Codex, Gemini, Cursor, OpenCode, Copilot)。如果没有特别指定,默认使用Claude Code。”
目的
在新终端窗口中生成一个AI编码代理。按照’指令’执行’工作流程’,基于’食谱’。
变量
| 变量 | 默认 | 描述 |
|---|---|---|
| DEFAULT_AGENT | claude-code | 当没有明确指定代理时使用的代理 |
| ENABLED_CLAUDE_CLI | true | 启用Claude Code代理 |
| ENABLED_CODEX_CLI | true | 启用OpenAI Codex代理 |
| ENABLED_GEMINI_CLI | true | 启用Google Gemini代理 |
| ENABLED_CURSOR_CLI | true | 启用Cursor代理 |
| ENABLED_OPEN_CODE_CLI | true | 启用OpenCode代理 |
| ENABLED_COPILOT_CLI | true | 启用GitHub Copilot代理 |
| LOG_TO_FILE | false | 将完整的终端输出写入调试文件 |
| LOG_AGENT_OUTPUT | true | 将干净的代理JSON响应写入文件 |
| READ_CAPTURED_OUTPUT | false | 读取并显示代理输出后生成 |
| AGENTIC_CODING_TOOLS | claude-code, codex-cli, gemini-cli, cursor-cli, opencode-cli, copilot-cli | 可用的代理工具 |
指令
强制性 - 您必须按照下面的工作流程步骤进行。不要跳过步骤。
代理选择
- 明确请求:如果用户指定了代理(例如,“使用gemini”,“生成codex”),请使用该代理
- 没有指定代理:使用DEFAULT_AGENT(claude-code)
- 检查启用:在继续之前验证ENABLED_*_CLI标志是否为true
阅读食谱
- 根据所选代理,遵循’食谱’部分阅读相应的.md文件
- 您必须在生成代理之前阅读并执行相应的食谱文件
红旗 - 停止并遵循食谱
如果您即将:
- 在没有先阅读食谱的情况下生成代理
- 在没有运行–help的情况下执行CLI命令
- 因为“这很简单”而跳过步骤
- 在没有检查INTERACTIVE_MODE要求的情况下,用提示运行CLI代理
停止 -> 阅读相应的食谱文件 -> 遵循其指示 -> 然后继续
常见错误:当用提示生成代理CLIs(Claude, Codex, Gemini)时, 大多数需要命令链(例如,
&& claude --continue)以在提示完成后保持交互 模式。始终检查食谱以获取正确的模式。
生成摘要用户提示
- 如果:用户请求用对话摘要生成代理
- 那么:
- 阅读并替换’./prompts/fork-summary-user-prompt.md’中的<user_prompt_summary>和<agent_response_summary>字段,用你和用户之间的对话历史。
- 将下一个用户请求包含在
Next User Request字段中。 - 这将是您传入代理编码工具的PROMPT字段的内容。
- 使用:fork_terminal(command: str, capture=False, log_to_file=False, log_agent_output=True)生成代理
- 示例:
- “用Claude Code生成代理<xyz>并包含摘要”
- “用Claude Code生成新终端<xyz>。包括对话摘要。”
- “用Claude Code创建新代理<xyz>。总结迄今为止的工作。”
- “用Gemini生成代理<xyz>并包含摘要”
工作流程
强制性检查点 - 在继续之前验证每个检查点:
- [ ] 理解用户的请求
- [ ] 选择代理:确定哪个代理(明确或DEFAULT_AGENT)
- [ ] 阅读:'./fork_terminal.py’以了解工具
- [ ] 遵循食谱(阅读所选代理的相应.md文件)
- [ ] 检查点:确认遵循了食谱指示(例如,运行了–help)
- [ ] 执行fork_terminal(command: str, capture=False, log_to_file=False, log_agent_output=True)
- [ ] 如果’READ_CAPTURED_OUTPUT’为true:使用read_fork_output()读取并显示代理输出
食谱
Claude Code(默认)
- 如果:用户请求Claude Code或没有明确指定代理
- 那么:阅读并执行’./cookbook/claude-code.md’
- 示例:
- “生成代理<xyz>”
- “生成终端<xyz>”(没有指定代理=claude-code)
- “用Claude Code生成代理<xyz>”
- “用Claude Code生成新终端”
Codex CLI
- 如果:用户请求Codex/OpenAI代理且’ENABLED_CODEX_CLI’为true
- 那么:阅读并执行’./cookbook/codex-cli.md’
- 示例:
- “用Codex生成代理<xyz>”
- “用Codex CLI创建新终端<xyz>”
- “生成OpenAI代理<xyz>”
Gemini CLI
- 如果:用户请求Gemini/Google代理且’ENABLED_GEMINI_CLI’为true
- 那么:阅读并执行’./cookbook/gemini-cli.md’
- 示例:
- “用Gemini生成代理<xyz>”
- “用Gemini CLI创建新终端<xyz>”
- “生成Google代理<xyz>”
Cursor CLI
- 如果:用户请求Cursor代理且’ENABLED_CURSOR_CLI’为true
- 那么:阅读并执行’./cookbook/cursor-cli.md’
OpenCode CLI
- 如果:用户请求OpenCode代理且’ENABLED_OPEN_CODE_CLI’为true
- 那么:阅读并执行’./cookbook/opencode-cli.md’
Copilot CLI
- 如果:用户请求Copilot/GitHub代理且’ENABLED_COPILOT_CLI’为true
- 那么:阅读并执行’./cookbook/copilot-cli.md’
输出检索
fork_terminal()函数支持三个输出控制:
| 参数 | 默认 | 输出文件 | 描述 |
|---|---|---|---|
log_agent_output |
True |
/tmp/fork-agent-*.json |
干净的代理JSON响应 |
log_to_file |
False |
/tmp/fork-debug-*.txt |
完整的终端输出(调试) |
capture |
False |
N/A | 阻塞并直接返回内容 |
参数组合
capture |
log_agent_output |
log_to_file |
行为 |
|---|---|---|---|
False |
True (默认) |
False |
返回代理JSON文件路径 |
False |
False |
True |
返回调试文件路径 |
False |
False |
False |
返回空字符串 |
True |
True |
* | 阻塞,返回代理JSON内容 |
True |
False |
True |
阻塞,返回调试内容 |
稍后检索输出
当log_agent_output=True(默认),干净的代理输出被记录。使用read_fork_output(file_path)检索它:
# 生成不阻塞(返回JSON输出的路径)
file_path = fork_terminal(cmd, log_agent_output=True)
print(f"代理输出将在:{file_path}")
# 稍后,需要时读取输出
output = read_fork_output(file_path, timeout=60)
调试模式
用于调试,启用log_to_file=True以捕获完整的终端输出(包括stderr):
# 调试模式:捕获一切
file_path = fork_terminal(cmd, log_to_file=True, log_agent_output=False)