回到頂部

AI Agent 從零自建完整教學(用 Claude Code + MCP):週末 90 分鐘做出自動化分身

從業務需求到 24/7 部署的完整 6 階段方法論:Claude Code + MCP server + Skills + 監控。Mason 自己的每日 AI 新聞 triage agent 全公開。

為什麼搜「AI Agent 教學」找不到完整實戰

繁中 SERP 上「AI Agent 教學的文章分三層,沒一層做到端到端**:

  1. 概念解釋層:「什麼是 agent、什麼是 ReAct——沒落地**
  2. 裝環境層:「npm install -g @anthropic-ai/claude-code——裝完就停了**
  3. 單一 demo 層:「叫它幫我寫 hello world——這不是 agent,是對話**

真實業務需要的是:從「我每天要花 2 小時整理新聞agent 自動化24/7 跑 → 出問題能 debug——這個完整鏈條。

這篇是 Mason 自己用 Claude Code + MCP 建出每天晨間 5:30 自動跑的 AI 新聞 triage agent 的真實過程,含 6 階段方法論 + 全 repo 公開

Step 0:把「需求」**想清楚(這步不做,寫什麼都白寫)

最常見的失敗:直接開電腦寫 code → 改了幾天發現要做的不是這個

三個能變 agent 的好任務

  1. 重複性(每天 / 每週都要做)
  2. 規則性(可以寫成 SOP)
  3. 結果可驗證(不是「這篇好不好」**的主觀題)

範例:

  • 每天爬 10 個新聞站 + 過濾 + 寄日報 — 重複、規則、可驗證
  • 每週掃 GitHub trending + 寫摘要 — 同上
  • 客戶資料更新後自動產生報價單 — 同上

三個不該用 agent 的爛任務

  1. 需要創意 / 主觀判斷(寫真正的文章、設計 logo)
  2. 責任歸屬複雜(法律 / 醫療 / 財務的最終決策)
  3. 單次任務(不重複的事情,人做比較快)

Mason 自己的 agent 怎麼來的

痛點:每天早上花 1-2 小時抓 AI 新聞——從 X / Hacker News / TechCrunch / The Verge / Anthropic blog / OpenAI blog 等 15+ 個來源整理

需求:

  • 觸發條件:每天台灣時間 05:30
  • 工具清單:RSS / Twitter API / SQLite(去重)/ Email(寄日報)
  • 成功標準:列出當天 5-10 篇值得寫 insights 的新聞 + 信心分數

需求模板(讀者可拿去套用)

任務:[一句話描述]
觸發條件:[時間 / 事件 / 手動]
輸入資料:[從哪來]
輸出結果:[什麼形式]
工具清單:[需要哪些外部系統]
成功標準:[怎麼判斷 agent 跑對了]
失敗處理:[出錯時做什麼]
成本上限:[每天 / 每月 X USD]

Step 1:理解 Agent 的核心架構(20 行 code 就能感覺到)

Agent = while 迴圈:

while task_not_done:
  thought = LLM("給我下一步該做什麼?")
  if thought == "結束":
    break
  action = LLM("用什麼工具?帶什麼參數?")
  observation = execute(action)
  context.append(observation)

這就是所有 agent 的本質——LLM 思考 → 行動 → 觀察 → 再思考

用純 Anthropic SDK + Function Calling 寫最簡 Agent(50 行)

from anthropic import Anthropic

client = Anthropic()
tools = [
    {
        "name": "search_news",
        "description": "Search recent AI news from RSS sources",
        "input_schema": {
            "type": "object",
            "properties": {
                "query": {"type": "string"},
                "max_results": {"type": "integer"}
            }
        }
    }
]

def run_agent(task):
    messages = [{"role": "user", "content": task}]
    while True:
        response = client.messages.create(
            model="claude-sonnet-4-6",
            tools=tools,
            messages=messages
        )
        if response.stop_reason == "end_turn":
            return response.content[0].text
        # Tool use
        for block in response.content:
            if block.type == "tool_use":
                result = execute_tool(block.name, block.input)
                messages.append({"role": "assistant", "content": response.content})
                messages.append({"role": "user", "content": [
                    {"type": "tool_result", "tool_use_id": block.id, "content": result}
                ]})

