嗨大家,我是 Debuguy。
前面九天我們一路從最簡單的 Bot + LLM,逐步建構出一個具備多人協作、工具整合、透明思考的 Slack ChatBot。今天來回顧這個「從 0 到 1」的完整旅程,看看我們到底創造了什麼東西。
想像這個場景:公司有多個產品部門,每個部門都有自己的 domain 和資料。當發生跨部門的 issue 時:
「LLM 最擅長的就是處理大量文字資料啊!如果每個產品部門都有自己的 Bot,專門負責分析自己的 log,然後讓這些 Bot 自己討論問題...」
引用 Peter Thiel 的《Zero to One》:世界上的進步分兩種,從 1 到 n 是複製,從 0 到 1 是創造。
所有容易變動的都外部化:
prompts/chatbot.prompt
config/mcp-config.json
.env
三層架構,各司其職:
讓未來要實際部署時,可以依照需求拆成不同的 image 部署
不寫複雜的協作系統,而是設計簡單的互動規則:
從工具人到對話夥伴的關鍵:
Your Slack ID is {{botUserId}}.
You are not just executing commands;
you are participating in conversations as a helpful team member.
利用 Slack Thread 作為對話儲存:
thread_ts
取得完整對話省下的程式碼:
從黑盒子到玻璃屋:
thinkingConfig:
includeThoughts: true # 讓內心獨白現形
thinkingBudget: -1 # 動態思考預算
讓焦慮等待變成有趣觀察,同時解決了除錯困難的問題。
核心作法: 將 Slack Thread 轉換為 LLM 標準對話格式
// 訊息分組:處理連續訊息和角色識別
function organizeMessages(messages) {
const role = m.user === process.env['SLACK_BOT_USER_ID'] ? 'model' : 'user';
// 自動合併同角色的連續訊息
// 轉換為 LLM 的對話格式
}
核心作法: System Prompt 的社交智慧
- Identify who mentioned you in the latest message
- Consider the conversation history between you and that user
- Other users' messages provide context but use careful judgment
無心插柳,柳橙汁: N-N 多 Bot 協作,完全沒有額外的協作程式碼!
核心作法: MCP 工具生態系統整合
const tools = await host.getActiveTools(ai);
const resources = await host.getActiveResources(ai);
// LLM 自動決定是否使用工具
toolChoice: 'auto'
從「我無法查看網頁」到直接提供颱風假查詢結果。
不是工具,是夥伴:
透明的思考過程:
bonus: 看 LLM 思考其實滿有娛樂性的,等待變成了享受
像跟同事聊天一樣簡單:
降低 AI 使用門檻:
我們不用管理:
節省的工作量: 相當於一個完整的後端服務 + 資料庫 + 認證系統
MCP 標準化整合:
同樣的 code,不同的能力:
架構的可持續性:
「從 0 到 1」的原型階段已經完成,但真正的挑戰才開始:
接下來要面對的現實:
九天來,我們創造的不只是程式碼,而是一套完整的原型和方法論:
Why: 解決真實的跨部門協作痛點
How: 讓複雜功能自然湧現的設計哲學
What: 會思考、會協作、會成長的夥伴原型
現在我們有了一個可運作的原型,接下來就是面對生產環境的現實挑戰,進入到 Day 1 了。
完整的實驗記錄都在這個 GitHub Repo 中,歡迎大家下載來玩!
AI 的發展變化很快,目前這個想法以及專案也還在實驗中。但也許透過這個過程大家可以有一些經驗和想法互相交流,歡迎大家追蹤這個系列。
也歡迎追蹤我的 Threads @debuguy.dev