MINARA
使用 Minara進階

HTTP 網關

將 Minara 作為 HTTP 服務運行

HTTP 網關通過 REST/SSE API 暴露同一個 Agent。適合將 Minara 集成到 Web 應用、Slack 機器人或自定義前端。

啟動服務器

minara serve
# listening on http://localhost:8080

默認在前臺運行。按 Ctrl+C 停止服務器。可用標誌:

  • -p, --port <N>:覆蓋監聽端口(也可通過 GATEWAY_PORT 設置)。
  • --auth-token <T>:每次請求 /v1/* 時需要攜帶的 Bearer token。也可通過 GATEWAY_AUTH_TOKEN 讀取。留空則禁用鑑權(僅限開發環境)。

環境變量:

  • GATEWAY_PORT(默認 8080
  • GATEWAY_AUTH_TOKEN:若設置,每次請求須攜帶 Authorization: Bearer <token>。留空則禁用鑑權(僅限開發環境)。

同時啟動 Web UI

minara serve --ui 在同一個 shell 中以並行進程方式啟動 HTTP 網關和 Web UI。網關端口為 8080;Web UI 運行在 4173apps/web-ui/dist 的 Vite 預覽構建)。

minara serve --ui
# [gateway] listening on http://localhost:8080
# [ui]      preview ready at http://localhost:4173/

冷啟動流程:若 apps/web-ui/dist/ 不存在,或其時間戳早於 apps/web-ui/apps/agent/src/,Minara 會在啟動預覽服務器前自動構建。apps/web-ui/dist/.build.lock 文件鎖可防止兩個併發的 serve --ui 進程同時競爭構建。

變體選項:

  • --ui-dev:運行 vite(熱重載,端口 5173),而非 preview。適合迭代 Web UI 代碼時使用。
  • --ui-port <N>:覆蓋 UI 端口。
  • --no-build:跳過自動構建檢查,假設 apps/web-ui/dist/ 已是最新狀態。若目錄不存在或已過期,會立即失敗(非零退出碼,並輸出明確錯誤信息)。
  • --daemon:行為與單獨的 serve --daemon 相同。網關和 UI 子進程均通過 PID 文件追蹤(server.pid + web-ui.pid)。--stop 使用 PID 複用守衛優雅地終止兩端,確保指向無關進程的陳舊 UI PID 文件被清除,而不會向其發送信號。

完整的標誌列表和守護進程機制,參見 minara serve 子命令參考

以守護進程運行

--daemon(或 -d)將服務器從終端分離,寫入 PID 文件,並將 stdout/stderr 重定向到日誌文件。適合在不配置 systemd 的情況下,讓網關在重啟後持續運行。

minara serve --daemon              # 在后台启动
minara serve --status              # 是否运行中?PID 是多少?
minara serve --stop                # 优雅 SIGTERM,最多等待 10 秒

默認路徑(可通過 --pid-file / --log-file 覆蓋):

  • PID 文件:$MINARA_DATA_DIR/server.pid(通常為 ~/.minara/server.pid
  • 日誌文件:$MINARA_DATA_DIR/logs/server.log

退出碼遵循 LSB init-script 規範。--status 在守護進程未運行時返回 3,因此可以鏈式調用:

minara serve --status || minara serve --daemon

如需生產級別的進程管理(崩潰重啟、日誌集成、開機自啟),建議將 minara serve 接入 systemd 或其他進程監控工具。示例 unit 文件參見部署

健康檢查

curl http://localhost:8080/healthz
# {"ok":true}

對話

curl -N -X POST http://localhost:8080/v1/chat/stream \
  -H "Authorization: Bearer $GATEWAY_AUTH_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"message": "buy $50 of SOL"}'

響應為 Server-Sent Events 流(-N 關閉 curl 緩衝):每個事件都是一段 JSON 數據——LLM 增量輸出、工具調用,以及最終的助手回覆。

每個路由的完整說明、請求體結構及鑑權流程,參見 HTTP API 參考

本頁目錄