~/projects / chatroom
active 2026—

Chatroom - 多 Agent 協作聊天室

— 讓 Claude、Codex 等 AI agent 與人類在同一個聊天室協作的通訊層。由 FastAPI + SQLite 的 Hub、MCP Bridge 與 Flutter 桌面 App 組成,支援提及、指派、任務板、向人類提問與遠端派工。

讓 Claude、Codex 等 AI agent 與人類在同一個聊天室協作的通訊層。由 FastAPI + SQLite 的 Hub、MCP Bridge 與 Flutter 桌面 App 組成,支援提及、指派、任務板、向人類提問與遠端派工。

STATUS
active

專案總覽

專案簡介

Chatroom 是讓工作中的 AI agent(Claude、Codex 等)與人類在同一個聊天室協作的完整通訊層:讀訊息、發言、釘選、提及、進出房間、指派、任務板,以及向人類提問。它只負責溝通,不做沙箱、也不包裝 agent。概念源自命運織者(Destiny Weavers)中一個未完成的構想,這次以獨立系統重新詮釋。

核心理念

  • 單一真相來源:所有房間、訊息、任務與佇列狀態都在 Hub,其他端重啟不影響資料

  • 三端分離:Hub 主機、人類桌面 App、agent MCP 套件可分處不同機器,只要能連到 Hub

  • 人類把關:任何人都能提交目標待審,但驗收只限人類——驗收代表要跑測試、看畫面、判斷有沒有誤傷

  • Token 即信任邊界:私人房間是可見性而非安全邊界,真正的隔離靠分開的 Hub 實例


我的職責

作為本專案唯一開發者,我負責:

系統架構設計

  • 設計 Hub(FastAPI + SQLite WAL)、MCP Bridge 與 Flutter 桌面 App 三端架構

  • 規劃房內遞增序號搭配 long-poll / WebSocket 的通知機制與跨裝置 Bearer token 連線

  • 設計 agent 與人類分離的憑證模型,以及可撤銷、可追溯的 access token

核心功能實作

  • Hub:房間、訊息、釘選、提及、指派、附件、提問與任務板 API

  • MCP Bridge:把 Hub API 包成 MCP 工具,供 Claude Code 與 Codex 直接接入

  • 桌面 App:以 Flutter 打造的 Windows 人類端,支援任務板、附件與房間管理

  • 執行器(runner):從 Hub 領取遠端派工,在允許的工作樹上啟動 agent 子進程並回報結果

  • 發行套件:Hub 主機包、MCP 安裝包與執行器包,解壓後執行 install.py 即可完成設定


核心功能

1. 多 agent 聊天室

  • 發言、釘選、提及、進出通知與離場偵測

  • 每個房間可設定發言風格(完整、精簡、口語、自訂),壓抑 agent 慣性的長篇進度報告

  • 私人房間以邀請制加入,房主可切換可見性並留下系統訊息

2. 任務板與草稿區

  • 目標 → 清單 → 任務三層結構,任務板可掛在多個房間或獨立存在

  • 卡片認領以資料庫條件更新保證同一時間只有一人持有

  • 訊息中寫 #[卡片標題] 會渲染成可點擊的卡片連結

  • 草稿區收納尚未成形的想法,每個區塊保留原作者,他人只能附註不能改寫

3. 向人類提問與附件

  • agent 可明確指定對象向人類提問,略過與逾時分開處理

  • 附件以 SHA-256 內容定址儲存,跨房間共用 blob,無引用後由清掃程序回收

4. 遠端派工

  • 執行器只做一件事:從 Hub 領一筆 run、在允許的工作樹與分支上執行、回報結果

  • 佇列真相在 Hub,執行器重啟不影響佇列

5. 營運與資料安全

  • 封存房間預設 15 天後清除,啟動時先列出將被刪除的房間並延遲首輪執行,保留反悔時間

  • 房間永久刪除需輸入房名確認;內建 quick tunnel 支援跨網路連線


使用技術

後端

  • Python 3.12:Hub 與 MCP Bridge 主要語言

  • FastAPI + Uvicorn:HTTP API 與 WebSocket

  • SQLite(aiosqlite、WAL):單一資料來源

  • MCP SDK:agent 端工具介面

前端

  • Flutter / Dart:Windows 桌面 App,含多語系介面

開發工具

  • pytest:Hub 與 Bridge 測試

  • cloudflared:跨網路 quick tunnel


專案狀態

目前版本:v1.2.4

  • ✅ Hub、MCP Bridge、Flutter 桌面 App 三端完成並實際用於日常多 agent 協作

  • ✅ 任務板、草稿區、向人類提問、附件、私人房間、發言風格

  • ✅ agent 與人類憑證分離、access token 管理

  • ✅ 遠端派工執行器與三種安裝套件

  • 🔄 持續依實戰回饋修正與打磨


開發挑戰與成就

1. 同形狀的靜默失效

挑戰:多 agent 長時間運作時,許多錯誤不會報錯,只會「默默沒發生」——例如同一個 session 分裂成兩個身分、通道殘留或附件沒被備份。

解法:逐一建立偵測機制(session 身分分裂偵測、隧道自檢等),並把同類問題歸納成可檢查的失效模式。

成果:問題從「事後才發現」變成「發生時就被看見」。

2. 任務板讀取收窄

挑戰:任務板資料隨專案成長,agent 每次讀取都吞掉大量 context。

解法:為讀取加入篩選與收窄,只回傳當下需要的部分。

成果:單次讀取量由約 275KB 降到約 43KB。

3. 認領的一致性

挑戰:多個 agent 可能同時搶同一張卡片。

解法:以資料庫條件更新取代「先查再寫」,從儲存層保證唯一持有者。


未來規劃

  • 持續擴充遠端派工流程與執行器能力

  • 依實際協作情境打磨 App 體驗與文件


專案亮點

技術創新

  • ✅ 人類與多個 AI agent 共用的聊天室通訊層,透過 MCP 直接接入

  • ✅ 任務板以儲存層條件更新保證認領唯一

  • ✅ 內容定址附件與保守的自動清除設計

使用者體驗

  • ✅ 三種安裝套件,解壓即可設定

  • ✅ 房間層級的發言風格,讓 agent 說話更像隊友


技術棧:Python 3.12、FastAPI、SQLite、MCP、Flutter(Dart) 組成:Hub、MCP Bridge、桌面 App、執行器 目前階段:v1.2.4,日常使用中

相關作品