mirror of
https://github.com/sipeed/picoclaw.git
synced 2026-05-25 16:00:35 +00:00
794eb04f32
* add gemini web search provider * fix(web): prefer free providers before Gemini in auto mode * fix(web): expose gemini api key and model settings * fix(web): prefer configured providers before Gemini in auto mode * fix(web): satisfy gemini lint checks * fix(web): address gemini provider review feedback * test(web): align auto-provider expectations * fix(web): let gemini ignore search range
517 lines
13 KiB
JSON
517 lines
13 KiB
JSON
{
|
|
"agents": {
|
|
"defaults": {
|
|
"workspace": "~/.picoclaw/workspace",
|
|
"restrict_to_workspace": true,
|
|
"model_name": "gpt-5.4",
|
|
"max_tokens": 8192,
|
|
"context_window": 131072,
|
|
"temperature": 0.7,
|
|
"max_tool_iterations": 20,
|
|
"summarize_message_threshold": 20,
|
|
"summarize_token_percent": 75,
|
|
"split_on_marker": false,
|
|
"max_llm_retries": 2,
|
|
"llm_retry_backoff_secs": 2,
|
|
"tool_feedback": {
|
|
"enabled": false,
|
|
"max_args_length": 300,
|
|
"separate_messages": false
|
|
}
|
|
}
|
|
},
|
|
"evolution": {
|
|
"enabled": false,
|
|
"mode": "observe",
|
|
"state_dir": "",
|
|
"min_task_count": 2,
|
|
"min_success_ratio": 0.7,
|
|
"cold_path_trigger": "after_turn",
|
|
"cold_path_times": []
|
|
},
|
|
"model_list": [
|
|
{
|
|
"model_name": "gpt-5.4",
|
|
"model": "openai/gpt-5.4",
|
|
"api_key": "sk-your-openai-key",
|
|
"api_base": "https://api.openai.com/v1"
|
|
},
|
|
{
|
|
"model_name": "claude-sonnet-4.6",
|
|
"model": "anthropic/claude-sonnet-4.6",
|
|
"api_key": "sk-ant-your-key",
|
|
"api_base": "https://api.anthropic.com/v1",
|
|
"thinking_level": "high"
|
|
},
|
|
{
|
|
"_comment": "Anthropic Messages API - use native format for direct Anthropic API access",
|
|
"model_name": "claude-opus-4-6",
|
|
"model": "anthropic-messages/claude-opus-4-6",
|
|
"api_key": "sk-ant-your-key",
|
|
"api_base": "https://api.anthropic.com"
|
|
},
|
|
{
|
|
"model_name": "gemini",
|
|
"_comment": "Optional: set \"tool_schema_transform\": \"simple\" for providers that reject complex tool JSON Schema.",
|
|
"model": "antigravity/gemini-2.0-flash",
|
|
"auth_method": "oauth"
|
|
},
|
|
{
|
|
"model_name": "deepseek",
|
|
"model": "deepseek/deepseek-chat",
|
|
"api_key": "sk-your-deepseek-key"
|
|
},
|
|
{
|
|
"model_name": "venice-uncensored",
|
|
"model": "venice/venice-uncensored",
|
|
"api_key": "your-venice-api-key"
|
|
},
|
|
{
|
|
"model_name": "lmstudio-local",
|
|
"model": "lmstudio/openai/gpt-oss-20b"
|
|
},
|
|
{
|
|
"model_name": "longcat",
|
|
"model": "longcat/LongCat-Flash-Thinking",
|
|
"api_key": "your-longcat-api-key"
|
|
},
|
|
{
|
|
"model_name": "modelscope-qwen",
|
|
"model": "modelscope/Qwen/Qwen3-235B-A22B-Instruct-2507",
|
|
"api_key": "your-modelscope-access-token",
|
|
"api_base": "https://api-inference.modelscope.cn/v1"
|
|
},
|
|
{
|
|
"model_name": "azure-gpt5",
|
|
"model": "azure/my-gpt5-deployment",
|
|
"api_key": "your-azure-api-key",
|
|
"api_base": "https://your-resource.openai.azure.com"
|
|
},
|
|
{
|
|
"model_name": "loadbalanced-gpt-5.4",
|
|
"model": "openai/gpt-5.4",
|
|
"api_key": "sk-key1",
|
|
"api_base": "https://api1.example.com/v1"
|
|
},
|
|
{
|
|
"model_name": "loadbalanced-gpt-5.4",
|
|
"model": "openai/gpt-5.4",
|
|
"api_key": "sk-key2",
|
|
"api_base": "https://api2.example.com/v1"
|
|
}
|
|
],
|
|
"channels": {
|
|
"telegram": {
|
|
"enabled": false,
|
|
"token": "YOUR_TELEGRAM_BOT_TOKEN",
|
|
"base_url": "",
|
|
"proxy": "",
|
|
"allow_from": ["YOUR_USER_ID"],
|
|
"use_markdown_v2": false,
|
|
"reasoning_channel_id": "",
|
|
"streaming": {
|
|
"enabled": true
|
|
}
|
|
},
|
|
"discord": {
|
|
"enabled": false,
|
|
"token": "YOUR_DISCORD_BOT_TOKEN",
|
|
"proxy": "",
|
|
"allow_from": [],
|
|
"group_trigger": {
|
|
"mention_only": false
|
|
},
|
|
"reasoning_channel_id": ""
|
|
},
|
|
"qq": {
|
|
"enabled": false,
|
|
"app_id": "YOUR_QQ_APP_ID",
|
|
"app_secret": "YOUR_QQ_APP_SECRET",
|
|
"allow_from": [],
|
|
"reasoning_channel_id": ""
|
|
},
|
|
"maixcam": {
|
|
"enabled": false,
|
|
"host": "0.0.0.0",
|
|
"port": 18790,
|
|
"allow_from": [],
|
|
"reasoning_channel_id": ""
|
|
},
|
|
"whatsapp": {
|
|
"enabled": false,
|
|
"bridge_url": "ws://localhost:3001",
|
|
"use_native": false,
|
|
"session_store_path": "",
|
|
"allow_from": [],
|
|
"reasoning_channel_id": ""
|
|
},
|
|
"feishu": {
|
|
"enabled": false,
|
|
"app_id": "",
|
|
"app_secret": "",
|
|
"encrypt_key": "",
|
|
"verification_token": "",
|
|
"allow_from": [],
|
|
"placeholder": {
|
|
"enabled": true,
|
|
"text": ["Thinking...", "Processing...", "Typing..."]
|
|
},
|
|
"reasoning_channel_id": "",
|
|
"random_reaction_emoji": [],
|
|
"is_lark": false
|
|
},
|
|
"dingtalk": {
|
|
"enabled": false,
|
|
"client_id": "YOUR_CLIENT_ID",
|
|
"client_secret": "YOUR_CLIENT_SECRET",
|
|
"allow_from": [],
|
|
"reasoning_channel_id": ""
|
|
},
|
|
"slack": {
|
|
"enabled": false,
|
|
"bot_token": "xoxb-YOUR-BOT-TOKEN",
|
|
"app_token": "xapp-YOUR-APP-TOKEN",
|
|
"allow_from": [],
|
|
"reasoning_channel_id": ""
|
|
},
|
|
"matrix": {
|
|
"enabled": false,
|
|
"homeserver": "https://matrix.org",
|
|
"user_id": "@your-bot:matrix.org",
|
|
"access_token": "YOUR_MATRIX_ACCESS_TOKEN",
|
|
"device_id": "",
|
|
"join_on_invite": true,
|
|
"allow_from": [],
|
|
"group_trigger": {
|
|
"mention_only": true
|
|
},
|
|
"placeholder": {
|
|
"enabled": true,
|
|
"text": ["Thinking...", "Processing...", "Typing..."]
|
|
},
|
|
"reasoning_channel_id": "",
|
|
"crypto_database_path": "",
|
|
"crypto_passphrase": "YOUR_MATRIX_CRYPTO_PICKLE_KEY"
|
|
},
|
|
"line": {
|
|
"enabled": false,
|
|
"channel_secret": "YOUR_LINE_CHANNEL_SECRET",
|
|
"channel_access_token": "YOUR_LINE_CHANNEL_ACCESS_TOKEN",
|
|
"webhook_path": "/webhook/line",
|
|
"allow_from": [],
|
|
"reasoning_channel_id": ""
|
|
},
|
|
"onebot": {
|
|
"enabled": false,
|
|
"ws_url": "ws://127.0.0.1:3001",
|
|
"access_token": "",
|
|
"reconnect_interval": 5,
|
|
"group_trigger_prefix": [],
|
|
"allow_from": [],
|
|
"reasoning_channel_id": ""
|
|
},
|
|
"wecom": {
|
|
"_comment": "WeCom AI Bot over WebSocket.",
|
|
"enabled": false,
|
|
"bot_id": "YOUR_BOT_ID",
|
|
"secret": "YOUR_SECRET",
|
|
"websocket_url": "wss://openws.work.weixin.qq.com",
|
|
"send_thinking_message": true,
|
|
"allow_from": [],
|
|
"reasoning_channel_id": ""
|
|
},
|
|
"pico": {
|
|
"enabled": false,
|
|
"token": "YOUR_PICO_TOKEN",
|
|
"allow_token_query": false,
|
|
"allow_origins": [],
|
|
"ping_interval": 30,
|
|
"read_timeout": 60,
|
|
"max_connections": 100,
|
|
"allow_from": []
|
|
},
|
|
"pico_client": {
|
|
"enabled": false,
|
|
"url": "wss://remote-pico-server/pico/ws",
|
|
"token": "YOUR_PICO_TOKEN",
|
|
"session_id": "",
|
|
"ping_interval": 30,
|
|
"read_timeout": 60,
|
|
"allow_from": []
|
|
},
|
|
"irc": {
|
|
"enabled": false,
|
|
"server": "irc.libera.chat:6697",
|
|
"tls": true,
|
|
"nick": "mybot",
|
|
"user": "",
|
|
"real_name": "",
|
|
"password": "",
|
|
"nickserv_password": "",
|
|
"sasl_user": "",
|
|
"sasl_password": "",
|
|
"channels": ["#mychannel"],
|
|
"request_caps": ["server-time", "message-tags"],
|
|
"allow_from": [],
|
|
"group_trigger": {
|
|
"mention_only": true
|
|
},
|
|
"typing": {
|
|
"enabled": false
|
|
},
|
|
"reasoning_channel_id": ""
|
|
}
|
|
},
|
|
"tools": {
|
|
"allow_read_paths": null,
|
|
"allow_write_paths": null,
|
|
"web": {
|
|
"enabled": true,
|
|
"prefer_native": true,
|
|
"fetch_limit_bytes": 10485760,
|
|
"format": "plaintext",
|
|
"brave": {
|
|
"enabled": false,
|
|
"api_key": "YOUR_BRAVE_API_KEY",
|
|
"api_keys": ["YOUR_BRAVE_API_KEY"],
|
|
"max_results": 5
|
|
},
|
|
"tavily": {
|
|
"enabled": false,
|
|
"api_key": "",
|
|
"base_url": "",
|
|
"max_results": 0
|
|
},
|
|
"provider": "auto",
|
|
"sogou": {
|
|
"enabled": true,
|
|
"max_results": 5
|
|
},
|
|
"duckduckgo": {
|
|
"enabled": false,
|
|
"max_results": 5
|
|
},
|
|
"gemini": {
|
|
"enabled": false,
|
|
"api_key": "",
|
|
"model": "gemini-2.5-flash",
|
|
"max_results": 5
|
|
},
|
|
"perplexity": {
|
|
"enabled": false,
|
|
"api_key": "pplx-xxx",
|
|
"api_keys": ["pplx-xxx"],
|
|
"max_results": 5
|
|
},
|
|
"searxng": {
|
|
"enabled": false,
|
|
"base_url": "http://localhost:8888",
|
|
"max_results": 5
|
|
},
|
|
"glm_search": {
|
|
"enabled": false,
|
|
"api_key": "",
|
|
"base_url": "https://open.bigmodel.cn/api/paas/v4/web_search",
|
|
"search_engine": "search_std",
|
|
"max_results": 5
|
|
},
|
|
"baidu_search": {
|
|
"enabled": false,
|
|
"api_key": "",
|
|
"base_url": "https://qianfan.baidubce.com/v2/ai_search/web_search",
|
|
"max_results": 10
|
|
},
|
|
"fetch_limit_bytes": 10485760,
|
|
"private_host_whitelist": []
|
|
},
|
|
"cron": {
|
|
"enabled": true,
|
|
"exec_timeout_minutes": 5
|
|
},
|
|
"mcp": {
|
|
"enabled": false,
|
|
"discovery": {
|
|
"enabled": false,
|
|
"ttl": 5,
|
|
"max_search_results": 5,
|
|
"use_bm25": true,
|
|
"use_regex": false
|
|
},
|
|
"servers": {
|
|
"context7": {
|
|
"enabled": false,
|
|
"type": "http",
|
|
"url": "https://mcp.context7.com/mcp",
|
|
"headers": {
|
|
"CONTEXT7_API_KEY": "ctx7sk-xx"
|
|
}
|
|
},
|
|
"filesystem": {
|
|
"enabled": false,
|
|
"command": "npx",
|
|
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"]
|
|
},
|
|
"github": {
|
|
"enabled": false,
|
|
"command": "npx",
|
|
"args": ["-y", "@modelcontextprotocol/server-github"],
|
|
"env": {
|
|
"GITHUB_PERSONAL_ACCESS_TOKEN": "YOUR_GITHUB_TOKEN"
|
|
}
|
|
},
|
|
"brave-search": {
|
|
"enabled": false,
|
|
"command": "npx",
|
|
"args": ["-y", "@modelcontextprotocol/server-brave-search"],
|
|
"env": {
|
|
"BRAVE_API_KEY": "YOUR_BRAVE_API_KEY"
|
|
}
|
|
},
|
|
"postgres": {
|
|
"enabled": false,
|
|
"command": "npx",
|
|
"args": [
|
|
"-y",
|
|
"@modelcontextprotocol/server-postgres",
|
|
"postgresql://user:password@localhost/dbname"
|
|
]
|
|
},
|
|
"slack": {
|
|
"enabled": false,
|
|
"command": "npx",
|
|
"args": ["-y", "@modelcontextprotocol/server-slack"],
|
|
"env": {
|
|
"SLACK_BOT_TOKEN": "YOUR_SLACK_BOT_TOKEN",
|
|
"SLACK_TEAM_ID": "YOUR_SLACK_TEAM_ID"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"exec": {
|
|
"enabled": true,
|
|
"enable_deny_patterns": true,
|
|
"custom_deny_patterns": null,
|
|
"custom_allow_patterns": null
|
|
},
|
|
"skills": {
|
|
"enabled": true,
|
|
"registries": {
|
|
"clawhub": {
|
|
"enabled": true,
|
|
"base_url": "https://clawhub.ai",
|
|
"auth_token": "",
|
|
"search_path": "",
|
|
"skills_path": "",
|
|
"download_path": "",
|
|
"timeout": 0,
|
|
"max_zip_size": 0,
|
|
"max_response_size": 0
|
|
},
|
|
"github": {
|
|
"enabled": true,
|
|
"base_url": "https://github.com",
|
|
"auth_token": "",
|
|
"proxy": "http://127.0.0.1:7891"
|
|
}
|
|
},
|
|
"github": {
|
|
"base_url": "https://github.com",
|
|
"proxy": "http://127.0.0.1:7891",
|
|
"token": ""
|
|
},
|
|
"max_concurrent_searches": 2,
|
|
"search_cache": {
|
|
"max_size": 50,
|
|
"ttl_seconds": 300
|
|
}
|
|
},
|
|
"media_cleanup": {
|
|
"enabled": true,
|
|
"max_age_minutes": 30,
|
|
"interval_minutes": 5
|
|
},
|
|
"append_file": {
|
|
"enabled": true
|
|
},
|
|
"edit_file": {
|
|
"enabled": true
|
|
},
|
|
"find_skills": {
|
|
"enabled": true
|
|
},
|
|
"i2c": {
|
|
"enabled": false
|
|
},
|
|
"install_skill": {
|
|
"enabled": true
|
|
},
|
|
"list_dir": {
|
|
"enabled": true
|
|
},
|
|
"message": {
|
|
"enabled": true
|
|
},
|
|
"read_file": {
|
|
"enabled": true,
|
|
"mode": "bytes"
|
|
},
|
|
"serial": {
|
|
"enabled": false
|
|
},
|
|
"send_tts": {
|
|
"enabled": false
|
|
},
|
|
"spawn": {
|
|
"enabled": true
|
|
},
|
|
"spi": {
|
|
"enabled": false
|
|
},
|
|
"subagent": {
|
|
"enabled": true
|
|
},
|
|
"web_fetch": {
|
|
"enabled": true
|
|
},
|
|
"write_file": {
|
|
"enabled": true
|
|
}
|
|
},
|
|
"heartbeat": {
|
|
"enabled": true,
|
|
"interval": 30
|
|
},
|
|
"devices": {
|
|
"enabled": false,
|
|
"monitor_usb": true
|
|
},
|
|
"voice": {
|
|
"model_name": "",
|
|
"echo_transcription": false
|
|
},
|
|
"hooks": {
|
|
"enabled": true,
|
|
"defaults": {
|
|
"observer_timeout_ms": 500,
|
|
"interceptor_timeout_ms": 5000,
|
|
"approval_timeout_ms": 60000
|
|
}
|
|
},
|
|
"events": {
|
|
"logging": {
|
|
"enabled": true,
|
|
"include": ["agent.*"],
|
|
"exclude": [],
|
|
"min_severity": "info",
|
|
"include_payload": false
|
|
}
|
|
},
|
|
"gateway": {
|
|
"_comment": "Default log level is set to 'fatal'. Other available options are 'debug', 'info', 'warn' and 'error'.",
|
|
"host": "localhost",
|
|
"port": 18790,
|
|
"hot_reload": false,
|
|
"log_level": "fatal"
|
|
}
|
|
}
|