Agent Loop(代理迴圈)
Agent 不是「問一句答一句」,而是 think → act → observe → repeat 的自主迭代。
流程圖
flowchart LR A[Think 思考] --> B[Act 行動<br/>呼叫工具] B --> C[Observe 觀察<br/>看結果] C --> D{完成?} D -->|否| A D -->|是| E[回傳]
跟一般對話 Claude 的差異
| 特性 | 對話 Claude | Agent |
|---|---|---|
| 執行方式 | 一次性回答 | 迴圈執行 |
| 工具呼叫 | 被動 | 主動決策 |
| 續行能力 | 無 | 自主迭代多輪 |
範例:自動產週報 Agent
1. Think:要寫週報,需要 commit log 與 PR 狀態
2. Act:呼叫 read_commit_log 工具
3. Observe:得到最近 10 筆 commit
4. Think:還需要 PR 狀態
5. Act:呼叫 get_pr_status 工具
6. Observe:得到 5 個 merged、3 個 open
7. Think:資料夠了,整理週報
8. Act:產生 markdown 週報
9. Observe:完成
10. 回傳給使用者
防失控 3 層
response = await client.query(
prompt="...",
max_turns=5, # ① 迴圈上限
tools=[safe_tool_1, safe_tool_2], # ② 限制工具集
# prompt 中明確寫成功條件 # ③ Stop Condition
)Stop Condition 寫法
❌ 模糊:「優化這個服務」(永遠不知道何時停)
✅ 清晰:
只檢查 HrController.cs 內 3 個方法的 N+1 問題:
- GetGradeDistribution
- SubmitDepartment
- RecalculateGradeDistribution
找出 → 寫測試驗證 → 停止
對 PAM 的應用
派 Agent 自動巡查:
- max_turns = 10
- tools: [grep_code, read_file, write_test]
- 任務:找 PAM 全 codebase 中直接拼接 SQL 的位置,產出修復清單,停止
相關概念
強連結(原文明確提及)
- Sub-agent — Agent 派出的小幫手
- Cowork — 內建 Agent loop
- Claude API — Agent SDK 在 API 上層
深入閱讀(外部資源)
- 深入閱讀:12-Agent 建置與使用
← 回到 wiki