文件

設定

設定 KuraDB 的憑證、本機狀態、HTTP 綁定與編譯期服務行為。

憑證

KuraDB 需要一項外部憑證:

名稱 必要 使用者 用途
OPENAI_API_KEY internal/openai.New 授權 text-embedding-3-small request

Daemon 會初始化 KuraDB keychain context,並透過 go-pkg/filesystem/keychain 取得 OPENAI_API_KEY。KuraDB 的 application source 未定義其他 runtime environment variable。

請勿將憑證寫入 config.json、command argument、log 或文件。啟動 daemon 前必須透過 keychain integration 提供此值;若無法取得,啟動程序會結束。

設定目錄

所有 runtime state 都位於 ~/.config/kuradb/

路徑 類型 用途
config.json 持久 JSON 可選的固定 HTTP port
db.json 持久 JSON 已註冊資料庫名稱與建立時間
global.db 持久 SQLite 持久化 query embedding cache
{name}/data.db 持久 SQLite 權威 chunk、dismissal state 與 embedding
{name}/inbox/ 監控目錄 Ingestion pipeline 接受的檔案
{name}/record.json 持久 JSON 檔案 metadata 的 watcher snapshot
runtime.uid 暫時 JSON Daemon UID、PID 與啟動時間
endpoint 暫時文字 目前本機 HTTP base URL
daemon.log Log 分離 daemon 的 stdout 與 stderr

每個資料庫另有便利的符號連結 ~/Kura_{name},指向其 inbox。

HTTP port

config.json 目前支援一個 property:

{
  "port": 8080
}
Property 型別 預設 規則
port integer 0/省略 透過 CLI 設定時必須介於 1–65535

請透過 KuraDB 管理此值,不要手動編輯 JSON:

kura port set 8080
kura port clear

port set 會持久化設定並重新啟動 daemon。port clear 會寫入未固定的設定,於下次手動啟動後生效。

未固定 port 時,KuraDB 會在 10000 到 65535 之間隨機嘗試最多 10 個 port。固定與隨機 listener 都只綁定 127.0.0.1;發布的 URL 使用 localhost

固定服務常數

下列行為編譯在目前 binary 中,並未開放為設定:

設定 來源
檔案輪詢間隔 10 秒 cmd/app/main.go
Embedding 輪詢間隔 5 秒 cmd/app/main.go
Embedding batch size 64 chunks cmd/app/main.go
OpenAI model text-embedding-3-small internal/openai/openai.go
Embedding dimensions 512 internal/openai/openai.go
OpenAI request timeout 1 分鐘 internal/openai/openai.go
HTTP read-header timeout 5 秒 cmd/app/http.go
HTTP shutdown timeout 5 秒 cmd/app/http.go
預設 search limit 10 internal/api/handler/keyword.go
最大 search limit 100 internal/api/handler/keyword.go
Semantic score cutoff 0.3 internal/api/handler/semantic.go

Endpoint discovery

Listener 就緒後,KuraDB 會將 URL 寫入 ~/.config/kuradb/endpoint

BASE="$(cat ~/.config/kuradb/endpoint)"
curl "$BASE/api/health"

Launcher 會等待此檔案最多 10 秒。Graceful shutdown 會將它移除,因此 consumer 應在每次重啟後重新讀取。

資料庫可用性

Registry 變更會立即持久化,但 daemon 只在啟動時建立 loaded database map。執行 kura add 後,必須先重新啟動 KuraDB,才能對新名稱送出搜尋。/api/list 會分別暴露 registeredloaded,讓 client 偵測此狀態。

平台限制

請使用 macOS 的本機 APFS/HFS+ filesystem,或 Linux 的 ext4/xfs。Watcher 依賴可靠的 POSIX directory mtime 語義,不支援 Windows、SMB、NFS 或 FUSE mount。

EN