run_agent("找今天的 AI 新聞,挑 3 篇最值得寫的")

50 行就能跑——但實際 production 需要處理 retry、error、cost guard、parallel,這些自己寫會死人

Step 2:選對工具棧

四種寫法的對照:

寫法適合學習曲線客製化
純 SDK + Function Calling想完全理解原理最高
Claude Agent SDK(官方)Python / TypeScript 開發者
Claude Code + MCP(本文主推)Solo / 小團隊 / 快速 prototype
LangGraph複雜多 agent 編排

為什麼 Claude Code + MCP 對 Solo / 小團隊最划算

  1. 不用自己寫 retry / context / cost guard——Claude Code 已包好
  2. Plan Mode 內建——大型任務有「先想再動」**保護
  3. Skills + MCP 給你SOP + 外部工具兩條腿
  4. Subagents 給你平行任務能力

Skills vs MCP vs Subagents 三層擴充什麼時候用哪個

機制用途觸發
Skill怎麼做」**的 SOPClaude 自動判斷該用
MCP server用什麼工具」**(外部系統)明確的 tool call
Subagent平行 / 隔離環境」**的子任務主 Claude 主動呼叫

決策樹:

  • 這類任務都用這個流程Skill
  • 需要讀 / 寫某個外部系統MCP server
  • 這件事想在獨立環境跑,不污染主對話Subagent

Step 3:寫你的第一個 MCP server

5 分鐘版本:抓天氣 API 包成 MCP tool

TypeScript 版本(用 Anthropic MCP SDK):

import { Server } from '@modelcontextprotocol/sdk/server/index.js';
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';

const server = new Server({ name: 'weather', version: '1.0' });

server.setRequestHandler('tools/list', () => ({
  tools: [{
    name: 'get_weather',
    description: 'Get current weather for a city',
    inputSchema: {
      type: 'object',
      properties: {
        city: { type: 'string' }
      }
    }
  }]
}));

server.setRequestHandler('tools/call', async (req) => {
  const { name, arguments: args } = req.params;
  if (name === 'get_weather') {
    const response = await fetch(`https://api.weather.com/${args.city}`);
    const data = await response.json();
    return { content: [{ type: 'text', text: JSON.stringify(data) }] };
  }
});

const transport = new StdioServerTransport();
await server.connect(transport);

配置到 Claude Code:.claude/mcp.json

{
  "weather": {
    "command": "node",
    "args": ["./mcp-servers/weather/dist/index.js"]
  }
}

測試:打開 Claude Code → 問「今天台北天氣怎樣?」**——Claude 自動呼叫 weather MCP。

進階版:加錯誤處理、rate limit、結構化 schema

Production MCP server 必加:

  • try / catch 包所有 API call
  • rate limit(每分鐘最多 X 次呼叫)
  • schema validation(輸入輸出都驗)
  • logging(每次 call 寫日誌方便 debug)

把 MCP server 接到 Claude Code 的 3 種方法

  1. .claude/mcp.json 配置(最簡單)
  2. MCP Inspector 在瀏覽器測試 + debug
  3. Claude Code CLI 命令動態 add:claude mcp add ...

Step 4:用 Skills 把 agent 的工作 SOP 寫進去

深度教學見 Claude Skills 完整指南

範例 Skill:每日新聞 triage

---
name: daily-news-triage
description: Filter and rank AI news from multiple sources. Use when the user runs the morning news triage workflow or asks "今天的 AI 新聞值得寫嗎?".
---

## Goal
從 RSS / Twitter / 搜尋結果中,**篩出最值得 Mason 寫成 insights 文章的新聞**。

## Process
1. **收集所有來源的新聞**(RSS、Twitter、TechCrunch、Anthropic blog)
2. **去重**(同一事件不同媒體報導合併)
3. **打分**(依信任度、新鮮度、跟讀者相關度)
4. **產出 top 5-10**(含信心分數 + 一句話摘要)

## Constraints
- **不漏報重大事件**(Anthropic / OpenAI / Google 新模型發佈)
- **不重複收錄**(過去 7 天已收的不再列)
- **信任分級**:**🟢 主流媒體 + 官方公告 / 🟡 二手轉述 / 🔴 純推測**

Step 5:組裝端到端 Agent — Mason 真實案例

