Hooks 让你能够在 Agent 生命周期中的特定事件发生时运行自定义逻辑。你可以使用 hooks 来强制执行策略、添加上下文、记录操作、修改权限,或与外部系统集成。 Devin CLI 使用的 hook 格式与 Claude Code hooks 兼容。如果你已经为 Claude Code 配置了 hooks,它们会自动适用于 Devin CLI。Documentation Index
Fetch the complete documentation index at: https://docs.devinenterprise.com/llms.txt
Use this file to discover all available pages before exploring further.
Hooks 有什么作用?
执行策略
阻止危险命令、要求对特定操作进行确认,或限制文件访问。
添加上下文
在调用特定工具时注入额外指示或信息。
触发副作用
在事件发生时执行脚本、发送通知或记录日志。
修改权限
根据具体情况动态授予或限制权限。
快速示例
.devin/hooks.v1.json:
./scripts/check-command.sh。该脚本会通过 stdin 接收事件数据,并可通过返回非零退出码来阻止该操作。
Hook 事件
| 事件 | 触发时机 |
|---|---|
PreToolUse | 工具执行前 |
PostToolUse | 工具完成后 |
PermissionRequest | 需要做出权限决策时 |
UserPromptSubmit | 用户提交消息时 |
Stop | Agent 想要停止时 |
SessionStart | 会话开始时 |
SessionEnd | 会话结束时 |
钩子格式
command 或 prompt) 、一个可选的匹配器 (用于匹配钩子事件 tool_name 的正则表达式) ,以及配置:
| Field | 说明 |
|---|---|
matcher | 用于匹配 hook 事件 tool_name 的正则表达式。空字符串或省略 matcher 时,会匹配所有工具名称。 |
type | "command" 表示运行 shell 命令,"prompt" 表示评估 LLM 提示。 |
command | 要运行的 shell 命令 (用于 command 类型) 。 |
prompt | 要评估的 LLM 提示 (用于 prompt 类型) 。 |
timeout | 超时时间 (以秒为单位,可选) 。 |
命令钩子
| 输出字段 | 说明 |
|---|---|
decision | "approve"、"block" 或 "deny" |
reason | 显示给 Agent 的说明 |
DEVIN_PROJECT_DIR 环境变量会自动设置为项目根目录。
内置工具名称以及可匹配的 MCP 工具名称格式,请参阅使用 Matcher。
退出代码
| 代码 | 含义 |
|---|---|
| 0 | 成功——hook 正常继续执行 |
| 2 | 阻止——操作被拒绝 |
| 其他 | 错误——会被记录,但不会阻止 |
Hooks 的存放位置
项目级
| 位置 | 说明 |
|---|---|
.devin/hooks.v1.json | 独立的 hooks 文件 (推荐) |
.devin/config.json | 配置文件中的 "hooks" 键 |
.devin/config.local.json | "hooks" 键 (本地覆盖,已加入 gitignore) |
.claude/settings.json | "hooks" 键 (Claude Code 格式) |
.claude/settings.local.json | "hooks" 键 (Claude Code 格式) |
用户级 (全局)
| 位置 | 说明 |
|---|---|
~/.config/devin/config.json (Windows 上为 %APPDATA%\devin\config.json) | 用户配置中的 "hooks" 密钥 |
~/.claude.json | "hooks" 密钥 (Claude Code 格式) |
~/.claude/settings.json | "hooks" 密钥 (Claude Code 格式) |
~/.claude/settings.local.json | "hooks" 密钥 (Claude Code 格式) |
在
.devin/hooks.v1.json 中,hooks 对象就是整个文件 (无需外层包装密钥) 。在其他所有位置,hooks 都位于设置文件中的 "hooks" 密钥下。启用
read_config_from.claude 时 (默认启用) ,会加载来自 .claude/ 路径的 hooks。如有需要,你可以在用户配置中禁用此功能。检查 Hooks
/hooks 斜杠命令,查看当前已加载的所有 Hooks 及其源文件:
后续步骤
生命周期钩子
深入了解各类事件及其可用数据。
Claude Code Hooks 文档
钩子格式的完整参考文档。
