Communitygithub.com

jakirhussainkhan/dev-skills

在建立 AI 代理人、設計多代理人系統、整合 LLM 至應用程式、建構 RAG 管線、處理向量資料庫、實作 MCP 伺服器,或設計代理人通訊與編排模式時,請使用此技能。觸發關鍵字包含:agent、LLM、RAG、embeddings、vector DB、orchestration、tool use、memory、intent clarification、MCP、LangChain、LangGraph、CrewAI、AutoGen、Microsoft Agent Framework。

dev-skills 是什麼?

此技能為 AI 代理人設計與開發提供了一套全面的指引與最佳實務。其核心哲學強調:代理人並非魔法,而是具備輸入、輸出、記憶、工具及決策邏輯的嚴謹系統。內容涵蓋從意圖釐清、責任分工到編排模式的選用,並詳細比較了 LangGraph、LangChain、CrewAI、Microsoft Agent Framework 等主流框架的適用場景。此外,技能深入說明了 RAG 管線設計(包含語意分塊、混合搜尋與向量資料庫選型)、代理人記憶架構與工具使用模式。最後,技能也強調安全性與韌性設計,提供驗證重試迴圈、斷路器模式等實作指引,協助開發者打造穩定可靠的 AI 代理人系統。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/jakirhussainkhan/dev-skills/tree/HEAD/.github/skills/ai-agent-design

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

AI 代理人設計

核心哲學

代理人並非魔法——它們是具備輸入、輸出、記憶、工具和決策邏輯的系統。請以與任何生產級軟體相同的嚴謹態度來設計它們。每個代理人都應有明確的目的、定義的邊界,以及明確的失敗模式。

代理人設計原則

1. 行動前先釐清意圖

代理人必須在使用者意圖不明確時,先詢問釐清問題——然後再執行任何不可逆的操作。使用以下模式:

  • 目標是否明確?如果不明確,則提出一個重點問題。
  • 是否已知限制條件?(範圍、輸出格式、資料來源)
  • 成功的模樣是什麼?

2. 規範先於程式碼

在撰寫代理人邏輯之前,先產出一個規格或任務列表檔案:

  1. 定義代理人的角色與職責
  2. 列出其需要存取的所有工具
  3. 定義輸入/輸出合約
  4. 找出失敗模式與備援行為
  5. 然後再撰寫程式碼

3. 單一職責

每個代理人應專注做好一件事。優先採用一群專業代理人,而非一個通用型代理人。


編排模式

模式使用時機描述
順序 (Sequential)線性管線代理人按固定順序執行(草稿 → 審查 → 發佈)
監督者 (Supervisor)複雜多模組任務主導代理人將任務路由給專業工作者
ReAct自主解決問題結合推理(思考)+ 行動(工具使用)
群組聊天 (Group Chat)協作任務多人通訊,並有人類監督
DAG有狀態工作流程有向無環圖,用於循環、有狀態的編排

框架選擇指南

框架最佳用途狀態
LangGraph複雜的有狀態代理人、循環工作流程、多代理人編排、生產級應用✅ 活躍 — 2025年5月正式發行
LangChain簡單的 RAG 管線、線性工作流程、快速原型✅ 活躍 — 適用於 RAG,不適用於代理人
CrewAI基於角色的多代理人團隊(「經理」、「研究員」、「作家」)✅ 活躍
Microsoft Agent FrameworkAzure 生態系統中的企業代理人 — 取代 AutoGen + Semantic Kernel✅ 活躍 — 2025年10月公開預覽,目標2026年第一季正式發行
AutoGen舊版 — 仍可運作但無新功能⚠️ 維護模式(自2025年10月起)
自訂 (MCP)輕量、可攜、可互通的代理人工具,基於開放標準✅ 活躍

LangChain vs LangGraph — 該使用哪個

LangChain 團隊現已明確建議如下分工:

  • LangGraph → 用於代理人:有狀態、循環、多代理人、長時間執行的任務
  • LangChain → 用於 RAG 和線性管線:簡單的文件問答、逐步轉換

LangGraph 建立在 LangChain 之上——你可以兩者一起使用,先從 LangChain 開始,當需要更多控制時再轉向 LangGraph。


RAG 管線設計

標準 RAG 流程

使用者查詢 → 嵌入查詢 → 向量搜尋 → 取回區塊 → 擴充提示 → LLM → 回應

分塊策略(2026 年最佳實務)

  • 使用語意分塊——依據意義來分割,而非字元數
  • 區塊大小:256–512 個 token 以取得精確度;1024 個 token 用於敘述性內容
  • 務必包含元資料:來源、頁面、章節、時間戳記

混合搜尋(建議採用)

