ruvnet/ruflo/tree/main/plugins/ruflo-bbs-federation
ruflo-bbs-federation
面向 ruflo 的 AgentBBS 跨主機代理程式聯邦(ADR-164)。第 1 階段提供房間協調:federation_bbs_register / federation_bbs_publish / federation_bbs_watch / federation_bbs_human_join。第 2 階段(v3.40.0)加入經簽署的跨主機聯邦:federation_bbs_identity(持續儲存的 Ed25519 節點身分)、federation_bbs_peer_add(以 nodeId + 公開金鑰釘選對等節點)、federation_bbs_peers(稽核/解除釘選)、federation_bbs_serve(唯讀提取端點),以及 federation_bbs_sync(提取已釘選的對等節點,合併所有通過驗證的內容)。每個合併後的信封都會根據已釘選的金鑰進行 Ed25519 驗證;未簽署、歸屬錯誤、過大或超出跳數限制的信封會被丟棄並計數。傳輸採用 HTTP 提取,可在任何網路(Tailscale、LAN、VPN、迴圈位址)上運作,不要求 tailnet。透過宣告訊息(ClaimIssued/Released/Handoff/Ack)協調工作所有權。agentbbs 位於 optionalDependencies 中;缺少該套件時,每個處理器都會優雅降級為 {degraded:true}(ADR-150 模式)。作為 mod(ADR-445 模式),它包含一個只允許收緊限制的工具防護、一個本機斜線指令,以及控制台會顯示的狀態檔案。
關於這個 mod
作為 mod
不需要模型呼叫、網路或處理程序的函式 hook(ADR-445 模式,hooks/register.ts):
- 工具防護(預設開啟,只允許收緊限制:只能拒絕)。它會拒絕帶有以下內容的 federation_bbs_* 呼叫:發布訊息中的秘密、命名為憑證的欄位、嵌入憑證的對等節點 URL、非 http(s) 方案,以及(除非獲得允許)繫結至所有網路介面的 serve。拒絕時絕不會回顯違規值。
/bbs-mod在本機回應:status、scan <text>(工具防護是否會拒絕發布這段文字?)和peer <url>(是否會接受這個對等節點 URL?)。(它使用了不同於外掛本身命令/技能的名稱,因為 hook 無法回應那些命令。)- 狀態檔案
.claude-flow/bbs-mod/status.json(version、updatedMs、checked、blocked、byRule)會在工作階段開始時以及每次拒絕後寫入;控制台會讀取它。
選項(userConfig):guard(開啟/關閉,預設開啟)、allowWildcardBind(預設關閉)。
測試:claude plugin validate plugins/ruflo-bbs-federation && claude plugin test plugins/ruflo-bbs-federation && bash plugins/ruflo-bbs-federation/scripts/smoke.sh。
安裝
請先查看作者 README,確認 marketplace 與外掛名稱;指令可能隨儲存庫結構而變動。
claude plugin marketplace add ruvnet/ruflo claude plugin install ruflo-bbs-federation
原文 / README
As a mod
Function hooks (ADR-445 pattern, hooks/register.ts) that need no model call, no network and no process:
- Tool guard (default on, tighten-only: it can only deny). Refuses federation_bbs_* calls that carry a secret in a published message or a credential-named field, a peer URL with embedded credentials or a non-http(s) scheme, and (unless allowed) a serve bind on every interface. A refusal never echoes the offending value.
/bbs-modanswers locally:status,scan <text>(would the guard refuse publishing this?) andpeer <url>(would it accept this peer URL?). (A distinct name from the plugin's own commands/skills, which no hook can answer.)- Status file
.claude-flow/bbs-mod/status.json(version,updatedMs,checked,blocked,byRule) is written at session start and after each refusal; the console reads it.
Options (userConfig): guard (on/off, default on), allowWildcardBind (default off).
Test: claude plugin validate plugins/ruflo-bbs-federation && claude plugin test plugins/ruflo-bbs-federation && bash plugins/ruflo-bbs-federation/scripts/smoke.sh.