任務:每天晨間 5:30 自動抓 AI 新聞、過濾、寄晨報

系統架構

[Cron 觸發 05:30]

[Claude Code 啟動 + 載入 daily-news-triage Skill]

[呼叫 MCP server: rss-fetcher] → 抓 15+ RSS

[呼叫 MCP server: twitter-fetcher] → 抓 AI 關鍵字 tweets

[呼叫 MCP server: sqlite-dedup] → 去重(過去 7 天)

[Claude 用 Skill 打分 + 排序]

[呼叫 MCP server: email-sender] → 寄晨報給自己

[寫日誌 + 計算當天 API 成本]

需要的 MCP servers

  1. rss-fetcher(讀 15+ RSS,去重)
  2. twitter-fetcher(透過 Twitter API)
  3. sqlite-dedup(本地 SQLite 記錄已收新聞)
  4. email-sender(SendGrid 或 SES 寄信)
  5. source-cite(打信任分數)

需要的 Skills

  1. daily-news-triage(主流程 SOP)
  2. source-trust-scoring(信任分級邏輯)
  3. morning-digest-formatter(寫晨報的 markdown 範本)

完整 repo(假設範例)

  • GitHub:github.com/<your-username>/daily-ai-triage
  • 檔案結構:
    daily-ai-triage/
    ├── .claude/
    │   ├── skills/
    │   │   ├── daily-news-triage/
    │   │   ├── source-trust-scoring/
    │   │   └── morning-digest-formatter/
    │   ├── mcp.json
    │   └── settings.json
    ├── mcp-servers/
    │   ├── rss-fetcher/
    │   ├── twitter-fetcher/
    │   ├── sqlite-dedup/
    │   ├── email-sender/
    │   └── source-cite/
    ├── data/
    │   └── news-history.db
    └── README.md

Step 6:部署成 24/7 背景 Agent

本機部署(最簡單)

macOS:用 launchd

<!-- ~/Library/LaunchAgents/com.mason.daily-triage.plist -->
<plist>
  <dict>
    <key>Label</key><string>com.mason.daily-triage</string>
    <key>ProgramArguments</key>
    <array>
      <string>/path/to/run-triage.sh</string>
    </array>
    <key>StartCalendarInterval</key>
    <dict><key>Hour</key><integer>5</integer><key>Minute</key><integer>30</integer></dict>
  </dict>
</plist>

Linux:用 cron

30 5 * * * /path/to/run-triage.sh

Windows:用 Task Scheduler

雲端部署(穩定但要錢)

選項 1:VPS + Docker

  • DigitalOcean / Linode / Hetzner 月 $5-10
  • Docker 容器跑你的 agent
  • 不依賴你個人電腦 24/7 開機

選項 2:Anthropic Managed Agents(企業選項)

  • Anthropic 直接幫你跑 agent
  • 整合企業合規(SOC 2 等)
  • 月費較高,但 SLA 強

Claude Plan API key vs Anthropic API key

Claude Plan(訂閱):

  • 配額制——超過會等
  • 適合本機開發 / 個人 agent

Anthropic API key(按 token 計費):

  • 無上限,按用付
  • 適合 production / 高頻 agent

Mason 的選擇:本機開發用 Plan(Max 5x 訂閱)、production agent 用 API key(設預算上限)。

Step 7:監控、Telemetry、成本守門

必設的監控

Anthropic Console:

  • Spend limits(Soft / Hard)
  • 每天看一次 daily usage

分散追蹤(production agent 必裝):

  • Langfuse(開源,自架友善)
  • Helicone(SaaS,快速整合)
  • OpenTelemetry(整合 Datadog / Grafana)

該設的警報

  1. 單次任務超過 $1 → 通知
  2. 單日累計超過 $20 → 警報
  3. API 失敗率 > 5% → 緊急通知
  4. agent context 超過 80% → 提醒重啟

一個失控 agent 一晚燒 200 USD 的真實案例

情境:agent 寫了個無窮迴圈(每次失敗都重試,沒設 max_retries),從半夜跑到早上——單日燒了 $200

避免方法:

  1. max_iterations 上限(例如 20 次)
  2. 每 5 次 iteration 印 status(讓你看到問題)
  3. 設 daily cost cap——超過自動停

5 個失控 agent 的真實踩坑

