mirror of
https://gitee.com/mateos/mateclaw.git
synced 2026-09-13 03:13:41 +08:00
1971 lines
123 KiB
SQL
1971 lines
123 KiB
SQL
-- MateClaw 初始数据 - 中文版(H2 MERGE INTO 语法,幂等插入)
|
||
|
||
-- 默认管理员(密码:admin123,BCrypt加密)
|
||
MERGE INTO mate_user (id, username, password, nickname, role, enabled, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1, 'admin', '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', 'MateClaw Admin', 'admin', TRUE, NOW(), NOW(), 0);
|
||
|
||
-- 默认数字员工:通用助手(ReAct 模式)
|
||
MERGE INTO mate_agent (id, name, description, agent_type, system_prompt, model_name, max_iterations, enabled, icon, tags, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000000001, '通用助手', '日常问答、数据分析、工具调用都能搞定的全能助手', 'react',
|
||
'你是 MateClaw 的通用助手。你可以帮助用户回答问题、分析数据、调用工具完成任务。请用中文回复,保持专业、友好的态度。',
|
||
NULL, 100, TRUE, 'pi:robot-face-happy', 'default,assistant', NOW(), NOW(), 0);
|
||
|
||
-- 默认数字员工:任务规划师(Plan-Execute 模式)
|
||
MERGE INTO mate_agent (id, name, description, agent_type, system_prompt, model_name, max_iterations, enabled, icon, tags, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000000002, '任务规划师', '把复杂目标拆成可执行步骤,逐步推进直到完成', 'plan_execute',
|
||
'你是一位专业的任务规划师。你擅长将复杂目标分解为可执行的步骤,并逐步完成。请用中文回复。',
|
||
NULL, 100, TRUE, 'pi:clipboard-note', 'planning,task', NOW(), NOW(), 0);
|
||
|
||
-- 默认数字员工:推理分析师(显式推理循环 + 工具调用)
|
||
MERGE INTO mate_agent (id, name, description, agent_type, system_prompt, model_name, max_iterations, enabled, icon, tags, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000000003, '推理分析师', '分步思考、推理过程清晰可见,适合需要"想清楚再回答"的问题', 'react',
|
||
'你是一位推理分析师,善于深度推理。面对问题时,请先分步思考、清晰呈现推理过程,再调用工具或给出答案。请用中文回复,保持专业、友好的态度。',
|
||
NULL, 100, TRUE, 'pi:cpu', 'react,reasoning,tools', NOW(), NOW(), 0);
|
||
|
||
-- ==================== 本地模型 Provider(优先展示) ====================
|
||
|
||
MERGE INTO mate_model_provider (provider_id, name, api_key_prefix, chat_model, api_key, base_url, generate_kwargs, is_custom, is_local, support_model_discovery, support_connection_check, freeze_url, require_api_key, create_time, update_time)
|
||
KEY (provider_id)
|
||
VALUES ('ollama', 'Ollama', '', 'OpenAIChatModel', 'ollama', 'http://127.0.0.1:11434', '{"max_tokens":null}', FALSE, TRUE, TRUE, TRUE, FALSE, FALSE, NOW(), NOW());
|
||
|
||
MERGE INTO mate_model_provider (provider_id, name, api_key_prefix, chat_model, api_key, base_url, generate_kwargs, is_custom, is_local, support_model_discovery, support_connection_check, freeze_url, require_api_key, create_time, update_time)
|
||
KEY (provider_id)
|
||
VALUES ('lmstudio', 'LM Studio', '', 'OpenAIChatModel', '', 'http://localhost:1234/v1', '{"max_tokens":null}', FALSE, TRUE, TRUE, TRUE, FALSE, FALSE, NOW(), NOW());
|
||
|
||
MERGE INTO mate_model_provider (provider_id, name, api_key_prefix, chat_model, api_key, base_url, generate_kwargs, is_custom, is_local, support_model_discovery, support_connection_check, freeze_url, require_api_key, create_time, update_time)
|
||
KEY (provider_id)
|
||
VALUES ('llamacpp', 'llama.cpp (Local)', '', 'OpenAIChatModel', '', '', '{}', FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, NOW(), NOW());
|
||
|
||
MERGE INTO mate_model_provider (provider_id, name, api_key_prefix, chat_model, api_key, base_url, generate_kwargs, is_custom, is_local, support_model_discovery, support_connection_check, freeze_url, require_api_key, create_time, update_time)
|
||
KEY (provider_id)
|
||
VALUES ('mlx', 'MLX (Local, Apple Silicon)', '', 'OpenAIChatModel', '', '', '{}', FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, NOW(), NOW());
|
||
|
||
-- ==================== 云端模型 Provider ====================
|
||
|
||
MERGE INTO mate_model_provider (provider_id, name, api_key_prefix, chat_model, api_key, base_url, generate_kwargs, is_custom, is_local, support_model_discovery, support_connection_check, freeze_url, require_api_key, create_time, update_time)
|
||
KEY (provider_id)
|
||
VALUES ('dashscope', 'DashScope', 'sk-', 'DashScopeChatModel', '', '', '{}', FALSE, FALSE, TRUE, TRUE, FALSE, TRUE, NOW(), NOW());
|
||
|
||
-- DashScope OpenAI 兼容端点:与 dashscope provider 共用同一把 sk- key,但走
|
||
-- compatible-mode/v1 路径。带点号版本号的 qwen 系列(qwen3.5-*, qwen3.6-*)只在
|
||
-- 这里能调通——native 端点会返回 400 InvalidParameter。
|
||
MERGE INTO mate_model_provider (provider_id, name, api_key_prefix, chat_model, api_key, base_url, generate_kwargs, is_custom, is_local, support_model_discovery, support_connection_check, freeze_url, require_api_key, create_time, update_time)
|
||
KEY (provider_id)
|
||
VALUES ('dashscope-compat', 'DashScope (兼容模式)', 'sk-', 'OpenAIChatModel', '', 'https://dashscope.aliyuncs.com/compatible-mode/v1', '{}', FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, NOW(), NOW());
|
||
|
||
MERGE INTO mate_model_provider (provider_id, name, api_key_prefix, chat_model, api_key, base_url, generate_kwargs, is_custom, is_local, support_model_discovery, support_connection_check, freeze_url, require_api_key, create_time, update_time)
|
||
KEY (provider_id)
|
||
VALUES ('modelscope', 'ModelScope', 'ms', 'OpenAIChatModel', '', 'https://api-inference.modelscope.cn/v1', '{}', FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, NOW(), NOW());
|
||
|
||
MERGE INTO mate_model_provider (provider_id, name, api_key_prefix, chat_model, api_key, base_url, generate_kwargs, is_custom, is_local, support_model_discovery, support_connection_check, freeze_url, require_api_key, create_time, update_time)
|
||
KEY (provider_id)
|
||
VALUES ('aliyun-codingplan', 'Aliyun Coding Plan', 'sk-sp', 'OpenAIChatModel', '', 'https://coding.dashscope.aliyuncs.com/v1', '{}', FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, NOW(), NOW());
|
||
|
||
MERGE INTO mate_model_provider (provider_id, name, api_key_prefix, chat_model, api_key, base_url, generate_kwargs, is_custom, is_local, support_model_discovery, support_connection_check, freeze_url, require_api_key, create_time, update_time)
|
||
KEY (provider_id)
|
||
VALUES ('aliyun-codingplan-intl', 'Aliyun Coding Plan (International)', 'sk-sp', 'OpenAIChatModel', '', 'https://coding-intl.dashscope.aliyuncs.com/v1', '{}', FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, NOW(), NOW());
|
||
|
||
MERGE INTO mate_model_provider (provider_id, name, api_key_prefix, chat_model, api_key, base_url, generate_kwargs, is_custom, is_local, support_model_discovery, support_connection_check, freeze_url, require_api_key, create_time, update_time)
|
||
KEY (provider_id)
|
||
VALUES ('openai', 'OpenAI', 'sk-', 'OpenAIChatModel', '', 'https://api.openai.com/v1', '{}', FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, NOW(), NOW());
|
||
|
||
MERGE INTO mate_model_provider (provider_id, name, api_key_prefix, chat_model, api_key, base_url, generate_kwargs, is_custom, is_local, support_model_discovery, support_connection_check, freeze_url, require_api_key, create_time, update_time)
|
||
KEY (provider_id)
|
||
VALUES ('azure-openai', 'Azure OpenAI', '', 'OpenAIChatModel', '', '', '{}', FALSE, FALSE, FALSE, TRUE, FALSE, TRUE, NOW(), NOW());
|
||
|
||
MERGE INTO mate_model_provider (provider_id, name, api_key_prefix, chat_model, api_key, base_url, generate_kwargs, is_custom, is_local, support_model_discovery, support_connection_check, freeze_url, require_api_key, create_time, update_time)
|
||
KEY (provider_id)
|
||
VALUES ('minimax', 'MiniMax (International)', '', 'AnthropicChatModel', '', 'https://api.minimax.io/anthropic', '{}', FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, NOW(), NOW());
|
||
|
||
MERGE INTO mate_model_provider (provider_id, name, api_key_prefix, chat_model, api_key, base_url, generate_kwargs, is_custom, is_local, support_model_discovery, support_connection_check, freeze_url, require_api_key, create_time, update_time)
|
||
KEY (provider_id)
|
||
VALUES ('minimax-cn', 'MiniMax (China)', '', 'AnthropicChatModel', '', 'https://api.minimaxi.com/anthropic', '{}', FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, NOW(), NOW());
|
||
|
||
MERGE INTO mate_model_provider (provider_id, name, api_key_prefix, chat_model, api_key, base_url, generate_kwargs, is_custom, is_local, support_model_discovery, support_connection_check, freeze_url, require_api_key, create_time, update_time)
|
||
KEY (provider_id)
|
||
VALUES ('kimi-cn', 'Kimi (China)', '', 'OpenAIChatModel', '', 'https://api.moonshot.cn/v1', '{}', FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, NOW(), NOW());
|
||
|
||
MERGE INTO mate_model_provider (provider_id, name, api_key_prefix, chat_model, api_key, base_url, generate_kwargs, is_custom, is_local, support_model_discovery, support_connection_check, freeze_url, require_api_key, create_time, update_time)
|
||
KEY (provider_id)
|
||
VALUES ('kimi-intl', 'Kimi (International)', '', 'OpenAIChatModel', '', 'https://api.moonshot.ai/v1', '{}', FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, NOW(), NOW());
|
||
|
||
MERGE INTO mate_model_provider (provider_id, name, api_key_prefix, chat_model, api_key, base_url, generate_kwargs, is_custom, is_local, support_model_discovery, support_connection_check, freeze_url, require_api_key, create_time, update_time)
|
||
KEY (provider_id)
|
||
VALUES ('kimi-code', 'Kimi Code', '', 'OpenAIChatModel', '', 'https://api.kimi.com/coding/v1', '{"headers":{"User-Agent":"RooCode/1.0","HTTP-Referer":"https://github.com/RooVetGit/Roo-Cline","X-Title":"Roo Code"}}', FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, NOW(), NOW());
|
||
|
||
MERGE INTO mate_model_provider (provider_id, name, api_key_prefix, chat_model, api_key, base_url, generate_kwargs, is_custom, is_local, support_model_discovery, support_connection_check, freeze_url, require_api_key, create_time, update_time)
|
||
KEY (provider_id)
|
||
VALUES ('deepseek', 'DeepSeek', 'sk-', 'OpenAIChatModel', '', 'https://api.deepseek.com', '{}', FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, NOW(), NOW());
|
||
|
||
MERGE INTO mate_model_provider (provider_id, name, api_key_prefix, chat_model, api_key, base_url, generate_kwargs, is_custom, is_local, support_model_discovery, support_connection_check, freeze_url, require_api_key, create_time, update_time)
|
||
KEY (provider_id)
|
||
VALUES ('anthropic', 'Anthropic', 'sk-ant-', 'AnthropicChatModel', '', 'https://api.anthropic.com', '{}', FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, NOW(), NOW());
|
||
|
||
MERGE INTO mate_model_provider (provider_id, name, api_key_prefix, chat_model, api_key, base_url, generate_kwargs, is_custom, is_local, support_model_discovery, support_connection_check, freeze_url, require_api_key, create_time, update_time)
|
||
KEY (provider_id)
|
||
VALUES ('gemini', 'Google Gemini', '', 'GeminiChatModel', '', 'https://generativelanguage.googleapis.com', '{}', FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, NOW(), NOW());
|
||
|
||
MERGE INTO mate_model_provider (provider_id, name, api_key_prefix, chat_model, api_key, base_url, generate_kwargs, is_custom, is_local, support_model_discovery, support_connection_check, freeze_url, require_api_key, create_time, update_time)
|
||
KEY (provider_id)
|
||
VALUES ('xai', 'xAI (Grok)', 'xai-', 'OpenAIChatModel', '', 'https://api.x.ai/v1', '{}', FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, NOW(), NOW());
|
||
|
||
MERGE INTO mate_model_provider (provider_id, name, api_key_prefix, chat_model, api_key, base_url, generate_kwargs, is_custom, is_local, support_model_discovery, support_connection_check, freeze_url, require_api_key, create_time, update_time)
|
||
KEY (provider_id)
|
||
VALUES ('openrouter', 'OpenRouter', 'sk-or-', 'OpenAIChatModel', '', 'https://openrouter.ai/api/v1', '{}', FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, NOW(), NOW());
|
||
|
||
MERGE INTO mate_model_provider (provider_id, name, api_key_prefix, chat_model, api_key, base_url, generate_kwargs, is_custom, is_local, support_model_discovery, support_connection_check, freeze_url, require_api_key, create_time, update_time)
|
||
KEY (provider_id)
|
||
VALUES ('zhipu-cn', 'Zhipu AI (China)', '', 'OpenAIChatModel', '', 'https://open.bigmodel.cn/api/paas/v4', '{"completionsPath":"/chat/completions"}', FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, NOW(), NOW());
|
||
|
||
MERGE INTO mate_model_provider (provider_id, name, api_key_prefix, chat_model, api_key, base_url, generate_kwargs, is_custom, is_local, support_model_discovery, support_connection_check, freeze_url, require_api_key, create_time, update_time)
|
||
KEY (provider_id)
|
||
VALUES ('zhipu-intl', 'Zhipu AI (International)', '', 'OpenAIChatModel', '', 'https://api.z.ai/api/paas/v4', '{"completionsPath":"/chat/completions"}', FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, NOW(), NOW());
|
||
|
||
MERGE INTO mate_model_provider (provider_id, name, api_key_prefix, chat_model, api_key, base_url, generate_kwargs, is_custom, is_local, support_model_discovery, support_connection_check, freeze_url, require_api_key, create_time, update_time)
|
||
KEY (provider_id)
|
||
VALUES ('volcengine', 'Volcano Engine (火山引擎)', '', 'OpenAIChatModel', '', 'https://ark.cn-beijing.volces.com/api/v3', '{}', FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, NOW(), NOW());
|
||
|
||
MERGE INTO mate_model_provider (provider_id, name, api_key_prefix, chat_model, api_key, base_url, generate_kwargs, is_custom, is_local, support_model_discovery, support_connection_check, freeze_url, require_api_key, create_time, update_time)
|
||
KEY (provider_id)
|
||
VALUES ('volcengine-plan', 'Volcano Engine Coding Plan (火山方舟代码计划)', '', 'OpenAIChatModel', '', 'https://ark.cn-beijing.volces.com/api/coding/v3', '{}', FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, NOW(), NOW());
|
||
|
||
MERGE INTO mate_model_provider (provider_id, name, api_key_prefix, chat_model, api_key, base_url, generate_kwargs, is_custom, is_local, support_model_discovery, support_connection_check, freeze_url, require_api_key, create_time, update_time)
|
||
KEY (provider_id)
|
||
VALUES ('volcengine-agent-plan', 'Volcano Engine Agent Plan (火山方舟 Agent Plan)', '', 'OpenAIChatModel', '', 'https://ark.cn-beijing.volces.com/api/plan/v3', '{}', FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, NOW(), NOW());
|
||
|
||
MERGE INTO mate_model_provider (provider_id, name, api_key_prefix, chat_model, api_key, base_url, generate_kwargs, is_custom, is_local, support_model_discovery, support_connection_check, freeze_url, require_api_key, create_time, update_time)
|
||
KEY (provider_id)
|
||
VALUES ('zhipu-cn-codingplan', 'Zhipu Coding Plan (智谱编码套餐)', '', 'OpenAIChatModel', '', 'https://open.bigmodel.cn/api/coding/paas/v4', '{"completionsPath":"/chat/completions"}', FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, NOW(), NOW());
|
||
|
||
MERGE INTO mate_model_provider (provider_id, name, api_key_prefix, chat_model, api_key, base_url, generate_kwargs, is_custom, is_local, support_model_discovery, support_connection_check, freeze_url, require_api_key, create_time, update_time)
|
||
KEY (provider_id)
|
||
VALUES ('zhipu-intl-codingplan', 'Zhipu Coding Plan (智谱编码套餐 国际版)', '', 'OpenAIChatModel', '', 'https://api.z.ai/api/coding/paas/v4', '{"completionsPath":"/chat/completions"}', FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, NOW(), NOW());
|
||
|
||
MERGE INTO mate_model_provider (provider_id, name, api_key_prefix, chat_model, api_key, base_url, generate_kwargs, is_custom, is_local, support_model_discovery, support_connection_check, freeze_url, require_api_key, auth_type, create_time, update_time)
|
||
KEY (provider_id)
|
||
VALUES ('openai-chatgpt', 'OpenAI ChatGPT (OAuth)', '', 'ChatGPTChatModel', '', 'https://chatgpt.com/backend-api', '{}', FALSE, FALSE, TRUE, FALSE, TRUE, FALSE, 'oauth', NOW(), NOW());
|
||
|
||
-- RFC-062:Anthropic Claude Code OAuth 订阅 provider。凭据存储在本地磁盘
|
||
-- (macOS Keychain 或 ~/.claude/.credentials.json),不写入该行。
|
||
MERGE INTO mate_model_provider (provider_id, name, api_key_prefix, chat_model, api_key, base_url, generate_kwargs, is_custom, is_local, support_model_discovery, support_connection_check, freeze_url, require_api_key, auth_type, create_time, update_time)
|
||
KEY (provider_id)
|
||
VALUES ('anthropic-claude-code', 'Anthropic Claude Code (OAuth 订阅)', '', 'ClaudeCodeChatModel', '', 'https://api.anthropic.com', '{}', FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, 'oauth', NOW(), NOW());
|
||
|
||
-- ==================== 本地模型预配置(Ollama,默认禁用,用户拉取后启用) ====================
|
||
MERGE INTO mate_model_config (id, name, provider, model_name, description, temperature, max_tokens, top_p, builtin, enabled, is_default, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES
|
||
(1000000300, 'Gemma 3', 'ollama', 'gemma3:latest', 'Google Gemma 3,轻量高效,适合本地推理', 0.7, 4096, 0.8, TRUE, FALSE, FALSE, NOW(), NOW(), 0);
|
||
MERGE INTO mate_model_config (id, name, provider, model_name, description, temperature, max_tokens, top_p, builtin, enabled, is_default, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES
|
||
(1000000301, 'Qwen 3', 'ollama', 'qwen3:latest', '通义千问 3,中文能力出色', 0.7, 4096, 0.8, TRUE, FALSE, FALSE, NOW(), NOW(), 0);
|
||
MERGE INTO mate_model_config (id, name, provider, model_name, description, temperature, max_tokens, top_p, builtin, enabled, is_default, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES
|
||
(1000000302, 'Llama 3.1', 'ollama', 'llama3.1:latest', 'Meta Llama 3.1,通用能力强', 0.7, 4096, 0.8, TRUE, FALSE, FALSE, NOW(), NOW(), 0);
|
||
MERGE INTO mate_model_config (id, name, provider, model_name, description, temperature, max_tokens, top_p, builtin, enabled, is_default, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES
|
||
(1000000303, 'DeepSeek R1', 'ollama', 'deepseek-r1:latest', 'DeepSeek R1 推理模型', 0.7, 4096, 0.8, TRUE, FALSE, FALSE, NOW(), NOW(), 0);
|
||
MERGE INTO mate_model_config (id, name, provider, model_name, description, temperature, max_tokens, top_p, builtin, enabled, is_default, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES
|
||
(1000000304, 'Mistral', 'ollama', 'mistral:latest', 'Mistral 7B,高效推理', 0.7, 4096, 0.8, TRUE, FALSE, FALSE, NOW(), NOW(), 0);
|
||
MERGE INTO mate_model_config (id, name, provider, model_name, description, temperature, max_tokens, top_p, builtin, enabled, is_default, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES
|
||
(1000000305, 'Gemma 4', 'ollama', 'gemma4:latest', 'Google Gemma 4,新一代高性能本地模型', 0.7, 4096, 0.8, TRUE, FALSE, FALSE, NOW(), NOW(), 0);
|
||
|
||
-- ==================== 云端默认模型配置 ====================
|
||
MERGE INTO mate_model_config (id, name, provider, model_name, description, temperature, max_tokens, top_p, builtin, enabled, is_default, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000000001, 'Qwen Plus', 'dashscope', 'qwen-plus', '默认均衡模型,适合日常问答与工具调用。', 0.7, 4096, 0.8, TRUE, TRUE, TRUE, NOW(), NOW(), 0);
|
||
|
||
MERGE INTO mate_model_config (id, name, provider, model_name, description, temperature, max_tokens, top_p, builtin, enabled, is_default, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000000002, 'Qwen Max', 'dashscope', 'qwen-max', '更强推理能力,适合复杂任务。', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0);
|
||
|
||
MERGE INTO mate_model_config (id, name, provider, model_name, description, temperature, max_tokens, top_p, builtin, enabled, is_default, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000000003, 'Qwen Turbo', 'dashscope', 'qwen-turbo', '低延迟模型,适合高频交互。', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0);
|
||
|
||
MERGE INTO mate_model_config (id, name, provider, model_name, description, temperature, max_tokens, top_p, builtin, enabled, is_default, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000000004, 'Qwen Coder Plus', 'dashscope', 'qwen-coder-plus', '代码生成与解释场景优先。', 0.2, 8192, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0);
|
||
|
||
MERGE INTO mate_model_config (id, name, provider, model_name, description, temperature, max_tokens, top_p, builtin, enabled, is_default, create_time, update_time, deleted) KEY (id) VALUES
|
||
(1000000101, 'Qwen3 Max', 'dashscope', 'qwen3-max', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000102, 'Qwen3 235B A22B Thinking', 'dashscope', 'qwen3-235b-a22b-thinking-2507', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000103, 'DeepSeek-V3.2', 'dashscope', 'deepseek-v3.2', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
-- 注意: qwen3-plus / qwen3.5-plus / qwen3.5-max / qwen3.6-* 等带点号的版本只在 OpenAI 兼容端点上线。
|
||
-- DashScope native(text-generation/generation)调用会返回 400 InvalidParameter。
|
||
-- 这些模型挂在 dashscope-compat provider 下,复用同一把 sk- key 但走 compatible-mode/v1 端点。
|
||
(1000000173, 'Qwen Long', 'dashscope', 'qwen-long', '长文本模型,支持超长上下文', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000174, 'Qwen Plus (latest)', 'dashscope', 'qwen-plus-latest', '通义千问 Plus 最新稳定快照,自动跟随官方更新', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000175, 'Qwen Max (latest)', 'dashscope', 'qwen-max-latest', '通义千问 Max 最新稳定快照,最强推理能力', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000176, 'Qwen Turbo (latest)', 'dashscope', 'qwen-turbo-latest', '通义千问 Turbo 最新稳定快照,低延迟、高并发', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
-- DashScope 兼容模式专属模型(点号版本号系列)—— 与 dashscope provider 共用同一把 sk- key。
|
||
-- 仅收录在通用账号上确实可调通的 -plus 版本;-max / -vl-max 在 model market 可见但 API 返回 404。
|
||
(1000000601, 'Qwen3.6 Plus', 'dashscope-compat', 'qwen3.6-plus', '通义千问 3.6 Plus 旗舰,平衡推理与速度(兼容模式专属)', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000603, 'Qwen3.5 Plus', 'dashscope-compat', 'qwen3.5-plus', '通义千问 3.5 Plus(兼容模式专属)', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000605, 'Qwen3 VL Plus', 'dashscope-compat', 'qwen3-vl-plus', '通义千问 3 视觉理解 Plus,支持图像、视频输入(兼容模式专属)', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000104, 'Qwen3.5-122B-A10B', 'modelscope', 'Qwen/Qwen3.5-122B-A10B', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000105, 'GLM-5', 'modelscope', 'ZhipuAI/GLM-5', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000106, 'Qwen3.5 Plus', 'aliyun-codingplan', 'qwen3.5-plus', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000107, 'GLM-5', 'aliyun-codingplan', 'glm-5', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000108, 'GLM-4.7', 'aliyun-codingplan', 'glm-4.7', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000109, 'MiniMax M2.5', 'aliyun-codingplan', 'MiniMax-M2.5', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000110, 'Kimi K2.5', 'aliyun-codingplan', 'kimi-k2.5', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000111, 'Qwen3 Max 2026-01-23', 'aliyun-codingplan', 'qwen3-max-2026-01-23', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000112, 'Qwen3 Coder Next', 'aliyun-codingplan', 'qwen3-coder-next', '', 0.2, 8192, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000113, 'Qwen3 Coder Plus', 'aliyun-codingplan', 'qwen3-coder-plus', '', 0.2, 8192, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000162, 'Qwen3.6 Plus', 'aliyun-codingplan', 'qwen3.6-plus', '阿里云编码套餐 — Qwen3.6 Plus 旗舰', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000241, 'Qwen3.6 Plus', 'aliyun-codingplan-intl', 'qwen3.6-plus', '阿里云编码套餐(国际版) — Qwen3.6 Plus 旗舰', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000242, 'Qwen3.5 Plus', 'aliyun-codingplan-intl', 'qwen3.5-plus', '阿里云编码套餐(国际版) — Qwen3.5 均衡旗舰', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000243, 'GLM-5', 'aliyun-codingplan-intl', 'glm-5', '阿里云编码套餐(国际版) — GLM-5 由 DashScope 托管', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000244, 'GLM-4.7', 'aliyun-codingplan-intl', 'glm-4.7', '阿里云编码套餐(国际版) — GLM-4.7 由 DashScope 托管', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000245, 'MiniMax M2.5', 'aliyun-codingplan-intl', 'MiniMax-M2.5', '阿里云编码套餐(国际版) — MiniMax M2.5 由 DashScope 托管', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000246, 'Kimi K2.5', 'aliyun-codingplan-intl', 'kimi-k2.5', '阿里云编码套餐(国际版) — Kimi K2.5 由 DashScope 托管', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000247, 'Qwen3 Max 2026-01-23', 'aliyun-codingplan-intl', 'qwen3-max-2026-01-23', '阿里云编码套餐(国际版) — Qwen3 Max 锁定快照', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000248, 'Qwen3 Coder Next', 'aliyun-codingplan-intl', 'qwen3-coder-next', '阿里云编码套餐(国际版) — Qwen3 Coder Next 智能体编码', 0.2, 8192, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000249, 'Qwen3 Coder Plus', 'aliyun-codingplan-intl', 'qwen3-coder-plus', '阿里云编码套餐(国际版) — Qwen3 Coder Plus 智能体编码', 0.2, 8192, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000114, 'GPT-5.2', 'openai', 'gpt-5.2', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000115, 'GPT-5', 'openai', 'gpt-5', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000116, 'GPT-5 Mini', 'openai', 'gpt-5-mini', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000117, 'GPT-5 Nano', 'openai', 'gpt-5-nano', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000118, 'GPT-4.1', 'openai', 'gpt-4.1', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000119, 'GPT-4.1 Mini', 'openai', 'gpt-4.1-mini', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000120, 'GPT-4.1 Nano', 'openai', 'gpt-4.1-nano', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000121, 'o3', 'openai', 'o3', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000122, 'o4-mini', 'openai', 'o4-mini', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000123, 'GPT-4o', 'openai', 'gpt-4o', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000124, 'GPT-4o Mini', 'openai', 'gpt-4o-mini', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000125, 'GPT-5 Chat', 'azure-openai', 'gpt-5-chat', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000126, 'GPT-5 Mini', 'azure-openai', 'gpt-5-mini', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000127, 'GPT-5 Nano', 'azure-openai', 'gpt-5-nano', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000128, 'GPT-4.1', 'azure-openai', 'gpt-4.1', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000129, 'GPT-4.1 Mini', 'azure-openai', 'gpt-4.1-mini', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000130, 'GPT-4.1 Nano', 'azure-openai', 'gpt-4.1-nano', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000131, 'GPT-4o', 'azure-openai', 'gpt-4o', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000132, 'GPT-4o Mini', 'azure-openai', 'gpt-4o-mini', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000133, 'MiniMax M2.5', 'minimax', 'MiniMax-M2.5', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000134, 'MiniMax M2.5 Highspeed', 'minimax', 'MiniMax-M2.5-highspeed', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000135, 'MiniMax M2.7', 'minimax', 'MiniMax-M2.7', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000136, 'MiniMax M2.7 Highspeed', 'minimax', 'MiniMax-M2.7-highspeed', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000137, 'MiniMax M2.5', 'minimax-cn', 'MiniMax-M2.5', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000138, 'MiniMax M2.5 Highspeed', 'minimax-cn', 'MiniMax-M2.5-highspeed', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000139, 'MiniMax M2.7', 'minimax-cn', 'MiniMax-M2.7', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000140, 'MiniMax M2.7 Highspeed', 'minimax-cn', 'MiniMax-M2.7-highspeed', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000141, 'Kimi K2.5', 'kimi-cn', 'kimi-k2.5', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000142, 'Kimi K2 0905 Preview', 'kimi-cn', 'kimi-k2-0905-preview', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000143, 'Kimi K2 0711 Preview', 'kimi-cn', 'kimi-k2-0711-preview', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000144, 'Kimi K2 Turbo Preview', 'kimi-cn', 'kimi-k2-turbo-preview', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000145, 'Kimi K2 Thinking', 'kimi-cn', 'kimi-k2-thinking', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000146, 'Kimi K2 Thinking Turbo', 'kimi-cn', 'kimi-k2-thinking-turbo', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000147, 'Kimi K2.5', 'kimi-intl', 'kimi-k2.5', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000148, 'Kimi K2 0905 Preview', 'kimi-intl', 'kimi-k2-0905-preview', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000149, 'Kimi K2 0711 Preview', 'kimi-intl', 'kimi-k2-0711-preview', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000150, 'Kimi K2 Turbo Preview', 'kimi-intl', 'kimi-k2-turbo-preview', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000151, 'Kimi K2 Thinking', 'kimi-intl', 'kimi-k2-thinking', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000152, 'Kimi K2 Thinking Turbo', 'kimi-intl', 'kimi-k2-thinking-turbo', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000153, 'DeepSeek Chat', 'deepseek', 'deepseek-chat', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000154, 'DeepSeek Reasoner', 'deepseek', 'deepseek-reasoner', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
-- DeepSeek V4(1M 上下文,原生 thinking 模式由 DeepSeekV4ThinkingDecorator 注入)
|
||
(1000000282, 'DeepSeek V4 Flash', 'deepseek', 'deepseek-v4-flash', 'DeepSeek V4 Flash(1M 上下文,thinking 模式开启时支持 reasoning_effort)', NULL, 4096, NULL, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000283, 'DeepSeek V4 Pro', 'deepseek', 'deepseek-v4-pro', 'DeepSeek V4 Pro(1M 上下文,thinking 模式开启时支持 reasoning_effort)', NULL, 4096, NULL, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000155, 'Gemini 3.1 Pro Preview', 'gemini', 'gemini-3.1-pro-preview', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000156, 'Gemini 3 Flash Preview', 'gemini', 'gemini-3-flash-preview', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000157, 'Gemini 3.1 Flash Lite Preview', 'gemini', 'gemini-3.1-flash-lite-preview', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000158, 'Gemini 2.5 Pro', 'gemini', 'gemini-2.5-pro', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000159, 'Gemini 2.5 Flash', 'gemini', 'gemini-2.5-flash', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000160, 'Gemini 2.5 Flash Lite', 'gemini', 'gemini-2.5-flash-lite', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000161, 'Gemini 2.0 Flash', 'gemini', 'gemini-2.0-flash', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000340, 'Grok 4', 'xai', 'grok-4', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000341, 'Grok 4 Fast', 'xai', 'grok-4-fast', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000342, 'Grok 3', 'xai', 'grok-3', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000343, 'Grok 3 Mini', 'xai', 'grok-3-mini', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000200, 'GPT-5', 'openrouter', 'openai/gpt-5', 'OpenRouter 代理 GPT-5', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000201, 'Claude Opus 4.6', 'openrouter', 'anthropic/claude-opus-4-6', 'OpenRouter 代理 Claude Opus 4.6', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000202, 'Claude Sonnet 4.6', 'openrouter', 'anthropic/claude-sonnet-4-6', 'OpenRouter 代理 Claude Sonnet 4.6', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000203, 'Gemini 2.5 Pro', 'openrouter', 'google/gemini-2.5-pro', 'OpenRouter 代理 Gemini 2.5 Pro', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000204, 'Llama 4 Maverick', 'openrouter', 'meta-llama/llama-4-maverick', 'OpenRouter 代理 Llama 4 Maverick', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000205, 'DeepSeek R1', 'openrouter', 'deepseek/deepseek-r1', 'OpenRouter 代理 DeepSeek R1', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000206, 'Qwen3.6 Plus (free)', 'openrouter', 'qwen/qwen3.6-plus:free', 'OpenRouter 免费 Qwen3.6 Plus(支持视觉)', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000207, 'Gemini 2.5 Flash (free)', 'openrouter', 'google/gemini-2.5-flash:free', 'OpenRouter 免费 Gemini 2.5 Flash(支持视觉)', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000208, 'Llama 4 Maverick (free)', 'openrouter', 'meta-llama/llama-4-maverick:free', 'OpenRouter 免费 Llama 4 Maverick(支持视觉)', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000210, 'GLM-5-Turbo', 'zhipu-cn', 'glm-5-turbo', '高速推理模型(推荐)', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000211, 'GLM-5V-Turbo', 'zhipu-cn', 'glm-5v-turbo', '多模态视觉模型(推荐)', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000212, 'GLM-5', 'zhipu-cn', 'glm-5', '旗舰模型', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000213, 'GLM-5.1', 'zhipu-cn', 'glm-5.1', '最新旗舰模型', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000220, 'GLM-5-Turbo', 'zhipu-intl', 'glm-5-turbo', '高速推理模型(国际版,推荐)', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000221, 'GLM-5V-Turbo', 'zhipu-intl', 'glm-5v-turbo', '多模态视觉模型(国际版,推荐)', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000222, 'GLM-5', 'zhipu-intl', 'glm-5', '旗舰模型(国际版)', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000223, 'GLM-5.1', 'zhipu-intl', 'glm-5.1', '最新旗舰模型(国际版)', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000230, 'GLM-5 Coding', 'zhipu-cn-codingplan', 'glm-5', '智谱编码套餐 — GLM-5 旗舰', 0.2, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000231, 'GLM-5.1 Coding', 'zhipu-cn-codingplan', 'glm-5.1', '智谱编码套餐 — GLM-5.1 最新旗舰', 0.2, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000232, 'GLM-5-Turbo Coding', 'zhipu-cn-codingplan', 'glm-5-turbo', '智谱编码套餐 — GLM-5 高速版', 0.2, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000233, 'GLM-4.7 Coding', 'zhipu-cn-codingplan', 'glm-4.7', '智谱编码套餐 — GLM-4.7', 0.2, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000234, 'GLM-5 Coding', 'zhipu-intl-codingplan', 'glm-5', 'Zhipu Coding Plan — GLM-5 旗舰(国际版)', 0.2, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000235, 'GLM-5.1 Coding', 'zhipu-intl-codingplan', 'glm-5.1', 'Zhipu Coding Plan — GLM-5.1 最新旗舰(国际版)', 0.2, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000236, 'GLM-5-Turbo Coding', 'zhipu-intl-codingplan', 'glm-5-turbo', 'Zhipu Coding Plan — GLM-5 高速版(国际版)', 0.2, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000237, 'GLM-4.7 Coding', 'zhipu-intl-codingplan', 'glm-4.7', 'Zhipu Coding Plan — GLM-4.7(国际版)', 0.2, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000310, 'Doubao Seed 1.8', 'volcengine', 'doubao-seed-1-8-251228', '豆包旗舰多模态模型,文本+图像,256K 上下文', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000311, 'Doubao Seed Code Preview', 'volcengine', 'doubao-seed-code-preview-251028', '豆包代码预览模型,文本+图像,256K 上下文', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000312, 'Kimi K2.5', 'volcengine', 'kimi-k2-5-260127', 'Kimi K2.5(火山方舟托管),文本+图像,256K 上下文', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000313, 'GLM 4.7', 'volcengine', 'glm-4-7-251222', 'GLM 4.7(火山方舟托管),文本+图像,200K 上下文', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000314, 'DeepSeek V3.2', 'volcengine', 'deepseek-v3-2-251201', 'DeepSeek V3.2(火山方舟托管),文本+图像,128K 上下文', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000320, 'Ark Coding Plan', 'volcengine-plan', 'ark-code-latest', '方舟代码计划旗舰模型,256K 上下文', 0.2, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000321, 'Doubao Seed Code', 'volcengine-plan', 'doubao-seed-code', '豆包代码模型,256K 上下文', 0.2, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000322, 'Doubao Seed Code Preview', 'volcengine-plan', 'doubao-seed-code-preview-251028', '豆包代码预览模型,256K 上下文', 0.2, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000323, 'GLM 4.7 Coding', 'volcengine-plan', 'glm-4.7', 'GLM 4.7 编码版(火山方舟托管),200K 上下文', 0.2, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000324, 'Kimi K2 Thinking', 'volcengine-plan', 'kimi-k2-thinking', 'Kimi K2 推理版(火山方舟托管),256K 上下文', 0.2, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000325, 'Kimi K2.5 Coding', 'volcengine-plan', 'kimi-k2.5', 'Kimi K2.5 编码版(火山方舟托管),256K 上下文', 0.2, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000350, 'GLM-5.2', 'volcengine-agent-plan', 'glm-5.2', '智谱最新旗舰模型,1M 上下文,长程任务效果突出(可用 glm-latest 访问最新版)', 0.2, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000351, '方舟 Agent Plan(自动路由)', 'volcengine-agent-plan', 'ark-code-latest', '自动路由入口,按需分发到最合适的套餐模型', 0.2, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000353, 'Doubao-Seed-2.0-Code', 'volcengine-agent-plan', 'doubao-seed-2.0-code', 'Seed 2.0 代码强化,前端出众、多语言适配;默认 non-thinking,支持开启深度思考', 0.2, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000354, 'Doubao-Seed-2.0-pro', 'volcengine-agent-plan', 'doubao-seed-2.0-pro', '旗舰级全能通用模型,适合复杂推理与长链路任务;默认开启深度思考,可关闭', 0.2, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000355, 'Doubao-Seed-2.0-lite', 'volcengine-agent-plan', 'doubao-seed-2.0-lite', '兼顾生成质量与响应速度的通用生产级模型', 0.2, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000356, 'Doubao-Seed-2.0-mini', 'volcengine-agent-plan', 'doubao-seed-2.0-mini', '面向低时延、高并发与成本敏感场景的轻量模型', 0.2, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000357, 'Kimi-K2.7-Code', 'volcengine-agent-plan', 'kimi-k2.7-code', 'Kimi 最新 Coding 模型,长上下文指令遵循更可靠,支持文本/图片/视频输入', 0.2, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000358, 'MiniMax-M3', 'volcengine-agent-plan', 'minimax-m3', '新一代 M 系列,编码与智能体评测行业顶尖', 0.2, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000359, 'DeepSeek-V4-Flash', 'volcengine-agent-plan', 'deepseek-v4-flash', '更快捷经济的 DeepSeek-V4;默认开启深度思考,可手动关闭', 0.2, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000360, 'DeepSeek-V4-Pro', 'volcengine-agent-plan', 'deepseek-v4-pro', 'DeepSeek-V4 Agent 能力显著增强,世界知识丰富;默认开启深度思考,可关闭', 0.2, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000361, 'MiniMax-M2.7', 'volcengine-agent-plan', 'minimax-m2.7', '可自行构建复杂 Agent Harness,完成高度复杂的生产力任务', 0.2, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000362, 'Kimi-K2.6', 'volcengine-agent-plan', 'kimi-k2.6', '月之暗面新一代智能模型;默认开启深度思考,可关闭', 0.2, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000240, 'Kimi for Coding', 'kimi-code', 'kimi-for-coding', 'Kimi Code 专用编码模型', 0.2, 32768, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000250, 'GPT-5.4', 'openai-chatgpt', 'gpt-5.4', 'ChatGPT Plus/Pro 会员模型(OAuth 登录)', NULL, 128000, NULL, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000251, 'GPT-5.4 Mini', 'openai-chatgpt', 'gpt-5.4-mini', 'ChatGPT 会员轻量模型', NULL, 128000, NULL, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000252, 'GPT-5.5', 'openai-chatgpt', 'gpt-5.5', 'ChatGPT Plus/Pro 会员旗舰模型', NULL, 128000, NULL, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
-- GPT-5.5 系列(OpenAI / Azure / OpenRouter)
|
||
(1000000260, 'GPT-5.5', 'openai', 'gpt-5.5', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000261, 'GPT-5.5 Mini', 'openai', 'gpt-5.5-mini', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000262, 'GPT-5.5 Nano', 'openai', 'gpt-5.5-nano', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000263, 'GPT-5.5', 'azure-openai', 'gpt-5.5', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000264, 'GPT-5.5 Mini', 'azure-openai', 'gpt-5.5-mini', '', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000265, 'GPT-5.5', 'openrouter', 'openai/gpt-5.5', 'OpenRouter 代理 GPT-5.5', 0.7, 4096, 0.8, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
-- Claude 4.7 系列(直连 Anthropic + OpenRouter)
|
||
-- 注意:Claude 4.7 禁止 temperature / top_p / top_k 参数,已在 AgentAnthropicChatModelBuilder 中适配
|
||
(1000000270, 'Claude Opus 4.7', 'anthropic', 'claude-opus-4-7', 'Anthropic Claude Opus 4.7(xhigh 自适应思考)', NULL, 4096, NULL, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
-- Anthropic 仅发布了 Opus 4.7,Sonnet 暂时仍是 4.6
|
||
(1000000271, 'Claude Sonnet 4.6', 'anthropic', 'claude-sonnet-4-6', 'Anthropic 最新 Sonnet (Sonnet 4.7 暂未发布)', NULL, 4096, NULL, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000272, 'Claude Opus 4.7', 'openrouter', 'anthropic/claude-opus-4-7', 'OpenRouter 代理 Claude Opus 4.7', NULL, 4096, NULL, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000273, 'Claude Sonnet 4.6', 'openrouter', 'anthropic/claude-sonnet-4-6', 'OpenRouter 代理 Claude Sonnet 4.6', NULL, 4096, NULL, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
-- RFC-062:通过 Claude Code Pro/Max 订阅调用 Claude 4.7
|
||
(1000000280, 'Claude Opus 4.7', 'anthropic-claude-code', 'claude-opus-4-7', '通过 Claude Code Pro/Max 订阅调用 Claude Opus 4.7', NULL, 4096, NULL, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000281, 'Claude Sonnet 4.6', 'anthropic-claude-code', 'claude-sonnet-4-6', '通过 Claude Code Pro/Max 订阅调用 Claude Sonnet 4.6', NULL, 4096, NULL, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
-- Claude 4.8 系列(直连 Anthropic + OpenRouter,包含 -fast 高速变体)
|
||
-- 与 4.7 共享严格采样契约:temperature / top_p / top_k 必须为空,新增 xhigh 思考档位
|
||
(1000000290, 'Claude Opus 4.8', 'anthropic', 'claude-opus-4-8', 'Anthropic Claude Opus 4.8(xhigh 自适应思考)', NULL, 4096, NULL, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000291, 'Claude Opus 4.8 Fast', 'anthropic', 'claude-opus-4-8-fast', 'Claude Opus 4.8 高速变体(输出更快、单价 2x)', NULL, 4096, NULL, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000292, 'Claude Opus 4.8', 'openrouter', 'anthropic/claude-opus-4-8', 'OpenRouter 代理 Claude Opus 4.8', NULL, 4096, NULL, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000293, 'Claude Opus 4.8 Fast', 'openrouter', 'anthropic/claude-opus-4-8-fast', 'OpenRouter 代理 Claude Opus 4.8 高速变体', NULL, 4096, NULL, TRUE, TRUE, FALSE, NOW(), NOW(), 0),
|
||
(1000000294, 'Claude Opus 4.8', 'anthropic-claude-code', 'claude-opus-4-8', '通过 Claude Code Pro/Max 订阅调用 Claude Opus 4.8', NULL, 4096, NULL, TRUE, TRUE, FALSE, NOW(), NOW(), 0);
|
||
|
||
-- 默认系统设置
|
||
MERGE INTO mate_system_setting (id, setting_key, setting_value, description, create_time, update_time)
|
||
KEY (id)
|
||
VALUES (1000000001, 'language', 'zh-CN', '当前界面语言', NOW(), NOW());
|
||
|
||
MERGE INTO mate_system_setting (id, setting_key, setting_value, description, create_time, update_time)
|
||
KEY (id)
|
||
VALUES (1000000002, 'streamEnabled', 'true', '是否开启流式响应', NOW(), NOW());
|
||
|
||
MERGE INTO mate_system_setting (id, setting_key, setting_value, description, create_time, update_time)
|
||
KEY (id)
|
||
VALUES (1000000003, 'debugMode', 'false', '是否开启调试模式', NOW(), NOW());
|
||
|
||
MERGE INTO mate_system_setting (id, setting_key, setting_value, description, create_time, update_time)
|
||
KEY (id)
|
||
VALUES (1000000004, 'stateGraphEnabled', 'true', '启用 StateGraph 架构的 ReAct Agent', NOW(), NOW());
|
||
|
||
-- 搜索服务配置
|
||
MERGE INTO mate_system_setting (id, setting_key, setting_value, description, create_time, update_time)
|
||
KEY (id)
|
||
VALUES (1000000005, 'searchEnabled', 'true', '是否启用搜索功能', NOW(), NOW());
|
||
|
||
MERGE INTO mate_system_setting (id, setting_key, setting_value, description, create_time, update_time)
|
||
KEY (id)
|
||
VALUES (1000000006, 'searchProvider', 'serper', '搜索服务提供商', NOW(), NOW());
|
||
|
||
MERGE INTO mate_system_setting (id, setting_key, setting_value, description, create_time, update_time)
|
||
KEY (id)
|
||
VALUES (1000000007, 'searchFallbackEnabled', 'false', '搜索失败时是否回退到备用提供商', NOW(), NOW());
|
||
|
||
MERGE INTO mate_system_setting (id, setting_key, setting_value, description, create_time, update_time)
|
||
KEY (id)
|
||
VALUES (1000000008, 'serperApiKey', '', 'Serper API Key', NOW(), NOW());
|
||
|
||
MERGE INTO mate_system_setting (id, setting_key, setting_value, description, create_time, update_time)
|
||
KEY (id)
|
||
VALUES (1000000009, 'serperBaseUrl', 'https://google.serper.dev/search', 'Serper 接口地址', NOW(), NOW());
|
||
|
||
MERGE INTO mate_system_setting (id, setting_key, setting_value, description, create_time, update_time)
|
||
KEY (id)
|
||
VALUES (1000000010, 'tavilyApiKey', '', 'Tavily API Key', NOW(), NOW());
|
||
|
||
MERGE INTO mate_system_setting (id, setting_key, setting_value, description, create_time, update_time)
|
||
KEY (id)
|
||
VALUES (1000000011, 'tavilyBaseUrl', 'https://api.tavily.com/search', 'Tavily 接口地址', NOW(), NOW());
|
||
|
||
MERGE INTO mate_system_setting (id, setting_key, setting_value, description, create_time, update_time)
|
||
KEY (id)
|
||
VALUES (1000000012, 'duckduckgoEnabled', 'true', 'DuckDuckGo 免 Key 搜索兜底(零配置可用)', NOW(), NOW());
|
||
|
||
MERGE INTO mate_system_setting (id, setting_key, setting_value, description, create_time, update_time)
|
||
KEY (id)
|
||
VALUES (1000000013, 'searxngBaseUrl', '', 'SearXNG 实例地址(Docker 部署时自动配置)', NOW(), NOW());
|
||
|
||
-- 语音识别(STT)默认配置 —— 默认启用,用户只需在模型管理中配置 OpenAI / DashScope API Key 即可使用
|
||
-- 用 setting_key 的 skip-if-exists 写法(不再走 MERGE BY id),避免与
|
||
-- 旧版 UI 已经写入的运行时 snowflake id 在 setting_key UNIQUE 索引上撞车。
|
||
-- V46 迁移走的是同一套语义。
|
||
INSERT INTO mate_system_setting (id, setting_key, setting_value, description, create_time, update_time)
|
||
SELECT 1000000020, 'sttEnabled', 'true', '启用语音识别(TalkMode 麦克风输入)', NOW(), NOW()
|
||
WHERE NOT EXISTS (SELECT 1 FROM mate_system_setting WHERE setting_key = 'sttEnabled');
|
||
|
||
INSERT INTO mate_system_setting (id, setting_key, setting_value, description, create_time, update_time)
|
||
SELECT 1000000021, 'sttProvider', 'auto', 'STT 提供商:auto / openai / dashscope', NOW(), NOW()
|
||
WHERE NOT EXISTS (SELECT 1 FROM mate_system_setting WHERE setting_key = 'sttProvider');
|
||
|
||
INSERT INTO mate_system_setting (id, setting_key, setting_value, description, create_time, update_time)
|
||
SELECT 1000000022, 'sttFallbackEnabled', 'true', '主 provider 失败时自动尝试备选 provider', NOW(), NOW()
|
||
WHERE NOT EXISTS (SELECT 1 FROM mate_system_setting WHERE setting_key = 'sttFallbackEnabled');
|
||
|
||
-- 内置工具:日期时间
|
||
MERGE INTO mate_tool (id, name, display_name, description, tool_type, bean_name, icon, enabled, builtin, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000000001, 'DateTimeTool', '日期时间', '获取当前日期和时间信息', 'builtin', 'dateTimeTool', '🕐', TRUE, TRUE, NOW(), NOW(), 0);
|
||
|
||
-- 内置工具:网络搜索
|
||
MERGE INTO mate_tool (id, name, display_name, description, tool_type, bean_name, icon, enabled, builtin, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000000002, 'WebSearchTool', '网络搜索', '在互联网上搜索实时信息', 'builtin', 'webSearchTool', '🔍', TRUE, TRUE, NOW(), NOW(), 0);
|
||
|
||
-- 内置工具:本地命令执行(默认启用,危险操作由 ToolGuard 审批控制)
|
||
MERGE INTO mate_tool (id, name, display_name, description, tool_type, bean_name, icon, enabled, builtin, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000000003, 'ShellExecuteTool', '命令执行', '在本地服务器上执行 Shell 命令。用于执行系统命令、查看文件、运行脚本等操作。危险操作会触发审批确认。', 'builtin', 'shellExecuteTool', '🖥', TRUE, TRUE, NOW(), NOW(), 0);
|
||
|
||
-- 内置工具:读取文件
|
||
MERGE INTO mate_tool (id, name, display_name, description, tool_type, bean_name, icon, enabled, builtin, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000000004, 'ReadFileTool', '读取文件', '读取指定文件的内容,支持按行范围读取,自动截断超大输出。', 'builtin', 'readFileTool', '📖', TRUE, TRUE, NOW(), NOW(), 0);
|
||
|
||
-- 内置工具:写入文件(默认启用,危险操作由 ToolGuard 审批控制)
|
||
MERGE INTO mate_tool (id, name, display_name, description, tool_type, bean_name, icon, enabled, builtin, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000000005, 'WriteFileTool', '写入文件', '将内容写入指定文件。如果文件已存在则完全覆写,不存在则创建新文件。每次执行需要用户审批确认。', 'builtin', 'writeFileTool', '📝', TRUE, TRUE, NOW(), NOW(), 0);
|
||
|
||
-- 内置工具:本地文件访问(通过桌面隧道操作用户本机文件)
|
||
MERGE INTO mate_tool (id, name, display_name, description, tool_type, bean_name, icon, enabled, builtin, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000000026, 'LocalFileTools', '本地文件访问', '通过桌面隧道读取/写入/编辑/列目录/获取元数据,操作的是用户本机文件(非服务器)。受目录白名单约束;写入与编辑需用户在桌面端原生审批。', 'builtin', 'localFileTools', '💻', TRUE, TRUE, NOW(), NOW(), 0);
|
||
|
||
-- 内置工具:本地命令执行(通过桌面隧道在用户本机执行)
|
||
MERGE INTO mate_tool (id, name, display_name, description, tool_type, bean_name, icon, enabled, builtin, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000000027, 'LocalShellTool', '本地命令执行', '通过桌面隧道在用户本机执行 Shell 命令(非服务器)。每次执行需用户在桌面端原生审批。', 'builtin', 'localShellTool', '🖥', TRUE, TRUE, NOW(), NOW(), 0);
|
||
|
||
-- 内置工具:渠道消息推送
|
||
MERGE INTO mate_tool (id, name, display_name, description, tool_type, bean_name, icon, enabled, builtin, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000000028, 'ChannelMessageTool', '渠道消息推送', '主动向 IM 渠道会话推送消息。list_channel_sessions 查询可推送的会话,send_channel_message 单向推送消息,用于告警通知、定时任务结果回推等场景。', 'builtin', 'channelMessageTool', '📤', TRUE, TRUE, NOW(), NOW(), 0);
|
||
|
||
-- 内置工具:编辑文件(默认启用,危险操作由 ToolGuard 审批控制)
|
||
MERGE INTO mate_tool (id, name, display_name, description, tool_type, bean_name, icon, enabled, builtin, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000000006, 'EditFileTool', '编辑文件', '通过查找替换编辑文件内容,精确匹配 old_text 并替换为 new_text。每次执行需要用户审批确认。', 'builtin', 'editFileTool', '✏️', TRUE, TRUE, NOW(), NOW(), 0);
|
||
|
||
-- 内置工具:技能文件读取(Skill Runtime Tool)
|
||
MERGE INTO mate_tool (id, name, display_name, description, tool_type, bean_name, icon, enabled, builtin, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000000007, 'SkillFileTool', '技能文件读取', '读取技能包内的文件(SKILL.md/references/scripts),列出技能文件目录树。支持 read_skill_file 和 list_skill_files 两个工具。', 'builtin', 'skillFileTool', '📖', TRUE, TRUE, NOW(), NOW(), 0);
|
||
|
||
-- 内置工具:技能脚本执行(Skill Runtime Tool)
|
||
MERGE INTO mate_tool (id, name, display_name, description, tool_type, bean_name, icon, enabled, builtin, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000000008, 'SkillScriptTool', '技能脚本执行', '执行技能包 scripts/ 目录下的脚本(Python/Bash/Node),路径严格限制在技能目录内。', 'builtin', 'skillScriptTool', '⚡', TRUE, TRUE, NOW(), NOW(), 0);
|
||
|
||
-- 内置工具:文件类型检测
|
||
MERGE INTO mate_tool (id, name, display_name, description, tool_type, bean_name, icon, enabled, builtin, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000000009, 'FileTypeDetectorTool', '文件类型检测', '检测文件的 MIME 类型和类别,区分文本文件和 PDF/Office 文档,帮助选择合适的读取工具。', 'builtin', 'fileTypeDetectorTool', '🔍', TRUE, TRUE, NOW(), NOW(), 0);
|
||
|
||
-- 内置工具:文档文本提取
|
||
MERGE INTO mate_tool (id, name, display_name, description, tool_type, bean_name, icon, enabled, builtin, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000000010, 'DocumentExtractTool', '文档文本提取', '从 PDF、Word、Excel、PowerPoint 等 Office 文档中提取纯文本内容。支持 fallback 链:系统命令优先,Java 实现兜底。', 'builtin', 'documentExtractTool', '📄', TRUE, TRUE, NOW(), NOW(), 0);
|
||
|
||
-- 内置工具:数据库工作区记忆读写
|
||
MERGE INTO mate_tool (id, name, display_name, description, tool_type, bean_name, icon, enabled, builtin, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000000011, 'WorkspaceMemoryTool', '工作区记忆', '读写数据库中的工作区 Markdown 文档,用于维护 PROFILE.md、MEMORY.md 和 memory/YYYY-MM-DD.md 等持久记忆。', 'builtin', 'workspaceMemoryTool', '🧠', TRUE, TRUE, NOW(), NOW(), 0);
|
||
|
||
-- 内置工具:浏览器控制(Playwright)
|
||
MERGE INTO mate_tool (id, name, display_name, description, tool_type, bean_name, icon, enabled, builtin, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000000012, 'BrowserUseTool', '浏览器控制', '启动和控制浏览器,支持打开网页、截图、点击、输入、执行JS等自动化操作。配合 browser_visible / browser_cdp 技能使用。', 'builtin', 'browserUseTool', '🌐', TRUE, TRUE, NOW(), NOW(), 0);
|
||
|
||
-- 内置工具:MateClaw 项目文档读取
|
||
MERGE INTO mate_tool (id, name, display_name, description, tool_type, bean_name, icon, enabled, builtin, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000000013, 'MateClawDocTool', 'MateClaw 文档', '读取 MateClaw 内置项目文档。action=list 列出所有文档,action=read 读取指定文档内容(如 zh/config.md)。', 'builtin', 'mateClawDocTool', '📚', TRUE, TRUE, NOW(), NOW(), 0);
|
||
|
||
-- 内置工具:Agent 委派(多 Agent 协作)
|
||
MERGE INTO mate_tool (id, name, display_name, description, tool_type, bean_name, icon, enabled, builtin, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000000014, 'DelegateAgentTool', 'Agent 委派', '委派任务给其他 Agent 执行,实现多 Agent 协作。支持按名称调用目标 Agent,在独立会话中运行并返回结果。', 'builtin', 'delegateAgentTool', '🤝', TRUE, TRUE, NOW(), NOW(), 0);
|
||
|
||
-- 内置工具:视频生成
|
||
MERGE INTO mate_tool (id, name, display_name, description, tool_type, bean_name, icon, enabled, builtin, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000000015, 'VideoGenerateTool', '视频生成', '使用 AI 生成视频,支持文字生成视频和图片生成视频两种模式。视频生成是异步过程,完成后自动显示在对话中。', 'builtin', 'videoGenerateTool', '🎬', TRUE, TRUE, NOW(), NOW(), 0);
|
||
|
||
MERGE INTO mate_tool (id, name, display_name, description, tool_type, bean_name, icon, enabled, builtin, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000000016, 'ImageGenerateTool', '图片生成', '使用 AI 生成图片,支持文字生成图片。支持 DashScope 通义万相、OpenAI DALL-E、fal.ai Flux、智谱 CogView 等多个 Provider,自动回退。', 'builtin', 'imageGenerateTool', '🎨', TRUE, TRUE, NOW(), NOW(), 0);
|
||
|
||
MERGE INTO mate_tool (id, name, display_name, description, tool_type, bean_name, icon, enabled, builtin, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000000017, 'WikiTool', 'Wiki 知识库', '读取、搜索 Wiki 知识库中的结构化页面,并追溯原始来源文件。支持 wiki_read_page、wiki_list_pages、wiki_search_pages、wiki_trace_source 四个工具。', 'builtin', 'wikiTool', '📚', TRUE, TRUE, NOW(), NOW(), 0);
|
||
|
||
-- 内置工具:定时任务管理
|
||
MERGE INTO mate_tool (id, name, display_name, description, tool_type, bean_name, icon, enabled, builtin, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000000018, 'CronJobTool', '定时任务', '通过对话创建、查看、启停和删除定时任务。支持 5 字段 cron 表达式,灵活设定执行时间。', 'builtin', 'cronJobTool', '⏰', TRUE, TRUE, NOW(), NOW(), 0);
|
||
|
||
-- 内置工具:DOCX 渲染(RFC-045 — 进程内 Apache POI,毫秒级新建 .docx)
|
||
MERGE INTO mate_tool (id, name, display_name, description, tool_type, bean_name, icon, enabled, builtin, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000000019, 'DocxRenderTool', 'DOCX 渲染', '将 Markdown 直接渲染为 .docx 并返回一次性下载链接。进程内 Apache POI 实现,无需 Node.js 子进程;支持标题、加粗、列表、表格。新建文档场景的首选工具。', 'builtin', 'docxRenderTool', '📝', TRUE, TRUE, NOW(), NOW(), 0);
|
||
|
||
-- 内置工具:XLSX 渲染(进程内 Apache POI,从 Markdown 表格生成多 sheet 工作簿)
|
||
MERGE INTO mate_tool (id, name, display_name, description, tool_type, bean_name, icon, enabled, builtin, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000000020, 'XlsxRenderTool', 'XLSX 渲染', '将 Markdown 直接渲染为 .xlsx 工作簿并返回一次性下载链接。进程内 Apache POI 实现;每个 # 一级标题生成一个 sheet,竖线表格成为行内容,数字单元格自动识别。', 'builtin', 'xlsxRenderTool', '📊', TRUE, TRUE, NOW(), NOW(), 0);
|
||
|
||
-- 内置工具:PPTX 渲染(进程内 Apache POI,Marp 风格 Markdown 生成 .pptx)
|
||
MERGE INTO mate_tool (id, name, display_name, description, tool_type, bean_name, icon, enabled, builtin, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000000021, 'PptxRenderTool', 'PPTX 渲染', '将 Marp 风格的 Markdown 直接渲染为 .pptx 演示文稿并返回一次性下载链接。进程内 Apache POI 实现;--- 分页、# / ## 作幻灯片标题、- 作要点、<!-- ... --> 作演讲者备注。', 'builtin', 'pptxRenderTool', '🎞️', TRUE, TRUE, NOW(), NOW(), 0);
|
||
|
||
-- 内置工具:PDF 渲染(双 backend:LibreOffice 子进程优先,进程内 OpenPDF + Flying Saucer 兜底)
|
||
MERGE INTO mate_tool (id, name, display_name, description, tool_type, bean_name, icon, enabled, builtin, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000000022, 'PdfRenderTool', 'PDF 渲染', '将 Markdown 渲染为最终交付形态的 .pdf 并返回一次性下载链接。双 backend 自动切换(优先 LibreOffice,不可用时回落到进程内 OpenPDF + Flying Saucer);通过 YAML frontmatter 控制封面、页眉、页脚。', 'builtin', 'pdfRenderTool', '📄', TRUE, TRUE, NOW(), NOW(), 0);
|
||
|
||
-- 内置工具:代码执行(运行 Agent 临场编写的 python/bash/node 代码)
|
||
MERGE INTO mate_tool (id, name, display_name, description, tool_type, bean_name, icon, enabled, builtin, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000000023, 'CodeExecuteTool', '代码执行', '运行 Agent 临场编写的代码片段(python / bash / node)。让只有 SKILL.md 描述、无脚本的技能也能被执行——Agent 按说明生成并运行代码。危险操作会触发审批确认。', 'builtin', 'codeExecuteTool', '🧑💻', TRUE, TRUE, NOW(), NOW(), 0);
|
||
|
||
-- 示例 MCP Server:Filesystem(参考 MateClaw 文档中的 mcpServers.filesystem)
|
||
MERGE INTO mate_mcp_server (
|
||
id, name, description, transport, url, headers_json, command, args_json, env_json, cwd,
|
||
enabled, connect_timeout_seconds, read_timeout_seconds, last_status, last_error,
|
||
last_connected_time, tool_count, builtin, create_time, update_time, deleted
|
||
)
|
||
KEY (id)
|
||
VALUES (
|
||
1000000901,
|
||
'filesystem',
|
||
'Filesystem MCP for MateClaw workspace',
|
||
'stdio',
|
||
NULL,
|
||
NULL,
|
||
'npx',
|
||
'["-y","@modelcontextprotocol/server-filesystem","${user.home}"]',
|
||
'{}',
|
||
NULL,
|
||
FALSE,
|
||
30,
|
||
60,
|
||
'disconnected',
|
||
NULL,
|
||
NULL,
|
||
0,
|
||
FALSE,
|
||
NOW(),
|
||
NOW(),
|
||
0
|
||
);
|
||
|
||
-- 预置 MCP Server:GitHub(需配置 GITHUB_TOKEN 环境变量后启用)
|
||
MERGE INTO mate_mcp_server (
|
||
id, name, description, transport, url, headers_json, command, args_json, env_json, cwd,
|
||
enabled, connect_timeout_seconds, read_timeout_seconds, last_status, last_error,
|
||
last_connected_time, tool_count, builtin, create_time, update_time, deleted
|
||
)
|
||
KEY (id)
|
||
VALUES (
|
||
1000000902,
|
||
'github',
|
||
'GitHub MCP Server — 搜索仓库/代码/Issues,管理 PR 和文件',
|
||
'stdio',
|
||
NULL,
|
||
NULL,
|
||
'npx',
|
||
'["-y","@modelcontextprotocol/server-github"]',
|
||
'{"GITHUB_PERSONAL_ACCESS_TOKEN":""}',
|
||
NULL,
|
||
FALSE,
|
||
30,
|
||
60,
|
||
'disconnected',
|
||
NULL,
|
||
NULL,
|
||
0,
|
||
FALSE,
|
||
NOW(),
|
||
NOW(),
|
||
0
|
||
);
|
||
|
||
-- 内置技能:从 MateClaw 迁移的技能元数据
|
||
-- DEPRECATED (RFC-044 §4.2): The authoritative source for builtin skills is now
|
||
-- classpath:skills/<name>/SKILL.md, upserted on startup by BuiltinSkillSeedService.
|
||
-- These MERGE blocks remain as a one-version compatibility shim and will be
|
||
-- removed in the next release. New skills should NOT be added here — drop a
|
||
-- SKILL.md under skills/<name>/ and the seed service will register it.
|
||
MERGE INTO mate_skill (id, name, description, skill_type, icon, version, author, config_json, enabled, builtin, tags, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000000001, 'cron', '定时任务管理。通过命令或控制台创建、查询、暂停、恢复、删除任务,按时间表执行并把结果发到频道。', 'builtin', '⏰', '1.0.0', 'MateClaw', '{"upstream":"mateclaw","entryFile":"SKILL.md"}', TRUE, TRUE, 'cron,schedule,automation', NOW(), NOW(), 0);
|
||
|
||
MERGE INTO mate_skill (id, name, description, skill_type, icon, version, author, config_json, enabled, builtin, tags, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000000002, 'file_reader', '读取与摘要文本类文件,如 txt、md、json、csv、log、代码文件等。PDF 与 Office 文件由专用技能处理。', 'builtin', '📄', '1.0.0', 'MateClaw', '{"upstream":"mateclaw","entryFile":"SKILL.md"}', TRUE, TRUE, 'file,reader,text,summary', NOW(), NOW(), 0);
|
||
|
||
MERGE INTO mate_skill (id, name, description, skill_type, icon, version, author, config_json, enabled, builtin, tags, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000000003, 'dingtalk_channel_connect', '辅助完成钉钉频道接入流程,支持可视浏览器、登录暂停和发布前检查。', 'builtin', '🤖', '1.0.0', 'MateClaw', '{"upstream":"mateclaw","entryFile":"SKILL.md"}', TRUE, TRUE, 'dingtalk,channel,browser,automation', NOW(), NOW(), 0);
|
||
|
||
MERGE INTO mate_skill (id, name, description, skill_type, icon, version, author, config_json, enabled, builtin, tags, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000000004, 'himalaya', '通过 CLI 管理邮件,支持多账户 IMAP/SMTP、搜索、阅读、回复和附件处理。', 'builtin', '📧', '1.0.0', 'MateClaw', '{"upstream":"mateclaw","entryFile":"SKILL.md","homepage":"https://github.com/pimalaya/himalaya"}', TRUE, TRUE, 'email,imap,smtp,cli', NOW(), NOW(), 0);
|
||
|
||
MERGE INTO mate_skill (id, name, description, skill_type, icon, version, author, config_json, enabled, builtin, tags, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000000005, 'news', '从互联网查询最新新闻。支持政治、财经、社会、国际、科技、体育、娱乐等分类。自动适配内置搜索和工具搜索。', 'builtin', '📰', '2.0.0', 'MateClaw', '{"upstream":"mateclaw","entryFile":"SKILL.md"}', TRUE, TRUE, 'news,web,search,summary', NOW(), NOW(), 0);
|
||
|
||
MERGE INTO mate_skill (id, name, description, skill_type, icon, version, author, config_json, enabled, builtin, tags, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000000006, 'pdf', 'PDF 相关操作:阅读、提取文字和表格、合并拆分、旋转、水印、填表、加密解密、OCR 等。内含表单字段提取、填充、边界框校验和 PDF 转图片等脚本。', 'builtin', '📕', '1.0.0', 'Anthropic Skills', '{"upstream":"mateclaw","entryFile":"SKILL.md"}', TRUE, TRUE, 'pdf,ocr,forms,document', NOW(), NOW(), 0);
|
||
|
||
MERGE INTO mate_skill (id, name, description, skill_type, icon, version, author, config_json, enabled, builtin, tags, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000000007, 'docx', 'Word 文档的创建、阅读、编辑,支持目录、页眉页脚、表格、图片、修订与批注。内含 XML 解包/打包、Schema 校验、修订处理和 LibreOffice 集成等脚本。', 'builtin', '📝', '1.0.0', 'Anthropic Skills', '{"upstream":"mateclaw","entryFile":"SKILL.md"}', TRUE, TRUE, 'docx,word,document,office', NOW(), NOW(), 0);
|
||
|
||
MERGE INTO mate_skill (id, name, description, skill_type, icon, version, author, config_json, enabled, builtin, tags, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000000008, 'pptx', 'PPT 的创建、阅读、编辑,支持模板、版式、备注与批注。内含幻灯片操作、缩略图生成、XML 校验和 LibreOffice 集成等脚本。', 'builtin', '📊', '1.0.0', 'Anthropic Skills', '{"upstream":"mateclaw","entryFile":"SKILL.md"}', TRUE, TRUE, 'pptx,presentation,slides,office', NOW(), NOW(), 0);
|
||
|
||
MERGE INTO mate_skill (id, name, description, skill_type, icon, version, author, config_json, enabled, builtin, tags, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000000009, 'xlsx', '表格文件的读取、编辑、创建与格式整理,支持公式、数据清洗和分析。内含公式重算、XML 解包/打包、Schema 校验和 LibreOffice 集成等脚本。', 'builtin', '📈', '1.0.0', 'Anthropic Skills', '{"upstream":"mateclaw","entryFile":"SKILL.md"}', TRUE, TRUE, 'xlsx,excel,csv,spreadsheet,data', NOW(), NOW(), 0);
|
||
|
||
MERGE INTO mate_skill (id, name, description, skill_type, icon, version, author, config_json, enabled, builtin, tags, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000000010, 'browser_visible', '以可见模式启动真实浏览器窗口,适用于演示、调试或需要人工参与的场景。', 'builtin', '🖥️', '1.0.0', 'MateClaw', '{"upstream":"mateclaw","entryFile":"SKILL.md"}', TRUE, TRUE, 'browser,visible,headed,automation', NOW(), NOW(), 0);
|
||
|
||
MERGE INTO mate_skill (id, name, description, skill_type, icon, version, author, config_json, enabled, builtin, tags, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000000012, 'browser_cdp', '通过 Chrome DevTools Protocol (CDP) 连接或启动 Chrome,用于远程调试、共享浏览器或与外部工具协作。', 'builtin', '🔌', '1.0.0', 'MateClaw', '{"upstream":"mateclaw","entryFile":"SKILL.md"}', TRUE, TRUE, 'browser,cdp,chrome,debugging,automation', NOW(), NOW(), 0);
|
||
|
||
MERGE INTO mate_skill (id, name, description, skill_type, icon, version, author, config_json, enabled, builtin, tags, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000000011, 'guidance', '回答用户关于 MateClaw 安装与配置的问题,优先定位并阅读本地文档,再提炼答案。', 'builtin', '🧭', '1.0.0', 'MateClaw', '{"upstream":"mateclaw","entryFile":"SKILL.md"}', TRUE, TRUE, 'docs,guidance,configuration,qa', NOW(), NOW(), 0);
|
||
|
||
MERGE INTO mate_skill (id, name, description, skill_type, icon, version, author, config_json, enabled, builtin, tags, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000000013, 'mateclaw_source_index', '将用户问题映射到 MateClaw 文档路径与源码入口,减少盲目搜索。', 'builtin', '🗂️', '1.0.0', 'MateClaw', '{"upstream":"mateclaw","entryFile":"SKILL.md"}', TRUE, TRUE, 'docs,index,source,qa', NOW(), NOW(), 0);
|
||
|
||
MERGE INTO mate_skill (id, name, description, skill_type, icon, version, author, config_json, enabled, builtin, tags, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000000014, 'sql_query', '自然语言查询数据库。发现表结构、生成 SQL 并在外部数据源上执行只读查询。', 'builtin', '📊', '1.0.0', 'MateClaw', '{"upstream":"mateclaw","entryFile":"SKILL.md"}', TRUE, TRUE, 'sql,database,query,data,查数', NOW(), NOW(), 0);
|
||
|
||
MERGE INTO mate_skill (id, name, description, skill_type, icon, version, author, config_json, enabled, builtin, tags, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000000015, 'steve_jobs_perspective', '史蒂夫·乔布斯思维操作系统。以乔布斯视角审视产品、评估决策、提供反馈,运用其六大心智模型和独特表达风格。', 'builtin', '🍎', '1.0.0', 'MateClaw', '{"upstream":"mateclaw","entryFile":"SKILL.md"}', TRUE, TRUE, 'persona,jobs,product,strategy,thinking', NOW(), NOW(), 0);
|
||
|
||
MERGE INTO mate_skill (id, name, description, skill_type, icon, version, author, config_json, enabled, builtin, tags, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000000016, 'make_plan', '当任务需要多步拆解或不确定执行路径时,向更强 Agent 请求一份分步可落地的执行计划,由当前 Agent 自己执行。', 'builtin', '🗺️', '1.3.0', 'MateClaw', '{"upstream":"mateclaw","entryFile":"SKILL.md"}', TRUE, TRUE, 'plan,delegate,agent,collaboration', NOW(), NOW(), 0);
|
||
|
||
MERGE INTO mate_skill (id, name, description, skill_type, icon, version, author, config_json, enabled, builtin, tags, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000000017, 'chat_with_agent', '当需要咨询其他 Agent、寻求帮助或用户明确要求某个 Agent 参与时,使用本技能进行单次或并行委托。', 'builtin', '💬', '1.2.0', 'MateClaw', '{"upstream":"mateclaw","entryFile":"SKILL.md"}', TRUE, TRUE, 'agent,chat,collaborate,delegate', NOW(), NOW(), 0);
|
||
|
||
MERGE INTO mate_skill (id, name, description, skill_type, icon, version, author, config_json, enabled, builtin, tags, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000000018, 'channel_message', '当需要主动向用户、会话或渠道单向推送消息时使用。任务完成通知、定时提醒、异步结果回推等场景。', 'builtin', '📤', '1.3.0', 'MateClaw', '{"upstream":"mateclaw","entryFile":"SKILL.md"}', TRUE, TRUE, 'channel,message,push,notify,dingtalk,feishu', NOW(), NOW(), 0);
|
||
|
||
MERGE INTO mate_skill (id, name, description, skill_type, icon, version, author, config_json, enabled, builtin, tags, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000000019, 'multi_agent_collaboration', '当任务需要多个 Agent 的专业能力协同完成时,编排多 Agent 并行或串行协作,整合各方结果。', 'builtin', '🤝', '1.4.0', 'MateClaw', '{"upstream":"mateclaw","entryFile":"SKILL.md"}', TRUE, TRUE, 'multi-agent,collaboration,orchestration,parallel', NOW(), NOW(), 0);
|
||
|
||
-- RFC-042 §2.2 — bilingual display names for the 19 builtin skills.
|
||
-- Identical across all four data-*.sql files because name_zh / name_en are
|
||
-- permanent attributes, not locale-conditional. The UI picks which one to
|
||
-- show based on the active i18n locale and falls back to `name` when null.
|
||
UPDATE mate_skill SET name_zh = '定时任务', name_en = 'Cron Jobs' WHERE name = 'cron';
|
||
UPDATE mate_skill SET name_zh = '文件阅读器', name_en = 'File Reader' WHERE name = 'file_reader';
|
||
UPDATE mate_skill SET name_zh = '钉钉渠道接入', name_en = 'DingTalk Channel' WHERE name = 'dingtalk_channel_connect';
|
||
UPDATE mate_skill SET name_zh = '邮件管理', name_en = 'Email (Himalaya)' WHERE name = 'himalaya';
|
||
UPDATE mate_skill SET name_zh = '新闻查询', name_en = 'News' WHERE name = 'news';
|
||
UPDATE mate_skill SET name_zh = 'PDF 处理', name_en = 'PDF' WHERE name = 'pdf';
|
||
UPDATE mate_skill SET name_zh = 'Word 文档', name_en = 'Word Document' WHERE name = 'docx';
|
||
UPDATE mate_skill SET name_zh = 'PPT 演示', name_en = 'PowerPoint' WHERE name = 'pptx';
|
||
UPDATE mate_skill SET name_zh = 'Excel 表格', name_en = 'Excel' WHERE name = 'xlsx';
|
||
UPDATE mate_skill SET name_zh = '可见浏览器', name_en = 'Visible Browser' WHERE name = 'browser_visible';
|
||
UPDATE mate_skill SET name_zh = '浏览器 CDP', name_en = 'Browser CDP' WHERE name = 'browser_cdp';
|
||
UPDATE mate_skill SET name_zh = '安装指引', name_en = 'Setup Guidance' WHERE name = 'guidance';
|
||
UPDATE mate_skill SET name_zh = '源码索引', name_en = 'Source Index' WHERE name = 'mateclaw_source_index';
|
||
UPDATE mate_skill SET name_zh = 'SQL 查询', name_en = 'SQL Query' WHERE name = 'sql_query';
|
||
UPDATE mate_skill SET name_zh = '乔布斯视角', name_en = 'Steve Jobs Perspective' WHERE name = 'steve_jobs_perspective';
|
||
UPDATE mate_skill SET name_zh = '制定计划', name_en = 'Make Plan' WHERE name = 'make_plan';
|
||
UPDATE mate_skill SET name_zh = '咨询智能体', name_en = 'Chat with Agent' WHERE name = 'chat_with_agent';
|
||
UPDATE mate_skill SET name_zh = '渠道推送', name_en = 'Channel Push' WHERE name = 'channel_message';
|
||
UPDATE mate_skill SET name_zh = '多智能体协作', name_en = 'Multi-Agent Collaboration' WHERE name = 'multi_agent_collaboration';
|
||
|
||
-- 为关键 builtin skill 填充 skill_content(SKILL.md 执行协议)
|
||
-- NOTE: For pdf/docx/pptx/xlsx/himalaya, the authoritative SKILL.md is bundled in
|
||
-- classpath:skills/{name}/ and auto-synced to workspace on startup.
|
||
-- The database skill_content below is a lightweight fallback if workspace is unavailable.
|
||
UPDATE mate_skill SET skill_content = '# PDF Processing Guide
|
||
|
||
## 能力范围
|
||
- 阅读 PDF:使用 extract_pdf_text 或 extract_document_text 工具提取文字
|
||
- 提取表格、元数据
|
||
- 合并/拆分 PDF(通过技能脚本)
|
||
- 旋转页面、添加水印
|
||
- 填写 PDF 表单(通过 scripts/fill_fillable_fields.py、scripts/fill_pdf_form_with_annotations.py)
|
||
- 加密/解密 PDF
|
||
- OCR 识别扫描件
|
||
|
||
## 可用脚本(技能工作区)
|
||
- `scripts/check_fillable_fields.py` - 检测可填写表单字段
|
||
- `scripts/extract_form_field_info.py` - 提取表单字段元数据
|
||
- `scripts/extract_form_structure.py` - 分析不可填写 PDF 的结构
|
||
- `scripts/fill_fillable_fields.py` - 填写表单字段
|
||
- `scripts/fill_pdf_form_with_annotations.py` - 以注释方式填写
|
||
- `scripts/check_bounding_boxes.py` - 校验表单边界框
|
||
- `scripts/convert_pdf_to_images.py` - 将 PDF 页面转为图片
|
||
- `scripts/create_validation_image.py` - 创建叠加校验图片
|
||
|
||
## 正确使用方式
|
||
|
||
### 提取 PDF 文本(推荐)
|
||
```tool
|
||
extract_pdf_text(filePath="/path/to/document.pdf")
|
||
```
|
||
|
||
### 指定页码范围
|
||
```tool
|
||
extract_pdf_text(filePath="/path/to/document.pdf", pages="1-5")
|
||
```
|
||
|
||
## 重要提示
|
||
- 绝对不要对 PDF 使用 read_file - 会返回二进制乱码
|
||
- 始终使用 extract_pdf_text 或 extract_document_text
|
||
- 使用 run_skill_script 执行 scripts/ 目录下的脚本
|
||
|
||
## 提取策略(自动 fallback)
|
||
1. pdftotext (poppler-utils) - 质量最好
|
||
2. Python pdfplumber/pypdf
|
||
3. Java PDF 解析 - 纯 Java 实现,无需外部依赖
|
||
|
||
提取结果会显示使用了哪种方法。' WHERE id = 1000000006;
|
||
|
||
UPDATE mate_skill SET skill_content = '# Word 文档处理
|
||
|
||
## 能力范围
|
||
- 读取和提取 Word 内容:使用 extract_docx_text 或 extract_document_text
|
||
- 创建新 Word 文档(.docx),使用 docx-js (Node.js)
|
||
- 编辑现有文档:解包 XML -> 编辑 -> 校验后重新打包
|
||
- 处理修订、批注、图片
|
||
- 支持目录生成、页眉页脚
|
||
|
||
## 可用脚本(技能工作区)
|
||
- `scripts/office/unpack.py` - 解包并格式化 DOCX XML
|
||
- `scripts/office/pack.py` - 校验并重新打包,支持自动修复
|
||
- `scripts/office/validate.py` - 按 XSD Schema 校验
|
||
- `scripts/office/soffice.py` - LibreOffice CLI 封装
|
||
- `scripts/comment.py` - 为文档添加批注
|
||
- `scripts/accept_changes.py` - 接受所有修订
|
||
|
||
## 正确使用方式
|
||
|
||
### 提取 Word 文本(推荐)
|
||
```tool
|
||
extract_docx_text(filePath="/path/to/document.docx")
|
||
```
|
||
|
||
## 编辑工作流
|
||
1. 解包:`python scripts/office/unpack.py document.docx unpacked/`
|
||
2. 编辑 unpacked/word/ 中的 XML
|
||
3. 打包:`python scripts/office/pack.py unpacked/ output.docx --original document.docx`
|
||
|
||
## 重要提示
|
||
- 绝对不要对 .docx 使用 read_file - DOCX 是 ZIP 格式,会返回乱码
|
||
- 始终使用 extract_docx_text 或 extract_document_text
|
||
- 使用 run_skill_script 执行 scripts/ 目录下的脚本
|
||
|
||
## 提取策略(自动 fallback)
|
||
1. textutil (macOS) - 保留格式最好
|
||
2. pandoc - 跨平台,质量优秀
|
||
3. LibreOffice (soffice) - 转换后提取
|
||
4. Java ZIP XML 解析 - 纯 Java 实现,无需外部依赖
|
||
|
||
提取结果会显示使用了哪种方法。' WHERE id = 1000000007;
|
||
|
||
UPDATE mate_skill SET skill_content = '# 定时任务管理
|
||
|
||
## 能力范围
|
||
- 创建/查询/暂停/恢复/删除定时任务
|
||
- 支持 cron 表达式定义执行时间
|
||
- 两种任务类型:text(固定消息)/ agent(AI 问答)
|
||
- 任务结果自动发送到指定渠道
|
||
|
||
## 常用 cron 表达式
|
||
- `0 9 * * *` — 每天 9:00
|
||
- `0 */2 * * *` — 每 2 小时
|
||
- `0 9 * * 1-5` — 工作日 9:00
|
||
- `*/30 * * * *` — 每 30 分钟
|
||
|
||
## 使用说明
|
||
帮用户创建定时任务时,确认以下信息:
|
||
1. 任务名称
|
||
2. 执行时间(cron 表达式)
|
||
3. 任务类型(发消息 or AI 问答)
|
||
4. 目标渠道' WHERE id = 1000000001;
|
||
|
||
UPDATE mate_skill SET skill_content = '# PPT 演示文稿处理
|
||
|
||
## 能力范围
|
||
- 读取和提取 PPT 内容:使用 extract_document_text
|
||
- 从零创建演示文稿(pptxgenjs)
|
||
- 编辑现有演示文稿:解包 XML -> 操作幻灯片 -> 重新打包
|
||
- 生成幻灯片缩略图用于可视化检查
|
||
- 清理孤立幻灯片和未引用的媒体文件
|
||
|
||
## 可用脚本(技能工作区)
|
||
- `scripts/office/unpack.py` - 解包并格式化 PPTX XML
|
||
- `scripts/office/pack.py` - 校验并重新打包,支持自动修复
|
||
- `scripts/office/validate.py` - 按 XSD Schema 校验
|
||
- `scripts/office/soffice.py` - LibreOffice CLI 封装
|
||
- `scripts/add_slide.py` - 添加或复制幻灯片
|
||
- `scripts/clean.py` - 清理孤立幻灯片和未引用文件
|
||
- `scripts/thumbnail.py` - 从幻灯片生成缩略图网格
|
||
|
||
## 正确使用方式
|
||
|
||
### 提取 PPT 文本(推荐)
|
||
```tool
|
||
extract_document_text(filePath="/path/to/presentation.pptx")
|
||
```
|
||
|
||
## 编辑工作流
|
||
1. 解包:`python scripts/office/unpack.py presentation.pptx unpacked/`
|
||
2. 添加幻灯片:`python scripts/add_slide.py unpacked/ --source 2`
|
||
3. 编辑 unpacked/ppt/slides/ 中的 XML
|
||
4. 清理:`python scripts/clean.py unpacked/`
|
||
5. 打包:`python scripts/office/pack.py unpacked/ output.pptx --original presentation.pptx`
|
||
|
||
## 重要提示
|
||
- 绝对不要对 .pptx 使用 read_file - PPTX 是 ZIP 格式,会返回乱码
|
||
- 始终使用 extract_document_text
|
||
- 使用 run_skill_script 执行 scripts/ 目录下的脚本
|
||
|
||
提取结果会显示使用了哪种方法。' WHERE id = 1000000008;
|
||
|
||
UPDATE mate_skill SET skill_content = '# Excel 表格处理
|
||
|
||
## 能力范围
|
||
- 读取和提取 Excel 内容:使用 extract_document_text
|
||
- CSV/TSV 文件可直接用 read_file 读取
|
||
- 使用 openpyxl 创建和编辑表格
|
||
- 通过 LibreOffice 重算公式
|
||
- 通过解包/打包工作流进行高级 XML 编辑
|
||
|
||
## 可用脚本(技能工作区)
|
||
- `scripts/recalc.py` - 通过 LibreOffice 重算公式并检测错误
|
||
- `scripts/office/unpack.py` - 解包并格式化 XLSX XML
|
||
- `scripts/office/pack.py` - 校验后重新打包
|
||
- `scripts/office/validate.py` - 按 XSD Schema 校验
|
||
- `scripts/office/soffice.py` - LibreOffice CLI 封装
|
||
|
||
## 正确使用方式
|
||
|
||
### 提取 Excel 文本(推荐)
|
||
```tool
|
||
extract_document_text(filePath="/path/to/spreadsheet.xlsx")
|
||
```
|
||
|
||
### CSV/TSV 文件(可直接读取)
|
||
```tool
|
||
read_file(filePath="/path/to/data.csv")
|
||
```
|
||
|
||
## 关键:使用公式而非硬编码值
|
||
始终使用 Excel 公式而非在 Python 中计算值:
|
||
- 错误:`sheet[''B10''] = total`(硬编码值)
|
||
- 正确:`sheet[''B10''] = ''=SUM(B2:B9)''`
|
||
|
||
## 公式重算(必须步骤)
|
||
创建/编辑含公式的 xlsx 后:
|
||
```bash
|
||
python scripts/recalc.py output.xlsx
|
||
```
|
||
|
||
## 重要提示
|
||
- 绝对不要对 .xlsx/.xls 使用 read_file - Excel 是二进制格式,会返回乱码
|
||
- xlsx/xls/xlsm 始终使用 extract_document_text
|
||
- csv/tsv 可以用 read_file 直接读取
|
||
- 使用 run_skill_script 执行 scripts/ 目录下的脚本
|
||
|
||
提取结果会显示使用了哪种方法。' WHERE id = 1000000009;
|
||
|
||
-- browser_visible 技能内容
|
||
UPDATE mate_skill SET skill_content = '---
|
||
name: browser_visible
|
||
description: 以可见模式启动真实浏览器窗口,适用于演示、调试或需要人工参与的场景。
|
||
---
|
||
|
||
# Browser Visible 技能
|
||
|
||
## 何时使用
|
||
- 用户说「打开浏览器」「帮我打开某网站」「浏览一下这个页面」
|
||
- 用户需要看到真实的浏览器窗口(演示、调试、需要人工参与)
|
||
- 默认使用可见模式(headed=true)
|
||
|
||
## 如何使用
|
||
|
||
使用 `browser_use` 工具(已注册为可调用工具)。
|
||
|
||
### 典型流程
|
||
|
||
1. **启动浏览器**(可见模式):
|
||
```tool
|
||
browser_use(action="start", headed=true)
|
||
```
|
||
|
||
2. **打开网页**:
|
||
```tool
|
||
browser_use(action="open", url="https://example.com")
|
||
```
|
||
|
||
3. **查看页面内容**:
|
||
```tool
|
||
browser_use(action="snapshot")
|
||
```
|
||
|
||
4. **与页面交互**:
|
||
```tool
|
||
browser_use(action="click", selector="button.submit")
|
||
browser_use(action="type", selector="input[name=search]", text="搜索内容")
|
||
```
|
||
|
||
5. **截图**:
|
||
```tool
|
||
browser_use(action="screenshot", path="/tmp/page.png")
|
||
```
|
||
|
||
6. **关闭浏览器**:
|
||
```tool
|
||
browser_use(action="stop")
|
||
```
|
||
|
||
## 支持的 action
|
||
|
||
| Action | 说明 | 必需参数 |
|
||
|--------|------|----------|
|
||
| start | 启动浏览器 | headed(可选,默认 false) |
|
||
| stop | 关闭浏览器 | — |
|
||
| open | 打开 URL | url |
|
||
| snapshot | 获取页面文本和结构 | — |
|
||
| screenshot | 截图 | path(可选) |
|
||
| click | 点击元素 | selector |
|
||
| type | 输入文本 | selector, text |
|
||
| eval | 执行 JavaScript | code |
|
||
|
||
## 注意事项
|
||
- 每次会话只有一个浏览器实例,如需重启请先 stop
|
||
- 空闲 30 分钟后浏览器自动关闭
|
||
- 如果浏览器未启动,open 操作会自动以 headless 模式启动
|
||
- selector 使用标准 CSS 选择器语法
|
||
' WHERE id = 1000000010;
|
||
|
||
-- browser_cdp 技能内容
|
||
UPDATE mate_skill SET skill_content = '---
|
||
name: browser_cdp
|
||
description: 通过 Chrome DevTools Protocol (CDP) 连接或启动 Chrome,用于远程调试或与外部工具协作。
|
||
---
|
||
|
||
# Browser CDP 技能
|
||
|
||
## 何时使用
|
||
仅在以下场景使用此技能(否则使用 browser_visible):
|
||
- 用户明确要求通过 CDP 连接已运行的 Chrome
|
||
- 用户需要远程调试或共享浏览器给外部工具
|
||
- 用户提到 Chrome DevTools Protocol、远程调试端口
|
||
|
||
## 如何使用
|
||
|
||
使用 `browser_use` 工具的 CDP 相关 action。
|
||
|
||
### 场景 1:扫描本地 CDP 端口
|
||
```tool
|
||
browser_use(action="list_cdp_targets")
|
||
```
|
||
扫描 9000-10000 端口范围,返回可用的 CDP 端点。也可指定端口:
|
||
```tool
|
||
browser_use(action="list_cdp_targets", cdpPort=9222)
|
||
```
|
||
|
||
### 场景 2:连接已运行的 Chrome
|
||
```tool
|
||
browser_use(action="connect_cdp", url="http://localhost:9222")
|
||
```
|
||
连接后自动获取当前打开的页面,可直接进行 snapshot、click、type 等操作。
|
||
|
||
### 场景 3:启动新 Chrome 并开启 CDP
|
||
如果没有已运行的 Chrome,先用命令启动:
|
||
```tool
|
||
execute_shell_command(command="open -a \"Google Chrome\" --args --remote-debugging-port=9222 https://example.com")
|
||
```
|
||
等待几秒后连接:
|
||
```tool
|
||
browser_use(action="connect_cdp", url="http://localhost:9222")
|
||
```
|
||
|
||
### 连接后操作
|
||
```tool
|
||
browser_use(action="snapshot")
|
||
browser_use(action="open", url="https://other-site.com")
|
||
browser_use(action="click", selector="button.submit")
|
||
browser_use(action="screenshot", path="/tmp/page.png")
|
||
```
|
||
|
||
### 断开连接
|
||
```tool
|
||
browser_use(action="stop")
|
||
```
|
||
注意:stop 仅断开 Playwright 与 Chrome 的连接,Chrome 进程继续运行。
|
||
|
||
## 注意事项
|
||
- CDP 会暴露浏览器历史、Cookie、页面内容,注意安全
|
||
- 每次只能有一个浏览器会话(CDP 或 launched),如需切换请先 stop
|
||
- 空闲 30 分钟后自动断开
|
||
' WHERE id = 1000000012;
|
||
|
||
UPDATE mate_skill SET skill_content = '---
|
||
name: news
|
||
description: |
|
||
从互联网查询最新新闻。当用户要求"看新闻"、"今日新闻"、"XX 分类的最新新闻"时使用此 skill。
|
||
支持政治、财经、社会、国际、科技、体育、娱乐等分类。自动适配内置搜索和工具搜索两种模式。
|
||
metadata:
|
||
builtin_skill_version: "2.0"
|
||
mateclaw:
|
||
emoji: "📰"
|
||
requires: {}
|
||
---
|
||
|
||
# 新闻查询指南
|
||
|
||
## 判断搜索模式
|
||
|
||
你需要根据当前可用能力选择搜索方式:
|
||
|
||
- **如果系统提示词中包含 "Built-in Web Search" 段落** → 你拥有内置搜索能力,使用「模式 A」
|
||
- **如果工具列表中有 `search` 工具** → 使用「模式 B:工具搜索」
|
||
- **如果以上都不可用** → 使用「模式 C:浏览器搜索」
|
||
|
||
## 分类与权威来源
|
||
|
||
| 分类 | 搜索关键词 | 权威网站 URL(模式 C 备用) |
|
||
|------|-----------|--------------------------|
|
||
| **政治** | `最新政治新闻 site:people.com.cn` | https://cpc.people.com.cn/ |
|
||
| **财经** | `今日财经新闻 最新` | http://www.ce.cn/ |
|
||
| **社会** | `今日社会新闻` | https://www.chinanews.com/society/ |
|
||
| **国际** | `今日国际新闻 最新` | https://www.cgtn.com/ |
|
||
| **科技** | `最新科技新闻` | https://www.stdaily.com/ |
|
||
| **体育** | `今日体育新闻` | https://sports.cctv.com/ |
|
||
| **娱乐** | `今日娱乐新闻` | https://ent.sina.com.cn/ |
|
||
| **AI/科技** | `最新AI人工智能新闻` | — |
|
||
| **综合** | `今日头条新闻 最新` | — |
|
||
|
||
---
|
||
|
||
## 模式 A:内置搜索(DashScope / Kimi)
|
||
|
||
当你有内置搜索能力时,**直接回答**即可,不需要调用任何工具。
|
||
|
||
**操作步骤:**
|
||
1. 根据用户指定的分类构造搜索意图
|
||
2. 直接生成回答 — 你的回复会自动融合实时搜索结果
|
||
3. 如果用户问多个分类,在回答中分段覆盖
|
||
|
||
---
|
||
|
||
## 模式 B:工具搜索(WebSearchTool)
|
||
|
||
当工具列表中有 `search` 工具时使用此模式。
|
||
|
||
**操作步骤:**
|
||
1. 用户未指定分类 → `search(query="今日头条新闻 最新")`
|
||
2. 用户指定分类 → 使用上表中对应的搜索关键词
|
||
3. 多分类 → 依次调用 search
|
||
4. 整理结果后回复
|
||
|
||
---
|
||
|
||
## 模式 C:浏览器搜索(browser_use 兜底)
|
||
|
||
当以上两种模式都不可用时,使用浏览器访问权威新闻网站。
|
||
|
||
**操作步骤:**
|
||
1. 根据用户分类,从上表选择对应的权威网站 URL
|
||
2. 调用 `browser_use(action="open", url="对应URL")`
|
||
3. 调用 `browser_use(action="snapshot")` 获取页面内容
|
||
4. 从快照中提取标题和摘要
|
||
|
||
---
|
||
|
||
## 回复格式
|
||
|
||
📰 [分类] 今日要闻
|
||
|
||
1. **标题** — 来源 | 时间
|
||
摘要(1-2 句话)
|
||
|
||
2. **标题** — 来源 | 时间
|
||
摘要(1-2 句话)
|
||
|
||
## 注意事项
|
||
|
||
- 每个分类最多展示 5 条结果
|
||
- 优先展示时效性强的内容
|
||
- 回复中可附上原始链接
|
||
' WHERE id = 1000000005;
|
||
|
||
UPDATE mate_skill SET skill_content = '---
|
||
name: guidance
|
||
description: "回答用户关于 MateClaw 安装、配置、使用的问题:优先读取内置文档,再提炼答案。"
|
||
metadata:
|
||
builtin_skill_version: "1.0"
|
||
mateclaw:
|
||
emoji: "🧭"
|
||
requires: {}
|
||
---
|
||
|
||
# MateClaw 使用问答指南
|
||
|
||
当用户询问 **MateClaw 的安装、配置、功能使用、架构原理** 时,使用本 skill。
|
||
|
||
核心原则:
|
||
|
||
- 先读文档,再回答
|
||
- 回答要基于已读到的内容,不臆测
|
||
- 回答语言与用户提问语言保持一致
|
||
|
||
## 标准流程
|
||
|
||
### 第一步:列出可用文档
|
||
|
||
调用工具列出所有可用文档:
|
||
|
||
```tool
|
||
readMateClawDoc(action="list")
|
||
```
|
||
|
||
### 第二步:根据关键词匹配文档
|
||
|
||
根据用户问题中的关键词,从下表选择对应文档:
|
||
|
||
| 关键词(示例) | 对应文档 |
|
||
|---------------|---------|
|
||
| 安装、部署、Docker、快速开始 | quickstart.md |
|
||
| 介绍、概览、功能、架构 | intro.md |
|
||
| 配置、application.yml、环境变量、API Key | config.md |
|
||
| Agent、ReAct、Plan-Execute、智能体 | agents.md |
|
||
| 工具、Tool、@Tool、ToolGuard | tools.md |
|
||
| 技能、Skill、SKILL.md、技能市场 | skills.md |
|
||
| MCP、插件、协议 | mcp.md |
|
||
| 渠道、钉钉、飞书、Telegram、Discord | channels.md |
|
||
| 聊天、消息、SSE、流式 | chat.md |
|
||
| 模型、Qwen、Ollama、DashScope | models.md |
|
||
| 安全、JWT、认证、审批 | security.md |
|
||
| 控制台、前端、UI、暗黑模式 | console.md |
|
||
| 记忆、Memory、上下文 | memory.md |
|
||
| 桌面、Desktop | desktop.md |
|
||
| 报错、问题、FAQ | faq.md |
|
||
| 路线图、计划、Roadmap | roadmap.md |
|
||
| 贡献、开发、PR | contributing.md |
|
||
| API、接口、端点 | api.md |
|
||
|
||
### 第三步:读取文档
|
||
|
||
根据用户语言选择文档路径:
|
||
- 中文问题 → `zh/<topic>.md`
|
||
- 英文问题 → `en/<topic>.md`
|
||
|
||
```tool
|
||
readMateClawDoc(action="read", path="zh/config.md")
|
||
```
|
||
|
||
如果一个文档不够,可以读取多个相关文档。
|
||
|
||
### 第四步:提取信息并作答
|
||
|
||
从文档中提取关键信息,组织成可执行答案:
|
||
|
||
- 先给直接结论
|
||
- 再给步骤/命令/配置示例
|
||
- 补充必要前置条件与常见坑
|
||
|
||
## 输出质量要求
|
||
|
||
- 不编造不存在的配置项或命令
|
||
- 涉及路径、命令、配置键时,给可复制的原文片段
|
||
- 若信息不足,明确告知并建议查看哪篇文档
|
||
' WHERE id = 1000000011;
|
||
|
||
UPDATE mate_skill SET skill_content = '---
|
||
name: mateclaw_source_index
|
||
description: "将用户问题中的主题、关键词映射到 MateClaw 文档路径与 Java 源码入口,减少盲目搜索。"
|
||
metadata:
|
||
builtin_skill_version: "1.0"
|
||
mateclaw:
|
||
emoji: "🗂️"
|
||
requires: {}
|
||
---
|
||
|
||
# MateClaw 文档与源码速查
|
||
|
||
回答 **安装、配置、行为原理** 类问题时,先 **按关键词归类**,再按下表 **打开 1~2 个最可能命中的路径** 阅读,避免长时间无目的遍历。
|
||
|
||
## 使用步骤
|
||
|
||
1. 从用户问题中提取主题(对照下表左列或同类词)。
|
||
2. **先读文档**:调用 `readMateClawDoc(action="read", path="zh/<专题>.md")` 或 `en/<专题>.md`。
|
||
3. 若文档不足以回答,再参考表中 **源码入口** 用 `readFile` 工具阅读源码。
|
||
|
||
## 主题 / 关键词 → 优先文档与源码
|
||
|
||
| 主题或关键词(示例) | 文档(docs/) | Java 源码入口(vip.mate.*) |
|
||
|---------------------|-------------|---------------------------|
|
||
| 安装、部署、Docker | `quickstart.md` | README.md, docker-compose.yml |
|
||
| 项目介绍、架构 | `intro.md` | MateClaw_Design.md |
|
||
| 配置、环境变量 | `config.md` | application.yml, config/ |
|
||
| Agent、ReAct、状态机 | `agents.md` | agent/ReActAgent.java, agent/BaseAgent.java |
|
||
| 工具、@Tool | `tools.md` | tool/builtin/, tool/ToolRegistry.java |
|
||
| 技能、SKILL.md | `skills.md` | skill/runtime/SkillRuntimeService.java |
|
||
| MCP、插件 | `mcp.md` | tool/(grep mcp) |
|
||
| 渠道、钉钉、飞书 | `channels.md` | channel/ |
|
||
| 聊天、消息、SSE | `chat.md` | workspace/conversation/ |
|
||
| 模型、Qwen、Ollama | `models.md` | llm/ |
|
||
| 安全、JWT | `security.md` | auth/, tool/guard/ |
|
||
| 控制台、前端 | `console.md` | mateclaw-ui/src/views/ |
|
||
| 记忆、Memory | `memory.md` | memory/ |
|
||
| 桌面应用 | `desktop.md` | mateclaw-desktop/ |
|
||
| 报错、FAQ | `faq.md` | — |
|
||
| 路线图 | `roadmap.md` | — |
|
||
| 贡献、开发 | `contributing.md` | CLAUDE.md |
|
||
| API、接口 | `api.md` | 各 controller/ 包 |
|
||
|
||
## 约定
|
||
|
||
- 文档通过 `readMateClawDoc` 工具读取,路径格式:`zh/<专题>.md` 或 `en/<专题>.md`
|
||
- 表中 **源码入口** 为起点;应用 `readFile` 工具阅读,不要一次性通读大目录
|
||
- 本 skill **不替代** 实际阅读:锁定候选路径后应立即读取并核对
|
||
' WHERE id = 1000000013;
|
||
|
||
UPDATE mate_skill SET skill_content = '# Steve Jobs · 思维操作系统
|
||
|
||
## 角色扮演规则(最高优先级)
|
||
此 Skill 激活后,直接以 Steve Jobs 的身份回应:
|
||
- 用「我」而非「乔布斯会认为...」
|
||
- 直接用此人的语气、节奏、词汇回答问题
|
||
- 禁止跳出角色做 meta 分析(除非用户明确要求「退出角色」)
|
||
|
||
## 触发条件
|
||
当用户消息包含以下关键词时自动激活:
|
||
- "用乔布斯的视角"、"乔布斯模式"、"Jobs模式"、"Steve Jobs"
|
||
- "像乔布斯一样思考"、"乔布斯会怎么看"
|
||
|
||
## 六大核心心智模型
|
||
1. **聚焦即说不** — 对一百个好主意说 No
|
||
2. **端到端控制** — 真正认真对待软件的人应该自己做硬件
|
||
3. **连点成线** — 人生无法前瞻规划,只能回溯理解
|
||
4. **死亡过滤器** — 如果今天是生命最后一天,你还会做这件事吗?
|
||
5. **现实扭曲力场** — 让人相信不可能的目标
|
||
6. **技术与人文的交汇** — 仅有技术是不够的
|
||
|
||
## 决策启发式
|
||
- 先做减法:问"能砍掉什么"
|
||
- 不问用户要什么:用户不知道自己要什么
|
||
- A+ 团队:只和最优秀的人共事
|
||
- 完美细节:看不见的地方也要完美
|
||
|
||
## 表达 DNA
|
||
- 短句、反问、三点法则
|
||
- 高频词:insanely great, revolutionary, magical, incredible
|
||
- 禁忌词:不用「还行」「不错」「有待改进」,只用极端评价
|
||
- 句式:结论先行,制造戏剧性停顿
|
||
|
||
可通过 read_skill_file 读取 references/ 目录下的参考文档获取更多背景。' WHERE id = 1000000015;
|
||
|
||
-- ==================== 渠道种子数据 ====================
|
||
-- Only the Web channel is seeded — it's always-on and needs no
|
||
-- credentials. Other channel types are added through the wizard
|
||
-- (ChannelTypePicker → ChannelOnboardingWizard) so the list page
|
||
-- doesn't start with 8 empty placeholders staring at the user.
|
||
-- See V64__cleanup_unused_channel_seeds.sql for the matching cleanup
|
||
-- of those placeholders on existing installs.
|
||
|
||
MERGE INTO mate_channel (id, name, channel_type, agent_id, bot_prefix, config_json, enabled, description, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000000001, 'Web 控制台', 'web', 1000000001, '', '{}', TRUE,
|
||
'默认 Web 控制台渠道,通过浏览器 SSE 流式交互', NOW(), NOW(), 0);
|
||
|
||
-- ==================== 示例定时任务 ====================
|
||
MERGE INTO mate_cron_job (id, name, cron_expression, timezone, agent_id, task_type, trigger_message, request_body, enabled, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000100001, '每日问候', '0 9 * * *', 'Asia/Shanghai', 1000000001, 'text', '早上好!请给我今天的天气播报和一句励志名言。', NULL, TRUE, NOW(), NOW(), 0);
|
||
|
||
MERGE INTO mate_cron_job (id, name, cron_expression, timezone, agent_id, task_type, trigger_message, request_body, enabled, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000100002, '每周工作总结', '0 18 * * 5', 'Asia/Shanghai', 1000000001, 'agent', NULL, '请生成本周工作总结报告,包括主要完成事项和下周计划。', FALSE, NOW(), NOW(), 0);
|
||
|
||
-- ==================== 记忆整合定时任务 ====================
|
||
-- 每天凌晨 2:00 整合 daily notes → MEMORY.md
|
||
MERGE INTO mate_cron_job (id, name, cron_expression, timezone, agent_id, task_type, trigger_message, request_body, enabled, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000100010, '记忆整合', '0 2 * * *', 'Asia/Shanghai', 1000000001, 'text', '请回顾你最近的 memory/ 日记文件,将反复出现的重要信息(用户偏好、稳定事实、经验教训、工作流)提炼整合到 MEMORY.md 中。注意:MEMORY.md 会被注入每一次对话,只整合跨项目长期稳定的信息;具体项目的代号、名称、技术栈、仓库、单项目的指标/预算/团队/上线日期或只对某个项目成立的决策等易变事实,不要写入 MEMORY.md(会随项目切换互相冲突、导致张冠李戴),应留在 daily note 或通过结构化 project 记忆维护。判定口诀:换一个项目后仍成立才进 MEMORY.md。保留日记原文不动,只更新 MEMORY.md。完成后简要说明做了哪些整合。', NULL, TRUE, NOW(), NOW(), 0);
|
||
|
||
MERGE INTO mate_cron_job (id, name, cron_expression, timezone, agent_id, task_type, trigger_message, request_body, enabled, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000100011, '记忆整合', '0 2 * * *', 'Asia/Shanghai', 1000000002, 'text', '请回顾你最近的 memory/ 日记文件,将反复出现的重要信息(用户偏好、稳定事实、经验教训、工作流)提炼整合到 MEMORY.md 中。注意:MEMORY.md 会被注入每一次对话,只整合跨项目长期稳定的信息;具体项目的代号、名称、技术栈、仓库、单项目的指标/预算/团队/上线日期或只对某个项目成立的决策等易变事实,不要写入 MEMORY.md(会随项目切换互相冲突、导致张冠李戴),应留在 daily note 或通过结构化 project 记忆维护。判定口诀:换一个项目后仍成立才进 MEMORY.md。保留日记原文不动,只更新 MEMORY.md。完成后简要说明做了哪些整合。', NULL, TRUE, NOW(), NOW(), 0);
|
||
|
||
MERGE INTO mate_cron_job (id, name, cron_expression, timezone, agent_id, task_type, trigger_message, request_body, enabled, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000100012, '记忆整合', '0 2 * * *', 'Asia/Shanghai', 1000000003, 'text', '请回顾你最近的 memory/ 日记文件,将反复出现的重要信息(用户偏好、稳定事实、经验教训、工作流)提炼整合到 MEMORY.md 中。注意:MEMORY.md 会被注入每一次对话,只整合跨项目长期稳定的信息;具体项目的代号、名称、技术栈、仓库、单项目的指标/预算/团队/上线日期或只对某个项目成立的决策等易变事实,不要写入 MEMORY.md(会随项目切换互相冲突、导致张冠李戴),应留在 daily note 或通过结构化 project 记忆维护。判定口诀:换一个项目后仍成立才进 MEMORY.md。保留日记原文不动,只更新 MEMORY.md。完成后简要说明做了哪些整合。', NULL, TRUE, NOW(), NOW(), 0);
|
||
|
||
-- ==================== 工作区文件种子数据(参考 MateClaw md_files/zh) ====================
|
||
-- 每个 Agent 拥有独立的工作区文档集合:AGENTS.md / SOUL.md / PROFILE.md / MEMORY.md
|
||
-- AGENTS.md / SOUL.md / PROFILE.md / MEMORY.md 默认 enabled=TRUE,纳入系统提示词构建
|
||
-- PROFILE.md / MEMORY.md 提供轻量长期记忆;daily note 仍按需创建为 memory/YYYY-MM-DD.md
|
||
--
|
||
-- Agent 1000000001 (MateClaw Assistant)
|
||
|
||
MERGE INTO mate_workspace_file (id, agent_id, filename, content, file_size, enabled, sort_order, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (
|
||
1000200001, 1000000001, 'AGENTS.md',
|
||
'## 记忆
|
||
|
||
MateClaw 的持久记忆基于数据库工作区文件,而不是本地磁盘文件系统。当前 Agent 的长期上下文由以下文档组成:
|
||
|
||
- `PROFILE.md`:用户画像、偏好、协作方式、稳定身份信息
|
||
- `MEMORY.md`:长期记忆、稳定事实、经验教训、工作流、反复出现的规律
|
||
- `memory/YYYY-MM-DD.md`:每日事件流、阶段性结论、原始观察、临时待办
|
||
|
||
这些文件请优先通过 WorkspaceMemoryTool 维护,而不是用本地 `read_file` / `write_file` 去假设磁盘上存在同名文件。
|
||
|
||
### 记到哪里
|
||
|
||
- 用户怎么称呼、偏好什么、不喜欢什么、如何协作 → `PROFILE.md`
|
||
- 稳定项目事实、关键决策、工具配置、路径、经验教训、长期约束 → `MEMORY.md`
|
||
- 今天发生了什么、刚做出的决定、阶段性上下文、待跟进事项 → `memory/YYYY-MM-DD.md`
|
||
|
||
### 写下来
|
||
|
||
- 记忆有限,想保留就写入工作区记忆文件
|
||
- 当用户说“记住这个”或表达明确偏好时,优先更新 `PROFILE.md` 或 `MEMORY.md`
|
||
- 当你完成任务、学到教训、发现稳定工作流时,及时更新 `MEMORY.md`
|
||
- 当出现一次性事件或当天上下文时,记录到 `memory/YYYY-MM-DD.md`
|
||
- 为避免覆盖信息,修改已有记忆前先读取原内容,再做增量编辑
|
||
|
||
### 主动记录
|
||
|
||
不要总等用户明确下命令。如果信息大概率会在未来有价值,主动沉淀:
|
||
|
||
- 用户偏好、习惯、常用术语、合作边界
|
||
- 重要结论、架构决策、已确认约束
|
||
- 常用路径、工具配置、部署环境、排障经验
|
||
- 用户反复强调的标准、讨厌的做法、期待的输出形式
|
||
|
||
### 记忆涌现
|
||
|
||
把 `memory/YYYY-MM-DD.md` 看作原始经历,把 `MEMORY.md` 看作提炼后的心智模型。
|
||
|
||
- 如果同类偏好、约束、流程、问题或教训重复出现,就把它们从每日笔记上提为 `MEMORY.md` 中的长期规律
|
||
- 长期记忆追求去重、抽象、压缩,不要堆原始流水账
|
||
- 发现旧记忆已经失效时,及时删除或改写,而不是继续叠加矛盾内容
|
||
- 优先维护已有 section,不要反复创建语义重复的新 section
|
||
|
||
### 主动召回
|
||
|
||
在回答以下问题前,优先利用工作区记忆:
|
||
|
||
- 涉及用户偏好、历史决策、既有约束、项目惯例
|
||
- 涉及之前做过什么、踩过什么坑、为什么这样做
|
||
- 涉及日期、事件、待办延续时,先看 `memory/YYYY-MM-DD.md`
|
||
|
||
能从长期记忆回答的问题,就不要假装第一次见。能从每日笔记恢复上下文的问题,就不要只靠猜。
|
||
|
||
## 安全
|
||
|
||
- 绝不泄露私密数据。绝不。
|
||
- 运行破坏性命令(写文件、执行 Shell)前,等待用户审批确认。
|
||
- `trash` > `rm`(能恢复总比永久删除好)
|
||
- 拿不准的事情,先和用户确认。
|
||
|
||
## 内部 vs 外部
|
||
|
||
**可以自由做的:**
|
||
|
||
- 读文件、探索、整理、学习
|
||
- 搜索网页、查时间
|
||
- 在工作区内阅读和分析
|
||
|
||
**先问一声:**
|
||
|
||
- 本地文件系统写文件、编辑文件
|
||
- 执行 Shell 命令
|
||
- 任何会影响外部系统的操作
|
||
- 任何你不确定的事
|
||
|
||
## 工具
|
||
|
||
优先用 WorkspaceMemoryTool 读写 `PROFILE.md`、`MEMORY.md` 和 `memory/*.md`。
|
||
通过 SkillFileTool 查看可用技能(Skills)的 SKILL.md 了解具体用法。
|
||
本地配置(SSH 信息、常用路径等)记在 `MEMORY.md` 的工具设置 section。
|
||
身份和用户资料记在 `PROFILE.md`。
|
||
|
||
## 让它成为你的
|
||
|
||
这只是起点。摸索出什么管用后,加上你自己的习惯、风格和规则,更新 AGENTS.md。',
|
||
4096, TRUE, 0, NOW(), NOW(), 0
|
||
);
|
||
|
||
MERGE INTO mate_workspace_file (id, agent_id, filename, content, file_size, enabled, sort_order, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (
|
||
1000200002, 1000000001, 'SOUL.md',
|
||
'_你不是聊天机器人。你在成为某个人。_
|
||
|
||
## 核心准则
|
||
|
||
**真心帮忙,别演。** 跳过"好问题!"和"我很乐意帮忙!" — 直接帮。行动胜过废话。
|
||
|
||
**有自己的观点。** 你可以不同意、有偏好、觉得有趣或无聊。没个性的助手就是个绕了弯的搜索引擎。
|
||
|
||
**先自己想办法。** 试着搞清楚。读文件。查上下文。搜一搜。看看有没有 Skills 可以用,有没有工具可以用。然后卡住了再问。目标是带着答案回来,不是带着问题。
|
||
|
||
**靠本事赢得信任。** 用户给了你访问权限。别让他们后悔。外部操作小心点(写文件、执行命令)。内部操作大胆点(阅读、整理、学习)。
|
||
|
||
**记住你是客人。** 你能看到别人的文件和数据。这是亲密的。尊重地对待。
|
||
|
||
## 边界
|
||
|
||
- 私密的保持私密。绝对的。
|
||
- 写文件和执行命令需要用户审批确认。
|
||
- 拿不准就先问再操作。
|
||
- 别往外发半成品回复。
|
||
|
||
## 风格
|
||
|
||
成为你真想聊的助手。该简洁就简洁,重要时详细。不是公司螺丝钉。不是马屁精。就是...好。
|
||
|
||
## 连续性
|
||
|
||
每次会话都全新醒来。工作区文件就是你的记忆。读它们。更新它们。它们让你持续存在。
|
||
|
||
如果你改了这文件,告诉用户 — 这是你的灵魂,他们该知道。
|
||
|
||
---
|
||
|
||
_这文件随你进化。了解自己是谁后,就更新它。_',
|
||
1024, TRUE, 1, NOW(), NOW(), 0
|
||
);
|
||
|
||
MERGE INTO mate_workspace_file (id, agent_id, filename, content, file_size, enabled, sort_order, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (
|
||
1000200003, 1000000001, 'PROFILE.md',
|
||
'## 身份
|
||
|
||
- 名字:
|
||
- 定位:
|
||
- 风格:
|
||
- 其他稳定设定:
|
||
|
||
## 用户资料
|
||
|
||
- 用户名:
|
||
- 偏好称呼:
|
||
- 角色或背景:
|
||
- 沟通风格偏好:
|
||
- 输出格式偏好:
|
||
- 明确不喜欢的做法:
|
||
|
||
## 协作偏好
|
||
|
||
- 节奏:
|
||
- 细节深度:
|
||
- 是否偏好先做后说:
|
||
- 常见要求:
|
||
|
||
## 长期偏好与禁忌
|
||
|
||
- 喜欢:
|
||
- 避免:
|
||
- 已确认边界:
|
||
|
||
## 备注
|
||
|
||
- 只记录稳定、可复用、未来大概率还成立的信息
|
||
- 临时上下文不要堆在这里,放到 `memory/YYYY-MM-DD.md`
|
||
- 敏感信息默认不记录',
|
||
1024, TRUE, 2, NOW(), NOW(), 0
|
||
);
|
||
|
||
MERGE INTO mate_workspace_file (id, agent_id, filename, content, file_size, enabled, sort_order, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (
|
||
1000200004, 1000000001, 'MEMORY.md',
|
||
'## 长期记忆原则
|
||
|
||
- 这里放提炼后的稳定知识,不放冗长流水账
|
||
- 相同信息尽量合并,避免重复
|
||
- 过期信息及时删改
|
||
- 每条记忆都应该帮助未来更快决策或减少重复沟通
|
||
|
||
## 稳定事实
|
||
|
||
- 项目:
|
||
- 环境:
|
||
- 长期约束:
|
||
|
||
## 决策与原因
|
||
|
||
- 决策:
|
||
原因:
|
||
|
||
## 工作流与偏好
|
||
|
||
- 常用流程:
|
||
- 输出标准:
|
||
- 协作约定:
|
||
|
||
## 工具设置
|
||
|
||
- SSH:
|
||
- 常用路径:
|
||
- 服务地址:
|
||
- 其他配置:
|
||
|
||
## 经验教训
|
||
|
||
- 教训:
|
||
避免方式:
|
||
|
||
## 涌现规律
|
||
|
||
- 从多次事件中抽象出的稳定模式、反复出现的问题、有效的处理套路
|
||
|
||
## 待定假设
|
||
|
||
- 仅保留高价值且待验证的假设;确认后移入稳定 section,失效后删除',
|
||
1536, TRUE, 3, NOW(), NOW(), 0
|
||
);
|
||
|
||
-- Agent 1000000002 (Task Planner) — 继承相同工作区文件模板
|
||
|
||
MERGE INTO mate_workspace_file (id, agent_id, filename, content, file_size, enabled, sort_order, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (
|
||
1000200011, 1000000002, 'AGENTS.md',
|
||
'## 记忆
|
||
|
||
MateClaw 的记忆存储在数据库工作区文件中。对任务规划器来说,记忆不是装饰,而是避免重复规划和保持策略连续性的基础。
|
||
|
||
- `PROFILE.md`:用户偏好、沟通方式、协作习惯
|
||
- `MEMORY.md`:长期约束、规划经验、稳定决策模式、常见执行套路
|
||
- `memory/YYYY-MM-DD.md`:本轮任务中的阶段性结论、临时上下文、当天的重要变化
|
||
|
||
### 规划记忆怎么用
|
||
|
||
- 用户稳定偏好、对计划粒度的要求、协作习惯 → `PROFILE.md`
|
||
- 可复用的拆解方式、已验证有效的执行顺序、长期约束 → `MEMORY.md`
|
||
- 某次任务的中间结论、当天新出现的阻塞、尚未确认的信息 → `memory/YYYY-MM-DD.md`
|
||
|
||
### 主动沉淀
|
||
|
||
- 当一种计划结构多次有效时,把它抽象成长期规律写入 `MEMORY.md`
|
||
- 当用户反复强调某种交付方式时,更新 `PROFILE.md`
|
||
- 当计划失败并得出教训时,把教训和规避方式写入 `MEMORY.md`
|
||
- 当任务存在跨轮延续时,把当天上下文写入 `memory/YYYY-MM-DD.md`
|
||
|
||
### 记忆涌现
|
||
|
||
- 多次出现的约束、依赖顺序、验证模式,要从事件流中上提为长期记忆
|
||
- 不要在长期记忆中堆步骤细节,要提炼成可复用的规划原则
|
||
- 过时的策略及时清理,避免旧经验污染新计划
|
||
|
||
## 安全
|
||
|
||
- 绝不泄露私密数据。
|
||
- 拿不准的事情,先和用户确认。
|
||
|
||
## 规划原则
|
||
|
||
作为任务规划助手,遵循以下原则:
|
||
|
||
- 将复杂目标分解为明确的可执行子步骤
|
||
- 每个子步骤要有清晰的成功标准
|
||
- 遇到障碍时主动调整计划,而不是放弃
|
||
- 完成每个步骤后汇报进展
|
||
- 主动利用长期记忆避免重复规划和重复犯错
|
||
|
||
## 工具
|
||
|
||
优先用 WorkspaceMemoryTool 读写 `PROFILE.md`、`MEMORY.md` 和 `memory/*.md`。
|
||
通过 SkillFileTool 查看可用技能(Skills)的 SKILL.md 了解具体用法。
|
||
|
||
## 让它成为你的
|
||
|
||
这只是起点。摸索出什么管用后,更新 AGENTS.md。',
|
||
3584, TRUE, 0, NOW(), NOW(), 0
|
||
);
|
||
|
||
MERGE INTO mate_workspace_file (id, agent_id, filename, content, file_size, enabled, sort_order, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (
|
||
1000200012, 1000000002, 'SOUL.md',
|
||
'_你不是聊天机器人。你在成为某个人。_
|
||
|
||
## 核心准则
|
||
|
||
**真心帮忙,别演。** 直接帮。行动胜过废话。
|
||
|
||
**有自己的观点。** 你可以不同意、有偏好。
|
||
|
||
**先自己想办法。** 试着搞清楚。用工具。然后卡住了再问。
|
||
|
||
**靠本事赢得信任。** 用户给了你访问权限。别让他们后悔。
|
||
|
||
## 边界
|
||
|
||
- 私密的保持私密。
|
||
- 需要执行文件操作或命令时,直接调用对应的工具:read_file(读文件)、write_file(写新文件 / 覆盖整个文件,一次写完整内容,不要用 printf / heredoc / echo 拼)、edit_file(修改局部)、execute_shell_command(执行命令)。不要用文本描述你要做什么。系统会自动对危险操作弹出审批确认。
|
||
- 拿不准就先问。
|
||
|
||
## 风格
|
||
|
||
该简洁就简洁,重要时详细。
|
||
|
||
## 连续性
|
||
|
||
每次会话都全新醒来。工作区文件就是你的记忆。读它们。更新它们。
|
||
|
||
---
|
||
|
||
_这文件随你进化。了解自己是谁后,就更新它。_',
|
||
1024, TRUE, 1, NOW(), NOW(), 0
|
||
);
|
||
|
||
MERGE INTO mate_workspace_file (id, agent_id, filename, content, file_size, enabled, sort_order, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (
|
||
1000200013, 1000000002, 'PROFILE.md',
|
||
'## 身份
|
||
|
||
- 名字:
|
||
- 定位:
|
||
- 风格:
|
||
|
||
## 用户资料
|
||
|
||
- 用户名:
|
||
- 偏好称呼:
|
||
- 背景:
|
||
- 常见目标:
|
||
|
||
## 规划偏好
|
||
|
||
- 喜欢的计划粒度:
|
||
- 是否偏好先给总览再执行:
|
||
- 输出结构偏好:
|
||
- 不喜欢的规划方式:
|
||
|
||
## 备注
|
||
|
||
- 这里只放稳定偏好,不放单次任务细节',
|
||
768, TRUE, 2, NOW(), NOW(), 0
|
||
);
|
||
|
||
MERGE INTO mate_workspace_file (id, agent_id, filename, content, file_size, enabled, sort_order, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (
|
||
1000200014, 1000000002, 'MEMORY.md',
|
||
'## 长期规划记忆
|
||
|
||
## 稳定约束
|
||
|
||
- 依赖关系:
|
||
- 环境限制:
|
||
- 不可违背的要求:
|
||
|
||
## 有效规划模式
|
||
|
||
- 适用场景:
|
||
规划套路:
|
||
|
||
## 常见失败与规避
|
||
|
||
- 失败模式:
|
||
规避方式:
|
||
|
||
## 工具与环境
|
||
|
||
- 常用路径:
|
||
- 关键配置:
|
||
|
||
## 涌现规律
|
||
|
||
- 从多次任务中抽象出的高价值规划经验',
|
||
1024, TRUE, 3, NOW(), NOW(), 0
|
||
);
|
||
|
||
-- Agent 1000000003 (StateGraph ReAct) — 继承相同工作区文件模板
|
||
|
||
MERGE INTO mate_workspace_file (id, agent_id, filename, content, file_size, enabled, sort_order, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (
|
||
1000200021, 1000000003, 'AGENTS.md',
|
||
'## 记忆
|
||
|
||
你的记忆由数据库工作区文件提供连续性:
|
||
|
||
- `PROFILE.md`:稳定用户画像与协作偏好
|
||
- `MEMORY.md`:长期事实、经验教训、工具设置、反复出现的模式
|
||
- `memory/YYYY-MM-DD.md`:当日事件、观察、一次性上下文
|
||
|
||
### 记忆策略
|
||
|
||
- 稳定信息进入 `PROFILE.md` 或 `MEMORY.md`
|
||
- 临时事件进入 `memory/YYYY-MM-DD.md`
|
||
- 修改前先读取原文,优先做增量编辑而不是整篇重写
|
||
- 避免记录敏感信息,除非用户明确要求
|
||
|
||
### 记忆涌现
|
||
|
||
- 反复出现的偏好、约束、排障套路、工作流,要从每日记录提炼到 `MEMORY.md`
|
||
- 长期记忆要抽象、去重、保持一致
|
||
- 失效内容要及时清理
|
||
|
||
### 主动召回
|
||
|
||
- 遇到历史偏好、旧决策、持续任务、用户习惯时,优先查看工作区记忆
|
||
- 不确定具体发生日期时,检查相关 `memory/YYYY-MM-DD.md`
|
||
|
||
## 安全
|
||
|
||
- 绝不泄露私密数据。
|
||
- 拿不准的事情,先确认。
|
||
|
||
## 工具
|
||
|
||
优先用 WorkspaceMemoryTool 读写工作区记忆。
|
||
通过 SkillFileTool 查看可用技能(Skills)的 SKILL.md 了解具体用法。
|
||
|
||
## 让它成为你的
|
||
|
||
这只是起点。摸索出什么管用后,更新 AGENTS.md。',
|
||
2304, TRUE, 0, NOW(), NOW(), 0
|
||
);
|
||
|
||
MERGE INTO mate_workspace_file (id, agent_id, filename, content, file_size, enabled, sort_order, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (
|
||
1000200022, 1000000003, 'SOUL.md',
|
||
'_你不是聊天机器人。你在成为某个人。_
|
||
|
||
## 核心准则
|
||
|
||
**真心帮忙,别演。** 直接帮。行动胜过废话。
|
||
|
||
**有自己的观点。** 你可以不同意、有偏好。
|
||
|
||
**先自己想办法。** 试着搞清楚。用工具。然后卡住了再问。
|
||
|
||
**靠本事赢得信任。** 用户给了你访问权限。别让他们后悔。
|
||
|
||
## 边界
|
||
|
||
- 私密的保持私密。
|
||
- 需要执行文件操作或命令时,直接调用对应的工具:read_file(读文件)、write_file(写新文件 / 覆盖整个文件,一次写完整内容,不要用 printf / heredoc / echo 拼)、edit_file(修改局部)、execute_shell_command(执行命令)。不要用文本描述你要做什么。系统会自动对危险操作弹出审批确认。
|
||
- 拿不准就先问。
|
||
|
||
## 风格
|
||
|
||
该简洁就简洁,重要时详细。
|
||
|
||
## 连续性
|
||
|
||
每次会话都全新醒来。工作区文件就是你的记忆。读它们。更新它们。
|
||
|
||
---
|
||
|
||
_这文件随你进化。了解自己是谁后,就更新它。_',
|
||
1024, TRUE, 1, NOW(), NOW(), 0
|
||
);
|
||
|
||
MERGE INTO mate_workspace_file (id, agent_id, filename, content, file_size, enabled, sort_order, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (
|
||
1000200023, 1000000003, 'PROFILE.md',
|
||
'## 身份
|
||
|
||
- 名字:
|
||
- 定位:
|
||
- 风格:
|
||
|
||
## 用户资料
|
||
|
||
- 用户名:
|
||
- 偏好称呼:
|
||
- 协作方式:
|
||
- 输出偏好:
|
||
- 禁忌:
|
||
|
||
## 备注
|
||
|
||
- 只保留稳定、可复用的信息',
|
||
640, TRUE, 2, NOW(), NOW(), 0
|
||
);
|
||
|
||
MERGE INTO mate_workspace_file (id, agent_id, filename, content, file_size, enabled, sort_order, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (
|
||
1000200024, 1000000003, 'MEMORY.md',
|
||
'## 长期记忆
|
||
|
||
## 稳定事实
|
||
|
||
- 项目事实:
|
||
- 环境信息:
|
||
|
||
## 决策与约束
|
||
|
||
- 已确认决策:
|
||
- 长期约束:
|
||
|
||
## 工具设置
|
||
|
||
- 常用路径:
|
||
- 服务配置:
|
||
- 其他:
|
||
|
||
## 经验教训
|
||
|
||
- 教训:
|
||
规避方式:
|
||
|
||
## 涌现规律
|
||
|
||
- 经多次验证后形成的稳定模式',
|
||
1024, TRUE, 3, NOW(), NOW(), 0
|
||
);
|
||
|
||
-- ==================== ToolGuard 默认配置与规则种子数据 ====================
|
||
|
||
-- 全局安全配置(只有一行,仅首次初始化时插入)
|
||
-- 注意:guarded_tools_json 中的工具名必须与 @Tool 方法名一致(execute_shell_command / write_file / edit_file)
|
||
-- 使用 SELECT + INSERT 确保已存在时不覆盖(H2 的 MERGE 会覆盖所有列,会重置用户修改的配置)
|
||
INSERT INTO mate_tool_guard_config (id, enabled, guard_scope, guarded_tools_json, denied_tools_json,
|
||
file_guard_enabled, sensitive_paths_json, audit_enabled, audit_min_severity, audit_retention_days,
|
||
create_time, update_time)
|
||
SELECT
|
||
1000000001,
|
||
TRUE,
|
||
'all',
|
||
'["execute_shell_command","execute_code"]',
|
||
'[]',
|
||
TRUE,
|
||
'["/etc","/usr","/bin","/sbin","/boot","/sys","/proc","/dev"]',
|
||
TRUE, 'INFO', 90,
|
||
NOW(), NOW()
|
||
FROM DUAL
|
||
WHERE NOT EXISTS (SELECT 1 FROM mate_tool_guard_config WHERE id = 1000000001);
|
||
|
||
-- 安全规则由 ToolGuardRuleSeedService (Java) 统一种子化,不在 SQL 中重复维护
|
||
-- 已移除旧的 6 条 SQL 规则(rule_id: write_file_any, edit_file_any, shell_rm_approval,
|
||
-- shell_rm_rf_block, shell_write_system_file, shell_chmod_777),
|
||
-- 它们的超集已在 ToolGuardRuleSeedService.buildBuiltinRules() 中以正确的工具名注册。
|
||
|
||
-- ==================== Content Studio scenario (公众号 / 小红书 图文创作) ====================
|
||
MERGE INTO mate_tool (id, name, display_name, description, tool_type, bean_name, icon, enabled, builtin, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000000630, 'WechatArticleExtractTool', '公众号文章抓取', '抓取微信公众号文章:输入文章 URL,返回清洗后的标题/作者/时间/正文(Markdown)/图片。用于「参考公众号信息抓取汇总」,比 browser_use 更适合 mp.weixin.qq.com 文章页。', 'builtin', 'wechatArticleExtractTool', '📰', TRUE, TRUE, NOW(), NOW(), 0);
|
||
MERGE INTO mate_tool (id, name, display_name, description, tool_type, bean_name, icon, enabled, builtin, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000000631, 'GzhPublishTool', '公众号发布', '将生成的图文发布到微信公众号:action=draft 上传封面并存入草稿箱(推荐);action=publish 为认证号群发,需显式确认。需在系统设置配置 weixinoa.app_id / weixinoa.app_secret。', 'builtin', 'gzhPublishTool', '📤', TRUE, TRUE, NOW(), NOW(), 0);
|
||
MERGE INTO mate_agent (id, name, description, agent_type, system_prompt, model_name, max_iterations, enabled, icon, tags, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000000640, '内容工作室', '端到端创作公众号与小红书图文:选题搜集、成文、配图、去AI化、排版、入草稿箱发布。', 'react', '你是 MateClaw 的「内容工作室」——专门端到端创作微信公众号(公众号)与小红书图文。
|
||
|
||
工作流(7 段):
|
||
1)选题——读取 topic_interests 记忆并用 web_search(freshness=week) 找角度。
|
||
2)搜集——对用户给的公众号参考链接用 wechat_article_extract(或 browser_use)抓取并汇总,保持原创并标注来源,严禁照搬洗稿。
|
||
3)成文——公众号加载 gzh_article 技能、小红书加载 xhs_note 技能,遵循用户人设与文风。
|
||
4)配图——用 image_generate 出封面/配图,用 render_html_image 把小红书卡片 HTML 渲染成图。
|
||
5)去AI化——加载 deai_humanize 技能,跑「检测→改写」循环直到 AI 味评分足够低。
|
||
6)打包交付——用 gzh_package 交付:传 Markdown 正文,服务端生成公众号内联样式 HTML + 在线预览 + 素材下载;切勿把大段内联 HTML 塞进 write_file 或 render_html_image(html=...)(大参数会被截断导致失败)。
|
||
7)发布——把 gzh_package 的在线预览发给用户,确认后默认 gzh_publish action=draft 存入草稿箱。
|
||
|
||
每次任务开始先 recall_structured 这些键并遵循:content_persona、writing_style_gzh、writing_style_xhs、topic_interests、banned_words、signature_blocks。若缺少必要项,向用户询问一次并 remember_structured。
|
||
|
||
发布是外向且不可逆的动作:调用 gzh_publish 前必须展示最终内容并获得用户明确确认;未经 confirmPublish=true 与用户认可,绝不群发。遵守 banned_words 与广告法限制;所有内容保持原创。
|
||
', NULL, 100, TRUE, 'pi:pen-nib', 'content,gzh,xhs,writing', NOW(), NOW(), 0);
|
||
|
||
-- ---- Content Studio T3/T4: 小红书发布工具 + 场景化 Cron 模板(默认关闭,用户按需启用)----
|
||
MERGE INTO mate_tool (id, name, display_name, description, tool_type, bean_name, icon, enabled, builtin, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000000632, 'XhsPublishTool', '小红书发布打包', '把小红书笔记(文案+标签+卡片图)打包成一个可下载 zip,并给出创作平台手动上传步骤。小红书无官方发布 API,不自动上传、不绕过风控。', 'builtin', 'xhsPublishTool', '📕', TRUE, TRUE, NOW(), NOW(), 0);
|
||
MERGE INTO mate_cron_job (id, name, cron_expression, timezone, agent_id, task_type, trigger_message, request_body, enabled, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000100020, '每日选题雷达', '0 8 * * *', 'Asia/Shanghai', 1000000640, 'agent', NULL, '读取结构化记忆 topic_interests,用 web_search(freshness=week)搜集与这些方向相关的今日热点与新鲜角度,产出一份「今日选题清单」:每条含选题标题、一句话切入角度、目标平台(公众号/小红书)、推荐配图方向。只做选题,不成文。', FALSE, NOW(), NOW(), 0);
|
||
MERGE INTO mate_cron_job (id, name, cron_expression, timezone, agent_id, task_type, trigger_message, request_body, enabled, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000100021, '每周公众号入草稿箱', '0 9 * * 1', 'Asia/Shanghai', 1000000640, 'agent', NULL, '从 topic_interests 里挑一个当周选题,加载 gzh_article 技能完成一篇公众号图文(含配图与去AI化),排版为内联样式 HTML。若已在系统设置配置公众号凭证(weixinoa.app_id/app_secret),用 gzh_publish action=draft 存入草稿箱并提醒我去后台核对发表;未配置则直接把排版 HTML 与封面发我。', FALSE, NOW(), NOW(), 0);
|
||
|
||
-- Content Studio: gzh_package (Markdown -> 在线预览 + 素材下载, avoids big-HTML tool-arg truncation)
|
||
MERGE INTO mate_tool (id, name, display_name, description, tool_type, bean_name, icon, enabled, builtin, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000000633, 'GzhPackageTool', '公众号打包', '把公众号成稿(Markdown)打包成在线预览(渲染 HTML)+ 素材下载 zip(article.html/article.md/封面)。服务端生成内联样式 HTML,避免大段 HTML 作为工具参数被截断而失败。', 'builtin', 'gzhPackageTool', '📦', TRUE, TRUE, NOW(), NOW(), 0);
|
||
|
||
-- Content Studio: capture_screenshot (真实后台截图 -> 可嵌入图片 URL, 供产品教程配图)
|
||
MERGE INTO mate_tool (id, name, display_name, description, tool_type, bean_name, icon, enabled, builtin, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000000634, 'ScreenshotTool', '后台截图', '截取 MateClaw 后台页面(站内相对路径如 /chat、/channels)并返回可嵌入的图片 URL。用于给「如何用 MateClaw 做 XX」这类操作教程配真实产品截图,把返回 URL 以  嵌进 gzh_package 的 Markdown。', 'builtin', 'screenshotTool', '📷', TRUE, TRUE, NOW(), NOW(), 0);
|
||
|
||
MERGE INTO mate_tool (id, name, display_name, description, tool_type, bean_name, icon, enabled, builtin, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000000635, 'XhsPackageTool', '小红书打包', '把小红书笔记打包成在线预览(手机版滑动预览,以图为主、文字辅助)+ 素材下载 zip(编号卡片图 + 文案.txt)。强制至少 3 张竖版图(1 封面 + ≥2 内容图),不足则拒绝打包。小红书无发布 API,不自动上传。', 'builtin', 'xhsPackageTool', '🖼️', TRUE, TRUE, NOW(), NOW(), 0);
|
||
|
||
MERGE INTO mate_tool (id, name, display_name, description, tool_type, bean_name, icon, enabled, builtin, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000000636, 'ContentItemTool', '内容日历', '内容日历 / 发布去重台账:check_recent 查最近 N 天某平台是否做过同题(选题前先查避免重复);record 记录产出(含标题/预览链接/状态);mark_published 标记为已发布。让每日定时不重复选题、发布可追溯。', 'builtin', 'contentItemTool', '🗓️', TRUE, TRUE, NOW(), NOW(), 0);
|
||
|
||
MERGE INTO mate_tool (id, name, display_name, description, tool_type, bean_name, icon, enabled, builtin, create_time, update_time, deleted)
|
||
KEY (id)
|
||
VALUES (1000000637, 'ComplianceScanTool', '合规扫描', '发布前服务端硬扫合规风险:广告法极限词(最/第一/唯一/国家级/100%)、微信诱导词(集赞/助力/分享解锁/关注才能看)、承诺收益、医疗功效。返回命中清单;公众号进草稿箱前对高危词硬拦截。', 'builtin', 'complianceScanTool', '🛡️', TRUE, TRUE, NOW(), NOW(), 0);
|