承上篇 我覺得用 llm 自動決策有點沒必要
用 rule based 決策 稍微改寫
輸出內容
╔════════════════════════════════════════════════╗
║ Pattern 12: Rule-Based Agent - Demo Tool ║
╚════════════════════════════════════════════════╝
1. 執行 Agent(一次)
2. 執行 Agent(多次)
3. 人工審核文章
4. 顯示所有文章
5. 顯示執行日誌
6. 重置資料庫
7. 與 Pattern 11 比較
0. 離開
請選擇: 2
要執行幾次?
5
將執行 Agent 5 次...
【第 1/5 次執行】
--------------------------------------------------
╔═══════════════════════════════════════════╗
║ Rule-Based Agent - 基於規則的 Agent ║
╚═══════════════════════════════════════════╝
執行時間: 2026-02-16 09:04:43
→ 讀取系統狀態...
當前文章數量:
→ 應用規則決策...
【規則決策】
選擇動作: research
理由: 待研究文章數 (0) 少於 2,需要補充內容管道
【執行動作】研究關鍵字
研究領域: AI 與軟體開發
建立文章 ID: 1
【執行結果】
✓ 成功研究 5 個關鍵字主題
文章狀態: pending_write
╔═══════════════════════════════════════════╗
║ Agent 執行完成 ║
╚═══════════════════════════════════════════╝
【第 2/5 次執行】
--------------------------------------------------
╔═══════════════════════════════════════════╗
║ Rule-Based Agent - 基於規則的 Agent ║
╚═══════════════════════════════════════════╝
執行時間: 2026-02-16 09:05:01
→ 讀取系統狀態...
當前文章數量:
- pending_write: 1
→ 應用規則決策...
【規則決策】
選擇動作: write
理由: 有 1 篇文章等待撰寫
【執行動作】撰寫文章
文章 ID: 1
主題: AI 驅動的軟體開發
【執行結果】
✓ 文章撰寫完成: 如何使用 AI 技術提升軟體開發效率
狀態: pending_review(等待品質審查)
╔═══════════════════════════════════════════╗
║ Agent 執行完成 ║
╚═══════════════════════════════════════════╝
【第 3/5 次執行】
--------------------------------------------------
╔═══════════════════════════════════════════╗
║ Rule-Based Agent - 基於規則的 Agent ║
╚═══════════════════════════════════════════╝
執行時間: 2026-02-16 09:05:37
→ 讀取系統狀態...
當前文章數量:
- pending_review: 1
→ 應用規則決策...
【規則決策】
選擇動作: review
理由: 有 1 篇文章等待品質審查
【執行動作】審查文章品質
文章: 如何使用 AI 技術提升軟體開發效率
審查中...
【執行結果】
✓ 品質評分: 8.5/10 - 通過自我審查
理由: 這篇文章在內容深度與準確性方面表現良好,涵蓋了 AI 在軟體開發中的多個應用場景,並提供了具體的實用範例。結構完整,從應用到實施步驟,再到具體範例,邏輯清晰,易於讀者理解。實用性強,對於開發團隊有實際的指導意義。雖然在 SEO 優化方面可以進一步加強,例如增加關鍵字密度或使用更多的標題標籤,但整體上仍然符合發布標準。
⚠️ 仍需人工批准(執行 human-review.php)
╔═══════════════════════════════════════════╗
║ Agent 執行完成 ║
╚═══════════════════════════════════════════╝
【第 4/5 次執行】
--------------------------------------------------
╔═══════════════════════════════════════════╗
║ Rule-Based Agent - 基於規則的 Agent ║
╚═══════════════════════════════════════════╝
執行時間: 2026-02-16 09:05:43
→ 讀取系統狀態...
當前文章數量:
- pending_review: 1
→ 應用規則決策...
【規則決策】
選擇動作: review
理由: 有 1 篇文章等待品質審查
【執行動作】審查文章品質
文章: 如何使用 AI 技術提升軟體開發效率
審查中...
【執行結果】
✓ 品質評分: 8.5/10 - 通過自我審查
理由: 這篇文章內容深入且準確,涵蓋了 AI 在軟體開發中的多個應用領域,並提供了具體的實用範例,展示了如何提升開發效率。結構完整,分為不同的章節,易於閱讀和理解。實用性強,對於開發團隊有實際的指導意義。此外,文章的 SEO 優化也相對良好,使用了相關關鍵字和標題格式。雖然可以進一步增強一些細節和數據支持,但整體上已達到發布標準。
⚠️ 仍需人工批准(執行 human-review.php)
╔═══════════════════════════════════════════╗
║ Agent 執行完成 ║
╚═══════════════════════════════════════════╝
【第 5/5 次執行】
--------------------------------------------------
╔═══════════════════════════════════════════╗
║ Rule-Based Agent - 基於規則的 Agent ║
╚═══════════════════════════════════════════╝
執行時間: 2026-02-16 09:05:48
→ 讀取系統狀態...
當前文章數量:
- pending_review: 1
→ 應用規則決策...
【規則決策】
選擇動作: review
理由: 有 1 篇文章等待品質審查
【執行動作】審查文章品質
文章: 如何使用 AI 技術提升軟體開發效率
審查中...
【執行結果】
✓ 品質評分: 8.5/10 - 通過自我審查
理由: 這篇文章內容深入且準確,涵蓋了 AI 在軟體開發中的多個應用領域,結構清晰,分段合理,易於閱讀。提供的實用範例增強了文章的實用性,並且結論部分強調了 AI 技術的重要性,符合當前市場需求。唯一的改進空間在於進一步增強 SEO 優化,例如使用更多關鍵字和內部鏈接來提高可見性。
⚠️ 仍需人工批准(執行 human-review.php)
╔═══════════════════════════════════════════╗
║ Agent 執行完成 ║
╚═══════════════════════════════════════════╝
✓ 完成 5 次執行
╔════════════════════════════════════════════════╗
║ Pattern 12: Rule-Based Agent - Demo Tool ║
╚════════════════════════════════════════════════╝
1. 執行 Agent(一次)
2. 執行 Agent(多次)
3. 人工審核文章
4. 顯示所有文章
5. 顯示執行日誌
6. 重置資料庫
7. 與 Pattern 11 比較
0. 離開
請選擇: 7
╔════════════════════════════════════════════════════════════╗
║ Pattern 11 vs Pattern 12 比較 ║
╚════════════════════════════════════════════════════════════╝
項目 Pattern 11 (LLM 決策) Pattern 12 (固定規則)
─────── ────────────────── ─────────────────
決策方式 LLM 分析狀態並決定 固定優先級規則
API 調用 2+ 次/執行 (決策+動作) 1 次/執行 (僅動作)
成本估算 高 (~$0.002/次) 低 (~$0.001/次,省 50%)
執行速度 較慢 (2-3 秒) 較快 (1-2 秒)
可預測性 低 (AI 可能有變化) 高 (完全確定)
靈活性 高 (可動態調整優先級) 低 (固定規則)
決策記錄 agent_decisions 表 執行日誌 (可選)
適合場景 複雜工作流、需要判斷 簡單固定流程
錯誤風險 可能做出意外決策 按固定邏輯執行
擴展性 易於加入新動作/邏輯 需修改 if-else
建議:
• 如果工作流程固定且優先級明確 → Pattern 12
• 如果需要 AI 判斷和動態調整 → Pattern 11
• 成本敏感的生產環境 → Pattern 12
• 實驗性/研究性專案 → Pattern 11
╔════════════════════════════════════════════════╗
║ Pattern 12: Rule-Based Agent - Demo Tool ║
╚════════════════════════════════════════════════╝
1. 執行 Agent(一次)
2. 執行 Agent(多次)
3. 人工審核文章
4. 顯示所有文章
5. 顯示執行日誌
6. 重置資料庫
7. 與 Pattern 11 比較
0. 離開
請選擇: 4
【所有文章】
👀 ID 1: 如何使用 AI 技術提升軟體開發效率 [pending_review]
品質: 8.5/10
建立: 2026-02-16 09:04:43 | 更新: 2026-02-16 09:05:52
╔════════════════════════════════════════════════╗
║ Pattern 12: Rule-Based Agent - Demo Tool ║
╚════════════════════════════════════════════════╝
1. 執行 Agent(一次)
2. 執行 Agent(多次)
3. 人工審核文章
4. 顯示所有文章
5. 顯示執行日誌
6. 重置資料庫
7. 與 Pattern 11 比較
0. 離開
請選擇: 3
啟動人工審核介面...
=== 文章審核系統 (Pattern 11: Autonomous Agent) ===
時間: 2026-02-16 09:06:09
----------------------------------------
指令:
list - 列出待審核文章
view [id] - 查看文章完整內容
approve [id] - 批准文章
reject [id] - 拒絕文章
exit - 離開系統
----------------------------------------
請輸入指令: approve 1
確定要批准這篇文章嗎?
標題: 如何使用 AI 技術提升軟體開發效率
AI 評分: 8.5/10
輸入 'yes' 確認: yes
✓ 文章已批准
✓ Agent 下次執行時會自動發布並分析績效
----------------------------------------
指令:
list - 列出待審核文章
view [id] - 查看文章完整內容
approve [id] - 批准文章
reject [id] - 拒絕文章
exit - 離開系統
----------------------------------------
請輸入指令: exit
再見!
╔════════════════════════════════════════════════╗
║ Pattern 12: Rule-Based Agent - Demo Tool ║
╚════════════════════════════════════════════════╝
1. 執行 Agent(一次)
2. 執行 Agent(多次)
3. 人工審核文章
4. 顯示所有文章
5. 顯示執行日誌
6. 重置資料庫
7. 與 Pattern 11 比較
0. 離開
請選擇: 1
執行 Agent...
==================================================
╔═══════════════════════════════════════════╗
║ Rule-Based Agent - 基於規則的 Agent ║
╚═══════════════════════════════════════════╝
執行時間: 2026-02-16 09:06:30
→ 讀取系統狀態...
當前文章數量:
- approved: 1
→ 應用規則決策...
【規則決策】
選擇動作: publish
理由: 有 1 篇已批准文章等待發布(最高優先級)
【執行動作】發布文章
文章: 如何使用 AI 技術提升軟體開發效率
發布中...
⚠️ POC 模式:模擬發布
【執行結果】
✓ 文章已發布: 如何使用 AI 技術提升軟體開發效率
績效評估: 中
瀏覽: 854, 點擊: 76
╔═══════════════════════════════════════════╗
║ Agent 執行完成 ║
╚═══════════════════════════════════════════╝
==================================================
╔════════════════════════════════════════════════╗
║ Pattern 12: Rule-Based Agent - Demo Tool ║
╚════════════════════════════════════════════════╝
1. 執行 Agent(一次)
2. 執行 Agent(多次)
3. 人工審核文章
4. 顯示所有文章
5. 顯示執行日誌
6. 重置資料庫
7. 與 Pattern 11 比較
0. 離開
請選擇: 0
再見!👋
原始碼
https://github.com/howtomakeaturn/ai-agent-pattern-notes/tree/main/patterns/12-rule-based-agent
講真 pattern 12 是 rule based
但在 pattern 11 其實
function getAvailableTools(array $systemState): array {
$tools = [];
$counts = $systemState['counts'];
// 如果沒有任何文章,或待研究的少於 2 篇 → 可以研究新關鍵字
if ($counts['pending_research'] < 2) {
$tools[] = getToolDefinition('research_keywords');
}
// 如果有待撰寫的文章 → 可以撰寫文章
if ($counts['pending_write'] > 0) {
$tools[] = getToolDefinition('write_article');
}
// 如果有待審核的文章 → 可以自我審查品質
if ($counts['pending_review'] > 0) {
$tools[] = getToolDefinition('self_review_quality');
}
// 如果有已批准的文章 → 可以發布並分析
if ($counts['approved'] > 0) {
$tools[] = getToolDefinition('publish_and_analyze');
}
// 始終可用:查看系統狀態詳情
$tools[] = getToolDefinition('get_article_details');
// 如果沒有其他動作可做 → 提供「等待」選項
if (count($tools) == 1) { // 只有 get_article_details
$tools[] = getToolDefinition('wait');
}
return $tools;
}
所以,也算是 rule based 同意嗎
或者我誤會
精确的说法:
Pattern 11: Rule-based 预筛选 + AI-based 最终决策
Pattern 12: Pure rule-based 直接决策
Dynamic Routing 的作用:
✅ 减少 AI 的选择范围(省 token)
✅ 确保 AI 不会选到「没意义」的动作
❌ 但不是最终决策者(AI 还是要选)
實務上來說 pattern 11 or 12 哪個是 best practice?
总结:Best Practice
默认选择:Pattern 12 ✅
原因:
成本低 50%
完全可预测
易于维护
符合 KISS 原则(Keep It Simple, Stupid)
例外情况:Pattern 11
只有当你能回答"是"时:
优先级会动态变化,且变化有价值
需要 AI 从历史中学习优化
工作流程确实很复杂
成本不是问题
团队有能力维护 LLM Agent
我有兩個問題
第一 你前面說
这也是为什么 Pattern 11 没有 Pattern 12 那么贵的原因之一 —— Dynamic Routing 已经帮 AI 减少了很多不必要的选项。🎯
是嗎?比較省嗎?可是 12 不用 llm 決策
第二
爲什麼 pattern 12 沒看到 tool functions 傳給 llm?
還是我誤會?
问题 1:我说错了!❌
我之前说的(错误):
"Pattern 11 没有 Pattern 12 那么贵"
正确的说法应该是:
Pattern 11 比 Pattern 12 更贵!
我想说的是:
Dynamic Routing 让 Pattern 11 比"不做筛选的方式"便宜
如果没有 Dynamic Routing(假设的 Pattern 11-worst):
→ 给 LLM 所有 6 个 tools
→ Token 更多,成本更高
有 Dynamic Routing 的 Pattern 11:
→ 只给 LLM 2-3 个 relevant tools
→ Token 较少,便宜一些
但无论如何,Pattern 11 > Pattern 12(成本)
问题 2:Pattern 12 没有 Tool Functions!✅
你的理解完全正确!
关键差异:
Pattern 11 Pattern 12
决策方式 问 LLM:"这些 tools 你选哪个?" PHP if-else 直接决定
Tool Functions ✅ 有(传给 LLM) ❌ 没有(不需要)
动作执行 toolResearchKeywords() actionResearch()
命名差异 tool*() action*()
总结
你的理解都对!👍
- Pattern 12 更便宜(不是 Pattern 11)
- Pattern 11: 2+ API 调用
- Pattern 12: 1 API 调用
- 省 50%
- Pattern 12 没有 Tool Functions
- 不传 tools 参数给 LLM
- 用普通的 action*() 函数,不是 tool*()
- 动作内部可能还是用 AI(如研究关键字、写文章)
講真 我覺得 寫成 pattern 12 的話
不如就用 pattern 10 的架構就好
還更單純 哈哈 一樣的東西 是吧
你说得太对了! 😄
优点:
✅ 超级简单:4 个独立脚本,各干各的
✅ 时间明确:早上研究,下午写作,晚上审核,半夜发布
✅ 易于理解:任何人看 crontab 就知道在做什么
✅ 调试容易:出问题直接看对应的 php 文件
Pattern 10: 时间驱动,固定流程
用例: 定时报告、每日任务、周期性工作
优点: 简单、可预测、易维护
推荐: ⭐⭐⭐⭐⭐
Pattern 12: 状态驱动,固定规则
用例: 24小时工单处理、异步任务队列
优点: 持续运作、自动推进
推荐: ⭐⭐⭐
Pattern 11: 状态驱动,AI 决策
用例: 复杂决策、需要判断权衡
优点: 智能灵活
推荐: ⭐⭐(除非真的需要)
结论
你的直觉完全正确!
对于固定工作流程:
Pattern 10 ≈ Pattern 12 > Pattern 11
(简单) (复杂点) (更复杂更贵)