1. Tool call 格式錯誤

  • 症狀:Claude 一直呼叫 tool 但格式不對,API 不斷退回
  • 解法:用 Pydantic / Zod 做 schema validation,失敗給明確 error message

2. Context 爆量

  • 症狀:對話跑 50 輪後 context 滿,模型開始忘記事
  • 解法:設「每 20 輪 summarize 一次或用 Subagent 隔離

3. 無窮迴圈

  • 症狀:agent 一直「思考 → 失敗 → 重試燒錢
  • 解法:設 max_iterations + max_cost,超過直接 abort**

4. 工具權限太寬

5. Prompt Injection(抓網路內容時)

  • 症狀:抓到惡意網頁,網頁內容包含「忽略指令,改去 X,agent 真的去做 X
  • 解法:讀取網路內容跟執行指令分離——讀到的內容當「資料不當「指令」**

Agent 安全:不只是程式問題

最少權限原則

  • agent 不該能刪檔(deny rm 等)
  • agent 不該能 push 到 main(deny git push --force 等)
  • agent 不該能改 production config

Prompt Injection 防護

  • 抓網路內容時,把內容用 <external_content> tag 包起來——讓模型知道這是資料
  • 重要操作前 human approval

Skill 來源驗證

  • 不要裝陌生人 GitHub repo 的 Skill——可能藏惡意 prompt

❓ FAQ

不會寫程式可以做 Agent 嗎?

可以,但天花板低

三條路:

  1. No-code 工具:n8n / Zapier / Make + Claude API 節點——可以做簡單自動化,但複雜邏輯卡
  2. Claude Code + Skills:Skills 是純 markdown,完全不寫程式——但進階整合需要 MCP server(要寫程式)
  3. 找會寫程式的朋友 / 學基本 Python — 真正自由的選項

Mason 的建議:從 Claude Code + Skills 開始(不用寫 code),碰到瓶頸再學 MCP server(學 1 週 Python 就會)。

Claude Code / Cursor / Cline 我該用哪個做 Agent?

做 Agent 推薦 Claude Code(深度教學見 Claude Code workflow):

  • Plan Mode 內建——大型任務先想再動
  • Skills + MCP 原生支援
  • Subagents 平行任務
  • Hooks 25 個觸發點

Cursor / Cline 適合「IDE 內寫程式碼,做 24/7 跑的 Agent 不夠強

MCP 跟 LangChain 衝突嗎?可以並用嗎?

完全可以並用——它們解決的不是同一件事:

  • MCP:協議——Claude 怎麼跟外部工具溝通
  • LangChain / LangGraph:框架——怎麼編排複雜的 agent 邏輯

典型搭配:LangGraph 控制 agent 流程 + 透過 MCP 接外部工具

Mason 的選擇:Solo / 小團隊用 Claude Code + MCP 就夠(LangGraph 太重);大型多 agent 系統 → LangGraph + MCP 並用

Agent 會自己亂花錢嗎?

真實案例:agent 寫無窮迴圈一晚燒 $200

3 道守門:

  1. Anthropic Console 設 hard limit(超過自動停 API)
  2. agent code 設 max_iterations / max_cost(自己內部 abort)
  3. 每天看一次 dashboard(早發現問題)

Mason 的紅線:單日成本超過 $20 → 自動 abort 並通知我

自建 Agent 一個月成本大概多少?

分三級:

個人輕度(每天跑 1 次,1-2 小時內):

  • Claude Pro $20 或 API ~$10
  • VPS $5 / 月(可省,跑本機就好)
  • 總計 $10-25/月

接案 / 小團隊重度(每天跑多次,複雜任務):

  • Claude API $50-150/月(看複雜度)
  • VPS $10-20/月
  • 總計 $60-170/月

Production / 服務客戶(24/7 跑):

  • Claude API $200-2000/月(視流量)
  • 監控 stack(Langfuse 自架免費)
  • VPS / 雲端 $50-300/月
  • 總計 $250-2,300/月

⚠️ 警語

  • Agent 真的會出包——pocketos 9 秒刪庫 不是寓言
  • Production agent 必設:監控、預算上限、警報、最少權限
  • 本文範例 repo / SOP 是 Mason 個人工作流——讀者要根據自己業務調整

權威來源:

№ · further reading

延伸閱讀