結合密集向量(語意)+ 稀疏向量(關鍵字)以獲得最佳召回率:

最終分數 = α × 密集分數 + (1 - α) × 稀疏分數

向量資料庫選擇

資料庫最佳用途
pgvector現有的 PostgreSQL 技術堆疊、簡單使用案例
Pinecone受管、生產規模、最低維運成本
Weaviate多模態、內建混合搜尋
Milvus高效能、自架、大規模
Chroma本機開發、原型製作

代理人記憶體架構

類型描述實作方式
情境內 (In-context)當前對話視窗聊天歷史陣列
外部短期 (External short-term)工作階段範圍的記憶體Redis / 記憶體內儲存
外部長期 (External long-term)跨工作階段持久化向量資料庫 + 元資料
情節式 (Episodic)摘要化的過去互動摘要化鏈 → 向量儲存

情境衰減警告: 過長的上下文視窗會隨著時間降低代理人品質。每 N 輪執行一次摘要步驟,以維持相關性。


工具使用與函式呼叫

工具定義模式

每個工具都需要:

name: descriptive_tool_name
description: 何時使用此工具及其功能(明確說明)
parameters:
  - name: param_name
    type: string
    description: 此參數預期的內容
    required: true

工具使用最佳實務

  • 工具應盡可能具備冪等性
  • 在傳遞至下一步之前,務必驗證工具輸出
  • 為外部工具呼叫實作逾時與重試機制
  • 記錄所有工具呼叫以供除錯

代理人通訊模式

意圖釐清協定

當代理人收到模糊的請求時:

  1. 找出模糊點——具體來說是什麼不清楚?
  2. 提出一個問題——最重要的那一個,而不是全部
  3. 提出預設值——「除非您告訴我其他方式,否則我將假設 X」
  4. 在不可逆操作前確認——在刪除、發佈或發送之前務必詢問

進度回報

對於長時間執行的任務,代理人應回報:

[步驟 1/4] 正在擷取文件... ✓
[步驟 2/4] 正在分塊與嵌入... ✓
[步驟 3/4] 正在查詢向量儲存...

錯誤通訊

✗ 工具失敗:[工具名稱]
原因:[具體錯誤]
備援:[我改採的替代方案]

MCP(模型上下文協定)

MCP 是將代理人連接到外部工具與資料來源的開放標準。在建立可攜、可互通的代理人工具時使用它。

MCP 伺服器結構

my-mcp-server/
├── server.py (或 index.ts)
├── tools/
│   └── my_tool.py
└── README.md

何時使用 MCP 與直接整合

  • 當工具需要在多個代理人/平台間重複使用時,使用 MCP
  • 對於專案特定、一次性工具實作,使用直接整合

請參閱 mcp-builder 技能以取得詳細的 MCP 伺服器實作指引。


安全性與安全

  • 切勿允許代理人在沒有沙箱的情況下執行任意程式碼
  • 對所有 LLM API 呼叫實作速率限制
  • 在傳遞至工具之前,驗證並清理所有輸入
  • 記錄所有代理人決策以供稽核
  • 實作護欄以防止失控的 token 成本或遞迴迴圈
  • 使用系統提示注入防護——使用明確的分隔符號將使用者輸入與系統指令分開

韌性代理人設計(自我修復)

代理人在生產環境中會失敗。從一開始就設計恢復機制。

驗證與重試迴圈(LoopAgent 模式)

產生輸出 → 驗證輸出 → 若無效:回饋 + 重新產生
最大迭代次數:3  ← 斷路器,防止無限迴圈

規劃–驗證–執行–觀察–重新規劃

規劃:     產生計劃,在行動前檢查可行性
執行:     採取行動
觀察:     是否成功?檢查輸出、執行測試
重新規劃: 若觀察結果顯示失敗 → 調整並重試
停止:     若達到最大重試次數 → 清楚回報失敗,請求協助

代理人備援層級

主要方法失敗 → 嘗試替代方法
替代方法失敗 → 向開發者請求釐清
未取得釐清   → 安全預設動作或優雅停止

呈現前輸出驗證

  • 在呈現產生的程式碼之前,先執行測試/lint
  • 驗證輸出格式是否符合需求
  • 使用獨立的驗證步驟(不同的模型或提示)來檢查產生器的輸出
  • 切勿將未經驗證的輸出呈現為已完成

代理人的斷路器

設定硬性限制以防止失控行為:

  • 每項任務的最大工具呼叫迭代次數(例如 10 次)
  • 每個工作階段的最大 token 花費
  • 每個失敗步驟的最大重試次數(例如 3 次)
  • 每個工具呼叫的逾時時間

請參閱 self-healing-mindset 技能以取得完整的韌性哲學與程式碼範例。

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

相關技能