Skip to content

Cấu Hình Tham Chiếu

GoClaw đọc cấu hình từ file JSON5. Secrets được tách biệt khỏi config.json và chỉ đọc từ biến môi trường hoặc file .env.local.


Tổng Quan

  • Định dạng: JSON5 (hỗ trợ comment //, trailing commas, unquoted keys)
  • Vị trí mặc định: ~/.goclaw/data/config.json (Desktop) hoặc ./config.json (Standard)
  • Biến môi trường ghi đè: GOCLAW_CONFIG chỉ định đường dẫn tường minh
  • Nguyên tắc bảo mật: Secrets (API keys, tokens, DSN) KHÔNG BAO GIỜ lưu trong config.json

Ví dụ cơ bản:

json5
{
  // Gateway server settings
  gateway: {
    host: "0.0.0.0",
    port: 8080,
    token: "", // Để trống, sử dụng biến môi trường GOCLAW_GATEWAY_TOKEN
  },
  agents: {
    defaults: {
      provider: "anthropic",
      model: "claude-sonnet-4-5",
      max_tokens: 8192,
    }
  }
}

Section: gateway

Điều khiển gateway server.

TrườngKiểuMặc địnhMô tả
hoststring"0.0.0.0"Địa chỉ lắng nghe
portint8080Cổng lắng nghe (Desktop: 18790)
tokenstring""Bearer token xác thực WS/HTTP (secret — dùng env)
owner_ids[]string[]Sender IDs được coi là "owner"
allowed_origins[]string[]WebSocket CORS whitelist (trống = cho phép tất cả)
max_message_charsint32000Số ký tự tối đa của user message
rate_limit_rpmint20Giới hạn request/phút mỗi user (0 = tắt)
injection_actionstring"warn"Hành động khi phát hiện prompt injection: log, warn, block, off
inbound_debounce_msint1000Gộp rapid messages cùng sender (ms, -1 = tắt)
block_reply*boolfalseGửi text trung gian trong khi tool đang chạy
tool_status*booltrueHiển thị tên tool trong streaming preview
task_recovery_interval_secint300Khoảng thời gian kiểm tra team task recovery (giây)

gateway.quota

Cấu hình quota request theo user/group.

TrườngKiểuMô tả
enabledboolBật/tắt hệ thống quota
defaultQuotaWindowGiới hạn mặc định cho mỗi user
providersmap[string]QuotaWindowGhi đè theo provider (key = tên provider)
channelsmap[string]QuotaWindowGhi đè theo channel (key = tên channel)
groupsmap[string]QuotaWindowGhi đè theo group (key = userID)

QuotaWindow:

json5
{
  hour: 20,   // max requests/giờ (0 = không giới hạn)
  day: 100,   // max requests/ngày
  week: 500   // max requests/tuần
}

Thứ tự ưu tiên merge: Groups > Channels > Providers > Default.


Section: channels

channels.telegram

TrườngKiểuMặc địnhMô tả
enabledboolfalseBật kênh Telegram
tokenstring""Bot token (secret — dùng env)
allow_from[]string[]Whitelist sender IDs
dm_policystring"pairing""pairing", "allowlist", "open", "disabled"
group_policystring"open""open", "allowlist", "disabled"
require_mention*booltrueYêu cầu @bot mention trong groups
mention_modestring"strict""strict" hoặc "yield"
history_limitint50Số pending group messages tối đa cho context (0 = tắt)
dm_stream*boolfalseBật streaming cho DMs
group_stream*boolfalseBật streaming cho groups
reaction_levelstring"off""off", "minimal", "full"
media_max_bytesint6420MBKích thước tối đa tải media
proxystring""URL proxy HTTP/SOCKS5
api_serverstring""Custom Telegram Bot API server URL

channels.discord

TrườngKiểuMặc địnhMô tả
enabledboolfalseBật kênh Discord
tokenstring""Bot token (secret — dùng env)
allow_from[]string[]Whitelist user IDs
dm_policystring"open""open", "allowlist", "disabled"
group_policystring"open""open", "allowlist", "disabled"
require_mention*booltrueYêu cầu @bot mention
history_limitint50Max pending messages cho context
media_max_bytesint6425MBKích thước tối đa tải media

channels.slack

TrườngKiểuMặc địnhMô tả
enabledboolfalseBật kênh Slack
bot_tokenstring""xoxb-... Bot User OAuth Token (secret)
app_tokenstring""xapp-... App-Level Token Socket Mode (secret)
dm_policystring"pairing""pairing", "allowlist", "open", "disabled"
group_policystring"open""open", "pairing", "allowlist", "disabled"
dm_stream*boolfalseStreaming cho DMs
group_stream*boolfalseStreaming cho groups
reaction_levelstring"off""off", "minimal", "full"
debounce_delayint300Ms delay trước khi xử lý rapid messages
thread_ttl*int24Giờ trước khi thread participation hết hạn

Các Channel Khác

  • channels.whatsappenabled, bridge_url, allow_from, dm_policy, group_policy
  • channels.zaloenabled, token, allow_from, dm_policy, webhook_url, webhook_secret
  • channels.zalo_personalenabled, allow_from, dm_policy, group_policy, credentials_path
  • channels.feishuenabled, app_id, app_secret, domain ("lark"/"feishu"), connection_mode ("websocket"/"webhook")

channels.pending_compaction

TrườngMặc địnhMô tả
threshold200Kích hoạt compaction khi entries vượt quá
keep_recent40Giữ lại số messages gần nhất sau compaction
max_tokens4096Max output tokens cho LLM summarization
provider""LLM provider (trống = dùng provider của agent)

Section: providers

API keys luôn đọc từ env vars — KHÔNG lưu trong config.json.

ProviderTrườngMô tả
anthropicapi_key, api_baseAnthropic Claude
openaiapi_key, api_baseOpenAI GPT
openrouterapi_key, api_baseOpenRouter
geminiapi_key, api_baseGoogle Gemini
deepseekapi_key, api_baseDeepSeek
groqapi_key, api_baseGroq
mistralapi_key, api_baseMistral AI
xaiapi_key, api_basexAI Grok
minimaxapi_key, api_baseMiniMax
ollamahostLocal Ollama (không cần API key)
claude_clicli_path, model, perm_modeClaude CLI (dùng subscription)
acpbinary, args, model, work_dir, idle_ttl, perm_modeACP protocol agents
dashscopeapi_key, api_baseAlibaba DashScope (Qwen)
novitaapi_key, api_baseNovita AI

Section: tools

TrườngKiểuMô tả
profilestring"minimal", "coding", "messaging", "full"
allow[]stringDanh sách cho phép (tên tool hoặc "group:xxx")
deny[]stringDanh sách chặn
alsoAllow[]stringThêm vào mà không xóa existing
rate_limit_per_hourintMax tool executions/giờ/session (0 = tắt)
scrub_credentials*boolTự động ẩn API keys/tokens trong tool output (mặc định true)

tools.execApproval

TrườngMặc địnhMô tả
security"full""deny", "allowlist", "full"
ask"off""off", "on-miss", "always"
allowlist[]Glob patterns cho lệnh được phép

tools.web_fetch

TrườngMặc địnhMô tả
policy"allow_all""allow_all" hoặc "allowlist"
allowed_domains[]Ví dụ: ["github.com", "*.example.com"]
blocked_domains[]Luôn kiểm tra bất kể policy

tools.browser

TrườngMặc địnhMô tả
enabledfalseBật tool browser automation
headlessfalseChạy Chrome headless
remote_url""CDP endpoint cho remote Chrome
action_timeout_ms30000Timeout mỗi action (ms)
idle_timeout_ms600000Tự động đóng page khi idle (ms, 0 = tắt)
max_pages5Max open pages mỗi tenant

tools.mcp_servers

json5
{
  tools: {
    mcp_servers: {
      "my-server": {
        transport: "stdio",        // "stdio", "sse", "streamable-http"
        command: "npx",
        args: ["-y", "@my/mcp-server"],
        env: {"API_KEY": "xxx"},
        tool_prefix: "my_",
        timeout_sec: 60,
        enabled: true
      }
    }
  }
}

Section: sessions

TrườngKiểuMặc địnhMô tả
scopestring"per-sender""per-sender" hoặc "global"
dm_scopestring"per-channel-peer"Phạm vi DM session
main_keystring"main"Key suffix cho main session

Giá trị dm_scope:

Giá trịMô tả
"main"Tất cả DMs dùng chung một session
"per-peer"Mỗi peer có session riêng (dùng chung giữa các channels)
"per-channel-peer"Mỗi (channel, peer) cặp có session riêng (mặc định)
"per-account-channel-peer"Thêm bot account vào key phân tách

Section: tts

TrườngKiểuMặc địnhMô tả
providerstring"""openai", "elevenlabs", "edge", "minimax"
autostring"off""off", "always", "inbound", "tagged"
modestring"final""final" hoặc "all"
max_lengthint1500Độ dài text tối đa trước khi cắt
timeout_msint30000Timeout API call (ms)

TTS Providers:

ProviderTrường cấu hình
tts.openaiapi_key, api_base, model (mặc định "gpt-4o-mini-tts"), voice (mặc định "alloy")
tts.elevenlabsapi_key, base_url, voice_id, model_id
tts.edgeenabled, voice (mặc định "en-US-MichelleNeural"), rate
tts.minimaxapi_key, group_id, api_base, model, voice_id

Section: agents.defaults

TrườngMặc địnhMô tả
workspace"~/agents"Thư mục workspace gốc
restrict_to_workspacefalseGiới hạn file access trong workspace
provider""Tên provider mặc định
model""Model mặc định
max_tokens8192Max output tokens
temperature0.7Nhiệt độ LLM
max_tool_iterations30Số lần lặp tool tối đa mỗi run
context_window200000Kích thước context window
max_tool_calls25Tổng số tool calls tối đa mỗi run (0 = không giới hạn)
agent_type"open""open" hoặc "predefined"

Biến Môi Trường

BiếnMô tả
GOCLAW_CONFIGĐường dẫn tường minh đến file config.json
GOCLAW_GATEWAY_TOKENBearer token xác thực gateway
GOCLAW_POSTGRES_DSNPostgreSQL connection string
GOCLAW_REDIS_DSNRedis connection string (tùy chọn)
GOCLAW_STORAGE_BACKEND"postgres" hoặc "sqlite"
GOCLAW_SQLITE_PATHĐường dẫn SQLite DB
GOCLAW_PORTGhi đè gateway port (Desktop)
GOCLAW_TSNET_AUTH_KEYTailscale auth key

File .env.local được tự động load nếu tồn tại bên cạnh config.json. Biến môi trường có ưu tiên cao hơn config.json.

Ví dụ .env.local:

bash
GOCLAW_GATEWAY_TOKEN=my-secret-token
GOCLAW_POSTGRES_DSN=postgres://user:pass@localhost:5432/goclaw
ANTHROPIC_API_KEY=sk-ant-...
OPENAI_API_KEY=sk-...

Xem Thêm