SubagentStop Hook

SubagentStop

在 Subagent 对话结束时触发,可用于阻止 Subagent 结束并让其继续工作。

入参

参数名 说明
session_id 当前会话 ID
transcript_path 当前会话的消息记录文件路径
permission_mode 当前 Agent 运行模式
hook_event_name Hook 事件名称
stop_hook_active 是否已触发过停止 Hook,true 表示已触发,false 表示未触发,用于避免无限循环
{
"session_id": "abc123",
"transcript_path": "~/.Hawa Code/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",
"permission_mode": "default",
"hook_event_name": "Stop",
"stop_hook_active": true
}

出参

JSON 格式

返回以下数据结构时,Hawa Code 将正常结束:

{"ok": true}

返回以下数据结构时,Hawa Code 将继续工作,并将 reason 作为继续工作的原因发送给模型:

{"ok": false, "reason": "your explanation"}

返回码格式

  • 退出代码 0:成功,Hawa Code 将停止任务
  • 退出代码 2:失败,Hawa Code 将继续工作,并将 stderr 作为继续工作的原因发送给模型

配置方式

Prompt 方式

通过 $ARGUMENTS 占位符配置 Prompt:

{
"hooks": {
"SubagentStop": [
{
"hooks": [
{
"type": "prompt",
"prompt": "Evaluate if Hawa Code should stop: $ARGUMENTS. Check if all tasks are complete."
}
]
}
]
}
}

Command 方式

执行 Shell 脚本:

{
"hooks": {
"SubagentStop": [
{
"hooks": [
{
"type": "command",
"command": "node ./hooks/subagent-stop.js"
}
]
}
]
}
}

示例脚本:

import * as fs from 'fs';
const input = fs.readFileSync(0, 'utf-8');
console.log({
"ok": false,
"reason": input + " Root cause analysis"
});