From befcd2bafa688411ada65bb6563c00468d8f8416 Mon Sep 17 00:00:00 2001 From: claude-code-best Date: Tue, 14 Apr 2026 10:07:49 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E6=B7=BB=E5=8A=A0=20agent-loop=20?= =?UTF-8?q?=E7=BB=98=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/diagrams/agent-loop.mmd | 40 ++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 docs/diagrams/agent-loop.mmd diff --git a/docs/diagrams/agent-loop.mmd b/docs/diagrams/agent-loop.mmd new file mode 100644 index 000000000..99a9de4ef --- /dev/null +++ b/docs/diagrams/agent-loop.mmd @@ -0,0 +1,40 @@ +flowchart TB + START((输入)) --> CTX["Context 管理"] + CTX --> PRE["Pre-sampling Hook"] + PRE --> LLM["LLM 流式输出"] + LLM --> TC{tool_use?} + + TC --> |是| PERM{需权限?} + PERM --> |是| USER["👤 用户审批"] + USER --> |allow| TOOL_PRE + USER --> |deny| DENIED["拒绝"] + PERM --> |否| TOOL_PRE["Pre-tool Hook"] + TOOL_PRE --> EXEC["并发执行工具"] + EXEC --> TOOL_POST["Post-tool Hook"] + TOOL_POST --> CTX + DENIED --> CTX + + TC --> |否| POST["Post-sampling Hook"] + POST --> STOP{"Stop Hook"} + STOP --> |不通过| CTX + STOP --> |通过| BUDGET{"Token Budget"} + BUDGET --> |继续| CTX + BUDGET --> |完成| DONE((完成)) + + subgraph SUB["子 Agent"] + FORK["AgentTool"] --> RECURSE["递归调用"] + end + + EXEC -.-> FORK + + classDef proc fill:#eef,stroke:#66c,color:#224 + classDef decision fill:#fee,stroke:#c66,color:#422 + classDef hook fill:#ffe,stroke:#cc6,color:#442 + classDef io fill:#eff,stroke:#6cc,color:#244 + classDef sub fill:#efe,stroke:#6a6,color:#242 + + class CTX,LLM,EXEC proc + class TC,PERM,STOP,BUDGET decision + class PRE,TOOL_PRE,TOOL_POST,POST hook + class START,DONE,USER,DENIED io + class FORK,RECURSE sub