Arlo 是一個開源、以 Rust 打造的 agentic AI 框架 —— 可以把它想成是仿照 Claude Code 提供的能力、但更精簡、更通用的版本。它提供一套具備串流輸出的執行迴圈,內建工具呼叫、人機協作(HITL)權限控管、sub-agent、MCP 整合與 Agent Skills,並以互動式 TUI、單次 CLI 指令,或可嵌入的函式庫對外提供。
需要 stable 版 Rust,透過 rustup 安裝。
# clone 並建置
git clone https://github.com/kaija/arlo.git
cd arlo
cargo build --release
# 設定你的 provider 憑證 export OPENAI_API_KEY="sk-..." cargo run -p agent-cli # 互動式 TUI cargo run -p agent-cli -- "summarize this repo" # 單次提示 arlo [--model PROVIDER:MODEL] [--profile NAME] "prompt"
Agent 規劃、行動,並隨時讓你參與其中所需的一切。
以回合為單位的迴圈 —— 壓縮上下文 → 發送請求 → 串流回應 → 執行工具 → 判斷下一步 —— 具備型別化的狀態轉換與自動錯誤復原。
透過 Model Context Protocol 連接外部工具伺服器,與內建的檔案、shell 與網路工具並用。
從 .arlo/skills/(專案層級)與 ~/.arlo/skills/(使用者層級)探索並載入以 Markdown 定義的技能,支援模板變數替換。
4 層權限引擎 —— glob 樣式規則、靜態允許/拒絕清單,以及互動式核准提示 —— 讓每一次工具呼叫都在你的掌控之中。
內建 Task/Todo 儲存機制;可派生前景或背景的 sub-agent,各自擁有獨立歷史紀錄 —— 結果保證只回傳一次。
三層壓縮管線 —— 工具結果壓縮、對話記憶、完整摘要化 —— 讓長時間執行也不超出上下文視窗。
同一個 Rust 核心,在你需要的任何地方執行。
以 ratatui 打造的 REPL,可與 agent 對話、即時觀看工具呼叫串流,並當場核准權限。
在腳本或 CI 工作中直接執行 arlo "prompt" —— 不帶提示詞則進入互動式 REPL。
把 crate 直接引入你自己的 Rust 應用程式,將執行迴圈接到任何你需要的介面上。
把 Arlo 指向你想用的模型 —— 雲端託管或自架皆可。
Messages API,支援 Claude Opus、Sonnet 與 Haiku 模型,內建重試與模型覆寫。
任何 OpenAI 相容的 HTTP API —— 設定 OPENAI_API_KEY 就能開始。
把 OPENAI_BASE_URL 指向你自架或本地的推論伺服器即可。
Arlo 內建 serve 模式,透過 HTTP + SSE 提供 AG-UI 協定。以下參考整合示範如何在不增加額外基礎設施的情況下,把它接進瀏覽器或 Slack 工作區。
以 Next.js 打造的瀏覽器聊天介面,透過 proxy 連到 arlo --serve。串流輸出文字、行內顯示工具呼叫,並渲染人機協作核准卡片,讓你不用離開瀏覽器就能允許或拒絕每一次工具呼叫。
瀏覽器 → Next.js(port 3000)→ Arlo(內部 :8080)
cd integration/web cp .env.example .env # 設定 ARLO_MODEL 與 provider 金鑰 docker compose up --build # 開啟 http://localhost:3000
一個 Python proxy(arlo-slack)維持 Slack Socket Mode websocket 連線,透過 AG-UI 把討論串重播給 arlo --serve,再把回覆串流回 Slack。Slack 本身就是對話儲存空間 —— 不需要資料庫,也不掛載主機目錄。
Slack ⇄ slack-proxy ⇄ arlo(websocket / HTTP + SSE)
SLACK_ALLOWED_CHANNELS / SLACK_ALLOWED_USERS 允許清單控管存取
cd integration/slack
cp .env.example .env # 設定 SLACK_BOT_TOKEN、SLACK_APP_TOKEN、ARLO_MODEL
docker compose up --build
serve 模式執行工具時不會跳出核准提示。兩個整合方案都採用容器化部署 —— 用完即丟的容器、不掛載主機目錄、唯讀 rootfs、tmpfs 工作目錄,並限制記憶體與行程數。請勿直接對外開放 Arlo 的連接埠,一律透過 proxy 存取。