標籤: MCP

  • Needle:把工具調用 Agent 塞進手機

    Needle:把工具調用 Agent 塞進手機

    📌 本文重點

    • Needle 是專門負責工具選擇與參數填充的小型中控模型
    • 能在手機級硬體離線、高吞吐運行,降低雲端大模型成本
    • 最適合當工具路由器 / 前置規劃器,輸出穩定 JSON 給其他系統

    Needle 就是一顆專門幫大模型「只負責選工具、組參數、吐 JSON」的超小中控腦,讓工具調用 Agent 能在手機級硬體離線或低延遲運作。

    原始專案在 GitHub:https://github.com/cactus-compute/needle


    核心功能:專心當「工具路由中樞」的 26M 模型

    1. 26M 參數 + 純 Attention:為工具調用瘦身

    Needle 的設計很直接:

    • 只有約 2600 萬參數(26M),比動輒數十億參數的聊天模型小一到兩個數量級。
    • 結構是 Simple Attention Network:只有 attention + gating,沒有 MLP/FFN 層。
    • 目標任務只有一件事:
    • 讀取指令 + 工具列表描述
    • 選擇要用哪個工具(或多個)
    • 從指令中抽出參數
    • 輸出工具調用 JSON

    💡 關鍵: 只有約 2600 萬參數的 Needle,能在極小成本下專門負責工具路由與參數抽取,是取代通用大模型做 function calling 決策的關鍵。

    這代表你的行動步驟是:

    • 如果你現在是用 GPT / Gemini / Claude 來做工具決策(例如 function calling),可以把「決定用什麼工具」這一步改交給 Needle,減少大模型 token 消耗與延遲。

    2. 專門為工具調用預訓與微調

    Needle 的訓練重點不是聊天對話,而是「工具使用」:

    • 先在 200 億 token 上預訓練語言能力。
    • 再用約 20 億條合成函數調用資料微調,來源是模擬 Gemini style 工具(例如鬧鐘、導航、日曆、筆記等)。

    💡 關鍵: 針對 20 億條函數調用資料微調,讓 Needle 在工具選擇與參數解析上比同尺寸聊天模型穩定得多。

    實際上,它不負責長篇推理,而是非常擅長:

    • 從口語指令中抓出結構化欄位(時間、地點、標題…)。
    • 在多個工具之間做正確匹配。
    • 輸出符合 schema 的 JSON 給你直接丟進 API。

    行動建議:

    • 如果你已經有一組工具 schema(例如 OpenAPI、function calling 定義),可以直接拿來給 Needle,讓它幫你產生調用 payload,再由你自己的程式實際發 API。

    3. 手機級硬體也能跑的高吞吐

    作者實測在「消費級裝置」可達:

    • 6000 tok/s prefill
    • 1200 tok/s decode

    💡 關鍵: 在一般消費級裝置上就能達到 6000 tok/s prefill、1200 tok/s decode,讓 Needle 可以長駐於手機與邊緣設備當本地 Agent 大腦。

    翻成白話:

    • 放在中階手機、平板、開發板(如樹莓派級別 SoC)上,當離線工具路由器是可行的。
    • 可以把 Needle 當作 永遠常駐的本地 Agent 大腦,大模型只在真正需要複雜推理/生成時才被叫起。

    行動建議:

    • 如果你正在做行動 App 或智慧硬體(耳機、車機、家電),可以先用 Laptop 上測試 Needle 的工具選擇邏輯,再評估移植到裝置端做本地推理。

    適合誰用:三種典型場景

    1. 行動裝置上的離線 / 低延遲 Agent

    典型案例:

    • 「早上 7 點幫我叫醒,順便播固定歌單」→ Needle 決定:set_alarm + play_playlist
    • 「開車回家,避開高速公路」→ Needle 決定:navigate,並填好目的地與偏好
    • 「幫我記一條:明天 meeting 要問預算」→ Needle 決定:create_note,抽出時間與內容

    做法:

    • 語音 → 本地 ASR(或雲端 Transcription)
    • 文字指令 + 工具列表 → Needle → 工具 JSON
    • 裝置端程式依 JSON 實際調起鬧鐘、導航、筆記 App

    適合:行動 App 團隊、智慧手錶 / 車機 / AR 眼鏡、想要弱網路或離線也能用的指令助手

    2. 雲端大模型前面加一層「本地工具路由器」

    你可能遇過這種成本問題:

    • 每個使用者點一個按鈕,就丟完整上下文給 GPT 讓它幫你:
    • 看要不要查資料庫
    • 看要不要 call search API
    • 看要不要調 CRM
    • 結果大部分情況都只是在查一個欄位,卻要跑一整輪大模型推理。

    用 Needle 可以:

    • 由 Needle 先判斷:這次是否需要工具?用哪個?
    • 只有當需要長推理 / 文本生成時,才叫雲端 LLM

    這樣能直接對應到多代理系統常被提到的「orchestration tax」問題:減少不必要的 LLM orchestration 回合數。

    適合:SaaS 後端、API 產品、任何大量使用 function calling 的服務,希望降成本 + 降延遲

    3. MCP / Function Calling 之前的一層「前置規劃器」

    如果你已經在用:

    • OpenAI / Gemini / ClaudeTool Use / Function Calling
    • 或是某種 MCP(Multi-Channel Prompting 或 Model Context Protocol)架構

    Needle 可以扮演:

    • 用戶輸入 → Needle 選擇:
    • 要走哪一條 MCP channel
    • 要用哪個 Function / Tool
    • 再把整理好的工具調用意圖,交給聊天模型做:
    • 實際回應文案
    • 或進一步分解子任務

    差別在於:

    • 一般微型聊天模型:
    • 會嘗試「理解+回答+決定工具」,但在複雜工具 schema 上容易出錯或 hallucinate。
    • Needle:
    • 不負責聊天,只專注在「選工具+填參數+吐 JSON」。

    適合:已經有多工具、多 Agent 架構的團隊,需要一個可控、可本地跑的規劃器 / 路由器


    Needle vs 一般微型聊天模型

    名稱 核心功能 免費方案 適合誰
    Needle 工具選擇+參數抽取+輸出 JSON 完全開源,自架 行動 App、硬體端、本地 Agent
    微型聊天模型 閒聊、簡單問答 多數可免費測試 想要基本對話、不重工具調用的人

    關鍵差異:

    • Needle 的輸出預期是結構化工具調用,不是自然語言回答。
    • 在工具 schema 清楚的情況下,Needle 通常比同尺寸聊天模型更穩定地填參數、遵守格式。

    行動建議:

    • 若你只需要「會聊天」:選一般微型聊天模型。
    • 若你需要「穩定地依 schema 呼叫工具」:可以試 Needle 當前置規劃器,再用大模型生成回覆文案。

    怎麼開始:從 clone Repo 到跑出第一個工具調用

    1. 抓下專案與模型

    # 1. clone repo
    git clone https://github.com/cactus-compute/needle.git
    cd needle
    
    # 2. 建議先建立虛擬環境
    python -m venv .venv
    source .venv/bin/activate  # Windows 用 .venv\Scripts\activate
    
    # 3. 安裝依賴
    pip install -r requirements.txt
    

    模型本體會在首次推理時自動下載(或依 README 指示手動下載權重)。

    2. 用現成推理腳本跑官方 demo

    Repo 裡提供了簡單的推理範例(實際檔名可能隨版本變動,可在 examples/ 或 README 中找到):

    python examples/simple_tool_calling.py
    

    通常你需要提供:

    • 工具 schema(JSON / Python dict)
    • 使用者指令文字

    腳本會回傳一段包含工具名稱與參數的 JSON,確認能跑通是第一步。

    行動建議:

    • 先照官方 demo 跑一遍,不改任何 schema,只看 Needle 如何選工具。

    3. 定義自己的工具 schema

    假設你要做一個簡單的鬧鐘 + 記事 Agent,可以這樣定義工具(示意):

    tools = [
      {
        "name": "set_alarm",
        "description": "設定鬧鐘時間(24 小時制)",
        "parameters": {
          "type": "object",
          "properties": {
            "time": {"type": "string", "description": "例如 07:30"},
            "label": {"type": "string", "description": "鬧鐘備註"}
          },
          "required": ["time"]
        }
      },
      {
        "name": "create_note",
        "description": "建立一則文字筆記",
        "parameters": {
          "type": "object",
          "properties": {
            "title": {"type": "string"},
            "content": {"type": "string"}
          },
          "required": ["content"]
        }
      }
    ]
    

    接著丟給 Needle:

    from needle import NeedleModel
    
    model = NeedleModel.from_pretrained("cactus/needle-base")
    
    user_query = "明天早上七點叫我起床,順便幫我記:早會要問預算"
    
    result = model.route_tools(query=user_query, tools=tools)
    print(result)
    

    預期會拿到類似:

    [
      {
        "tool": "set_alarm",
        "arguments": {"time": "07:00", "label": "早會"}
      },
      {
        "tool": "create_note",
        "arguments": {"title": "早會", "content": "早會要問預算"}
      }
    ]
    

    接下來只要用你熟悉的語言(Swift / Kotlin / Node / Python),依這個 JSON 實際呼叫 OS API 或雲端 API 即可。

    4. 把 Needle 接在現有 LLM 後面,做一條簡單 workflow

    以下是一條最小可行的 workflow(伪碼):

    1. 語音 → 文字
    2. 行動裝置用本地或雲端 ASR:
    3. speech.wav -> transcript = "幫我找台北明天不下雨的戶外咖啡廳"

    4. Needle 選工具

    5. 工具例:search_weather, search_places 兩個 API。
    6. needle.route_tools(transcript, tools) → 回傳要先查天氣再查地點的參數 JSON。

    7. 實際 API 呼叫

    8. 你的後端或 App 依 Needle 給的 JSON,分別呼叫天氣 API、地點 API,整理出可用候選。

    9. 大模型生成回覆(可選)

    10. 把 API 結果 + 原始指令送給 GPT / Gemini / Claude,只讓它負責自然語言回覆:「幫你找到三間明天不預測下雨的咖啡廳…」。

    這種分工方式:

    • Needle:做工具決策+參數解析
    • LLM:只在真正需要「說人話」的最後一步出現

    能同時達到:成本可控、延遲更低、邊緣裝置也能預先處理大量決策。


    適合誰現在就試用 Needle?

    • 行動 App 開發者:想做語音指令、快捷操作、離線助手,又不想每次都打雲端 LLM。
    • 硬體產品團隊:智慧手錶、車機、家電、AR 眼鏡,需要一顆小而穩定的本地「工具路由中樞」。
    • 個人自架 Agent 系統玩家:已經有多工具、多 Agent,正在煩惱 orchestration 成本和延遲的人。

    只要你場景的核心在「選工具+填參數」,而不是長篇聊天,Needle 值得你花一個下午跑起 demo,直接把它塞到你的 workflow 裡測一次。更多細節與最新腳本可以在 GitHub 查看:https://github.com/cactus-compute/needle

    🚀 你現在可以做的事

    • 先 clone Needle 專案並跑一次官方 demo:git clone https://github.com/cactus-compute/needle.git
    • 把你現有的 function calling / OpenAPI schema 丟給 Needle,觀察它產生的工具 JSON
    • 在一個實際專案裡,嘗試用 Needle 接在 ASR 和雲端 LLM 之間,實測延遲與成本差異
  • Claude 永續 Agent Warm-Cache 實戰

    Claude 永續 Agent Warm-Cache 實戰

    📌 本文重點

    • 全上下文重送會讓長期 Agent 在成本與延遲上崩盤
    • 用 Warm-Cache 三層快取可把成本壓到約 1/8
    • 短期 context + 向量庫分層記憶可兼顧長期記憶與成本
    • 嚴格工具邊界與審計是讓 Claude Agent 能上線的關鍵

    在 Discord 上跑一個長期管理 AWS 基礎設施與程式碼的 Claude Agent,如果每次請求都把 全上下文重送,你很快就會發現兩個殘酷事實:token 費用爆炸延遲高到用不下去。實測數據來看,透過 Warm-Cache + 分層記憶架構,可以把成本壓到原本的 1/8 左右,P95 latency 也從 10+ 秒壓到 3 秒內,而且邏輯與安全性更可控。

    💡 關鍵: 透過結構化快取與記憶分層設計,可以同時把成本壓到約 1/8,並把 P95 延遲從 10 秒級降到 3 秒內,讓長期 Agent 實際可用。


    重點說明

    1. 為什麼「全上下文重送」會崩盤?

    典型實作:

    • 每個 Discord 訊息 → 直接呼叫 /v1/messages
    • 完整對話歷史 + 工具定義 + 系統提示 一起丟進去

    問題:

    1. token 費用幾乎線性成長:對話越長,每次重送的 tokens 越多,長期 Agent 變成「每句話都在重付歷史學費」。
    2. 延遲被序列化成本綁死:100K context 每次 encode / decode 都是固定開銷,沒做 cache 再快的模型也救不了。
    3. 易爆 context:聊久一點就逼近上限,被系統自動截斷,Agent 出現「金魚記憶」。

    結論:永續 Agent 若不做 Prompt Caching,本質上不具備經濟可行性。

    💡 關鍵: 對長期 Agent 而言,不做 Prompt Caching 意味著 token 成本和延遲會隨時間線性惡化,最終失去經濟可行性。


    2. Warm-Cache 三層設計:工具、系統提示、歷史

    核心想法:把「幾乎不變」的部分從請求中抽出來,讓 Claude 的 Prompt Caching 真正生效,同時在你自己的系統再加一層 cache。

    三層結構:

    1. 工具定義層(Tools Cache)
    2. 例如 AWS 管理、Git 操作、MemPalace 查詢等工具定義
    3. 穩定的 ID + 版本號 來標記(例如 aws_tools:v3
    4. 實作:

      • 本地用 JSON 檔TypeScript enum 管理
      • 對 Claude 端利用 prompt_cache_key(概念上,可用 system prompt 方式固定)
    5. 系統提示層(System Prompt Cache)

    6. 定義 Agent 的角色、邊界、倫理規則(例如只能操作 Private VPC 而非公網)
    7. 變動頻率低,但會跟版本、環境(staging/prod)綁定
    8. 推薦:用 template + 版本號,例如 discord_infra_agent:v5

    9. 歷史記錄層(Conversation Cache)

    10. 只快取「近期對話 + 工具呼叫結果」的短期記憶
    11. 長期記憶丟給向量庫(MemPalace / 自建 Milvus / PGvector),避免塞爆 context
    12. 每個 channel / user 維護一個 sliding window,例如最近 30 則訊息

    典型資料結構(TypeScript):

    type CacheKey = string; // e.g. "tools:aws:v3", "sys:discord_agent:v5"
    
    interface WarmCacheEntry {
      version: string;
      contentHash: string;
      serialized: string;   // 已處理過、可直接拼進 messages 的 JSON 字串
      updatedAt: number;
    }
    
    class WarmCache {
      private store = new Map<CacheKey, WarmCacheEntry>();
    
      get(key: CacheKey): WarmCacheEntry | undefined {
        return this.store.get(key);
      }
    
      set(key: CacheKey, entry: WarmCacheEntry) {
        this.store.set(key, entry);
      }
    }
    

    版本管理與失效策略:

    • 工具或系統提示改版 → 直接 變更 version(v3v4,讓舊 cache 自然失效
    • 每次啟動時計算一遍 contentHash,若 hash 改變但 version 沒變,log 出警告避免「隱性分叉」

    3. 長期記憶:MemPalace + 短期上下文的分層設計

    要讓 Agent 在 Discord 長期「記得」你的 AWS 結構、服務慣例,又不把所有東西塞進 context,做法是:

    1. 短期記憶(Context Window)
    2. Warm-Cache 上的歷史層,只保留最近 N 回合(例如 30)
    3. 專門服務「連續對話」與「工具呼叫之前的局部上下文」

    4. 長期記憶(向量庫 / MemPalace)

    5. 把:
      • 專案 README
      • 關鍵 AWS 架構說明
      • 常見 Runbook / SOP
    6. 全部 embed 成向量,存進 MemPalace / 其他向量庫

    7. 查詢流程:

    8. 使用者問問題 →

    9. 先以「channel + user + 問題」做 embedding,去 MemPalace 找 Top-K 相關記憶片段
    10. 把這些片段壓縮後,丟進當次 system 或 user message 的前置 context

    簡單 Python 記憶層(SQLite + 向量庫 ID)示意:

    import sqlite3
    
    conn = sqlite3.connect("memory.db")
    cur = conn.cursor()
    
    cur.execute("""
    CREATE TABLE IF NOT EXISTS long_term_memory (
      id INTEGER PRIMARY KEY,
      user_id TEXT,
      channel_id TEXT,
      vector_id TEXT,   -- 真正的向量存在 MemPalace / pgvector
      summary TEXT,
      created_at INTEGER
    );
    """)
    
    # 檢索時:先從 MemPalace 拿相關 vector_id,再 join 回 summary
    

    好處:

    • context 永遠保持在一個可以預估的上限
    • 記憶可審計、可搜索,而不是全埋在 opaque 的 token 流裡

    實作範例

    1. Node.js:Claude Warm-Cache middleware

    以下是假想的 middleware,包裝 /v1/messages 呼叫,示意如何組合三層快取與向量記憶:

    import { claudeClient } from "./claude";
    import { WarmCache } from "./warmCache";
    import { fetchMemories } from "./memPalace";
    
    const cache = new WarmCache();
    
    export async function handleDiscordMessage(ctx: {
      channelId: string;
      userId: string;
      message: string;
      history: any[]; // 最近 N 則對話
    }) {
      const toolsKey = "tools:aws:v3";
      const sysKey = "sys:discord_infra_agent:v5";
    
      const tools = cache.get(toolsKey) ?? buildAndCacheTools(toolsKey);
      const systemPrompt = cache.get(sysKey) ?? buildAndCacheSystem(sysKey);
    
      const longTerm = await fetchMemories(ctx.userId, ctx.channelId, ctx.message);
    
      const messages = [
        { role: "system", content: systemPrompt.serialized },
        { role: "user", content: buildUserContent(ctx.message, longTerm) },
        ...ctx.history
      ];
    
      const res = await claudeClient.messages.create({
        model: "claude-3.7-sonnet",
        max_tokens: 1024,
        tools: JSON.parse(tools.serialized),
        messages
      });
    
      return res;
    }
    

    關鍵點:

    • toolssystemPrompt 都是快取後的 序列化結果,避免每請求重組
    • history 控制在固定長度,長期記憶透過 fetchMemories 注入

    2. Claude 系統 Prompt 模板(安全與邊界)

    你是一個在 Discord 裡專門協助管理 AWS 基礎設施與程式碼庫的 Agent。
    
    嚴格規則:
    - 只能透過提供的工具存取資源,禁止自行連線外部網路。
    - 所有操作必須限制在指定的 AWS Account 與 VPC,禁止新增具有公開網路權限的資源。
    - 若使用者要求執行具破壞性的操作(刪庫、清 bucket、關閉整個叢集),必須:
      1. 先以自然語言解釋風險與影響。
      2. 要求使用者提供明確確認字串(例如 "CONFIRM_DELETE_PROD")。
      3. 仍應優先建議更安全的替代方案。
    
    審計要求:
    - 對每一次工具呼叫,以簡潔 JSON 描述操作意圖與參數,方便後續寫入 audit log。
    

    3. Redis-based 歷史快取(短期記憶)

    import redis
    import json
    
    r = redis.Redis(host="localhost", port=6379, db=0)
    
    HISTORY_LIMIT = 30
    
    def push_history(channel_id: str, message: dict):
      key = f"history:{channel_id}"
      r.lpush(key, json.dumps(message))
      r.ltrim(key, 0, HISTORY_LIMIT - 1)
    
    def get_history(channel_id: str):
      key = f"history:{channel_id}"
      return [json.loads(x) for x in r.lrange(key, 0, -1)][::-1]
    

    建議與注意事項

    1. 監控:請求數、token、P95 latency 要一起看

    至少打三個 metrics:

    • token_usage_total:區分 prompt / completion / cache-hit
    • request_latency_ms:P50 / P95 / P99,分 model / route
    • tool_invocation_count:看 Agent 是否頻繁誤用工具

    優化策略:

    • 發現 P95 延遲高但 token 不高 → 多半是工具 / 外部 API 慢
    • 發現 token 緩慢上升 → 歷史快取 window 太大、向量記憶注入過多

    2. MCP / 工具設計:少而精 + 嚴格邊界

    • 像 PullMD 那樣,利用 MCP 把「HTML 轉 Markdown」這種重複工作下沉到工具層,避免讓 LLM 直接吃原始 HTML,token 省很大。
    • 工具要:
    • 明確輸入輸出 schema
    • 在私有網路中運行(Docker / Kubernetes namespace)
    • 只開最小必要權限(IAM 最小權限 + security group 限制)

    3. 避免「刪庫跑路」:幾個實務守則

    1. 只給「建議權」不給「直接執行權」 在 production
    2. 例如:Agent 只能產生 Terraform / CloudFormation patch,由人類 review + apply。
    3. 所有破壞性操作都經過雙重 gate:
    4. system prompt 要求二次確認
    5. backend 還要檢查「環境 + 操作類型」,prod 一律走人工流程
    6. 完整審計 log:
    7. 記錄:使用者指令、模型輸出、工具參數、執行結果
    8. 存在 append-only storage(CloudWatch Logs / Loki / S3 + Object Lock)

    4. 部署拓撲:限制在私有網路

    • Discord Bot → Gateway → Agent 後端(VPC 內)→ MCP 工具(同 VPC)
    • 往外只有到 Claude API + 向量庫(若是 SaaS) 的 egress
    • 不讓 Agent 直接 hit 公網,避免「自己 curl 一個 random script 來跑」這類事故

    總結:

    • Warm-Cache 三層快取(工具、系統、歷史)+ 分層記憶(短期 context + MemPalace 長期記憶),可以在實戰中穩定做到 成本 ≈ 1/8、P95 latency < 3s
    • 關鍵不是「多堆一點 GPU」,而是把「一次性 prompt」變成「可重用的結構」,再加上嚴格邊界與審計,讓你的 Claude 永續 Agent 真正能上 production。

    把上面的 middleware + Redis + SQLite/向量庫實作搬進你的客服 bot、infra bot 或內部 Copilot,大部分情況下只需要換掉工具與系統 prompt,就能直接開始省錢又提速。

    🚀 你現在可以做的事

    • 在現有 Discord / Slack Bot 中,先實作一層 Warm-Cache,把工具定義與系統提示抽出並版本化
    • 建一個最小可行的向量庫(MemPalace 或 pgvector),將 README、架構文件與 Runbook 全部 embed 進去
    • 為 production 環境補上系統 prompt 邊界、工具權限縮減與審計 log pipeline,驗證一條完整安全鏈路
  • TrendRadar:一句話問清今天網路在吵什麼

    TrendRadar:一句話問清今天網路在吵什麼

    📌 本文重點

    • TrendRadar 幫你每天自動整理「值得在意的事」
    • 透過多平台聚合 + AI 翻譯與情感分析過濾雜訊
    • 可與 ChatGPT/Claude 分工整合,從監控到決策一條龍
    • 開源專案,支援 Docker 快速自架部署

    每天打開社群、新聞、論壇一堆訊息轟炸,TrendRadar 的用途只有一個:幫你先把「今天值得在意的事」整理好,讓你用一句話就能問清楚今天網路在吵什麼。

    專案連結:https://github.com/sansan0/TrendRadar


    核心功能:把資訊過濾、翻譯、分析到位


    1. 多平台聚合:RSS + 關鍵字一次收攏

    TrendRadar 的第一步,就是幫你「收集」:

    • 支援 RSS 訂閱:新聞網站、部落格、論壇,只要有 RSS 都能加
    • 支援多平台來源:可以接常見內容源(Twitter/X、Telegram 頻道、各類資訊流等,具體依你配置的 RSS 和接口而定)
    • 關鍵字篩選:只保留跟你在意的議題相關的內容

    你可以這樣實際操作:

    1. 列出你真的在乎的 3–5 個主題:
    2. 例:品牌名稱、競品名稱、關鍵技術(LLM、RAG)、產業關鍵詞(電商、SaaS、生成式 AI)
    3. 找到對應的 RSS 或資訊源:
    4. 媒體:TechCrunch、36kr、Inside、數位時代等
    5. 技術:Hacker News、Product Hunt、GitHub Trending
    6. 在 TrendRadar 的設定檔中,把 RSS URL 和關鍵字寫進去(下文有具體步驟)。

    💡 關鍵: 先選好 3–5 個核心主題,再讓系統自動過濾,能最大幅度減少你每天要處理的雜訊量。

    效果:每天系統自動幫你從海量資訊中,先過一輪「話題相關性」的篩選,你只看自己訂的幾條線。


    2. AI 翻譯 + 情感分析:跨語言、看氣氛

    TrendRadar 不是只推原文連結,而是會先用內建的 AI 分析:

    • 自動翻譯:把英文、日文等新聞翻成中文摘要
    • 情感分析:判斷內容情緒(正面 / 負面 / 中性)
    • 概要整理:用幾句話抓出重點

    具體可以怎麼用:

    • 品牌輿情:
    • 快速看今天關於你品牌的討論是偏正面還是負面
    • 先看 AI 摘要,再決定要不要點進原文細讀
    • 技術動態:
    • GitHub Trending 上出現的新專案,先用中文看懂做什麼
    • 挑出「跟你技術棧有關」且熱度在上升的專案

    實際行動:

    1. 在 TrendRadar 設定好要做情感分析的關鍵字(例如你的品牌名、產品名)。
    2. 啟用 AI 翻譯與摘要(專案中已預設支持,依 README 配好 API Key 或本地模型)。
    3. 每天在通訊工具裡看一眼「今日摘要」,不用再一篇篇翻。

    3. 多通訊工具推送 + MCP:變成你自己的「輿情機器人」

    TrendRadar 支援把整理過的結果,推送到你已經在用的工具:

    • 微信
    • 飛書
    • 釘釋
    • Telegram
    • Slack
    • Email / ntfy / Bark 等

    你可以把它當成一個「只會講重點的資訊機器人」,每天固定時間或有關鍵事件時推播給你。

    更關鍵的是:TrendRadar 支援 MCP(Model Context Protocol),可以讓它和你現有的 AI 助手(例如 ChatGPTClaude)整合:

    • TrendRadar 負責:收集、過濾、打標(情感、主題)
    • ChatGPT/Claude 負責:深度分析、寫彙整報告、產生回應草稿

    實際可做的 workflow:

    1. TrendRadar 把今天跟品牌相關的負面事件整理成一份 JSON / 簡報式摘要。
    2. 在支援 MCP 的 AI 助手中,呼叫 TrendRadar 工具:「請分析今天的負面輿情,幫我寫一份回應策略與 Q&A 草稿」。
    3. 得到可以直接丟給 PR 團隊修改的版本。

    💡 關鍵: 讓 TrendRadar 負責「聽與記錄」,AI 助手負責「想與表達」,能把你每天需要親自處理的工作壓到最低。


    適合誰用?三個具體場景


    1. 品牌輿情追蹤:先知道「今天有沒有燒起來」

    角色:行銷、公關、品牌經理。

    設定方式:

    • 關鍵字:品牌名、CEO 名字、產品名、常見錯別字
    • 來源:
    • 新聞 RSS(產業媒體 + 大眾媒體)
    • 論壇 / 社群聚合 RSS(若有)
    • 推送頻率:
    • 每天早上 9 點彙總
    • 一有高負面情感的內容就即時推送

    日常用法:

    • 在 Slack/微信 建一個 #brand-alert 群組,只放 TrendRadar。
    • 每天固定看一眼,看今天有沒有需要回應的聲音。
    • 把其中幾則交給 ChatGPT:
    • 「請用溫和但不卑不亢的語氣,回覆這篇負面評論,給出三種版本。」

    2. 競品 / 技術趨勢監控:避開資訊焦慮,只看真正相關的

    角色:產品經理、技術主管、創業者。

    設定方式:

    • 關鍵字:
    • 競品名稱 + 公司名
    • 技術關鍵字(如 RAGvector DBserverless LLM
    • 來源:
    • GitHub Trending(配合關鍵字過濾)
    • Product Hunt / Hacker News
    • 主要技術媒體 RSS

    日常用法:

    • 每天收到一份「競品 / 新技術」摘要:
    • 新發佈的功能 / 產品
    • 高熱度技術文章 / 專案
    • 再把摘要丟給 Claude:
    • 「整理成 5 點,說明這些變化對我們產品路線的影響,按緊急程度排序。」

    3. 內容創作者:每日素材雷達

    角色:寫 newsletter、拍 YouTube、寫部落格或社群的人。

    設定方式:

    • 關鍵字:
    • 你頻道聚焦的主題(AI 工具、遠端工作、投資、行銷等)
    • 來源:
    • 國外媒體 RSS
    • Twitter/X 清單轉 RSS(或間接服務)
    • 技術 / 產業部落格

    日常用法:

    • 每天早上收一份「今日 10 則值得寫的素材」,每則附:
    • 中文重點摘要
    • 推估情緒(這件事觀眾會興奮、焦慮、好奇?)
    • 把其中 1–2 則交給 ChatGPT:
    • 「幫我把這則趨勢寫成 5 條適合 IG / 小紅書的貼文金句。」

    TrendRadar + ChatGPT/Claude:兩工具分工實戰

    名稱 核心功能 免費方案 適合誰
    TrendRadar 多平台聚合、輿情監控、AI 摘要 開源,自架即免費 要持續監控品牌、競品、技術的人
    ChatGPT / Claude 深度分析、寫作、策略思考 有免費/試用方案 要把資訊變成企劃、回應、內容的人

    建議分工:

    • TrendRadar:
    • 24 小時自動收集與過濾
    • 做第一層翻譯、情感分析、摘要
    • ChatGPT/Claude:
    • 根據 TrendRadar 產出的內容,做二次加工
    • 產生 PR 草稿、簡報大綱、內容腳本

    操作示例:

    1. 在 Slack 接收 TrendRadar 的每日報告。
    2. 把報告內容複製到 ChatGPT:
    3. 指令範例:「請依照這份 TrendRadar 摘要,幫我生成一頁簡報的大綱,分成『今天發生什麼』『為何重要』『我們該怎麼做』。」

    怎麼開始:用 Docker 快速拉起 TrendRadar

    TrendRadar 是開源專案,支援 Docker 部署,你可以在本機或雲端(例如自家伺服器、雲主機)跑起來。


    1. 基本前置:準備環境

    必備條件:

    • 已安裝 Docker(和 docker-compose,如果專案使用)
    • 一台可以長時間運作的機器(本機、NAS 或雲主機都可)

    實際行動:

    • 安裝 Docker:
    • macOS / Windows:安裝 Docker Desktop
    • Linux:依發行版安裝(Ubuntu 可用 apt install docker.io 等)

    2. 拉取專案並啟動服務

    以下為通用步驟,具體以官方 README 為準(https://github.com/sansan0/TrendRadar):

    # 1. 取得程式碼
    git clone https://github.com/sansan0/TrendRadar.git
    cd TrendRadar
    
    # 2. 建立環境設定(通常會有 .env.example 或 config 檔)
    cp .env.example .env
    # 編輯 .env,填入必要的 API Key(如翻譯 / LLM 模型)
    
    # 3. 使用 Docker 啟動
    docker compose up -d
    

    啟動後,可以依 README 提供的網址(通常是 http://localhost:xxxx)打開管理介面或 API。

    💡 關鍵: 利用 Docker 一次配置好環境,之後只需重啟服務即可持續運作與更新。


    3. 設定第一組關鍵字與訂閱來源

    實際配置方式會依專案版本稍有差異,大致流程如下:

    1. 打開 TrendRadar 設定頁或編輯配置檔(例如 config.yaml):
    2. 新增一個「監控主題」(如 brand_watchai_trend)。
    3. 在主題下設定:
      • keywords: 你要追的關鍵字列表
      • sources: RSS 或其他來源 URL 列表
    4. 設定推送渠道:
    5. 在設定檔中填入 Slack Webhook URL、Telegram bot token 或微信/飛書機器人配置。
    6. 指定這個主題要推送到哪個渠道、頻率(例如每 6 小時一次)。
    7. 重新啟動或重新載入配置:
    docker compose restart
    

    檢查:等 10–30 分鐘,看通訊工具裡是否開始收到 TrendRadar 的摘要訊息。


    用一句話開始:把 TrendRadar 當成你的「每日第一問」

    當 TrendRadar 跑起來之後,你可以把每天的第一件事,改成問 AI:

    「根據 TrendRadar 的資料,今天跟我品牌 / 產業最有關的三件事是什麼?幫我說給非技術同事聽。」

    TrendRadar 負責幫你把訊息世界「縮小成可理解的摘要」,再交給 ChatGPT 或 Claude 做深度分析,你只要把最後的洞察做決策、做內容,就能在資訊過載的世界裡,保留大腦給真正重要的事情。


    🚀 你現在可以做的事

    • 開啟 TrendRadar 專案頁:https://github.com/sansan0/TrendRadar,照 README 在本機用 Docker 跑起來
    • 列出你最在意的 3–5 個主題,設定第一組 keywords 和 RSS sources 做實驗
    • 在常用通訊工具(Slack、微信等)建立一個專用頻道,把 TrendRadar 摘要接進來,明天早上開始用它看「今天在吵什麼」
  • IFTTT MCP:讓 Claude 幫你跑腿自動化

    IFTTT MCP:讓 Claude 幫你跑腿自動化

    📌 本文重點

    • IFTTT MCP 讓 Claude 真正「動手」操作 1000+ App
    • 用自然語言就能設定 Trigger、任務與權限
    • 先從 Gmail → Claude 摘要 → Notion 的簡單流程開始

    一句話定位:IFTTT MCP 就是「IFTTT 版 AI Agent」——讓 Claude 幫你在 1000+ 服務間跑腿,自動處理信件、文件、任務與通知。

    入口:IFTTT 產品頁(含 MCP 介紹)
    https://www.producthunt.com/products/ifttt


    核心功能:把 Claude 變成「會點 App 的助理」

    1. 基於 MCP,讓 LLM 真的「動手做事」

    一般聊天機器人只會給你文字建議;IFTTT MCP + Claude 的組合,是讓 Claude 透過 Model Context Protocol(MCP),直接去操作 IFTTT 已整合的 1000+ 服務:

    • Gmail、Outlook
    • Slack、Teams
    • Notion、Google Docs、Trello
    • Twitter/X、Facebook Page、Instagram(透過對應 App)

    可行動的具體效果:

    • 不是「教你怎麼回信」,而是幫你先讀信、標註、分類
    • 不是「建議你整理會議重點」,而是幫你寫好摘要塞進 Notion 或 Google Docs
    • 不是「提醒你看 Slack」,而是把 Slack 重點整理成一封 Email 寄給你

    你要做的行動:

    • 腦中先列出「我每天重複做、又不需要太多判斷力」的任務,例如:
    • 看客服信件、貼 Label
    • 把 Slack 重要訊息集中在一個地方
    • 把社群留言變成待辦
    • 接下來就用 IFTTT MCP,把這些交給 Claude + IFTTT 處理。

    2. 使用者在 IFTTT MCP 介面上能做什麼?

    你不用寫程式,但要會設定三件事:觸發條件、自然語言任務描述、權限

    (1)設定觸發條件(Trigger)

    在 IFTTT 介面裡,你可以用類似「IF This Then That」的方式決定:

    • 什麼時候 Claude 要被叫出來:
    • 新的 Gmail 收到、且主旨含「客服」
    • 某個 Slack 頻道有新訊息
    • Notion 資料庫新增一行
    • 每天早上 9 點定時

    行動建議:

    • 先挑 一個入口 App 當 Trigger,例如 Gmail 或 Slack,先做一條最簡單的自動化。

    (2)用自然語言描述要 Claude 做什麼

    接著你會看到類似「讓 Claude 做這件事」的欄位,你只需要用人話寫清楚:

    • 要它讀什麼:例如「請閱讀這封新來的 Gmail 內容」
    • 要它產生什麼:例如「生成 3 行內的中文摘要,附上 3 個關鍵標籤」
    • 要它輸出的格式:例如「用 JSON 回傳:{summary: ..., tags: [...]}」或「輸出純文字段落」

    行動建議:

    • 第一次先寫非常具體的指令,例如:

      請閱讀這封信件內容,判斷是否為客服詢問。若是,寫出:1 段 100 字內摘要 + 3 個標籤(如:退款、帳號問題、技術問題)。只用繁體中文回答。

    (3)權限管理:決定 Claude 能碰到什麼

    IFTTT MCP 會要求你授權:

    • 哪些 App 可以被用在這個 workflow
    • 可以讀哪些資料(例如哪一個 Gmail 帳號、哪個 Notion 資料庫)

    行動建議:

    • 第一次只授權「測試用」資料:
    • 新開一個 Gmail Label 只放測試信
    • 新建一個 Notion 資料庫專門給自動化寫入
    • 確認流程正常後,再慢慢擴大範圍。

    3. 典型自動化範例(辦公族版)

    以下三個工作場景,你可以幾乎照抄設定:

    範例一:客服信件由 Claude 先讀、標註、整理到 Notion

    流程:

    1. Trigger:Gmail 收到新信,且寄到 support@你的網域
    2. Claude 任務:
    3. 讀信內容
    4. 判斷是詢問、抱怨、錯信、垃圾信
    5. 摘要重點、抽出客戶名稱、公司、需求類型
    6. Action:
    7. IFTTT 把 Claude 輸出的摘要寫入 Notion 資料庫一行
    8. 同時在 Gmail 加上對應 Label(例如「退款」「技術問題」)。

    實際效果:

    • 你每天只要看 Notion 看板,就能看到「已分類好的客服案件」。
    • Gmail 信箱只負責收信,不再是你分類的戰場。

    範例二:每天自動總結 Slack 頻道討論寄到 Email

    流程:

    1. Trigger:每天 18:00 定時。
    2. Claude 任務:
    3. 拉取當天某個 Slack 頻道訊息
    4. 產生「今日重點摘要 + 代辦清單」
    5. Action:IFTTT 把內容寄到你的工作 Email。

    適合:

    • 經理、PM、不常盯 Slack 的主管。

    範例三:社群新留言自動整理成待辦表

    流程:

    1. Trigger:Facebook Page 或 Twitter/X 有新留言或提及。
    2. Claude 任務:
    3. 判斷是否為需要回覆/需要跟進的內容
    4. 抽出「用戶問題」「優先度」「建議回覆方向」
    5. Action:寫入 Notion 或 Trello(建立一張卡片)。

    實際效果:

    • 你每天只要在 Notion 或 Trello 看「待回覆留言清單」,不用一則一則在社群裡翻。

    💡 關鍵: 把「先讀、先分類、先整理」這 80% 的機械流程交給 Claude,人只處理剩下最有價值的 20%。


    適合誰用?

    針對辦公族,可以直接對號入座:

    • 客服 / CS 團隊:先由 Claude 做信件初篩與標註,你只處理「真的需要人工判斷」的 20%。
    • PM / 專案經理:把 Slack、Email、會議紀錄集中到 Notion、Trello,由 Claude 做第一輪摘要與任務拆解。
    • 行銷 / 社群小編:把分散在 IG、Facebook、X 的互動整理成待辦清單與報表。
    • Freelancer / 顧問:固定時間自動整理客戶往來信件、專案進度簡報稿。

    行動建議:

    • 先挑 一個你每天重複 10 次以上 的任務,問自己:
    • 這個任務有沒有明確規則?
    • 給一個夠聰明的助理說明,他能做 80% 嗎?
    • 如果答案是「可以」,就值得用 IFTTT MCP 做一條 workflow 試試。

    💡 關鍵: 每天重複 10 次以上、規則清楚的任務,往往是最適合先被自動化、也最容易看出效益的部分。


    怎麼開始:新手入門 Demo(Gmail → Claude 摘要 → Notion)

    以下是一條最簡單、最好理解的 workflow,實際上線大概 15–30 分鐘。

    💡 關鍵: 先用 15–30 分鐘做出一條跑得動的簡單流程,比花幾小時規劃複雜架構更重要。

    步驟 1:開通 IFTTT MCP

    1. 註冊或登入 IFTTT 帳號:https://ifttt.com
    2. 在服務或探索頁面搜尋「Claude」「MCP」關鍵字,找到帶有 MCP 整合的 Claude 相關服務(實際名稱可能會微調,以 IFTTT 介面為準)。
    3. 啟用該服務,點選「Connect」並同意條款。

    步驟 2:把 Claude 帳號 / 金鑰接進 IFTTT

    1. 在 IFTTT 的 Claude 服務設定頁面,按「Connect」。
    2. 系統會要求:
    3. 登入你的 Claude 帳號,或
    4. 填入 API Key(如果 IFTTT 走 API 金鑰方式)。
    5. 完成授權後,IFTTT 就能代表你呼叫 Claude,執行 MCP workflow。

    行動建議:

    • 如果你公司有統一的 Claude 帳號,先跟 IT / 資安確認使用範圍,避免用個人帳號處理公司敏感資料。

    步驟 3:建立 Gmail → Claude → Notion 的簡單流程

    1. 在 IFTTT 點選「Create」,新增一個 Applet / Workflow。
    2. 設定 Trigger(This):
    3. 選擇 Gmail 服務 → New email in inbox with search
    4. 搜尋條件輸入:label:auto-summary(你可以先在 Gmail 建這個 Label,手動拉幾封信進來當測試)。
    5. 設定 Claude 步驟:
    6. 加一個 Action,選擇 Claude(MCP)服務。
    7. 在指令欄輸入:
      > 請閱讀這封 Gmail 的主旨與內文,寫出:\n1. 兩段以內的中文摘要(每段不超過 80 字)\n2. 三個關鍵標籤(用逗號分隔)\n3. 若有明確待辦事項,幫我用清單列出。\n請用 Markdown 格式輸出:\n# 摘要\n…\n\n# 標籤\n…\n\n# 待辦\n- …
    8. 設定 Notion 寫入:
    9. 再加一個 Action,選擇 Notion 服務 → Create a database item
    10. 選擇一個你事先建好的「Email 摘要」資料庫,欄位可包含:標題、內容、日期、標籤。
    11. 把 Claude 的輸出對應到 Notion 的內容欄位,標題可用 Gmail 主旨。

    完成後,每當你把一封 Gmail 加上 auto-summary Label,就會觸發:

    • Claude 讀信 → 產出摘要 → IFTTT 寫進 Notion。

    步驟 4:疊加條件、加入更多服務

    最簡單流程跑起來後,可以這樣升級:

    • 加條件
    • 只有當信件收件人包含「support@」時才觸發。
    • 信件主旨含「退款」「無法登入」時,標記為高優先。
    • 加服務
    • 讓 IFTTT 再多一步,把高優先案件同步到 Slack 頻道 ping 客服團隊。
    • 每天自動把當天所有 Notion 中的客服摘要,再請 Claude 生一份「客服日報」,寄給主管。

    行動建議:

    • 每次只加「一個小功能」,例如:多一個條件、多一個 Action。
      不要一次做超複雜 workflow,比較容易除錯,也比較看得出效益。

    小結

    如果你:

    • 不想寫後端、又想讓 AI 幫你動手去各種 App 裡跑腿;
    • 每天被 Email、Slack、社群訊息淹沒;

    那就先從一條 Gmail → Claude 摘要 → Notion 開始,體驗一次「讓 AI 幫你整理世界」的感覺,再慢慢把你的整個工作日,拆成一條條 IFTTT MCP 自動化流程。

    🚀 你現在可以做的事

    • 去 IFTTT 搜尋「Claude」「MCP」,實際啟用一次 Claude 相關服務
    • 在 Gmail 建立 auto-summary Label,挑 3 封信做為第一批測試樣本
    • 在 Notion 建一個「Email 摘要」資料庫,照文中步驟串起第一條 workflow