Files
clawgo/config.example.json
2026-03-23 18:04:13 +08:00

407 lines
12 KiB
JSON

{
"agents": {
"defaults": {
"workspace": "~/.clawgo/workspace",
"model": {
"primary": "codex/gpt-5.4",
"fallbacks": [
"openai/gpt-5.4",
"anthropic/claude-sonnet-4-20250514"
]
},
"max_tokens": 8192,
"temperature": 0.7,
"max_tool_iterations": 20,
"heartbeat": {
"enabled": true,
"every_sec": 1800,
"ack_max_chars": 64,
"prompt_template": ""
},
"context_compaction": {
"enabled": true,
"mode": "summary",
"trigger_messages": 60,
"keep_recent_messages": 20,
"max_summary_chars": 6000,
"max_transcript_chars": 20000
},
"execution": {
"run_state_ttl_seconds": 1800,
"run_state_max": 500,
"tool_parallel_safe_names": ["read_file", "list_files", "find_files", "grep_files", "memory_search", "web_search", "system_info"],
"tool_max_parallel_calls": 2
},
"summary_policy": {
"marker": "## System Task Summary",
"completed_prefix": "- Completed:",
"changes_prefix": "- Changes:",
"outcome_prefix": "- Outcome:",
"completed_title": "Completed Actions",
"changes_title": "Change Summaries",
"outcomes_title": "Execution Outcomes"
}
},
"router": {
"enabled": true,
"main_agent_id": "main",
"strategy": "rules_first",
"policy": {
"intent_max_input_chars": 1200,
"max_rounds_without_user": 200
},
"rules": [
{
"agent_id": "coder",
"keywords": ["代码", "实现", "修复", "重构", "bug", "debug", "implement", "refactor"]
},
{
"agent_id": "tester",
"keywords": ["测试", "回归", "验证", "test", "regression", "verify"]
}
],
"allow_direct_agent_chat": false,
"max_hops": 6,
"default_timeout_sec": 600,
"sticky_thread_owner": true
},
"communication": {
"mode": "mediated",
"persist_threads": true,
"persist_messages": true,
"max_messages_per_thread": 100,
"dead_letter_queue": true,
"default_message_ttl_sec": 86400
},
"subagents": {
"main": {
"enabled": true,
"type": "router",
"notify_main_policy": "final_only",
"display_name": "Main Agent",
"role": "orchestrator",
"system_prompt_file": "agents/main/AGENT.md",
"memory_namespace": "main",
"accept_from": ["user", "coder", "tester"],
"can_talk_to": ["coder", "tester"],
"tools": {
"allowlist": ["sessions", "spawn", "subagent_profile", "memory_search"]
},
"runtime": {
"provider": "codex",
"temperature": 0.2,
"max_retries": 1,
"retry_backoff_ms": 1000,
"max_parallel_runs": 4
}
},
"coder": {
"enabled": true,
"type": "worker",
"notify_main_policy": "final_only",
"display_name": "Code Agent",
"role": "code",
"system_prompt_file": "agents/coder/AGENT.md",
"memory_namespace": "coder",
"accept_from": ["main", "tester"],
"can_talk_to": ["main", "tester"],
"tools": {
"allowlist": ["filesystem", "shell", "sessions"]
},
"runtime": {
"provider": "openai",
"temperature": 0.2,
"max_retries": 1,
"retry_backoff_ms": 1000,
"max_task_chars": 20000,
"max_result_chars": 12000,
"max_parallel_runs": 2
}
},
"tester": {
"enabled": true,
"type": "worker",
"notify_main_policy": "on_blocked",
"display_name": "Test Agent",
"role": "test",
"system_prompt_file": "agents/tester/AGENT.md",
"memory_namespace": "tester",
"accept_from": ["main", "coder"],
"can_talk_to": ["main", "coder"],
"tools": {
"allowlist": ["shell", "filesystem", "process_manager", "sessions"]
},
"runtime": {
"provider": "anthropic",
"temperature": 0.1,
"max_retries": 1,
"retry_backoff_ms": 1000,
"max_parallel_runs": 2
}
}
}
},
"channels": {
"inbound_message_id_dedupe_ttl_seconds": 600,
"inbound_content_dedupe_window_seconds": 12,
"outbound_dedupe_window_seconds": 12,
"weixin": {
"enabled": false,
"base_url": "https://ilinkai.weixin.qq.com",
"default_bot_id": "",
"accounts": [],
"allow_from": []
},
"telegram": {
"enabled": false,
"token": "YOUR_TELEGRAM_BOT_TOKEN",
"streaming": false,
"allow_from": ["YOUR_USER_ID"],
"allow_chats": [],
"enable_groups": true,
"require_mention_in_groups": true
},
"discord": {
"enabled": false,
"token": "YOUR_DISCORD_BOT_TOKEN",
"allow_from": []
},
"maixcam": {
"enabled": false,
"host": "0.0.0.0",
"port": 18790,
"allow_from": []
},
"whatsapp": {
"enabled": false,
"bridge_url": "ws://localhost:3001",
"allow_from": []
},
"feishu": {
"enabled": false,
"app_id": "",
"app_secret": "",
"encrypt_key": "",
"verification_token": "",
"allow_from": [],
"allow_chats": [],
"enable_groups": true,
"require_mention_in_groups": true
},
"dingtalk": {
"enabled": false,
"client_id": "YOUR_CLIENT_ID",
"client_secret": "YOUR_CLIENT_SECRET",
"allow_from": []
}
},
"models": {
"providers": {
"codex": {
"api_base": "https://api.openai.com/v1",
"models": ["gpt-5.4"],
"responses": {
"web_search_enabled": false,
"web_search_context_size": "",
"file_search_vector_store_ids": [],
"file_search_max_num_results": 0,
"include": [],
"stream_include_usage": false
},
"supports_responses_compact": true,
"auth": "oauth",
"oauth": {
"provider": "codex",
"credential_file": "~/.clawgo/auth/codex.json",
"credential_files": ["~/.clawgo/auth/codex.json"],
"callback_port": 1455,
"refresh_scan_sec": 600,
"refresh_lead_sec": 1800
},
"runtime_persist": true,
"runtime_history_file": "~/.clawgo/runtime/providers/codex.json",
"runtime_history_max": 24,
"timeout_sec": 90
},
"gemini": {
"api_base": "https://generativelanguage.googleapis.com/v1beta/openai",
"models": ["gemini-2.5-pro"],
"responses": {
"web_search_enabled": false,
"web_search_context_size": "",
"file_search_vector_store_ids": [],
"file_search_max_num_results": 0,
"include": [],
"stream_include_usage": false
},
"supports_responses_compact": true,
"auth": "oauth",
"oauth": {
"provider": "gemini",
"client_secret": "",
"credential_files": ["~/.clawgo/auth/gemini.json"],
"callback_port": 8085,
"refresh_scan_sec": 600,
"refresh_lead_sec": 1800
},
"runtime_persist": true,
"runtime_history_file": "~/.clawgo/runtime/providers/gemini.json",
"runtime_history_max": 24,
"timeout_sec": 90
},
"openai": {
"api_key": "sk-your-openai-api-key",
"api_base": "https://api.openai.com/v1",
"models": ["gpt-5.4", "gpt-5.4-mini"],
"responses": {
"web_search_enabled": false,
"web_search_context_size": "",
"file_search_vector_store_ids": [],
"file_search_max_num_results": 0,
"include": [],
"stream_include_usage": false
},
"supports_responses_compact": true,
"timeout_sec": 90
},
"anthropic": {
"api_base": "https://api.anthropic.com",
"models": ["claude-sonnet-4-20250514"],
"responses": {
"web_search_enabled": false,
"web_search_context_size": "",
"file_search_vector_store_ids": [],
"file_search_max_num_results": 0,
"include": [],
"stream_include_usage": false
},
"supports_responses_compact": true,
"auth": "oauth",
"oauth": {
"provider": "claude",
"credential_files": ["~/.clawgo/auth/claude.json"],
"callback_port": 1455,
"refresh_scan_sec": 600,
"refresh_lead_sec": 1800
},
"runtime_persist": true,
"runtime_history_file": "~/.clawgo/runtime/providers/anthropic.json",
"runtime_history_max": 24,
"timeout_sec": 90
},
"qwen": {
"api_base": "https://dashscope.aliyuncs.com/compatible-mode/v1",
"models": ["qwen-max"],
"responses": {
"web_search_enabled": false,
"web_search_context_size": "",
"file_search_vector_store_ids": [],
"file_search_max_num_results": 0,
"include": [],
"stream_include_usage": false
},
"supports_responses_compact": true,
"auth": "oauth",
"oauth": {
"provider": "qwen",
"credential_files": ["~/.clawgo/auth/qwen.json"],
"refresh_scan_sec": 600,
"refresh_lead_sec": 1800
},
"runtime_persist": true,
"runtime_history_file": "~/.clawgo/runtime/providers/qwen.json",
"runtime_history_max": 24,
"timeout_sec": 90
},
"kimi": {
"api_base": "https://api.moonshot.cn/v1",
"models": ["kimi-k2-0711-preview"],
"responses": {
"web_search_enabled": false,
"web_search_context_size": "",
"file_search_vector_store_ids": [],
"file_search_max_num_results": 0,
"include": [],
"stream_include_usage": false
},
"supports_responses_compact": true,
"auth": "oauth",
"oauth": {
"provider": "kimi",
"credential_files": ["~/.clawgo/auth/kimi.json"],
"refresh_scan_sec": 600,
"refresh_lead_sec": 1800
},
"runtime_persist": true,
"runtime_history_file": "~/.clawgo/runtime/providers/kimi.json",
"runtime_history_max": 24,
"timeout_sec": 90
}
}
},
"tools": {
"filesystem": {},
"shell": {
"enabled": true,
"working_dir": "",
"timeout": 60000000000,
"auto_install_missing": false,
"sandbox": {
"enabled": false,
"image": "alpine:3.20"
}
},
"web": {
"search": {
"api_key": "YOUR_BRAVE_API_KEY",
"max_results": 5
}
},
"mcp": {
"enabled": false,
"request_timeout_sec": 20,
"servers": {
"context7": {
"enabled": false,
"transport": "stdio",
"command": "npx",
"args": ["-y", "@upstash/context7-mcp"],
"env": {},
"permission": "workspace",
"working_dir": "tools/context7",
"description": "Example MCP server",
"package": "@upstash/context7-mcp"
}
}
}
},
"gateway": {
"host": "0.0.0.0",
"port": 18790,
"token": ""
},
"cron": {
"min_sleep_sec": 1,
"max_sleep_sec": 30,
"retry_backoff_base_sec": 30,
"retry_backoff_max_sec": 1800,
"max_consecutive_failure_retries": 5,
"max_workers": 4
},
"logging": {
"enabled": true,
"dir": "~/.clawgo/logs",
"filename": "clawgo.log",
"max_size_mb": 20,
"retention_days": 3
},
"sentinel": {
"enabled": true,
"interval_sec": 60,
"auto_heal": true,
"notify_channel": "",
"notify_chat_id": "",
"webhook_url": ""
}
}