第 4 章研究笔记
关键源码
restored-src/src/hooks/useCanUseTool.tsx:交互式权限入口。restored-src/src/utils/permissions/permissions.ts:核心权限判定。restored-src/src/services/tools/toolExecution.ts:权限与 Hook 的执行位置。restored-src/src/services/tools/toolHooks.ts:Pre/Post/Failure Hook。restored-src/src/hooks/toolPermission/:权限上下文与交互处理。
权限插入点
text
runToolUse()
-> inputSchema.safeParse()
-> validateInput()
-> runPreToolUseHooks()
-> resolveHookPermissionDecision()
-> canUseTool()
-> tool.call()
-> runPostToolUseHooks()1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
架构提炼
值得学习:
- 权限在工具执行前统一处理。
- deny、ask、allow 有清晰优先级。
- Hook allow 不能绕过显式 deny 和安全检查。
- 交互式权限通过队列和回调接入 UI。
- 非交互模式要能自动 deny 或通过外部 permission prompt 工具处理。
谨慎照搬:
- Claude Code 的 permission mode 很多。
- classifier、coordinator、swarm worker、Hook 决策交织较复杂。
- Hook 能力很强,调试成本高。