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 的差異

特性對話 ClaudeAgent
執行方式一次性回答迴圈執行
工具呼叫被動主動決策
續行能力自主迭代多輪

範例:自動產週報 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 的位置,產出修復清單,停止

相關概念

強連結(原文明確提及)

深入閱讀(外部資源)

← 回到 wiki