Cấu hình
Bestie lưu non-secret settings trong .bestie/config.json. Secrets nằm trong .bestie/.env và không được in ra logs.
Config tối thiểu
Phần tiêu đề “Config tối thiểu”{ "version": 2, "agent": { "name": "Bestie", "ownerName": "Owner", "language": "vi", "timeZone": "Asia/Bangkok", "toneIntensity": 7 }, "llm": { "primary": "openai/gpt-4.1", "authProfile": "openai:api-key", "profiles": { "openai:api-key": { "provider": "openai", "mode": "api-key", "baseUrl": "https://api.openai.com/v1", "apiKeyEnv": "OPENAI_API_KEY" } }, "modelCatalog": { "openai/gpt-4.1": { "profile": "openai:api-key" } }, "timeoutMs": 60000, "maxRetries": 1, "retryDelayMs": 500 }, "memory": { "provider": "sqlite", "writePolicy": "ask" }}OPENAI_API_KEY=...ANTHROPIC_API_KEY=...GEMINI_API_KEY=...BESTIE_TELEGRAM_BOT_TOKEN=...BESTIE_ZALO_BOT_TOKEN=...Chỉ thêm secret cho feature bạn bật. Không lưu raw API keys trong config.json; config chỉ nên chứa tên biến env như apiKeyEnv.
LLM config hiện dùng profiles và model refs. llm.primary là model đang dùng. llm.authProfile là profile mặc định. Mỗi profile lưu provider, auth mode, optional base URL và tên biến env chứa key:
{ "llm": { "primary": "openai/gpt-4.1", "authProfile": "openai:api-key", "profiles": { "openai:api-key": { "provider": "openai", "mode": "api-key", "baseUrl": "https://api.openai.com/v1", "apiKeyEnv": "OPENAI_API_KEY" }, "ollama:local": { "provider": "ollama", "mode": "local", "baseUrl": "http://localhost:11434/v1" } }, "modelCatalog": { "openai/gpt-4.1": { "profile": "openai:api-key" }, "ollama/llama3.2": { "profile": "ollama:local" } }, "fallbacks": ["ollama/llama3.2"] }}Ưu tiên dùng CLI để chỉnh cấu trúc này:
bestie llm providersbestie llm setup --provider openai --set-defaultbestie llm models --provider openaibestie llm test --model openai/gpt-4.1bestie llm profiles listbestie llm fallbacks add --model ollama/llama3.2Các provider setup hiện có gồm Anthropic, ChatGPT/OpenAI, Groq, OpenRouter, custom OpenAI-compatible, custom Anthropic-compatible, Ollama, Gemini và Antigravity. Antigravity OAuth setup có trong CLI nhưng chưa được implement.
Memory policy
Phần tiêu đề “Memory policy”| Policy | Hành vi |
|---|---|
allow |
Lưu memory hợp lệ trực tiếp. |
ask |
Đưa memory vào hàng chờ duyệt. Mặc định. |
deny |
Từ chối memory writes. |
Workspace
Phần tiêu đề “Workspace”{ "workspace": { "defaultPath": ".bestie/workspace", "externalPaths": [] }}Relative write/edit/exec paths sẽ vào workspace mặc định. Dùng externalPaths cho absolute paths đáng tin bên ngoài project.
Skills
Phần tiêu đề “Skills”Bestie có thể load các skill đã cài từ runtime app directory:
.bestie/skills/<skill-name>/SKILL.mdMỗi file SKILL.md không rỗng sẽ được trim, load theo thứ tự tên thư mục, rồi inject vào chat system prompt. Loader dừng khi combined skills prompt chạm byte budget, nên hãy giữ skill gọn và tập trung.
Update checks
Phần tiêu đề “Update checks”Bestie lưu cache update check trong runtime data directory tại update-check.json. Chat và daemon start/restart có thể in update notice nhẹ khi npm có bản mới hơn, dùng cache 24 giờ để session bình thường không bị ồn ào.
bestie status cũng báo current installed version và npm có release mới hơn hay không. Nếu không kết nối được npm, status vẫn in local package version và báo update check failed.
Telegram
Phần tiêu đề “Telegram”{ "channels": { "telegram": { "enabled": true, "botTokenEnv": "BESTIE_TELEGRAM_BOT_TOKEN", "ownerUserId": "123456789" } }}{ "channels": { "zalo": { "enabled": true, "botTokenEnv": "BESTIE_ZALO_BOT_TOKEN", "ownerUserId": "zalo-owner-1" } }}Chạy setup bằng bestie channels zalo setup. Chạy adapter local bằng bestie channels zalo hoặc smoke một batch bằng bestie channels zalo --once.
Adapter Zalo đầu tiên là owner-only và text-only. Commands được hỗ trợ gồm /help, /status, /providers, /memory, /memory pending, /memory pause, /memory resume, /approvals, /approve <id> và /deny <id>.
{ "mcp": { "servers": [ { "name": "local-files", "enabled": false, "transport": "stdio", "command": "node", "args": ["server.js"], "tools": [ { "name": "read_file", "category": "read" } ] } ] }}Tool MCP nên được classify trước khi gọi.
Scheduling và voice capabilities
Phần tiêu đề “Scheduling và voice capabilities”Các bản Bestie mới tách capability dùng lại ra khỏi channel adapter:
voicenên được xem là capability độc lập mà các channel có thể kết nối vào.- Telegram là channel adapter, không phải nơi sở hữu behavior voice.
- Cron scheduling dùng cho agent work định kỳ như reminder, periodic checks và background reviews.
Giữ scheduled job hẹp phạm vi và dùng approval cho external actions trừ khi owner cấu hình rõ một automation path đáng tin cậy.
