Compare commits

..

11 Commits

Author SHA1 Message Date
zhayujie
29af855ecd docs: update README.md 2026-05-24 18:03:33 +08:00
zhayujie
0a146a245d docs: refactor README 2026-05-24 17:52:47 +08:00
zhayujie
bd85fee7d7 fix(models): persist explicit provider for vision and image capabilities 2026-05-23 20:43:25 +08:00
zhayujie
571897e2fd fix: modify default model in vision tool 2026-05-22 18:18:16 +08:00
zhayujie
840dabeccd fix(weixin): cap thinking messages to avoid rate-limit drops 2026-05-22 17:42:50 +08:00
zhayujie
069bffa3e8 feat: release 2.0.9 2026-05-22 12:25:22 +08:00
zhayujie
cc10d230b0 Merge pull request #2826 from zhayujie/feat-multi-model
feat: multi-provider model console
2026-05-22 11:08:13 +08:00
zhayujie
ac9d0f18c5 Merge branch 'master' of github.com:zhayujie/chatgpt-on-wechat 2026-05-21 16:19:03 +08:00
zhayujie
09fa624797 fix(scheduler): once tasks with tz-aware schedule never fire 2026-05-21 16:18:36 +08:00
zhayujie
a01423a196 fix: default agent mode to enabled when "agent" config is absent 2026-05-21 11:17:50 +08:00
zhayujie
7c35df7a82 fix: default agent mode to enabled 2026-05-21 11:14:19 +08:00
60 changed files with 2651 additions and 2121 deletions

1046
README.md

File diff suppressed because it is too large Load Diff

View File

@@ -10,6 +10,19 @@ from croniter import croniter
from common.log import logger
def _parse_naive_local(iso_str: str) -> datetime:
"""Parse an ISO datetime and coerce it to tz-naive local time.
The scheduler uses ``datetime.now()`` (tz-naive) for all comparisons,
so any persisted timestamp must be normalized to the same flavor —
otherwise comparing naive vs aware raises TypeError.
"""
dt = datetime.fromisoformat(iso_str)
if dt.tzinfo is not None:
dt = dt.astimezone().replace(tzinfo=None)
return dt
class SchedulerService:
"""
Background service that executes scheduled tasks
@@ -113,8 +126,8 @@ class SchedulerService:
return False
try:
next_run = datetime.fromisoformat(next_run_str)
next_run = _parse_naive_local(next_run_str)
# Check if task is overdue (e.g., service restart)
if next_run < now:
time_diff = (now - next_run).total_seconds()
@@ -140,7 +153,11 @@ class SchedulerService:
return False
return now >= next_run
except Exception:
except Exception as e:
logger.error(
f"[Scheduler] Failed to evaluate due-state for task "
f"{task.get('id')} (next_run_at={next_run_str!r}): {e}"
)
return False
def _calculate_next_run(self, task: dict, from_time: datetime) -> Optional[datetime]:
@@ -184,12 +201,14 @@ class SchedulerService:
return None
try:
run_at = datetime.fromisoformat(run_at_str)
# Only return if in the future
run_at = _parse_naive_local(run_at_str)
if run_at > from_time:
return run_at
except Exception:
pass
except Exception as e:
logger.error(
f"[Scheduler] Failed to parse once-task run_at "
f"{run_at_str!r}: {e}"
)
return None
return None

View File

@@ -364,9 +364,12 @@ class SchedulerTool(BaseTool):
logger.error(f"[SchedulerTool] Invalid relative time format: {schedule_value}")
return None
else:
# Absolute time in ISO format
datetime.fromisoformat(schedule_value)
return {"type": "once", "run_at": schedule_value}
# Absolute ISO time. Normalize to tz-naive local so it
# stays comparable with the scheduler's datetime.now().
parsed = datetime.fromisoformat(schedule_value)
if parsed.tzinfo is not None:
parsed = parsed.astimezone().replace(tzinfo=None)
return {"type": "once", "run_at": parsed.isoformat()}
except Exception as e:
logger.error(f"[SchedulerTool] Invalid schedule: {e}")

View File

@@ -30,7 +30,7 @@ from common import const
from common.log import logger
from config import conf
DEFAULT_MODEL = const.GPT_55
DEFAULT_MODEL = const.GPT_41_MINI
DEFAULT_TIMEOUT = 60
MAX_TOKENS = 1000
COMPRESS_THRESHOLD = 1_048_576 # 1 MB
@@ -78,6 +78,22 @@ _MODEL_PREFIX_TO_PROVIDER = [
# Model prefixes that natively belong to OpenAI / LinkAI (raw HTTP providers).
_OPENAI_MODEL_PREFIXES = ("gpt-", "o1-", "o3-", "o4-", "chatgpt-")
# Maps the UI provider id (persisted in tools.vision.provider) to the internal
# display name used in VisionProvider.name. Keep in sync with _DISCOVERABLE_MODELS
# and the openai/linkai branches in _route_by_model_name.
_PROVIDER_ID_TO_DISPLAY = {
"openai": "OpenAI",
"linkai": "LinkAI",
"moonshot": "Moonshot",
"doubao": "Doubao",
"dashscope": "DashScope",
"claudeAPI": "Claude",
"gemini": "Gemini",
"qianfan": "Qianfan",
"zhipu": "ZhipuAI",
"minimax": "MiniMax",
}
@dataclass
class VisionProvider:
@@ -211,13 +227,19 @@ class Vision(BaseTool):
are de-duplicated to avoid retrying the same endpoint twice.
"""
user_model = self._resolve_user_vision_model()
user_provider = self._resolve_user_vision_provider()
providers: List[VisionProvider] = []
# Step 1: preferred provider derived from tools.vision.model
if user_model:
# Step 1: preferred provider — explicit `tools.vision.provider`
# wins so custom model names can still be routed correctly. Falls
# through to model-name prefix inference when provider is unset.
preferred = None
if user_provider and user_model:
preferred = self._route_by_provider_id(user_provider, user_model)
if not preferred and user_model:
preferred = self._route_by_model_name(user_model)
if preferred:
providers.extend(preferred)
if preferred:
providers.extend(preferred)
# Step 2: auto-discovery chain as fallback
existing = {p.name for p in providers}
@@ -263,6 +285,24 @@ class Vision(BaseTool):
return m.strip()
return None
@staticmethod
def _resolve_user_vision_provider() -> Optional[str]:
"""Read tools.vision.provider — the UI-persisted vendor id.
Lets users pin a vendor for custom model names that prefix-inference
can't recognize. Returns None when unset/blank.
"""
tools_conf = conf().get("tools") or conf().get("tool") or {}
if not isinstance(tools_conf, dict):
return None
vision_conf = tools_conf.get("vision", {})
if not isinstance(vision_conf, dict):
return None
p = vision_conf.get("provider")
if isinstance(p, str) and p.strip():
return p.strip()
return None
@staticmethod
def _infer_provider_from_model(model_name: str) -> Optional[str]:
"""
@@ -279,6 +319,54 @@ class Vision(BaseTool):
return display_name
return None
def _route_by_provider_id(self, provider_id: str, user_model: str) -> Optional[List[VisionProvider]]:
"""Route by the UI-persisted provider id.
Returns:
- [provider] : provider id is known and its key is configured.
- None : unknown provider id, or the bot can't be created.
Caller falls through to model-name-based routing.
"""
display_name = _PROVIDER_ID_TO_DISPLAY.get(provider_id)
if not display_name:
return None
# OpenAI / LinkAI use raw HTTP providers, not the discoverable bot path.
if provider_id == "openai":
p = self._build_openai_provider(user_model)
return [p] if p else None
if provider_id == "linkai":
p = self._build_linkai_provider(user_model)
return [p] if p else None
# Discoverable bot-backed providers.
for config_key, bot_type, _default_model, name in _DISCOVERABLE_MODELS:
if name != display_name:
continue
api_key = conf().get(config_key, "")
if not api_key or not api_key.strip():
logger.warning(f"[Vision] tools.vision.provider='{provider_id}' "
f"but '{config_key}' is not configured. Falling back.")
return None
try:
from models.bot_factory import create_bot
bot = create_bot(bot_type)
if not hasattr(bot, 'call_vision'):
logger.warning(f"[Vision] '{display_name}' bot does not implement call_vision.")
return None
except Exception as e:
logger.warning(f"[Vision] Failed to create '{display_name}' bot: {e}")
return None
return [VisionProvider(
name=display_name,
api_key="",
api_base="",
model_override=user_model,
use_bot=True,
fallback_bot=bot,
)]
return None
def _route_by_model_name(self, user_model: str) -> Optional[List[VisionProvider]]:
"""
Try to build a provider list using the user-specified model name.

View File

@@ -2,44 +2,40 @@
Agent Event Handler - Handles agent events and thinking process output
"""
from common import const
from common.log import logger
# Cap intermediate thinking messages on weixin to stay within send quota.
WEIXIN_THINKING_INSTANT_MAX = 7
class AgentEventHandler:
"""
Handles agent events and optionally sends intermediate messages to channel
"""
def __init__(self, context=None, original_callback=None):
"""
Initialize event handler
Args:
context: COW context (for accessing channel)
original_callback: Original event callback to chain
"""
self.context = context
self.original_callback = original_callback
# Get channel for sending intermediate messages
self.channel = None
if context:
self.channel = context.kwargs.get("channel") if hasattr(context, "kwargs") else None
self.current_content = ""
self.turn_number = 0
channel_type = ""
if context and hasattr(context, "kwargs"):
channel_type = context.kwargs.get("channel_type", "") or ""
self._is_weixin = channel_type == const.WEIXIN
self._thinking_sent_count = 0
self._merged_buf: list[str] = []
def handle_event(self, event):
"""
Main event handler
Args:
event: Event dict with type and data
"""
event_type = event.get("type")
data = event.get("data", {})
# Dispatch to specific handlers
if event_type == "turn_start":
self._handle_turn_start(data)
elif event_type == "message_update":
@@ -52,25 +48,23 @@ class AgentEventHandler:
self._handle_tool_execution_start(data)
elif event_type == "tool_execution_end":
self._handle_tool_execution_end(data)
# Call original callback if provided
elif event_type == "agent_end":
self._handle_agent_end(data)
if self.original_callback:
self.original_callback(event)
def _handle_turn_start(self, data):
"""Handle turn start event"""
self.turn_number = data.get("turn", 0)
self.current_content = ""
def _handle_message_update(self, data):
"""Handle message update event (streaming content text)"""
delta = data.get("delta", "")
self.current_content += delta
def _handle_message_end(self, data):
"""Handle message end event"""
tool_calls = data.get("tool_calls", [])
if tool_calls:
if self.current_content.strip():
logger.info(f"💭 {self.current_content.strip()[:200]}{'...' if len(self.current_content) > 200 else ''}")
@@ -78,35 +72,54 @@ class AgentEventHandler:
else:
if self.current_content.strip():
logger.debug(f"💬 {self.current_content.strip()[:200]}{'...' if len(self.current_content) > 200 else ''}")
# Drain weixin buffer before final reply leaves chat_channel
self._flush_merged_now()
self.current_content = ""
def _handle_agent_end(self, data):
self._flush_merged_now()
def _handle_tool_execution_start(self, data):
"""Handle tool execution start event - logged by agent_stream.py"""
pass
def _handle_tool_execution_end(self, data):
"""Handle tool execution end event - logged by agent_stream.py"""
pass
def _send_to_channel(self, message):
"""
Try to send intermediate message to channel.
Skipped in SSE mode because thinking text is already streamed via on_event.
"""
if self.context and self.context.get("on_event"):
return
if not self.channel:
return
if not self._is_weixin:
self._do_send(message)
return
if self._thinking_sent_count < WEIXIN_THINKING_INSTANT_MAX:
self._do_send(message)
self._thinking_sent_count += 1
return
self._merged_buf.append(message)
def _flush_merged_now(self):
if not self._merged_buf:
return
merged = "\n\n".join(self._merged_buf)
count = len(self._merged_buf)
self._merged_buf = []
logger.debug(f"[AgentEventHandler] Flushing {count} merged thinking msgs, len={len(merged)}")
self._do_send(merged)
self._thinking_sent_count += 1
def _do_send(self, message):
try:
from bridge.reply import Reply, ReplyType
reply = Reply(ReplyType.TEXT, message)
self.channel._send(reply, self.context)
except Exception as e:
logger.debug(f"[AgentEventHandler] Failed to send to channel: {e}")
if self.channel:
try:
from bridge.reply import Reply, ReplyType
reply = Reply(ReplyType.TEXT, message)
self.channel._send(reply, self.context)
except Exception as e:
logger.debug(f"[AgentEventHandler] Failed to send to channel: {e}")
def log_summary(self):
"""Log execution summary - simplified"""
# Summary removed as per user request
# Real-time logging during execution is sufficient
pass

View File

@@ -73,7 +73,7 @@ class Channel(object):
Build reply content, using agent if enabled in config
"""
# Check if agent mode is enabled
use_agent = conf().get("agent", False)
use_agent = conf().get("agent", True)
if use_agent:
try:

View File

@@ -18,9 +18,9 @@ const I18N = {
menu_memory: '记忆', menu_knowledge: '知识', menu_channels: '通道', menu_tasks: '定时',
menu_logs: '日志',
models_title: '模型管理',
models_desc: '统一管理对话、视觉、语音、向量、图像、搜索能力',
models_desc: '统一管理对话、图像、语音、向量、搜索能力',
models_section_vendors: '厂商凭据',
models_section_vendors_desc: '一处配置,多个能力共享',
models_section_vendors_desc: '一处配置,多个模型能力共享',
models_section_capabilities: '模型能力',
models_add_vendor: '添加厂商',
models_provider: '厂商',
@@ -33,20 +33,20 @@ const I18N = {
models_base_default_hint: '留空将使用官方默认地址',
models_base_default: '默认',
models_capability_chat: '主模型',
models_capability_chat_desc: '驱动对话 Agent 推理',
models_capability_chat_desc: '用于基础对话 Agent 推理',
models_capability_vision: '图像理解',
models_capability_vision_desc: '识别图片内容;未指定时自动跟随主模型',
models_capability_vision_desc: '识别图片内容,用于图像识别工具',
models_capability_image: '图像生成',
models_capability_image_desc: '生成图片,可固定厂商或跟随主模型',
models_capability_image_desc: '生成图片,用于图像生成技能',
models_auto_using: '当前优先使用',
models_capability_asr: '语音识别',
models_capability_asr_desc: '语音转文字',
models_capability_tts: '语音合成',
models_capability_tts_desc: '文字转语音',
models_capability_embedding: '向量',
models_capability_embedding_desc: '记忆与知识的向量化',
models_capability_embedding_desc: '用于记忆与知识的向量化检索',
models_capability_search: '联网搜索',
models_capability_search_desc: '实时网页检索能力,搜索工具中使用',
models_capability_search_desc: '实时网页检索能力,用于搜索工具',
models_strategy_auto: '自动',
models_search_strategy_label: '策略',
models_search_strategy_fixed: '指定',
@@ -106,7 +106,7 @@ const I18N = {
config_custom_model_hint: '输入自定义模型名称',
config_save: '保存', config_saved: '已保存',
config_save_error: '保存失败',
config_custom_option: '自定义...',
config_custom_option: '自定义',
config_custom_tip: '接口需遵循 OpenAI API 协议',
config_security: '安全设置', config_password: '访问密码',
config_password_hint: '留空则不启用密码保护',
@@ -192,9 +192,9 @@ const I18N = {
menu_memory: 'Memory', menu_knowledge: 'Knowledge', menu_channels: 'Channels', menu_tasks: 'Tasks',
menu_logs: 'Logs',
models_title: 'Models',
models_desc: 'Manage chat, vision, voice, embedding, image and search capabilities in one place',
models_desc: 'Manage chat, image, voice, embedding and search capabilities in one place',
models_section_vendors: 'Vendor Credentials',
models_section_vendors_desc: 'Configured once, shared by every capability',
models_section_vendors_desc: 'Configured once, shared by multiple model capabilities',
models_section_capabilities: 'Capabilities',
models_add_vendor: 'Add Vendor',
models_provider: 'Provider',
@@ -207,20 +207,20 @@ const I18N = {
models_base_default_hint: 'Leave blank to use the official default base URL',
models_base_default: 'Default',
models_capability_chat: 'Main Model',
models_capability_chat_desc: 'Powers chat and agent reasoning',
models_capability_chat_desc: 'Used for basic chat and agent reasoning',
models_capability_vision: 'Image Understanding',
models_capability_vision_desc: 'Reads images; auto-follows main model when unspecified',
models_capability_vision_desc: 'Recognizes image content, used by image recognition tools',
models_capability_image: 'Image Generation',
models_capability_image_desc: 'Generate images; pin a vendor or follow the main model',
models_capability_image_desc: 'Generates images, used by image generation skills',
models_auto_using: 'Preferred',
models_capability_asr: 'Speech Recognition',
models_capability_asr_desc: 'Voice to text',
models_capability_tts: 'Speech Synthesis',
models_capability_tts_desc: 'Text to voice',
models_capability_embedding: 'Embedding',
models_capability_embedding_desc: 'Vectorizes memory and knowledge',
models_capability_embedding_desc: 'Used for vectorized retrieval of memory and knowledge',
models_capability_search: 'Web Search',
models_capability_search_desc: 'Real-time web retrieval',
models_capability_search_desc: 'Real-time web retrieval, used by search tools',
models_strategy_auto: 'auto',
models_search_strategy_label: 'Strategy',
models_search_strategy_fixed: 'Pinned',
@@ -280,7 +280,7 @@ const I18N = {
config_custom_model_hint: 'Enter custom model name',
config_save: 'Save', config_saved: 'Saved',
config_save_error: 'Save failed',
config_custom_option: 'Custom...',
config_custom_option: 'Custom',
config_custom_tip: 'API must follow OpenAI protocol.',
config_security: 'Security', config_password: 'Password',
config_password_hint: 'Leave empty to disable password protection',
@@ -4798,7 +4798,7 @@ function rebuildCapabilityModelDropdown(def, providerId, selectedModel, scope) {
modelValues.push(entry.value);
return { value: entry.value, label: entry.label || entry.value, hint: entry.hint || '' };
});
opts.push({ value: '__custom__', label: currentLang === 'zh' ? '自定义...' : 'Custom...' });
opts.push({ value: '__custom__', label: currentLang === 'zh' ? '自定义' : 'Custom' });
let initialValue = selectedModel || '';
if (initialValue && !modelValues.includes(initialValue)) {
@@ -4881,7 +4881,7 @@ function rebuildCapabilityVoiceDropdown(providerId, selectedVoice, scope, modelI
hint: desc === code ? '' : code,
};
});
opts.push({ value: '__custom__', label: currentLang === 'zh' ? '自定义...' : 'Custom...' });
opts.push({ value: '__custom__', label: currentLang === 'zh' ? '自定义' : 'Custom' });
// Off-catalog values route through the custom branch.
let initial = selectedVoice || '';

View File

@@ -1409,7 +1409,7 @@ class ConfigHandler:
web.header('Content-Type', 'application/json; charset=utf-8')
try:
local_config = conf()
use_agent = local_config.get("agent", False)
use_agent = local_config.get("agent", True)
title = "CowAgent" if use_agent else "AI Assistant"
api_bases = {}
@@ -2011,12 +2011,17 @@ class ModelsHandler:
if not isinstance(vision_conf, dict):
vision_conf = {}
user_specified = (vision_conf.get("model") or "").strip()
explicit_provider = (vision_conf.get("provider") or "").strip()
# When the user pinned a specific model, infer which vendor card to
# highlight by scanning the per-provider model lists. Falls back to
# an empty provider so the dropdown stays on "auto" if we can't tell.
# Provider resolution priority:
# 1. Explicit `tools.vision.provider` (persisted via UI; supports
# custom model names that prefix-inference can't recognize).
# 2. Scan per-provider model lists by model name.
# Empty provider keeps the dropdown on "auto" when we can't tell.
inferred_provider = ""
if user_specified:
if explicit_provider and explicit_provider in cls._VISION_PROVIDER_MODELS:
inferred_provider = explicit_provider
elif user_specified:
for pid, models in cls._VISION_PROVIDER_MODELS.items():
if user_specified in models:
inferred_provider = pid
@@ -2181,11 +2186,17 @@ class ModelsHandler:
if not isinstance(img_node, dict):
img_node = {}
explicit_model = (img_node.get("model") or "").strip()
explicit_provider = (img_node.get("provider") or "").strip()
# Infer the provider card to highlight by scanning per-provider
# model lists, including alias values inside {value, hint} entries.
# Provider resolution priority:
# 1. Explicit `skills.image-generation.provider` (persisted via UI;
# supports custom model names that prefix-inference can't catch).
# 2. Scan per-provider model catalog by model name.
# Empty provider keeps the dropdown on "auto" when we can't tell.
inferred_provider = ""
if explicit_model:
if explicit_provider and explicit_provider in cls._IMAGE_PROVIDER_MODELS:
inferred_provider = explicit_provider
elif explicit_model:
for pid, models in cls._IMAGE_PROVIDER_MODELS.items():
for entry in models:
val = entry if isinstance(entry, str) else (entry.get("value") or "")
@@ -2440,27 +2451,37 @@ class ModelsHandler:
return json.dumps({"status": "error", "message": f"capability not editable: {capability}"})
def _set_image(self, provider_id: str, model: str) -> str:
# Source of truth: skills.image-generation.model. provider_id is
# informational only; the resolver picks the vendor by model prefix.
# Source of truth: skills.image-generation.{provider, model}. The
# provider field is persisted so users picking a custom model under
# a specific vendor still get routed there — runtime falls back to
# model-name prefix inference only when provider is empty.
local_config = conf()
file_cfg = self._read_file_config()
self._set_nested_namespace_value(local_config, "skills", "image-generation", "model", model or "")
self._set_nested_namespace_value(file_cfg, "skills", "image-generation", "model", model or "")
self._set_nested_namespace_value(local_config, "skills", "image-generation", "provider", provider_id or "")
self._set_nested_namespace_value(file_cfg, "skills", "image-generation", "provider", provider_id or "")
self._drop_legacy_namespace(local_config, "skill", "skills", child="image-generation")
self._drop_legacy_namespace(file_cfg, "skill", "skills", child="image-generation")
self._write_file_config(file_cfg)
# The skill subprocess reads SKILL_IMAGE_GENERATION_MODEL from env at
# startup; mirror the change so live edits apply without restart.
env_key = "SKILL_IMAGE_GENERATION_MODEL"
# The skill subprocess reads SKILL_IMAGE_GENERATION_{MODEL,PROVIDER}
# from env at startup; mirror the change so live edits apply without
# restart.
model_env = "SKILL_IMAGE_GENERATION_MODEL"
provider_env = "SKILL_IMAGE_GENERATION_PROVIDER"
if model:
os.environ[env_key] = model
os.environ[model_env] = model
else:
os.environ.pop(env_key, None)
os.environ.pop(model_env, None)
if provider_id:
os.environ[provider_env] = provider_id
else:
os.environ.pop(provider_env, None)
logger.info(f"[ModelsHandler] image updated: provider_hint={provider_id!r} model={model!r}")
logger.info(f"[ModelsHandler] image updated: provider={provider_id!r} model={model!r}")
return json.dumps({
"status": "success",
"provider": provider_id,
@@ -2499,18 +2520,22 @@ class ModelsHandler:
return json.dumps({"status": "success", "applied": applied})
def _set_vision(self, provider_id: str, model: str) -> str:
# Source of truth: tools.vision.model. provider_id is informational
# only; the resolver picks the vendor by model prefix.
# Source of truth: tools.vision.{provider, model}. The provider field
# is persisted so users picking a custom model under a specific vendor
# still get routed there — runtime falls back to model-name prefix
# inference only when provider is empty.
local_config = conf()
file_cfg = self._read_file_config()
self._set_nested_namespace_value(file_cfg, "tools", "vision", "model", model)
self._set_nested_namespace_value(local_config, "tools", "vision", "model", model)
self._set_nested_namespace_value(file_cfg, "tools", "vision", "provider", provider_id or "")
self._set_nested_namespace_value(local_config, "tools", "vision", "provider", provider_id or "")
self._drop_legacy_namespace(file_cfg, "tool", "tools", child="vision")
self._drop_legacy_namespace(local_config, "tool", "tools", child="vision")
self._write_file_config(file_cfg)
logger.info(f"[ModelsHandler] vision model set: {model!r}")
return json.dumps({"status": "success", "model": model})
logger.info(f"[ModelsHandler] vision updated: provider={provider_id!r} model={model!r}")
return json.dumps({"status": "success", "provider": provider_id, "model": model})
@staticmethod
def _set_nested_namespace_value(cfg, top: str, name: str, key: str, value):

View File

@@ -269,7 +269,7 @@ def status():
channel = ", ".join(channel)
click.echo(f" 通道: {channel}")
click.echo(f" 模型: {cfg.get('model', 'unknown')}")
mode = "Agent" if cfg.get("agent") else "Chat"
mode = "Chat" if cfg.get("agent") is False else "Agent"
click.echo(f" 模式: {mode}")

View File

@@ -376,7 +376,7 @@ def load_config():
logger.info("[INIT] Model: {}".format(config.get("model", "unknown")))
# Agent模式信息
if config.get("agent", False):
if config.get("agent", True):
workspace = config.get("agent_workspace", "~/cow")
logger.info("[INIT] Mode: Agent (workspace: {})".format(workspace))
else:

View File

@@ -216,6 +216,7 @@
"group": "发布记录",
"pages": [
"releases/overview",
"releases/v2.0.9",
"releases/v2.0.8",
"releases/v2.0.7",
"releases/v2.0.6",
@@ -374,6 +375,7 @@
{
"group": "Platforms",
"pages": [
"en/channels/index",
"en/channels/weixin",
"en/channels/web",
"en/channels/feishu",
@@ -408,6 +410,7 @@
"group": "Release Notes",
"pages": [
"en/releases/overview",
"en/releases/v2.0.9",
"en/releases/v2.0.8",
"en/releases/v2.0.7",
"en/releases/v2.0.6",
@@ -568,6 +571,7 @@
{
"group": "プラットフォーム",
"pages": [
"ja/channels/index",
"ja/channels/weixin",
"ja/channels/web",
"ja/channels/feishu",
@@ -602,6 +606,7 @@
"group": "リリースノート",
"pages": [
"ja/releases/overview",
"ja/releases/v2.0.9",
"ja/releases/v2.0.8",
"ja/releases/v2.0.7",
"ja/releases/v2.0.6",

View File

@@ -1,250 +0,0 @@
<p align="center"><img src="https://github.com/user-attachments/assets/eca9a9ec-8534-4615-9e0f-96c5ac1d10a3" alt="CowAgent" width="550" /></p>
<p align="center">
<a href="https://github.com/zhayujie/CowAgent/releases/latest"><img src="https://img.shields.io/github/v/release/zhayujie/CowAgent" alt="Latest release"></a>
<a href="https://github.com/zhayujie/CowAgent/blob/master/LICENSE"><img src="https://img.shields.io/github/license/zhayujie/CowAgent" alt="License: MIT"></a>
<a href="https://github.com/zhayujie/CowAgent"><img src="https://img.shields.io/github/stars/zhayujie/CowAgent?style=flat-square" alt="Stars"></a> <br/>
[<a href="https://github.com/zhayujie/CowAgent/blob/master/README.md">中文</a>] | [English] | [<a href="https://github.com/zhayujie/CowAgent/blob/master/docs/ja/README.md">日本語</a>]
</p>
**CowAgent** is an AI super assistant powered by LLMs, capable of autonomous task planning, operating computers and external resources, creating and executing Skills, and continuously growing with long-term memory and a personal knowledge base. It supports flexible model switching, handles text, voice, images, and files, and can be integrated into WeChat, Web, Feishu, DingTalk, WeCom Bot, WeCom App, and WeChat Official Account — running 7×24 hours on your personal computer or server.
<p align="center">
<a href="https://cowagent.ai/">🌐 Website</a> &nbsp;·&nbsp;
<a href="https://docs.cowagent.ai/en/intro/index">📖 Docs</a> &nbsp;·&nbsp;
<a href="https://docs.cowagent.ai/en/guide/quick-start">🚀 Quick Start</a> &nbsp;·&nbsp;
<a href="https://skills.cowagent.ai/">🧩 Skill Hub</a> &nbsp;·&nbsp;
<a href="https://link-ai.tech/cowagent/create">☁️ Try Online</a>
</p>
## Introduction
> CowAgent is both an out-of-the-box AI super assistant and a highly extensible Agent framework. You can extend it with new model interfaces, channels, built-in tools, and the Skills system to flexibly implement various customization needs.
-**Autonomous Task Planning**: Understands complex tasks and autonomously plans execution, continuously thinking and invoking tools until goals are achieved.
-**Long-term Memory**: Automatically persists conversation memory to local files and databases, including core memory, daily memory, and Deep Dream distillation, with keyword and vector retrieval support.
-**Personal Knowledge Base**: Automatically organizes structured knowledge with cross-references to build a knowledge graph, with web-based visualization and conversational management.
-**Skills System**: Implements a Skills creation and execution engine, supports installing skills from [Skill Hub](https://skills.cowagent.ai), GitHub, etc., or creating custom Skills through conversation.
-**Tool System**: Built-in tools for file I/O, terminal execution, browser automation, scheduled tasks, messaging, and more — autonomously invoked by the Agent.
-**CLI System**: Provides terminal commands and in-chat commands for process management, skill installation, configuration, and more.
-**Multimodal Messages**: Supports parsing, processing, generating, and sending text, images, voice, files, and other message types.
-**Multiple Model Support**: Supports DeepSeek, MiniMax, Claude, Gemini, OpenAI, GLM, Qwen, Doubao, Kimi, and other mainstream model providers.
-**Multi-platform Deployment**: Runs on local computers or servers, integrable into WeChat, Web, Feishu, DingTalk, WeChat Official Account, and WeCom applications.
## Disclaimer
1. This project follows the [MIT License](/LICENSE) and is intended for technical research and learning. Users must comply with local laws, regulations, policies, and corporate bylaws. Any illegal or rights-infringing use is prohibited.
2. Agent mode consumes more tokens than normal chat mode. Choose models based on effectiveness and cost. Agent has access to the host OS — please deploy in trusted environments.
3. CowAgent focuses on open-source development and does not participate in, authorize, or issue any cryptocurrency.
## Demo
Try online (no deployment needed): [CowAgent](https://link-ai.tech/cowagent/create)
## Changelog
> **2026.04.14:** [v2.0.6](https://github.com/zhayujie/CowAgent/releases/tag/2.0.6) — Knowledge Base, Deep Dream Memory Distillation, Smart Context Compression, Web Console upgrades.
> **2026.04.01:** [v2.0.5](https://github.com/zhayujie/CowAgent/releases/tag/2.0.5) — Cow CLI, Skill Hub open source, Browser tool, WeCom Bot QR scan, and more.
> **2026.02.27:** [v2.0.2](https://github.com/zhayujie/CowAgent/releases/tag/2.0.2) — Web console overhaul (streaming chat, model/skill/memory/channel/scheduler/log management), multi-channel concurrent running, session persistence, new models including Gemini 3.1 Pro / Claude 4.6 Sonnet / Qwen3.5 Plus.
> **2026.02.13:** [v2.0.1](https://github.com/zhayujie/CowAgent/releases/tag/2.0.1) — Built-in Web Search tool, smart context trimming, runtime info dynamic update, Windows compatibility, fixes for scheduler memory loss, Feishu connection issues, and more.
> **2026.02.03:** [v2.0.0](https://github.com/zhayujie/CowAgent/releases/tag/2.0.0) — Full upgrade to AI super assistant with multi-step task planning, long-term memory, built-in tools, Skills framework, new models, and optimized channels.
> **2025.05.23:** [v1.7.6](https://github.com/zhayujie/CowAgent/releases/tag/1.7.6) — Web channel optimization, AgentMesh multi-agent plugin, Baidu TTS, claude-4-sonnet/opus support.
> **2025.04.11:** [v1.7.5](https://github.com/zhayujie/CowAgent/releases/tag/1.7.5) — wechatferry protocol, DeepSeek model, Tencent Cloud voice, ModelScope and Gitee-AI support.
> **2024.12.13:** [v1.7.4](https://github.com/zhayujie/CowAgent/releases/tag/1.7.4) — Gemini 2.0 model, Web channel, memory leak fix.
Full changelog: [Release Notes](https://docs.cowagent.ai/en/releases/overview)
<br/>
## 🚀 Quick Start
The project provides a one-click script for installation, configuration, startup, and management:
**Linux / macOS:**
```bash
bash <(curl -fsSL https://cdn.link-ai.tech/code/cow/run.sh)
```
**Windows (PowerShell):**
```powershell
irm https://cdn.link-ai.tech/code/cow/run.ps1 | iex
```
After running, the Web service starts by default. Access `http://localhost:9899/chat` to chat.
Script usage: [One-click Install](https://docs.cowagent.ai/en/guide/quick-start). After installation, you can also use `cow start`, `cow stop`, and other [CLI commands](https://docs.cowagent.ai/en/cli/index) to manage the service.
### Manual Installation
**1. Clone the project**
```bash
git clone https://github.com/zhayujie/CowAgent
cd CowAgent/
```
**2. Install dependencies**
```bash
pip3 install -r requirements.txt
pip3 install -r requirements-optional.txt # optional but recommended
```
**3. Install Cow CLI (recommended)**
```bash
pip3 install -e .
```
After installation, use `cow` commands to manage the service (start, stop, update, etc.) and skills. See [Command Docs](https://docs.cowagent.ai/en/cli/index).
**4. Install browser (optional)**
If you need the Agent to operate a browser (visit web pages, fill forms, etc.):
```bash
cow install-browser
```
This auto-installs `playwright` and Chromium. See [Browser Tool Docs](https://docs.cowagent.ai/en/tools/browser).
**5. Configure**
```bash
cp config-template.json config.json
```
Fill in your model API key and channel type in `config.json`. See the [configuration docs](https://docs.cowagent.ai/en/guide/manual-install) for details.
**6. Run**
```bash
cow start # recommended, requires Cow CLI
python3 app.py # or run directly
```
For server deployment, use `cow` commands to manage the service:
```bash
cow start # start in background
cow stop # stop service
cow restart # restart service
cow status # check running status
cow logs # view logs
cow update # pull latest code and restart
```
Or use the traditional way:
```bash
nohup python3 app.py & tail -f nohup.out
```
### Docker Deployment
```bash
curl -O https://cdn.link-ai.tech/code/cow/docker-compose.yml
# Edit docker-compose.yml with your config
sudo docker compose up -d
sudo docker logs -f chatgpt-on-wechat
```
<br/>
## Models
Supports mainstream model providers. Recommended models for Agent mode:
| Provider | Recommended Model |
| --- | --- |
| DeepSeek | `deepseek-v4-flash` |
| MiniMax | `MiniMax-M2.7` |
| Claude | `claude-sonnet-4-6` |
| Gemini | `gemini-3.1-pro-preview` |
| OpenAI | `gpt-5.4` |
| GLM | `glm-5.1` |
| Qwen | `qwen3.6-plus` |
| Doubao | `doubao-seed-2-0-code-preview-260215` |
| Kimi | `kimi-k2.6` |
For detailed configuration of each model, see the [Models documentation](https://docs.cowagent.ai/en/models/index).
### Coding Plan
Coding Plan is a monthly subscription package offered by various providers, ideal for high-frequency Agent usage. All providers can be accessed via OpenAI-compatible mode:
```json
{
"bot_type": "openai",
"model": "MODEL_NAME",
"open_ai_api_base": "PROVIDER_CODING_PLAN_API_BASE",
"open_ai_api_key": "YOUR_API_KEY"
}
```
- `bot_type`: Must be `openai`
- `model`: Model name supported by the provider
- `open_ai_api_base`: Provider's Coding Plan API Base (different from standard pay-as-you-go)
- `open_ai_api_key`: Provider's Coding Plan API Key
> Note: Coding Plan API Base and API Key are usually separate from standard pay-as-you-go ones. Please obtain them from each provider's platform.
Supported providers include Alibaba Cloud, MiniMax, Zhipu GLM, Kimi, Volcengine, and more. For detailed configuration of each provider, see the [Coding Plan documentation](https://docs.cowagent.ai/en/models/coding-plan).
<br/>
## Channels
Supports multiple platforms. Set `channel_type` in `config.json` to switch:
| Channel | `channel_type` | Docs |
| --- | --- | --- |
| WeChat | `weixin` | [WeChat Setup](https://docs.cowagent.ai/en/channels/weixin) |
| Web (default) | `web` | [Web Channel](https://docs.cowagent.ai/en/channels/web) |
| Feishu | `feishu` | [Feishu Setup](https://docs.cowagent.ai/en/channels/feishu) |
| DingTalk | `dingtalk` | [DingTalk Setup](https://docs.cowagent.ai/en/channels/dingtalk) |
| WeCom Bot | `wecom_bot` | [WeCom Bot Setup](https://docs.cowagent.ai/en/channels/wecom-bot) |
| WeCom App | `wechatcom_app` | [WeCom Setup](https://docs.cowagent.ai/en/channels/wecom) |
| WeChat MP | `wechatmp` / `wechatmp_service` | [WeChat MP Setup](https://docs.cowagent.ai/en/channels/wechatmp) |
| Terminal | `terminal` | — |
Multiple channels can be enabled simultaneously, separated by commas: `"channel_type": "feishu,dingtalk"`.
<br/>
## Enterprise Services
<a href="https://link-ai.tech" target="_blank"><img width="720" src="https://cdn.link-ai.tech/image/link-ai-intro.jpg"></a>
> [LinkAI](https://link-ai.tech/) is a one-stop AI agent platform for enterprises and developers, integrating multimodal LLMs, knowledge bases, Agent plugins, and workflows. Supports one-click integration with mainstream platforms, SaaS and private deployment.
<br/>
## 🔗 Related Projects
- [Cow Skill Hub](https://github.com/zhayujie/cow-skill-hub): Open skill marketplace for AI Agents — browse, search, install, and publish skills for CowAgent, OpenClaw, Claude Code, and more.
- [bot-on-anything](https://github.com/zhayujie/bot-on-anything): Lightweight and highly extensible LLM application framework supporting Slack, Telegram, Discord, Gmail, and more.
- [AgentMesh](https://github.com/MinimalFuture/AgentMesh): Open-source Multi-Agent framework for complex problem solving through agent team collaboration.
## 🔎 FAQ
FAQs: <https://github.com/zhayujie/CowAgent/wiki/FAQs>
## 🛠️ Contributing
Welcome to add new channels, referring to the [Feishu channel](https://github.com/zhayujie/CowAgent/blob/master/channel/feishu/feishu_channel.py) as an example. Also welcome to contribute new Skills, see the [Skill Creation docs](https://docs.cowagent.ai/en/skills/create), or submit to [Skill Hub](https://skills.cowagent.ai/submit).
## ✉ Contact
Welcome to submit PRs and Issues, and support the project with a 🌟 Star. For questions, check the [FAQ list](https://github.com/zhayujie/CowAgent/wiki/FAQs) or search [Issues](https://github.com/zhayujie/CowAgent/issues).
## 🌟 Contributors
![cow contributors](https://contrib.rocks/image?repo=zhayujie/CowAgent&max=1000)

View File

@@ -0,0 +1,39 @@
---
title: Channels Overview
description: Channels supported by CowAgent and their capability matrix
---
CowAgent supports multiple chat channels. Switch between them at startup via `channel_type`. The Web Console is enabled by default and can run in parallel with other channels.
## Capability Matrix
The table below summarizes the inbound message types, bot reply types, and group chat capabilities supported by each channel, making it easy to choose by scenario.
| Channel | Text | Image | File | Voice | Group Chat |
| --- | :-: | :-: | :-: | :-: | :-: |
| [WeChat](/channels/weixin) | ✅ | ✅ | ✅ | ✅ | |
| [Web Console](/channels/web) | ✅ | ✅ | ✅ | ✅ | |
| [Feishu](/channels/feishu) | ✅ | ✅ | ✅ | ✅ | ✅ |
| [DingTalk](/channels/dingtalk) | ✅ | ✅ | ✅ | ✅ | ✅ |
| [WeCom Smart Bot](/channels/wecom-bot) | ✅ | ✅ | ✅ | ✅ | ✅ |
| [QQ](/channels/qq) | ✅ | ✅ | ✅ | | ✅ |
| [WeCom App](/channels/wecom) | ✅ | ✅ | ✅ | ✅ | |
| [Official Account](/channels/wechatmp) | ✅ | ✅ | | ✅ | |
- The **Image / File / Voice** columns indicate that the channel can send and receive the corresponding message types; see each channel's docs for details
- The **Group Chat** column indicates the ability to recognize and respond to group messages
<Tip>
The voice / image capabilities of each channel depend on the configuration of the corresponding model provider. See [Models Overview](/models) for details.
</Tip>
## Channel List
- [Web Console](/channels/web) — built-in browser-based chat and management panel, enabled by default
- [WeChat](/channels/weixin) — log in via personal WeChat QR scan
- [Feishu](/channels/feishu) — Feishu custom bot
- [DingTalk](/channels/dingtalk) — DingTalk custom bot
- [WeCom Smart Bot](/channels/wecom-bot) — WeCom smart robot
- [QQ](/channels/qq) — QQ official bot open platform
- [WeCom App](/channels/wecom) — WeCom custom app integration
- [Official Account](/channels/wechatmp) — WeChat Official Account (subscription / service account)

View File

@@ -1,23 +1,32 @@
---
title: Web Console
description: Use CowAgent through the web console
description: Use CowAgent through the Web Console
---
The Web Console is CowAgent's default channel. It starts automatically after launch, allowing you to chat with the Agent through a browser and manage models, skills, memory, channels, and other configurations online.
The Web Console is CowAgent's default channel. It runs automatically once started, letting you chat with the Agent in a browser and manage models, skills, memory, channels, and other configuration online.
## Configuration
```json
{
"channel_type": "web",
"web_port": 9899
"web_host": "0.0.0.0",
"web_port": 9899,
"web_password": "",
"enable_thinking": false
}
```
| Parameter | Description | Default |
| --- | --- | --- |
| `channel_type` | Set to `web` | `web` |
| `web_host` | Web service listen address. Defaults to `127.0.0.1` (local only); set to `0.0.0.0` for public access and configure a password | `""` |
| `web_port` | Web service listen port | `9899` |
| `web_password` | Access password. Leave empty to disable password protection; recommended when listening on `0.0.0.0` | `""` |
| `web_session_expire_days` | Login session validity in days | `30` |
| `enable_thinking` | Whether to enable deep thinking mode | `false` |
Once a password is configured, you must enter it to log in when accessing the console. The login session is kept for 30 days by default, so restarting the service during that period does not require re-login. The password can also be changed online from the "Configuration" page in the console.
## Access URL
@@ -34,13 +43,13 @@ After starting the project, visit:
### Chat Interface
Supports streaming output with real-time display of the Agent's reasoning process and tool calls, providing intuitive observation of the Agent's decision-making:
Supports streaming output with real-time display of the Agent's reasoning process and tool calls, providing intuitive observation of the Agent's decision-making. Deep thinking can be toggled via configuration or the "Agent Configuration" switch in the console.
<img width="850" src="https://cdn.link-ai.tech/doc/20260227180120.png" />
#### Multi-Session Management
The chat interface supports multi-session management. All session records are persistently stored in a SQLite database:
The chat interface supports multi-session management. All session records are persistently stored in the database:
- **Session List**: Click the history icon on the left to expand/collapse the session list panel, with scroll-to-load support for all historical sessions
- **AI-Generated Titles**: After the first exchange in a new session, the model is automatically called to generate a short summary title
@@ -50,9 +59,9 @@ The chat interface supports multi-session management. All session records are pe
### Model Management
Manage model configurations online without manually editing config files:
Manage text, image, voice, and embedding model configurations for different providers online — no need to edit config files manually:
<img width="850" src="https://cdn.link-ai.tech/doc/20260227173811.png" />
<img width="850" src="https://cdn.link-ai.tech/doc/20260521212949.png" />
### Skill Management
@@ -80,6 +89,6 @@ View and manage scheduled tasks online, including one-time tasks, fixed interval
### Logs
View Agent runtime logs in real-time for monitoring and troubleshooting:
View Agent runtime logs in real time for monitoring and troubleshooting:
<img width="850" src="https://cdn.link-ai.tech/doc/20260227173514.png" />

View File

@@ -9,7 +9,7 @@ CowAgent 2.0 has evolved from a simple chatbot into a super intelligent assistan
CowAgent's architecture consists of the following core modules:
<img src="https://cdn.link-ai.tech/doc/cow-agent-arch-en.jpg.jpg" alt="CowAgent Architecture" />
<img src="https://cdn.jsdelivr.net/gh/zhayujie/cowagent-assets@main/architecture/en/architecture.jpg" alt="CowAgent Architecture" />
| Module | Description |
| --- | --- |

View File

@@ -1,8 +1,16 @@
---
title: Claude
description: Claude model configuration
description: Anthropic Claude model configuration (Text Chat + Image Understanding)
---
Claude is provided by Anthropic and supports both text chat and image understanding. The mainstream Sonnet / Opus models natively support vision, so no separate Vision model needs to be specified.
<Tip>
All capabilities below can be configured in one place via the "Model Management" page in the Web Console, with no need to manually edit the configuration file.
</Tip>
## Text Chat
```json
{
"model": "claude-sonnet-4-6",
@@ -12,6 +20,30 @@ description: Claude model configuration
| Parameter | Description |
| --- | --- |
| `model` | Options include `claude-sonnet-4-6`, `claude-opus-4-7`, `claude-opus-4-6`, `claude-sonnet-4-5`, `claude-sonnet-4-0`, `claude-3-5-sonnet-latest`, etc. See [official models](https://docs.anthropic.com/en/docs/about-claude/models/overview) |
| `claude_api_key` | Create at [Claude Console](https://console.anthropic.com/settings/keys) |
| `claude_api_base` | Optional. Defaults to `https://api.anthropic.com/v1`. Change to use third-party proxy |
| `model` | Supports `claude-sonnet-4-6`, `claude-opus-4-7`, `claude-opus-4-6`, `claude-sonnet-4-5`, `claude-sonnet-4-0`, `claude-3-5-sonnet-latest`, etc. See [official models](https://docs.anthropic.com/en/docs/about-claude/models/overview) |
| `claude_api_key` | Create one in the [Claude Console](https://console.anthropic.com/settings/keys) |
| `claude_api_base` | Optional, defaults to `https://api.anthropic.com/v1`. Can be changed to a third-party proxy |
### Model Selection
| Model | Use Case |
| --- | --- |
| `claude-sonnet-4-6` | Default recommended, balanced cost and speed |
| `claude-opus-4-7` | Complex reasoning and long-running tasks; best quality but higher cost |
| `claude-sonnet-4-5` / `claude-sonnet-4-0` | Previous-generation flagships at a lower price |
## Image Understanding
Once `claude_api_key` is configured, the Agent's Vision tool automatically uses the Claude main model to recognize images, with no extra setup required.
To manually specify a Vision model, set it explicitly in the configuration file:
```json
{
"tools": {
"vision": {
"model": "claude-sonnet-4-6"
}
}
}
```

View File

@@ -1,26 +1,26 @@
---
title: Custom
description: Custom provider for third-party APIs and local models
description: Custom vendor configuration for third-party API proxies and local models
---
For models accessed via OpenAI-compatible APIs, such as:
For model services accessed via the OpenAI-compatible protocol or locally deployed models, such as:
- **Third-party API proxies**: Use a unified API Base to call multiple models
- **Local models**: Models deployed locally via Ollama, vLLM, LocalAI, etc.
- **Private deployments**: Self-hosted model services within your organization
- **Third-party API proxies**: call multiple models through a unified API base
- **Local models**: models deployed locally with tools like Ollama, vLLM, LocalAI
- **Private deployments**: model services deployed inside an enterprise
<Note>
Unlike the `openai` provider, switching models under the Custom provider will not auto-switch the provider type. Your custom API address is always preserved.
Difference from the `openai` vendor: when a custom vendor is selected, switching models via `/config model` does not automatically switch the vendor type — the custom API address is always used.
</Note>
## Configuration
## Text Chat
### Third-party API Proxy
### Third-party API proxy
```json
{
"bot_type": "custom",
"model": "deepseek-v4-flash",
"model": "",
"custom_api_key": "YOUR_API_KEY",
"custom_api_base": "https://{your-proxy.com}/v1"
}
@@ -29,13 +29,13 @@ For models accessed via OpenAI-compatible APIs, such as:
| Parameter | Description |
| --- | --- |
| `bot_type` | Must be set to `custom` |
| `model` | Model name, any model supported by your proxy service |
| `custom_api_key` | API key provided by your proxy service |
| `custom_api_base` | API base URL, must be OpenAI-compatible |
| `model` | Model name; any model name supported by the proxy service |
| `custom_api_key` | API key provided by the proxy service |
| `custom_api_base` | API endpoint provided by the proxy service; must be OpenAI-compatible |
### Local Models
### Local models
Local models typically don't require an API key — just set the API base:
Local models usually do not require an API key — only the API base needs to be filled in:
```json
{
@@ -45,7 +45,7 @@ Local models typically don't require an API key — just set the API base:
}
```
Common local deployment tools and their default addresses:
Common local deployment tools and their default endpoints:
| Tool | Default API Base |
| --- | --- |
@@ -53,9 +53,9 @@ Common local deployment tools and their default addresses:
| [vLLM](https://docs.vllm.ai) | `http://localhost:8000/v1` |
| [LocalAI](https://localai.io) | `http://localhost:8080/v1` |
## Switching Models
### Switching Models
Under the Custom provider, switching models only changes `model` without affecting `bot_type` or the API address:
Switching models under a custom vendor only changes `model` `bot_type` and the API endpoint remain unchanged:
```
/config model qwen3.5:27b

View File

@@ -1,9 +1,11 @@
---
title: DeepSeek
description: DeepSeek model configuration
description: DeepSeek model configuration (Text Chat + Thinking Mode)
---
Option 1: Native integration (recommended):
DeepSeek is one of the default recommended vendors in Agent mode, focused on cost-effective text chat and task planning.
## Text Chat
```json
{
@@ -14,24 +16,24 @@ Option 1: Native integration (recommended):
| Parameter | Description |
| --- | --- |
| `model` | Supports `deepseek-v4-flash` (default) and `deepseek-v4-pro` |
| `deepseek_api_key` | Create at [DeepSeek Platform](https://platform.deepseek.com/api_keys) |
| `model` | Supports `deepseek-v4-flash` (Default), `deepseek-v4-pro` |
| `deepseek_api_key` | Create one on the [DeepSeek Platform](https://platform.deepseek.com/api_keys) |
| `deepseek_api_base` | Optional, defaults to `https://api.deepseek.com/v1`. Can be changed to a third-party proxy |
## Model Selection
### Model Selection
| Model | Use Case |
| --- | --- |
| `deepseek-v4-flash` | Default: fast and cost-effective |
| `deepseek-v4-pro` | Stronger on complex tasks |
| `deepseek-v4-flash` | Default recommended; fast and low cost |
| `deepseek-v4-pro` | Smarter; better for complex tasks |
## Thinking Mode
The V4 series (`deepseek-v4-flash` / `deepseek-v4-pro`) supports an explicit "thinking mode": the model emits a chain-of-thought (`reasoning_content`) before the final answer to improve answer quality.
The V4 series (`deepseek-v4-flash` / `deepseek-v4-pro`) supports an explicit "thinking mode": before producing the final answer, the model emits a chain of thought (`reasoning_content`) to improve answer quality.
### Toggle
Controlled by the global `enable_thinking` setting:
Controlled by the global `enable_thinking` config, and can also be toggled from the Web Console's configuration page:
```json
{
@@ -39,12 +41,12 @@ Controlled by the global `enable_thinking` setting:
}
```
- `true`: thinking is on across all channels. The Web console renders the reasoning trace; IM channels (WeChat / WeCom / DingTalk / Feishu) don't render it but still benefit from higher answer quality.
- `false`: thinking off, faster responses with lower first-token latency.
- `true`: the model thinks before answering across all channels. The Web Console displays the thinking process; IM channels (WeChat / WeCom / DingTalk / Feishu) do not show it but still get better answers.
- `false`: thinking is disabled, responses are faster, and time-to-first-token is lower.
### Reasoning Effort
Under thinking mode, `reasoning_effort` controls how hard the model thinks:
Under thinking mode, `reasoning_effort` controls reasoning intensity:
```json
{
@@ -55,27 +57,16 @@ Under thinking mode, `reasoning_effort` controls how hard the model thinks:
| Value | Use Case |
| --- | --- |
| `high` (default) | Day-to-day agent tasks; balanced thinking depth and latency |
| `max` | Complex coding, long-horizon planning, strict-constraint tasks. Deeper reasoning at the cost of more output tokens and higher latency |
| `high` (Default) | Day-to-day Agent tasks; balanced reasoning and speed |
| `max` | Complex coding, long-horizon planning, strictly constrained tasks; deeper reasoning but more time and output tokens |
`reasoning_effort` only takes effect when `enable_thinking` is `true`. It is silently ignored on models that do not support thinking mode.
`reasoning_effort` only takes effect when `enable_thinking` is `true`; it is ignored automatically when the model does not support thinking mode.
### Notes
### Behavior Notes
- **Sampling parameters**: under thinking mode, `temperature`, `top_p`, `presence_penalty`, and `frequency_penalty` are silently ignored by the server (no error). CowAgent skips sending them automatically.
- **Multi-turn tool calls**: once the history contains any tool-call turn, DeepSeek requires `reasoning_content` on every assistant message. CowAgent handles the round-trip automatically, including across mid-session toggles of the thinking switch.
- **Sampling parameters**: in thinking mode, `temperature`, `top_p`, `presence_penalty`, and `frequency_penalty` are ignored by the server (without errors). CowAgent automatically skips them.
- **Multi-turn tool calls**: when the history contains tool calls, DeepSeek requires every assistant message to include `reasoning_content`. CowAgent handles this automatically, so toggling thinking mode across turns will not cause errors.
<Tip>
Start with `deepseek-v4-flash`; switch to `deepseek-v4-pro` for harder tasks; enable `enable_thinking` when you want deeper reasoning.
`deepseek-v4-flash` is used by default; switch to `deepseek-v4-pro` for complex tasks; enable `enable_thinking` when deep reasoning is needed.
</Tip>
Option 2: OpenAI-compatible configuration:
```json
{
"model": "deepseek-v4-flash",
"bot_type": "openai",
"open_ai_api_key": "YOUR_API_KEY",
"open_ai_api_base": "https://api.deepseek.com/v1"
}
```

View File

@@ -1,17 +1,66 @@
---
title: Doubao (ByteDance)
description: Doubao (Volcano Ark) model configuration
title: Doubao
description: Doubao (Volcengine Ark) model configuration (Text / Image Understanding / Image Generation / Embedding)
---
Doubao (Volcengine Ark) supports text chat, image understanding, image generation (Seedream), and embedding. A single `ark_api_key` enables all capabilities.
<Tip>
All capabilities below can be configured in one place via the "Model Management" page in the Web Console, with no need to manually edit the configuration file.
</Tip>
## Text Chat
```json
{
"model": "doubao-seed-2-0-code-preview-260215",
"model": "doubao-seed-2-0-pro-260215",
"ark_api_key": "YOUR_API_KEY"
}
```
| Parameter | Description |
| --- | --- |
| `model` | Options include `doubao-seed-2-0-code-preview-260215`, `doubao-seed-2-0-pro-260215`, `doubao-seed-2-0-lite-260215`, etc. |
| `ark_api_key` | Create at [Volcano Ark Console](https://console.volcengine.com/ark/region:ark+cn-beijing/apikey) |
| `ark_base_url` | Optional. Defaults to `https://ark.cn-beijing.volces.com/api/v3` |
| `model` | Can be `doubao-seed-2-0-pro-260215`, `doubao-seed-2-0-code-preview-260215`, `doubao-seed-2-0-lite-260215`, etc. |
| `ark_api_key` | Create one in the [Volcengine Ark Console](https://console.volcengine.com/ark/region:ark+cn-beijing/apikey) |
| `ark_base_url` | Optional, defaults to `https://ark.cn-beijing.volces.com/api/v3` |
## Image Understanding
Once `ark_api_key` is configured, the Agent's Vision tool automatically uses `doubao-seed-2-0-pro-260215` to recognize images, with no extra setup required.
To manually specify a Vision model:
```json
{
"tools": {
"vision": {
"model": "doubao-seed-2-0-pro-260215"
}
}
}
```
## Image Generation
```json
{
"skills": {
"image-generation": {
"model": "seedream-5.0-lite"
}
}
}
```
Available models: `seedream-5.0-lite`, `seedream-4.5`.
## Embedding
```json
{
"embedding_provider": "doubao",
"embedding_model": "doubao-embedding-vision-251215"
}
```
The default model is `doubao-embedding-vision-251215` (multimodal embedding); the dimension (1024 or 2048) can be set via `embedding_dimensions` in the configuration file. After changing the embedding, run `/memory rebuild-index` to rebuild the index.

View File

@@ -1,16 +1,59 @@
---
title: Gemini
description: Google Gemini model configuration
description: Google Gemini model configuration (Text Chat + Image Understanding + Image Generation)
---
Google Gemini supports text chat, image understanding, and image generation (Nano Banana series). A single `gemini_api_key` enables all capabilities.
<Tip>
All capabilities below can be configured in one place via the "Model Management" page in the Web Console, with no need to manually edit the configuration file.
</Tip>
## Text Chat
```json
{
"model": "gemini-3.1-pro-preview",
"model": "gemini-3.5-flash",
"gemini_api_key": "YOUR_API_KEY"
}
```
| Parameter | Description |
| --- | --- |
| `model` | Options include `gemini-3.1-flash-lite-preview`, `gemini-3.1-pro-preview`, `gemini-3-flash-preview`, `gemini-3-pro-preview`, etc. See [official docs](https://ai.google.dev/gemini-api/docs/models) |
| `gemini_api_key` | Create at [Google AI Studio](https://aistudio.google.com/app/apikey) |
| `model` | Recommended: `gemini-3.5-flash`; also supports `gemini-3.1-pro-preview`, `gemini-3.1-flash-lite-preview`, `gemini-3-flash-preview`, `gemini-3-pro-preview`, etc. See [official docs](https://ai.google.dev/gemini-api/docs/models) |
| `gemini_api_key` | Create one in [Google AI Studio](https://aistudio.google.com/app/apikey) |
| `gemini_api_base` | Optional, defaults to `https://generativelanguage.googleapis.com`. Can be changed to a third-party proxy |
## Image Understanding
All Gemini models natively support vision. Once `gemini_api_key` is configured, the Agent's Vision tool automatically uses the main model to recognize images, with no extra setup required.
To manually specify a Vision model:
```json
{
"tools": {
"vision": {
"model": "gemini-3.1-flash-lite-preview"
}
}
}
```
## Image Generation
```json
{
"skills": {
"image-generation": {
"model": "gemini-3.1-flash-image-preview"
}
}
}
```
| Model ID | Alias |
| --- | --- |
| `gemini-3.1-flash-image-preview` | Nano Banana 2 |
| `gemini-3-pro-image-preview` | Nano Banana Pro |
| `gemini-2.5-flash-image` | Nano Banana |

View File

@@ -1,8 +1,16 @@
---
title: GLM (Zhipu AI)
description: Zhipu AI GLM model configuration
title: Zhipu GLM
description: Zhipu AI GLM model configuration (Text / Image Understanding / Speech-to-Text / Embedding)
---
Zhipu AI supports text chat, image understanding, speech-to-text (ASR), and embedding. A single `zhipu_ai_api_key` enables all capabilities.
<Tip>
All capabilities below can be configured in one place via the "Model Management" page in the Web Console, with no need to manually edit the configuration file.
</Tip>
## Text Chat
```json
{
"model": "glm-5.1",
@@ -12,16 +20,37 @@ description: Zhipu AI GLM model configuration
| Parameter | Description |
| --- | --- |
| `model` | Options include `glm-5.1`, `glm-5-turbo`, `glm-5`, `glm-4.7`, `glm-4-plus`, `glm-4-flash`, `glm-4-air`, etc. See [model codes](https://bigmodel.cn/dev/api/normal-model/glm-4) |
| `zhipu_ai_api_key` | Create at [Zhipu AI Console](https://www.bigmodel.cn/usercenter/proj-mgmt/apikeys) |
| `model` | Can be `glm-5.1`, `glm-5-turbo`, `glm-5`, `glm-4.7`, `glm-4-plus`, `glm-4-flash`, `glm-4-air`, etc. See [model codes](https://bigmodel.cn/dev/api/normal-model/glm-4) |
| `zhipu_ai_api_key` | Create one in the [Zhipu AI Console](https://www.bigmodel.cn/usercenter/proj-mgmt/apikeys) |
| `zhipu_ai_api_base` | Optional, defaults to `https://open.bigmodel.cn/api/paas/v4` |
OpenAI-compatible configuration is also supported:
## Image Understanding
Zhipu's chat models (`glm-5.1`, `glm-5-turbo`, etc.) do not support vision; vision calls are uniformly routed to `glm-5v-turbo`. Once `zhipu_ai_api_key` is configured, the Agent's Vision tool automatically uses this model, with no need to specify it explicitly in the configuration file.
## Speech-to-Text (ASR)
```json
{
"bot_type": "openai",
"model": "glm-5.1",
"open_ai_api_base": "https://open.bigmodel.cn/api/paas/v4",
"open_ai_api_key": "YOUR_API_KEY"
"voice_to_text": "zhipu",
"voice_to_text_model": "glm-asr-2512"
}
```
| Parameter | Description |
| --- | --- |
| `voice_to_text` | Set to `zhipu` to enable Zhipu ASR |
| `voice_to_text_model` | Optional, defaults to `glm-asr-2512` |
Credentials are automatically reused from `zhipu_ai_api_key`. Audio files should be smaller than 25MB; oversized files may be rejected by the server.
## Embedding
```json
{
"embedding_provider": "zhipu",
"embedding_model": "embedding-3"
}
```
Available models: `embedding-3`, `embedding-2`. After changing the embedding, run `/memory rebuild-index` to rebuild the index.

View File

@@ -1,58 +1,45 @@
---
title: Models Overview
description: Supported models and recommended choices for CowAgent
description: Model vendors supported by CowAgent and their capability matrix
---
CowAgent supports mainstream LLMs from domestic and international providers. Model interfaces are implemented in the project's `models/` directory.
CowAgent supports mainstream large language models from both Chinese and overseas vendors. Model interfaces are implemented under the project's `models/` directory. In addition to text chat, some vendors also provide vision understanding, image generation, speech-to-text, text-to-speech, and embedding capabilities, which can be invoked on demand in the Agent flow.
<Note>
For Agent mode, the following models are recommended based on quality and cost: deepseek-v4-flash, MiniMax-M2.7, claude-sonnet-4-6, gemini-3.1-pro-preview, glm-5.1, qwen3.6-plus, kimi-k2.6, ernie-5.1
The following models are recommended in Agent mode; choose based on quality and cost: deepseek-v4-flash, MiniMax-M2.7, claude-sonnet-4-6, gemini-3.5-flash, glm-5.1, qwen3.6-plus, kimi-k2.6, ernie-5.1.
[LinkAI](https://link-ai.tech) is also supported, letting you switch between multiple vendors with a single key while gaining knowledge bases, workflows, and plugins.
</Note>
## Configuration
Configure the model name and API key in `config.json` according to your chosen model. Each model also supports OpenAI-compatible access by setting `bot_type` to `openai` and configuring `open_ai_api_base` and `open_ai_api_key`.
## Capability Matrix
You can also use the [LinkAI](https://link-ai.tech) platform interface to flexibly switch between multiple models with support for knowledge base, workflows, and other Agent capabilities.
A snapshot of each vendor's capabilities. "Text" refers to the main chat model; the remaining columns indicate which Agent capabilities the vendor can handle.
## Supported Models
<CardGroup cols={2}>
<Card title="DeepSeek" href="/en/models/deepseek">
deepseek-v4-flash, deepseek-v4-pro, and more
</Card>
<Card title="Baidu Qianfan / ERNIE" href="/en/models/qianfan">
ernie-5.1, ernie-5.0, ernie-4.5-turbo-128k, and more
</Card>
<Card title="MiniMax" href="/en/models/minimax">
MiniMax-M2.7 and other series models
</Card>
<Card title="Claude" href="/en/models/claude">
claude-sonnet-4-6 and more
</Card>
<Card title="Gemini" href="/en/models/gemini">
gemini-3.1-pro-preview and more
</Card>
<Card title="OpenAI" href="/en/models/openai">
gpt-5.4, gpt-4.1, o-series and more
</Card>
<Card title="GLM (Zhipu AI)" href="/en/models/glm">
glm-5.1, glm-5-turbo, glm-5 and other series models
</Card>
<Card title="Qwen (Tongyi Qianwen)" href="/en/models/qwen">
qwen3.6-plus, qwen3-max and more
</Card>
<Card title="Doubao (ByteDance)" href="/en/models/doubao">
doubao-seed series models
</Card>
<Card title="Kimi" href="/en/models/kimi">
kimi-k2.6, kimi-k2.5, kimi-k2 and more
</Card>
<Card title="LinkAI" href="/en/models/linkai">
Unified multi-model interface + knowledge base
</Card>
</CardGroup>
| Vendor | Representative Models | Text | Image Understanding | Image Generation | Speech-to-Text | Text-to-Speech | Embedding |
| --- | --- | :-: | :-: | :-: | :-: | :-: | :-: |
| [DeepSeek](/models/deepseek) | deepseek-v4-flash / pro | ✅ | | | | | |
| [MiniMax](/models/minimax) | MiniMax-M2.7 | ✅ | ✅ | ✅ | | ✅ | |
| [Claude](/models/claude) | claude-opus-4-7 | ✅ | ✅ | | | | |
| [Gemini](/models/gemini) | gemini-3.5-flash | ✅ | ✅ | ✅ | | | |
| [OpenAI](/models/openai) | gpt-5.5, o-series | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| [Zhipu GLM](/models/glm) | glm-5.1, glm-5v-turbo | ✅ | ✅ | | ✅ | | ✅ |
| [Tongyi Qwen](/models/qwen) | qwen3.7-max | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| [Doubao](/models/doubao) | doubao-seed-2.0 series | ✅ | ✅ | ✅ | | | ✅ |
| [Kimi](/models/kimi) | kimi-k2.6 | ✅ | ✅ | | | | |
| [Baidu Qianfan](/models/qianfan) | ernie-5.1 | ✅ | ✅ | | | | |
| [LinkAI](/models/linkai) | 100+ models from multiple vendors | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| [Custom](/models/custom) | Local models / third-party proxies | ✅ | | | | | |
<Tip>
For a full list of model names, refer to the project's [`common/const.py`](https://github.com/zhayujie/CowAgent/blob/master/common/const.py) file.
Every capability in the Web Console (Vision / Image / Speech-to-Text / Text-to-Speech / Embedding / Web Search) can be configured independently with its own vendor and model; they are not forced to be bound together.
</Tip>
## How to Configure
**Option 1 (recommended):** Manage models and capabilities online via the [Web Console](/channels/web), with no need to edit the configuration file:
<img width="900" src="https://cdn.link-ai.tech/doc/20260521212527.png" />
**Option 2:** Manually edit `config.json` and fill in the model name and API key according to the selected model. Every model also supports OpenAI-compatible access: set `bot_type` to `openai` and configure `open_ai_api_base` and `open_ai_api_key`.

View File

@@ -1,8 +1,16 @@
---
title: Kimi (Moonshot)
description: Kimi (Moonshot) model configuration
title: Kimi
description: Kimi (Moonshot) model configuration (Text Chat + Image Understanding)
---
Kimi is provided by Moonshot and supports both text chat and image understanding. The `kimi-k2.x` series natively supports vision.
<Tip>
All capabilities below can be configured in one place via the "Model Management" page in the Web Console, with no need to manually edit the configuration file.
</Tip>
## Text Chat
```json
{
"model": "kimi-k2.6",
@@ -12,16 +20,22 @@ description: Kimi (Moonshot) model configuration
| Parameter | Description |
| --- | --- |
| `model` | Options include `kimi-k2.6`, `kimi-k2.5`, `kimi-k2`, `moonshot-v1-8k`, `moonshot-v1-32k`, `moonshot-v1-128k` |
| `moonshot_api_key` | Create at [Moonshot Console](https://platform.moonshot.cn/console/api-keys) |
| `model` | Can be `kimi-k2.6`, `kimi-k2.5`, `kimi-k2`, `moonshot-v1-8k`, `moonshot-v1-32k`, `moonshot-v1-128k` |
| `moonshot_api_key` | Create one in the [Moonshot Console](https://platform.moonshot.cn/console/api-keys) |
| `moonshot_base_url` | Optional, defaults to `https://api.moonshot.cn/v1` |
OpenAI-compatible configuration is also supported:
## Image Understanding
Once `moonshot_api_key` is configured, the Agent's Vision tool automatically uses `kimi-k2.6` to recognize images, with no extra setup required.
To manually specify a Vision model:
```json
{
"bot_type": "openai",
"model": "kimi-k2.6",
"open_ai_api_base": "https://api.moonshot.cn/v1",
"open_ai_api_key": "YOUR_API_KEY"
"tools": {
"vision": {
"model": "kimi-k2.6"
}
}
}
```

View File

@@ -1,9 +1,15 @@
---
title: LinkAI
description: Unified access to multiple models via LinkAI platform
description: Access text, vision, image, speech, and embedding capabilities through the LinkAI platform
---
The [LinkAI](https://link-ai.tech) platform lets you flexibly switch between OpenAI, Claude, Gemini, DeepSeek, MiniMax, Qwen, Kimi, and other models, with support for knowledge base, workflows, plugins, and other Agent capabilities.
A single `linkai_api_key` gives you access to all capabilities of mainstream vendors such as OpenAI, Claude, Gemini, DeepSeek, MiniMax, Qwen, Kimi, and Doubao.
<Tip>
All capabilities below can be configured in one place via the "Model Management" page in the Web Console, with no need to manually edit the configuration file.
</Tip>
## Text Chat
```json
{
@@ -14,8 +20,84 @@ The [LinkAI](https://link-ai.tech) platform lets you flexibly switch between Ope
| Parameter | Description |
| --- | --- |
| `use_linkai` | Set to `true` to enable LinkAI interface |
| `linkai_api_key` | Create at [LinkAI Console](https://link-ai.tech/console/interface) |
| `model` | Leave empty to use the agent's default model. Can be switched flexibly on the platform. All models in the [model list](https://link-ai.tech/console/models) are supported |
| `use_linkai` | Set to `true` to enable |
| `linkai_api_key` | Create one in the [Console](https://link-ai.tech/console/interface) |
| `model` | Can be any code from the [model list](https://link-ai.tech/console/models) |
See the [API documentation](https://docs.link-ai.tech/platform/api) for more details.
See [Model Service](https://link-ai.tech/console/models) for more.
## Image Understanding
Once configured, the Agent's Vision tool automatically calls multimodal models via the gateway, with no extra setup required. To manually specify a Vision model:
```json
{
"tools": {
"vision": {
"model": "gpt-5.4-mini"
}
}
}
```
Available models: `gpt-4.1-mini`, `gpt-5.4-mini`, `qwen3.6-plus`, `doubao-seed-2-0-pro-260215`, `kimi-k2.6`, `claude-sonnet-4-6`, `gemini-3.1-flash-lite-preview`, etc.
## Image Generation
```json
{
"skills": {
"image-generation": {
"model": "gpt-image-2"
}
}
}
```
| Model ID | Alias |
| --- | --- |
| `gpt-image-2` | OpenAI |
| `gemini-3.1-flash-image-preview` | Nano Banana 2 |
| `gemini-3-pro-image-preview` | Nano Banana Pro |
| `seedream-5.0-lite` | ByteDance Doubao Seedream |
## Speech-to-Text (ASR)
```json
{
"voice_to_text": "linkai"
}
```
ASR uses Whisper by default; credentials are automatically reused from `linkai_api_key`.
## Text-to-Speech (TTS)
The TTS gateway supports multiple underlying engines. The engine is selected by `text_to_voice_model`, and the available voices change with the engine.
```json
{
"text_to_voice": "linkai",
"text_to_voice_model": "doubao",
"tts_voice_id": "BV001_streaming"
}
```
| `text_to_voice_model` | Engine |
| --- | --- |
| `tts-1` | OpenAI · Multi-language (voices like `alloy` / `nova` / `echo`, etc.) |
| `doubao` | ByteDance Doubao · Rich Chinese voices |
| `baidu` | Baidu · Chinese broadcaster voices |
Voices differ by engine; we recommend selecting them visually in the Web Console under "Model Management → Text-to-Speech".
## Embedding
```json
{
"embedding_provider": "linkai",
"embedding_model": "text-embedding-3-small"
}
```
The default model is `text-embedding-3-small` (OpenAI-compatible). After changing the embedding, run `/memory rebuild-index` to rebuild the index.

View File

@@ -1,8 +1,16 @@
---
title: MiniMax
description: MiniMax model configuration
description: MiniMax model configuration (Text / Image Understanding / Image Generation / Text-to-Speech)
---
MiniMax supports text chat, image understanding, image generation, and text-to-speech. A single `minimax_api_key` enables all capabilities.
<Tip>
All capabilities below can be configured in one place via the "Model Management" page in the Web Console, with no need to manually edit the configuration file.
</Tip>
## Text Chat
```json
{
"model": "MiniMax-M2.7",
@@ -12,16 +20,52 @@ description: MiniMax model configuration
| Parameter | Description |
| --- | --- |
| `model` | Options include `MiniMax-M2.7`, `MiniMax-M2.5`, `MiniMax-M2.1`, `MiniMax-M2.1-lightning`, `MiniMax-M2`, etc. |
| `minimax_api_key` | Create at [MiniMax Console](https://platform.minimaxi.com/user-center/basic-information/interface-key) |
| `model` | Can be `MiniMax-M2.7`, `MiniMax-M2.7-highspeed`, `MiniMax-M2.5`, `MiniMax-M2.1`, `MiniMax-M2.1-lightning`, `MiniMax-M2`, etc. |
| `minimax_api_key` | Create one in the [MiniMax Console](https://platform.minimaxi.com/user-center/basic-information/interface-key) |
OpenAI-compatible configuration is also supported:
## Image Understanding
MiniMax's M2.x chat models do not support vision natively; vision calls are uniformly routed to `MiniMax-Text-01`. Once `minimax_api_key` is configured, the Agent's Vision tool automatically uses this model, with no need to specify it explicitly in the configuration file.
## Image Generation
```json
{
"bot_type": "openai",
"model": "MiniMax-M2.7",
"open_ai_api_base": "https://api.minimaxi.com/v1",
"open_ai_api_key": "YOUR_API_KEY"
"skills": {
"image-generation": {
"model": "image-01"
}
}
}
```
Available models: `image-01`.
## Text-to-Speech (TTS)
```json
{
"text_to_voice": "minimax",
"text_to_voice_model": "speech-2.8-hd",
"tts_voice_id": "female-shaonv"
}
```
| Parameter | Description |
| --- | --- |
| `text_to_voice_model` | `speech-2.8-hd` (emotional rendering, natural sound), `speech-2.8-turbo` (ultra-fast), `speech-2.6-hd`, `speech-2.6-turbo` |
| `tts_voice_id` | Voice ID; supports Chinese / Cantonese / English / Japanese / Korean — 70+ voices in total |
Common voice examples:
| Voice ID | Description |
| --- | --- |
| `female-shaonv` | Chinese · Young Girl (Female) |
| `female-yujie` | Chinese · Mature Lady (Female) |
| `female-tianmei` | Chinese · Sweet Female (Female) |
| `male-qn-jingying` | Chinese · Elite Youth (Male) |
| `male-qn-badao` | Chinese · Dominant Youth (Male) |
| `Cantonese_GentleLady` | Cantonese · Gentle Female Voice |
| `English_Graceful_Lady` | English · Graceful Lady |
For the full voice list (70+ voices across Chinese / Cantonese / English / Japanese / Korean), see the [system voice list](https://platform.minimaxi.com/docs/faq/system-voice-id), or select visually in the Web Console under "Model Management → Text-to-Speech".

View File

@@ -1,11 +1,20 @@
---
title: OpenAI
description: OpenAI model configuration
description: OpenAI model configuration (Text / Vision / Image / Speech / Embedding)
---
OpenAI offers the most complete coverage and can simultaneously serve text chat, vision understanding, image generation, speech-to-text (ASR), text-to-speech (TTS), and embedding. A single `open_ai_api_key` lets the Agent use all of these capabilities.
<Tip>
All capabilities below can be configured in one place via the "Model Management" page in the Web Console, with no need to manually edit the configuration file.
</Tip>
## Text Chat
```json
{
"model": "gpt-5.4",
"model": "gpt-5.5",
"open_ai_api_key": "YOUR_API_KEY",
"open_ai_api_base": "https://api.openai.com/v1"
}
@@ -13,7 +22,82 @@ description: OpenAI model configuration
| Parameter | Description |
| --- | --- |
| `model` | Matches the [model parameter](https://platform.openai.com/docs/models) of the OpenAI API. Supports o-series, gpt-5.4, gpt-5 series, gpt-4.1, etc. Recommended for Agent mode: `gpt-5.4` |
| `open_ai_api_key` | Create at [OpenAI Platform](https://platform.openai.com/api-keys) |
| `open_ai_api_base` | Optional. Change to use third-party proxy |
| `bot_type` | Not required for official OpenAI models. Set to `openai` when using Claude or other non-OpenAI models via proxy |
| `model` | Same as OpenAI's [model parameter](https://platform.openai.com/docs/models); supports `gpt-5.5`, `gpt-5.4`, `gpt-5.4-mini`, `gpt-5.4-nano`, the `gpt-5` series, `gpt-4.1`, the o-series, etc. Agent mode defaults to `gpt-5.5`; use `gpt-5.4` for better cost-efficiency |
| `open_ai_api_key` | Create one on the [OpenAI Platform](https://platform.openai.com/api-keys) |
| `open_ai_api_base` | Optional; change it to access a third-party proxy |
| `bot_type` | Not required when using OpenAI's official models; set to `openai` when accessing other vendors via the compatible protocol |
## Image Understanding
OpenAI models like `gpt-5.5`, `gpt-5.4`, `gpt-4o`, and `gpt-4.1` natively support vision. Once `open_ai_api_key` is configured, the Agent's Vision tool automatically uses the main model to recognize images. If the main model does not support vision or you want to specify it explicitly, set it in the configuration file:
```json
{
"tools": {
"vision": {
"model": "gpt-5.4-mini"
}
}
}
```
Supported Vision models: `gpt-5.5`, `gpt-5.4`, `gpt-5.4-mini`, `gpt-5.4-nano`, `gpt-5`, `gpt-4.1`, `gpt-4.1-mini`, `gpt-4o`.
## Image Generation
Specify the image generation model in the configuration file; the Agent automatically routes image generation skill calls to OpenAI:
```json
{
"skills": {
"image-generation": {
"model": "gpt-image-2"
}
}
}
```
Supported image generation models: `gpt-image-2`, `gpt-image-1`.
## Speech-to-Text (ASR)
```json
{
"voice_to_text": "openai",
"voice_to_text_model": "gpt-4o-mini-transcribe"
}
```
| Parameter | Description |
| --- | --- |
| `voice_to_text` | Set to `openai` to enable OpenAI speech-to-text |
| `voice_to_text_model` | Optional, defaults to `gpt-4o-mini-transcribe`; can also be `gpt-4o-transcribe`, `whisper-1` |
Credentials are automatically reused from `open_ai_api_key`.
## Text-to-Speech (TTS)
```json
{
"text_to_voice": "openai",
"text_to_voice_model": "tts-1",
"tts_voice_id": "alloy"
}
```
| Parameter | Description |
| --- | --- |
| `text_to_voice_model` | `tts-1`, `tts-1-hd`, `gpt-4o-mini-tts` |
| `tts_voice_id` | Voices: `alloy`, `echo`, `fable`, `onyx`, `nova`, `shimmer`, `ash`, `ballad`, `coral`, `sage`, `verse` |
## Embedding
```json
{
"embedding_provider": "openai",
"embedding_model": "text-embedding-3-small"
}
```
Available models: `text-embedding-3-small`, `text-embedding-3-large`, `text-embedding-ada-002`. After changing the embedding, run `/memory rebuild-index` to rebuild the index.

View File

@@ -1,8 +1,16 @@
---
title: Qwen (Tongyi Qianwen)
description: Tongyi Qianwen model configuration
title: Tongyi Qwen
description: Tongyi Qwen model configuration (Text / Image Understanding / Image Generation / Speech-to-Text / Text-to-Speech / Embedding)
---
Tongyi Qwen (DashScope / Bailian) is one of the most fully-featured vendors in China. Text, image understanding, image generation, speech-to-text, text-to-speech, and embedding can all be enabled with a single `dashscope_api_key`.
<Tip>
All capabilities below can be configured in one place via the "Model Management" page in the Web Console, with no need to manually edit the configuration file.
</Tip>
## Text Chat
```json
{
"model": "qwen3.6-plus",
@@ -12,16 +20,93 @@ description: Tongyi Qianwen model configuration
| Parameter | Description |
| --- | --- |
| `model` | Options include `qwen3.6-plus`, `qwen3.5-plus`, `qwen3-max`, `qwen-max`, `qwen-plus`, `qwen-turbo`, `qwq-plus`, etc. |
| `dashscope_api_key` | Create at [Bailian Console](https://bailian.console.aliyun.com/?tab=model#/api-key). See [official docs](https://bailian.console.aliyun.com/?tab=api#/api) |
| `model` | Can be `qwen3.6-plus`, `qwen3.7-max`, `qwen3.5-plus`, `qwen3-max`, `qwen-max`, `qwen-plus`, `qwen-turbo`, `qwq-plus`, etc. |
| `dashscope_api_key` | Create one in the [Bailian Console](https://bailian.console.aliyun.com/?tab=model#/api-key); see the [official docs](https://bailian.console.aliyun.com/?tab=api#/api) |
OpenAI-compatible configuration is also supported:
## Image Understanding
Once `dashscope_api_key` is configured, the Agent's Vision tool automatically calls Qwen's vision models to recognize images. Models like `qwen3-max` / `qwen3.5-plus` / `qwen3.6-plus` are already multimodal; if the main model is text-only (e.g. `qwen-turbo`), it automatically falls back to `qwen-vl-max`.
To manually specify a Vision model:
```json
{
"bot_type": "openai",
"model": "qwen3.6-plus",
"open_ai_api_base": "https://dashscope.aliyuncs.com/compatible-mode/v1",
"open_ai_api_key": "YOUR_API_KEY"
"tools": {
"vision": {
"model": "qwen3.6-plus"
}
}
}
```
Supported models: `qwen3.6-plus`, `qwen3.5-plus`, `qwen3-max`.
## Image Generation
```json
{
"skills": {
"image-generation": {
"model": "qwen-image-2.0"
}
}
}
```
Available models: `qwen-image-2.0`, `qwen-image-2.0-pro`.
## Speech-to-Text (ASR)
```json
{
"voice_to_text": "dashscope",
"voice_to_text_model": "qwen3-asr-flash"
}
```
| Parameter | Description |
| --- | --- |
| `voice_to_text` | Set to `dashscope` to enable Tongyi Qwen ASR |
| `voice_to_text_model` | Optional, defaults to `qwen3-asr-flash` |
Credentials are automatically reused from `dashscope_api_key`. A single audio segment should be smaller than 10MB and no longer than 300 seconds.
## Text-to-Speech (TTS)
```json
{
"text_to_voice": "dashscope",
"text_to_voice_model": "qwen3-tts-flash",
"tts_voice_id": "Cherry"
}
```
| Parameter | Description |
| --- | --- |
| `text_to_voice_model` | Optional, defaults to `qwen3-tts-flash`; covers Mandarin, dialects, and major foreign languages |
| `tts_voice_id` | Voice ID; see the common list below |
Common voice examples:
| Voice ID | Description |
| --- | --- |
| `Cherry` | Qianyue · Sunny Female Voice |
| `Serena` | Suyao · Gentle Female Voice |
| `Ethan` | Chenxu · Sunny Male Voice |
| `Chelsie` | Qianxue · Anime Girl |
| `Dylan` | Beijing Dialect · Xiaodong |
| `Rocky` | Cantonese · Aqiang |
| `Sunny` | Sichuan Dialect · Qing'er |
The full voice list (Mandarin / regional dialects / bilingual, etc.) can be selected visually in the Web Console under "Model Management → Text-to-Speech".
## Embedding
```json
{
"embedding_provider": "dashscope",
"embedding_model": "text-embedding-v4"
}
```
The default model is `text-embedding-v4`. After changing the embedding, run `/memory rebuild-index` to rebuild the index.

View File

@@ -5,12 +5,15 @@ description: CowAgent version history
| Version | Date | Description |
| --- | --- | --- |
| [2.0.9](/en/releases/v2.0.9) | 2026.05.22 | Model management console, MCP protocol support, browser persistent login, new models (gpt-5.5, gemini-3.5-flash, qwen3.7-max, etc.), deployment hardening |
| [2.0.8](/en/releases/v2.0.8) | 2026.05.06 | Major Feishu channel upgrade (voice, streaming and Markdown, one-click QR-scan setup), DeepSeek V4 and Baidu models, scheduler tool enhancements |
| [2.0.7](/en/releases/v2.0.7) | 2026.04.22 | Image Generation Skill (6-provider auto-routing), new models (Kimi K2.6, Claude Opus 4.7, GLM 5.1), knowledge base and Web Console improvements |
| [2.0.6](/en/releases/v2.0.6) | 2026.04.14 | Knowledge Base, Deep Dream Memory Distillation, Smart Context Compression, Web Console upgrades |
| [2.0.6](/en/releases/v2.0.6) | 2026.04.14 | Project rename, Knowledge Base system, Deep Dream Memory Distillation, Smart Context Compression, Web Console multi-session and various improvements |
| [2.0.5](/en/releases/v2.0.5) | 2026.04.01 | Cow CLI, Skill Hub open source, Browser tool, WeCom Bot QR scan, and more |
| [2.0.4](/en/releases/v2.0.4) | 2026.03.22 | Personal WeChat channel, new model support, Japanese docs, script refactoring and bug fixes |
| [2.0.3](/en/releases/v2.0.3) | 2026.03.18 | WeCom Smart Bot and QQ channels, Coding Plan support, multiple new models, Web file processing, memory system upgrade |
| [2.0.2](/en/releases/v2.0.2) | 2026.02.27 | Web Console upgrade, multi-channel concurrency, session persistence |
| [2.0.1](/en/releases/v2.0.1) | 2026.02.27 | Built-in Web Search tool, smart context management, multiple fixes |
| [2.0.1](/en/releases/v2.0.1) | 2026.02.13 | Built-in Web Search tool, smart context management, multiple fixes |
| [2.0.0](/en/releases/v2.0.0) | 2026.02.03 | Full upgrade to AI super assistant |
| 1.7.6 | 2025.05.23 | Web Channel optimization, AgentMesh plugin |
| 1.7.5 | 2025.04.11 | DeepSeek model |
@@ -21,6 +24,8 @@ description: CowAgent version history
| 1.6.9 | 2024.07.19 | gpt-4o-mini, Alibaba voice recognition |
| 1.6.8 | 2024.07.05 | Claude 3.5, Gemini 1.5 Pro |
| 1.6.0 | 2024.04.26 | Kimi integration, gpt-4-turbo upgrade |
| 1.5.8 | 2024.03.26 | GLM-4, Claude-3, edge-tts |
| 1.5.2 | 2023.11.10 | Feishu channel, image recognition chat |
| 1.5.0 | 2023.11.10 | gpt-4-turbo, dall-e-3, tts multimodal |
| 1.0.0 | 2022.12.12 | Project created, first ChatGPT integration |

View File

@@ -0,0 +1,65 @@
---
title: v2.0.9
description: CowAgent 2.0.9 - Web Console model management, MCP protocol support, browser persistent login, new models and deployment hardening
---
## 🖥️ Model Management Console
The Web Console adds a new **Models** page that organizes everything by **provider × capability**, covering chat, image, voice, embedding and search models in one place:
- **Per-provider configuration**: Each provider's API Key / API Base is configured once at the top, and every capability below picks it up automatically — no more re-entering credentials
- **Image models**: Image understanding and image generation can each pick their own provider and model independently; falls back to the main model when unspecified
- **Voice models**: ASR (speech-to-text) and TTS (text-to-speech) can be configured independently, with new Qwen and Zhipu ASR/TTS models added
- **Embedding models**: Configurable embedding models (used for memory and knowledge-base retrieval), with new support for OpenAI, Tongyi, Doubao, Zhipu and others; run `/memory rebuild-index` after switching to rebuild the index online
- **Search capability**: Web search has been upgraded to support Bocha, Baidu, Zhipu and more providers — in auto mode the agent can synthesize results from multiple sources for deeper research
Documentation: [Models Overview](https://docs.cowagent.ai/en/models)
<img width="720" alt="20260522113305" src="https://cdn.link-ai.tech/doc/20260522113305.png" />
## 🧩 MCP Protocol Support
Adds support for **MCP (Model Context Protocol)**, expanding from a fixed built-in toolset to an open, pluggable tool ecosystem — any MCP-compatible service can be plugged in directly as an agent tool.
- Native JSON-RPC implementation, zero extra dependencies, supports both `stdio` and `sse` transports
- Compatible with the `mcpServers` configuration style used by Claude Desktop / Cursor, reads `~/cow/mcp.json` by default
Documentation: [MCP Tools](https://docs.cowagent.ai/en/tools/mcp). Thanks [@yangluxin613](https://github.com/yangluxin613) (#2801)
## 🌐 Browser Persistent Login
For sites that require login or have anti-bot protection, the browser tool can now persist a login session for long-term reuse, and supports attaching to your real Chrome browser to bypass fingerprint detection:
- **Persistent user profile (default)**: Uses `~/.cow/browser_profile` as the browser user data dir by default; once logged in, sessions are reused automatically on subsequent runs
- **CDP mode**: Configure `tools.browser.cdp_endpoint` to take over a real Chrome instance with full browser permissions
Documentation: [Browser Tool](https://docs.cowagent.ai/en/tools/browser). Thanks [@leafmove](https://github.com/leafmove) (#2809)
## 🤖 New Models and Improvements
- **New models**: `gpt-5.5`, `gemini-3.5-flash`, `qwen3.7-max`, `ernie-5.1`
- **Improvements**: DeepSeek V4 supports the `reasoning_effort` thinking-depth parameter; fixed thinking models like MiMo failing to connect via the OpenAI-compatible protocol
## 🔒 Deployment & Security
- **Bind to localhost by default**: The Web Console `web_host` now defaults to `127.0.0.1`; for server deployments, set it to `0.0.0.0` and configure a password manually. Thanks @August829, @yidaozhongqing, @YLChen-007, @icysun
- **Fully bundled frontend assets**: All third-party CSS / JS are now served locally — the console works offline and on intranet deployments. Thanks [@gitlayzer](https://github.com/gitlayzer) (#2816)
## 🛠 UX Improvements & Fixes
- **TTS rolls out to more channels**: Web Console, Personal WeChat, Feishu, DingTalk and WeCom Smart Bot all support voice replies — see the [Channels Overview](https://docs.cowagent.ai/en/channels)
- **Log panel enhancements**: Differentiated highlighting by log level, with level-based filtering. Thanks [@yangluxin613](https://github.com/yangluxin613) (#2807)
- **Auto-launch Web Console**: The Web Console now opens automatically on startup. Thanks [@yangluxin613](https://github.com/yangluxin613) (#2804)
- **Clean Ctrl+C exit**: No more long `KeyboardInterrupt` stack traces. Thanks [@yangluxin613](https://github.com/yangluxin613) (#2806)
- **Folder upload**: Web Console supports directory uploads, with path validation adapted for Windows. Thanks [@TryToMakeUsBetter](https://github.com/TryToMakeUsBetter) (#2814)
- Fixed scheduled tasks executing duplicates under certain conditions. Thanks [@CNXudiandian](https://github.com/CNXudiandian) (#2820)
- Fixed one-shot scheduled tasks with timezone not firing. Thanks @AethericSpace
- Fixed failed tool calls not being displayed after page refresh. Thanks [@a1094174619](https://github.com/a1094174619) (#2822)
- Fixed WeCom bot messages with illegal control characters failing to be delivered. Thanks [@Jacques-Zhao](https://github.com/Jacques-Zhao) (#2810)
## 📦 Upgrade
Source-code deployments can run `cow update` for a one-click upgrade, or pull the latest code and restart manually. See the [Upgrade Guide](https://docs.cowagent.ai/en/guide/upgrade) for details.
**Release Date**: 2026.05.22 | [Full Changelog](https://github.com/zhayujie/CowAgent/compare/2.0.8...2.0.9)

View File

@@ -3,147 +3,87 @@ title: image-generation - Image Generation
description: Text-to-image / image-to-image / multi-image fusion with automatic multi-provider routing and fallback
---
A general-purpose image generation and editing skill supporting six providers: OpenAI, Gemini, Seedream (Volcengine Ark), Qwen (DashScope), MiniMax, and LinkAI. No need to choose a model manually — the script automatically selects a configured provider based on a fixed priority order.
A general-purpose image generation and editing skill supporting six providers: OpenAI, Gemini, Seedream (Volcengine Ark), Qwen (DashScope), MiniMax, and LinkAI. Configure any one provider's key to start using it; configure multiple to enable automatic fallback.
## Model Selection
`image-generation` uses a "fixed priority + automatic fallback" strategy — just configure your keys and it works:
1. **Priority order**: `OpenAI → Gemini → Seedream → Qwen → MiniMax → LinkAI`
2. **Unconfigured providers are skipped**: only providers with an API key participate
3. **Automatic fallback on failure**: on errors like 401, model not enabled, or network issues, the next provider is tried
4. **Specified model goes first**: if a specific model name is provided, its provider is promoted to the front
### Supported Models
## Supported Models
| Provider | Models / Aliases | Notes |
| --- | --- | --- |
| OpenAI | `gpt-image-2`, `gpt-image-1` | General-purpose, high quality, supports `quality` parameter |
| Gemini Nano Banana | `nano-banana-2`, `nano-banana-pro`, `nano-banana` | Corresponds to `gemini-3.1-flash`, `gemini-3-pro`, `gemini-2.5-flash` image variants |
| Gemini Nano Banana | `nano-banana-2`, `nano-banana-pro`, `nano-banana` | Corresponds to the image variants of `gemini-3.1-flash`, `gemini-3-pro`, `gemini-2.5-flash` |
| Seedream (Volcengine Ark) | `seedream-5.0-lite`, `seedream-4.5` | Native 2K4K, up to 14 reference images for fusion |
| Qwen (DashScope) | `qwen-image-2.0`, `qwen-image-2.0-pro` | Strong with Chinese text rendering and text-image layouts |
| MiniMax | `image-01` | Fast and simple image generation |
| LinkAI | Any model | Universal proxy, used as fallback |
| MiniMax | `image-01` | Fast and simple |
| LinkAI | Any model | Universal gateway, used as fallback |
<Note>
By default, the Agent does not pick a model — it uses automatic routing. If you want a specific model, just say so in the conversation, e.g. "use seedream to draw a cat" or "generate a poster with gpt-image-2". You can also pin a default model via the "Custom Configuration" section below.
</Note>
## Model Selection
## Custom Configuration
By default, "auto routing + automatic fallback" is used:
### API Key Setup
1. Pick the first configured provider in the order `OpenAI → Gemini → Seedream → Qwen → MiniMax → LinkAI`
2. On errors such as 401, model not enabled, or network issues, automatically switch to the next provider
3. If the user specifies a model in the conversation (e.g. "use seedream to draw a cat"), the corresponding provider is promoted to the front
You need **at least one** provider key. Configuring multiple providers enables automatic fallback. There are three ways to set up keys:
#### Option 1: Automatic Reuse of Existing Keys
If you have already configured model keys in the web console or `config.json` (e.g. `openai_api_key`, `gemini_api_key`, etc.), these keys are **automatically synced** to the corresponding environment variables at startup. In other words, if your chat model works, image generation can use the same key with zero extra configuration.
#### Option 2: Configure in config.json
Add the key fields directly to `config.json`:
To pin a specific model:
```json
{
"openai_api_key": "sk-xxx",
"openai_api_base": "https://api.openai.com/v1",
"gemini_api_key": "AIza-xxx",
"ark_api_key": "xxx",
"dashscope_api_key": "sk-xxx",
"minimax_api_key": "xxx",
"linkai_api_key": "xxx"
}
```
A restart is required after changes. Each key also has a corresponding `*_api_base` field for custom endpoints.
#### Option 3: Configure via Conversation
Send an API key in the chat and the Agent will save it to `~/cow/.env` using the `env_config` tool — **no restart needed**. For example:
```
Set OPENAI_API_KEY to sk-xxx
```
Or:
```
Configure ARK_API_KEY as xxx
```
### API Key Reference
| Environment Variable | config.json Field | Provider | Default Base URL |
| --- | --- | --- | --- |
| `OPENAI_API_KEY` | `openai_api_key` | OpenAI | `https://api.openai.com/v1` |
| `GEMINI_API_KEY` | `gemini_api_key` | Gemini | `https://generativelanguage.googleapis.com` |
| `ARK_API_KEY` | `ark_api_key` | Volcengine Ark (Seedream) | `https://ark.cn-beijing.volces.com/api/v3` |
| `DASHSCOPE_API_KEY` | `dashscope_api_key` | Alibaba DashScope (Qwen) | `https://dashscope.aliyuncs.com` |
| `MINIMAX_API_KEY` | `minimax_api_key` | MiniMax | `https://api.minimaxi.com` |
| `LINKAI_API_KEY` | `linkai_api_key` | LinkAI | `https://api.link-ai.tech` |
### Pinning a Default Model
To force all image generation through a specific provider's model, add this to `config.json`:
```json
"skills": {
"image-generation": {
"model": "seedream-5.0-lite"
"skills": {
"image-generation": {
"model": "seedream-5.0-lite"
}
}
}
```
At startup, this is automatically converted to the environment variable `SKILL_IMAGE_GENERATION_MODEL`, and the script will always use this model's provider for generation.
## Configuring API Keys
<Tip>
It is recommended to configure providers from the "Model Management" page in the [Web Console](/channels/web). Chat model keys configured there are automatically reused by the image generation skill — no need to set them twice. You can also edit the configuration file manually or temporarily set keys in a conversation using the `env_config` tool.
</Tip>
Credentials are shared with the main model providers:
| Field | Provider |
| --- | --- |
| `openai_api_key` | OpenAI |
| `gemini_api_key` | Gemini |
| `ark_api_key` | Volcengine Ark (Seedream) |
| `dashscope_api_key` | Alibaba DashScope (Qwen) |
| `minimax_api_key` | MiniMax |
| `linkai_api_key` | LinkAI |
## Enabling and Disabling
`image-generation` is a built-in skill that **automatically adjusts its status based on API keys**:
The skill automatically adjusts its status based on API keys:
- **Key configured**: the skill is active — the Agent will invoke it when asked to draw
- **Key not configured**: the skill still appears in context (marked as "needs configuration") — the Agent will guide the user to set up a key rather than failing silently
- **Key configured**: the Agent calls the skill directly when it receives a drawing request
- **Key not configured**: the skill still appears in context (marked as "needs configuration") — the Agent will guide the user to set up a key
To control it manually:
```text
/skill disable image-generation # Disable (won't be invoked even if keys are present)
/skill disable image-generation # Disable
/skill enable image-generation # Re-enable
```
In the terminal: `cow skill disable image-generation` / `cow skill enable image-generation`.
Equivalent terminal commands: `cow skill disable image-generation` / `cow skill enable image-generation`.
## Parameters
| Parameter | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `prompt` | string | Yes | — | Image description |
| `image_url` | string / list | No | null | Input image(s) for editing — local path or URL. Pass multiple for multi-image fusion |
| `quality` | string | No | auto | `low` / `medium` / `high` only some providers support this |
| `image_url` | string / list | No | null | Input image for editing — local path or URL; pass a list for multi-image fusion |
| `quality` | string | No | auto | `low` / `medium` / `high`, supported only by some providers |
| `size` | string | No | auto | `512` / `1K` / `2K` / `3K` / `4K`, or pixel value like `1024x1024` |
| `aspect_ratio` | string | No | null | `1:1` / `3:2` / `2:3` / `16:9` / `9:16` / `21:9`; Gemini also supports `1:4` / `4:1` / `1:8` / `8:1` |
<Warning>
**Higher quality and larger size cost more and take longer.**
- For everyday conversations and quick previews, use the defaults (`auto`) or `quality=low` + `size=1K` — roughly 20 seconds
- For posters or when the user explicitly asks for high resolution, use `quality=high` + `size=2K/4K` — may take 15 minutes depending on the model
**Higher quality and larger size cost more and take longer.** For everyday conversations, use the defaults (`auto`) or `quality=low` + `size=1K` — about 20 seconds per image. For posters or when high resolution is explicitly requested, use `quality=high` + `size=2K/4K` — may take 15 minutes.
</Warning>
## Output
On success:
```json
{
"model": "doubao-seedream-5-0-260128",
"images": [
{"url": "/path/to/output.png"}
]
}
```
On failure: `{ "error": "..." }`. After an error, **do not retry directly** — it is almost always a configuration issue (wrong key, incorrect API base, model not enabled). Have the user fix the configuration first.
## Common Use Cases
- **Text-to-image**: generate illustrations, posters, icons, avatars, storyboards, etc. from a description
@@ -151,8 +91,8 @@ On failure: `{ "error": "..." }`. After an error, **do not retry directly** —
- **Multi-image fusion**: combine multiple reference images into one (outfit swaps, character group photos, etc.)
<Note>
- Bash timeout should be set to 600 seconds. Each provider has a 300-second HTTP timeout, but the script may try multiple providers sequentially
- Bash timeout should be set to 600 seconds: each provider has a 300-second HTTP timeout, and the script may try multiple providers sequentially
- Input images are automatically compressed to ≤ 4 MB with the longest edge ≤ 4096 px
- Gemini / Seedream / Qwen / MiniMax do not support the `quality` parameter — passing it has no effect
- Gemini / Seedream / Qwen / MiniMax do not support the `quality` parameter
- Seedream defaults to 2K; `seedream-5.0-lite` supports up to 3K; `seedream-4.5` supports up to 4K
</Note>

View File

@@ -1,5 +1,5 @@
---
title: vision - Image Analysis
title: vision - Image Understanding
description: Analyze image content (recognition, description, OCR, etc.)
---
@@ -9,33 +9,49 @@ Analyze local images or image URLs using Vision API. Supports content descriptio
The vision tool uses a multi-level auto-selection strategy with automatic fallback — no manual configuration required:
1. **Main model** — uses the currently configured main model for image recognition (zero extra cost)
2. **Other configured models** — auto-discovers other models with configured API keys as alternatives
3. **OpenAI** — uses `open_ai_api_key` to call gpt-4.1-mini
4. **LinkAI** — uses `linkai_api_key` to call LinkAI vision service
When `use_linkai=true`, LinkAI is promoted to the highest priority.
1. **Main model** — uses the currently configured main model for image recognition (must be a multimodal model)
2. **Other configured models** — auto-discovers other multimodal models with configured API keys as alternatives
If the current provider fails, the tool automatically tries the next one until it succeeds or all fail.
### Supported Models
| Vendor | Vision Model | Notes |
| Provider | Vision Model | Notes |
| --- | --- | --- |
| OpenAI / Compatible | Main model | All OpenAI-compatible multimodal models |
| Baidu Qianfan | Main model | Multimodal main models (e.g. `ernie-5.1`) handle images directly; falls back to `ernie-4.5-turbo-vl` for text-only main models |
| Qwen (DashScope) | Main model | Via MultiModalConversation API |
| OpenAI / Compatible | Main model | All OpenAI-protocol-compatible multimodal models |
| Qwen (DashScope) | Main model | e.g. qwen3.6-plus, etc. |
| Claude | Main model | Anthropic native image format |
| Gemini | Main model | inlineData format |
| Doubao | Main model | doubao-seed-2-0 series natively supported |
| Kimi (Moonshot) | Main model | kimi-k2.6, kimi-k2.5 natively supported |
| ZhipuAI | glm-5v-turbo | Always uses dedicated vision model |
| MiniMax | MiniMax-Text-01 | Always uses dedicated vision model |
| Baidu Qianfan | Main model | Defaults to the multimodal main model (e.g. `ernie-5.1`); falls back to `ernie-4.5-turbo-vl` when the main model is not multimodal |
| ZhipuAI | glm-5v-turbo | Always uses the dedicated vision model |
| MiniMax | MiniMax-Text-01 | Always uses the dedicated vision model |
<Note>
ZhipuAI and MiniMax text models do not support image understanding, so their dedicated vision models are always used automatically.
</Note>
> When `use_linkai=true`, LinkAI's multimodal model is used by default.
## Custom Configuration
To specify the model used by Vision, configure it in `config.json`, for example:
```json
{
"tools": {
"vision": {
"model": "gpt-4.1"
}
}
}
```
The specified model is **used first**, and the tool automatically routes to the corresponding provider based on the model name; on failure, it falls back to other configured providers.
In most cases no configuration is needed — the tool works automatically as long as the main model supports multimodal input or any vision-capable API key is configured.
## Parameters
| Parameter | Type | Required | Description |
@@ -45,21 +61,7 @@ If the current provider fails, the tool automatically tries the next one until i
Supported image formats: jpg, jpeg, png, gif, webp
## Custom Configuration
To specify a particular model for the vision tool, add to `config.json`:
```json
{
"tools": {
"vision": {
"model": "ernie-4.5-turbo-vl"
}
}
}
```
In most cases no configuration is needed. The tool works automatically as long as the main model supports multimodal input or any vision-capable API key is configured.
## Use Cases
@@ -69,5 +71,5 @@ In most cases no configuration is needed. The tool works automatically as long a
- Analyze screenshots and scanned documents
<Note>
Images larger than 1MB are automatically compressed (max edge 1536px). All images (including remote URLs) are converted to base64 for transmission to ensure compatibility with all model backends.
Images larger than 1MB are automatically compressed before upload. All images (including remote URLs) are converted to base64 for transmission to ensure compatibility with all model backends.
</Note>

View File

@@ -1,32 +1,51 @@
---
title: web_search - Web Search
description: Search the internet for real-time information
description: Search the internet for real-time information, with support for multiple search providers
---
Search the internet for real-time information, news, research, and more. Supports two search backends with automatic fallback.
Search the internet for real-time information, news, research, and more. Supports four backends — Bocha, Baidu Qianfan, Zhipu, and LinkAI — and works once any one of them is configured.
## Dependencies
<Tip>
It is recommended to configure providers and routing strategy visually from the "Model Management → Search" panel in the [Web Console](/channels/web), without manually editing the configuration file.
</Tip>
Requires at least one search API key (configured via `env_config` tool or workspace `.env` file):
## Providers
| Backend | Environment Variable | Priority | How to Get |
| --- | --- | --- | --- |
| Bocha Search | `BOCHA_API_KEY` | Primary | [Bocha Open Platform](https://open.bochaai.com/) |
| LinkAI Search | `LINKAI_API_KEY` | Fallback | [LinkAI Console](https://link-ai.tech/console/interface) |
| Provider | Credential | Apply |
| --- | --- | --- |
| Bocha | `tools.web_search.bocha_api_key` | [Bocha Open Platform](https://open.bochaai.com/) |
| Baidu Qianfan | Reuses `qianfan_api_key` | [Qianfan Console](https://cloud.baidu.com/doc/qianfan/s/2mh4su4uy) |
| Zhipu | Reuses `zhipu_ai_api_key` | [Zhipu Open Platform](https://docs.bigmodel.cn/cn/guide/tools/web-search) |
| LinkAI | Reuses `linkai_api_key` | [LinkAI Console](https://link-ai.tech/console/interface) |
## Parameters
Except for Bocha which requires a dedicated `bocha_api_key`, the other three reuse the corresponding model's API key — configuring the model automatically grants search capability.
## Routing Strategy
```json
{
"tools": {
"web_search": {
"strategy": "auto",
"provider": ""
}
}
}
```
- `auto` (default): the Agent intelligently picks among configured providers and may call multiple providers in a single task to gather more comprehensive results; when none is specified, falls back through `bocha → qianfan → zhipu → linkai`.
- `fixed`: always use the provider specified in `provider`; falls back to the auto order if that provider's credentials are missing.
## Tool Parameters
| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `query` | string | Yes | Search keywords |
| `count` | integer | No | Number of results (1-50, default 10) |
| `freshness` | string | No | Time range: `noLimit`, `oneDay`, `oneWeek`, `oneMonth`, `oneYear`, or date range like `2025-01-01..2025-02-01` |
| `summary` | boolean | No | Return page summaries (default false) |
## Use Cases
When the user asks about latest information, needs fact-checking, or real-time data, the Agent automatically invokes this tool.
| `count` | integer | No | Number of results (150, default 10) |
| `freshness` | string | No | Time range: `noLimit` (default), `oneDay`, `oneWeek`, `oneMonth`, `oneYear`, or date range like `2025-01-01..2025-02-01` |
| `summary` | boolean | No | Whether to return page summaries (default false) |
| `provider` | string | No | Available when multiple providers are configured under the `auto` strategy; used to switch provider for a single call |
<Note>
If no search API key is configured, this tool will not be loaded.
If none of the four credentials are configured, this tool is not registered with the Agent.
</Note>

View File

@@ -9,7 +9,7 @@ CowAgent 2.0 从简单的聊天机器人全面升级为超级智能助理,采
CowAgent 的整体架构由以下核心模块组成:
<img src="https://cdn.link-ai.tech/doc/cow-agent-arch-zh.jpg" alt="CowAgent Architecture" />
<img src="https://cdn.jsdelivr.net/gh/zhayujie/cowagent-assets@main/architecture/zh/architecture.jpg" alt="CowAgent Architecture" />
| 模块 | 说明 |
| --- | --- |

View File

@@ -1,250 +1,254 @@
<p align="center"><img src="https://github.com/user-attachments/assets/eca9a9ec-8534-4615-9e0f-96c5ac1d10a3" alt="CowAgent" width="550" /></p>
<p align="center"><img src="https://github.com/user-attachments/assets/eca9a9ec-8534-4615-9e0f-96c5ac1d10a3" alt="CowAgent" width="420" /></p>
<p align="center">
<a href="https://github.com/zhayujie/CowAgent/releases/latest"><img src="https://img.shields.io/github/v/release/zhayujie/CowAgent" alt="Latest release"></a>
<a href="https://github.com/zhayujie/CowAgent/blob/master/LICENSE"><img src="https://img.shields.io/github/license/zhayujie/CowAgent" alt="License: MIT"></a>
<a href="https://github.com/zhayujie/CowAgent"><img src="https://img.shields.io/github/stars/zhayujie/CowAgent?style=flat-square" alt="Stars"></a> <br/>
[<a href="https://github.com/zhayujie/CowAgent/blob/master/README.md">中文</a>] | [<a href="https://github.com/zhayujie/CowAgent/blob/master/docs/en/README.md">English</a>] | [日本語]
[<a href="../../README.md">English</a>] | [<a href="../zh/README.md">中文</a>] | [日本語]
</p>
**CowAgent**LLMを搭載したAIスーパーアシスタントです。自律的タスク計画、コンピュータや外部リソース操作、Skill作成・実行、長期記憶とパーソナルナレッジベースによる継続的な成長が可能です。柔軟なモデル切り替えに対応し、テキスト・音声・画像・ファイルを処理でき、WeChat、Web、Feishu飛書、DingTalk釘釘、WeCom Bot企業微信ボット、WeComアプリ、WeChat公式アカウントに統合可能で、個人のPCやサーバー上で24時間365日稼働できます。
**CowAgent**自律的タスク計画、コンピュータや外部リソース操作、Skill作成・実行、パーソナルナレッジベースと長期記憶でユーザーとともに成長するオープンソースのスーパー AI アシスタントです。エンドツーエンドの Agent Harness のリファレンス実装の一つでもあります。
CowAgent は軽量でデプロイしやすく、拡張性に優れています。主要な LLM プロバイダーをそのまま組み込み、Web や主要な IM プラットフォーム上で動作。個人 PC やサーバー上で 24 時間 365 日稼働できます。
<p align="center">
<a href="https://cowagent.ai/">🌐 ウェブサイト</a> &nbsp;·&nbsp;
<a href="https://docs.cowagent.ai/en/intro/index">📖 ドキュメント</a> &nbsp;·&nbsp;
<a href="https://docs.cowagent.ai/en/guide/quick-start">🚀 クイックスタート</a> &nbsp;·&nbsp;
<a href="https://docs.cowagent.ai/ja/intro/index">📖 ドキュメント</a> &nbsp;·&nbsp;
<a href="https://docs.cowagent.ai/ja/guide/quick-start">🚀 クイックスタート</a> &nbsp;·&nbsp;
<a href="https://skills.cowagent.ai/">🧩 Skill Hub</a> &nbsp;·&nbsp;
<a href="https://link-ai.tech/cowagent/create">☁️ オンラインで試す</a>
</p>
## はじめに
<br/>
> CowAgentは、すぐに使えるAIスーパーアシスタントであると同時に、高い拡張性を持つAgentフレームワークでもあります。新しいモデルインターフェース、チャネル、組み込みツール、Skillシステムを拡張することで、さまざまなカスタマイズニーズに柔軟に対応できます。
## 🌟 主な機能
-**自律的タスク計画**: 複雑なタスクを理解し、自律的に実行計画を立て、目標達成までツールを呼び出しながら継続的に思考します。
-**長期記憶**: 会話の記憶をローカルファイルやデータベースに自動的に永続化します。コアメモリ、デイリーメモリ、Deep Dream 蒸留を含み、キーワード検索やベクトル検索に対応しています。
-**パーソナルナレッジベース**: 構造化された知識を自動整理し、相互参照によるナレッジグラフを構築。Web での可視化ブラウジングと対話による管理をサポートします。
-**Skillシステム**: Skillの作成・実行エンジンを実装。[Skill Hub](https://skills.cowagent.ai)、GitHubなどからSkillをインストールでき、会話を通じたカスタムSkill作成もサポートしています。
-**ツールシステム**: ファイル読み書き、ターミナル実行、ブラウザ操作、スケジュールタスク、メッセージ送信などの組み込みツールを提供。Agentが自律的に呼び出して複雑なタスクを完了します。
-**CLIシステム**: ターミナルコマンドとチャットコマンドを提供し、プロセス管理、Skillインストール、設定変更などの操作をサポートします。
-**マルチモーダルメッセージ**: テキスト、画像、音声、ファイルなど、さまざまなメッセージタイプの解析・処理・生成・送信に対応しています。
-**複数モデル対応**: DeepSeek、MiniMax、Claude、Gemini、OpenAI、GLM、Qwen、Doubao、Kimiなど、主要なモデルプロバイダーに対応しています。
-**マルチプラットフォームデプロイ**: ローカルPCやサーバー上で実行でき、WeChat、Web、Feishu、DingTalk、WeChat公式アカウント、WeComアプリケーションに統合可能です。
| 機能 | 説明 |
| :--- | :--- |
| 🤖 [自律的タスク計画](https://docs.cowagent.ai/ja/intro/architecture) | 複雑なタスクを分解し、目標達成までツールを繰り返し呼び出して段階的に実行 |
| 🧠 [長期記憶](https://docs.cowagent.ai/ja/memory/index) | 三層構造(コンテキスト → デイリー → コア、Deep Dream による自動蒸留、キーワードとベクトルのハイブリッド検索 |
| 📚 [パーソナルナレッジベース](https://docs.cowagent.ai/ja/knowledge/index) | 構造化された知識を Markdown Wiki として自動整理し、進化し続けるナレッジグラフを可視化ブラウジング |
| 🧩 [Skill システム](https://docs.cowagent.ai/ja/skills/index) | [Skill Hub](https://skills.cowagent.ai/)、GitHub、ClawHub からワンクリックでインストール;対話によるカスタム Skill 作成にも対応 |
| 🔧 [ツールシステム](https://docs.cowagent.ai/ja/tools/index) | ファイル I/O、ターミナル、ブラウザ、スケジューラ、記憶検索、Web 検索など 10+ の組み込みツール — MCP プロトコルに完全対応 |
| 💬 [マルチチャネル統合](https://docs.cowagent.ai/ja/channels/index) | 一つの Agent で Web、WeChat、Feishu、DingTalk、WeCom、QQ、公式アカウントを同時にサポート |
| 🎨 マルチモーダルメッセージ | テキスト・画像・音声・ファイルをフルサポート — 認識・生成・双方向送受信 |
| ⚙️ [プラガブルなモデル](https://docs.cowagent.ai/ja/models/index) | Claude、GPT、Gemini、DeepSeek、GLM、Qwen、Kimi、MiniMax、Doubao など、設定 1 行で切り替え可能 |
| 📦 [すぐに使える](https://docs.cowagent.ai/ja/guide/quick-start) | ワンラインインストーラー、統合された Web コンソール、複数のデプロイモード(ローカル / Docker / サーバー) |
## 免責事項
<br/>
1. 本プロジェクトは [MIT License](/LICENSE) に基づいており、技術研究・学習を目的としています。利用者は現地の法律、規制、ポリシー、企業の社則を遵守する必要があります。違法行為や権利侵害となる利用は禁止されています。
2. Agentモードは通常のチャットモードよりも多くのトークンを消費します。効果とコストに基づいてモデルを選択してください。AgentはホストOSにアクセスできるため、信頼できる環境にデプロイしてください。
3. CowAgentはオープンソース開発に注力しており、いかなる暗号通貨の発行・参加・承認も行っていません。
## 🏗️ アーキテクチャ
## デモ
<img src="https://cdn.jsdelivr.net/gh/zhayujie/cowagent-assets@main/architecture/en/architecture.jpg" alt="CowAgent Architecture" width="750"/>
オンラインで試す(デプロイ不要): [CowAgent](https://link-ai.tech/cowagent/create)
CowAgent は完全な **Agent Harness** です:メッセージは各種**チャネル**から流入し、**Agent Core** が記憶・知識・利用可能なツールSkill を組み合わせてタスクを計画・判断、**モデル**が応答を生成し、結果は元のチャネルに返されます。各レイヤーは疎結合で、独立して拡張可能です。
## 更新履歴
> **2026.04.14:** [v2.0.6](https://github.com/zhayujie/CowAgent/releases/tag/2.0.6) — ナレッジベース、Deep Dream 記憶蒸留、スマートコンテキスト圧縮、Web コンソールアップグレード。
> **2026.04.01:** [v2.0.5](https://github.com/zhayujie/CowAgent/releases/tag/2.0.5) — Cow CLI、Skill Hubオープンソース化、ブラウザツール、WeCom Botスキャン作成など。
> **2026.02.27:** [v2.0.2](https://github.com/zhayujie/CowAgent/releases/tag/2.0.2) — Webコンソールの全面刷新ストリーミングチャット、モデル/Skill/メモリ/チャネル/スケジューラ/ログ管理、マルチチャネル同時実行、セッション永続化、Gemini 3.1 Pro / Claude 4.6 Sonnet / Qwen3.5 Plusなど新モデル追加。
> **2026.02.13:** [v2.0.1](https://github.com/zhayujie/CowAgent/releases/tag/2.0.1) — 組み込みWeb検索ツール、スマートコンテキストトリミング、ランタイム情報の動的更新、Windows互換性、スケジューラのメモリ喪失やFeishu接続問題などの修正。
> **2026.02.03:** [v2.0.0](https://github.com/zhayujie/CowAgent/releases/tag/2.0.0) — マルチステップタスク計画、長期記憶、組み込みツール、Skillフレームワーク、新モデル、チャネル最適化を備えたAIスーパーアシスタントへの全面アップグレード。
> **2025.05.23:** [v1.7.6](https://github.com/zhayujie/CowAgent/releases/tag/1.7.6) — Webチャネル最適化、AgentMeshマルチエージェントプラグイン、Baidu TTS、claude-4-sonnet/opus対応。
> **2025.04.11:** [v1.7.5](https://github.com/zhayujie/CowAgent/releases/tag/1.7.5) — wechatferryプロトコル、DeepSeekモデル、Tencent Cloud音声、ModelScope・Gitee-AI対応。
> **2024.12.13:** [v1.7.4](https://github.com/zhayujie/CowAgent/releases/tag/1.7.4) — Gemini 2.0モデル、Webチャネル、メモリリーク修正。
全更新履歴: [リリースノート](https://docs.cowagent.ai/en/releases/overview)
詳細は [アーキテクチャ](https://docs.cowagent.ai/ja/intro/architecture) を参照してください。
<br/>
## 🚀 クイックスタート
本プロジェクトは、インストール設定起動・管理をワンクリックで行えるスクリプトを提供しています:
依存関係のインストール設定起動を自動で行うワンラインインストーラーを提供しています:
**Linux / macOS:**
```bash
bash <(curl -fsSL https://cdn.link-ai.tech/code/cow/run.sh)
```
**Windows (PowerShell):**
```powershell
irm https://cdn.link-ai.tech/code/cow/run.ps1 | iex
```
実行後、デフォルトでWebサービスが起動します。`http://localhost:9899/chat` にアクセスしてチャットを開始できます。
スクリプトの使い方: [ワンクリックインストール](https://docs.cowagent.ai/ja/guide/quick-start)。インストール後は `cow start``cow stop` などの [CLI コマンド](https://docs.cowagent.ai/ja/cli/index)でサービスを管理できます。
### 手動インストール
**1. プロジェクトのクローン**
```bash
git clone https://github.com/zhayujie/CowAgent
cd CowAgent/
```
**2. 依存関係のインストール**
```bash
pip3 install -r requirements.txt
pip3 install -r requirements-optional.txt # 任意ですが推奨
```
**3. Cow CLI のインストール(推奨)**
```bash
pip3 install -e .
```
インストール後、`cow` コマンドでサービス管理起動、停止、更新などやSkill管理ができます。[コマンドドキュメント](https://docs.cowagent.ai/ja/cli/index)を参照してください。
**4. ブラウザのインストール(任意)**
Agentにブラウザ操作Webページへのアクセス、フォーム入力などが必要な場合
```bash
cow install-browser
```
`playwright` と Chromium を自動インストールします。[ブラウザツールドキュメント](https://docs.cowagent.ai/ja/tools/browser)を参照してください。
**5. 設定**
```bash
cp config-template.json config.json
```
`config.json` にモデルのAPIキーとチャネルタイプを記入してください。詳細は[設定ドキュメント](https://docs.cowagent.ai/en/guide/manual-install)を参照してください。
**6. 実行**
```bash
cow start # 推奨、Cow CLI が必要
python3 app.py # または直接実行
```
サーバーデプロイでは、`cow` コマンドでサービスを管理できます:
```bash
cow start # バックグラウンドで起動
cow stop # サービス停止
cow restart # サービス再起動
cow status # 実行状態を確認
cow logs # ログを表示
cow update # 最新コードを取得して再起動
```
または従来の方法で実行:
```bash
nohup python3 app.py & tail -f nohup.out
```
### Dockerデプロイ
**Docker:**
```bash
curl -O https://cdn.link-ai.tech/code/cow/docker-compose.yml
# docker-compose.yml を編集して設定を記入
sudo docker compose up -d
sudo docker logs -f chatgpt-on-wechat
docker compose up -d
```
起動後、`http://localhost:9899` にアクセスして **Web コンソール**を開くと、モデル設定・チャネル接続・Skill インストールがすべてここで完結します。
> 📖 詳細ガイド: [ワンラインインストーラー](https://docs.cowagent.ai/ja/guide/quick-start) · [ソースから手動インストール](https://docs.cowagent.ai/ja/guide/manual-install) · [アップグレード](https://docs.cowagent.ai/ja/guide/upgrade)
インストール後は、[`cow` CLI](https://docs.cowagent.ai/ja/cli/index) でサービスを管理できます:
```bash
cow start | stop | restart # サービス制御
cow status | logs # ステータスとログ
cow update # 最新コード取得後に再起動
cow skill install <名前> # Skill のインストール
cow install-browser # ブラウザツールのインストール
```
<br/>
## モデル
## 🤖 モデル
主要なモデルプロバイダーに対応しています。Agentモードの推奨モデル
CowAgent は主要な LLM プロバイダーすべてに対応しています。**チャット、画像認識、画像生成、ASR/TTS、埋め込みEmbedding** の各機能はそれぞれ別のベンダーで設定可能です。
| プロバイダー | 推奨モデル |
| --- | --- |
| DeepSeek | `deepseek-v4-flash` |
| MiniMax | `MiniMax-M2.7` |
| Claude | `claude-sonnet-4-6` |
| Gemini | `gemini-3.1-pro-preview` |
| OpenAI | `gpt-5.4` |
| GLM | `glm-5.1` |
| Qwen | `qwen3.6-plus` |
| Doubao | `doubao-seed-2-0-code-preview-260215` |
| Kimi | `kimi-k2.6` |
| プロバイダー | 代表的なモデル | チャット | 画像認識 | 画像生成 | ASR | TTS | Embedding |
| --- | --- | :-: | :-: | :-: | :-: | :-: | :-: |
| [Claude](https://docs.cowagent.ai/ja/models/claude) | claude-opus-4-7 | ✅ | ✅ | | | | |
| [OpenAI](https://docs.cowagent.ai/ja/models/openai) | gpt-5.5、o シリーズ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| [Gemini](https://docs.cowagent.ai/ja/models/gemini) | gemini-3.5-flash | ✅ | ✅ | ✅ | | | |
| [DeepSeek](https://docs.cowagent.ai/ja/models/deepseek) | deepseek-v4-flash / pro | ✅ | | | | | |
| [Qwen](https://docs.cowagent.ai/ja/models/qwen) | qwen3.7-max | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| [GLM](https://docs.cowagent.ai/ja/models/glm) | glm-5.1、glm-5v-turbo | ✅ | ✅ | | ✅ | | ✅ |
| [Doubao](https://docs.cowagent.ai/ja/models/doubao) | doubao-seed-2.0 シリーズ | ✅ | ✅ | ✅ | | | ✅ |
| [Kimi](https://docs.cowagent.ai/ja/models/kimi) | kimi-k2.6 | ✅ | ✅ | | | | |
| [MiniMax](https://docs.cowagent.ai/ja/models/minimax) | MiniMax-M2.7 | ✅ | ✅ | ✅ | | ✅ | |
| [Qianfan](https://docs.cowagent.ai/ja/models/qianfan) | ernie-5.1 | ✅ | ✅ | | | | |
| [LinkAI](https://docs.cowagent.ai/ja/models/linkai) | 100+ モデルを統一ゲートウェイで提供 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| [カスタム](https://docs.cowagent.ai/ja/models/custom) | ローカルモデル / サードパーティプロキシ | ✅ | | | | | |
各モデルの詳細設定については、[モデルドキュメント](https://docs.cowagent.ai/en/models/index)を参照してください。
> Web コンソールでの設定が推奨されており、ファイルを手動編集する必要はありません。手動設定については各プロバイダーのドキュメントおよび [モデル概要](https://docs.cowagent.ai/ja/models/index) を参照してください。
### Coding Plan
<br/>
Coding Planは各プロバイダーが提供する月額サブスクリプションパッケージで、高頻度のAgent利用に最適です。すべてのプロバイダーはOpenAI互換モードでアクセスできます
## 💬 チャネル
```json
{
"bot_type": "openai",
"model": "MODEL_NAME",
"open_ai_api_base": "PROVIDER_CODING_PLAN_API_BASE",
"open_ai_api_key": "YOUR_API_KEY"
}
一つの Agent インスタンスで複数のチャネルを同時に提供できます。`channel_type` 設定で切り替えるか、複数のチャネルを並列実行できます。
| チャネル | テキスト | 画像 | ファイル | 音声 | グループ |
| --- | :-: | :-: | :-: | :-: | :-: |
| [Web コンソール](https://docs.cowagent.ai/ja/channels/web)(デフォルト) | ✅ | ✅ | ✅ | ✅ | |
| [WeChat](https://docs.cowagent.ai/ja/channels/weixin) | ✅ | ✅ | ✅ | ✅ | |
| [Feishu / Lark](https://docs.cowagent.ai/ja/channels/feishu) | ✅ | ✅ | ✅ | ✅ | ✅ |
| [DingTalk](https://docs.cowagent.ai/ja/channels/dingtalk) | ✅ | ✅ | ✅ | ✅ | ✅ |
| [WeCom Bot](https://docs.cowagent.ai/ja/channels/wecom-bot) | ✅ | ✅ | ✅ | ✅ | ✅ |
| [QQ](https://docs.cowagent.ai/ja/channels/qq) | ✅ | ✅ | ✅ | | ✅ |
| [WeCom App](https://docs.cowagent.ai/ja/channels/wecom) | ✅ | ✅ | ✅ | ✅ | |
| [WeChat 公式アカウント](https://docs.cowagent.ai/ja/channels/wechatmp) | ✅ | ✅ | | ✅ | |
> Feishu と WeCom Bot は **Web コンソール内で QR コードをスキャンするだけで接続**できます — パブリック IP は不要です。詳細は [チャネル概要](https://docs.cowagent.ai/ja/channels/index) を参照してください。
<img src="https://cdn.jsdelivr.net/gh/zhayujie/cowagent-assets@main/screenshots/en/web-console-chat.png" alt="CowAgent Web Console" width="800"/>
*Web コンソールはデフォルトのチャネルであると同時に、Agent の設定・管理を統一的に行う場でもあります。*
<br/>
## 🧠 記憶とナレッジベース
**長期記憶**は三層構造:会話コンテキスト(短期)→ デイリー記憶(中期)→ MEMORY.md長期。毎晩の **Deep Dream** が散在する記憶を洗練された長期記憶とナラティブな日記に蒸留します。詳細は [長期記憶](https://docs.cowagent.ai/ja/memory/index) · [Deep Dream](https://docs.cowagent.ai/ja/memory/deep-dream) を参照してください。
**パーソナルナレッジベース**は時系列の記憶とは異なり、構造化された知識を**トピック単位**で整理します。Agent が会話中に有用な情報を自動でキュレーションし、相互参照とインデックスを維持し、Web コンソールでナレッジグラフを可視化できます。詳細は [パーソナルナレッジベース](https://docs.cowagent.ai/ja/knowledge/index) を参照してください。
<table>
<tr>
<td width="50%">
<img src="https://cdn.jsdelivr.net/gh/zhayujie/cowagent-assets@main/screenshots/en/web-console-memory.png" alt="長期記憶" />
<p align="center"><em>長期記憶 · 三層構造 + Deep Dream</em></p>
</td>
<td width="50%">
<img src="https://cdn.jsdelivr.net/gh/zhayujie/cowagent-assets@main/screenshots/en/web-console-knowledge.png" alt="パーソナルナレッジベース" />
<p align="center"><em>ナレッジベース · 自動キュレーションされた Markdown Wiki</em></p>
</td>
</tr>
</table>
<br/>
## 🔧 ツールと Skill
**ツールTools** は Agent がシステムリソースを操作するためのアトミックな機能です。**SkillSkills** はマニフェストファイルで定義される高レベルのワークフローで、複数のツールを組み合わせて複雑なタスクを完了します。
### ツールシステム
**組み込みツール**には、ファイル I/O`read` / `write` / `edit` / `ls`)、ターミナル(`bash`)、ファイル送信(`send`)、記憶検索(`memory`)、環境変数(`env_config`、Web フェッチ(`web_fetch`)、スケジューラ(`scheduler`、Web 検索(`web_search`)、画像認識(`vision`)、ブラウザ自動化(`browser`)などが含まれます。
**MCP プロトコル**は [Model Context Protocol](https://modelcontextprotocol.io) のオープンエコシステムを統合します。`mcp.json` を一度設定すれば即利用可能で、stdio / SSE トランスポート、ホットリロード、ノーコード統合をサポートします。
詳細: [ツール概要](https://docs.cowagent.ai/ja/tools/index) · [MCP 統合](https://docs.cowagent.ai/ja/tools/mcp)。
### Skill システム
- **[Skill Hub](https://skills.cowagent.ai/)** — オープン Skill マーケットプレイス:閲覧、検索、ワンクリックインストール
- **GitHub / ClawHub** — 複数の Skill ソース、4 万以上の Skill を利用可能
- **対話による作成** — `skill-creator` を使って対話でカスタム Skill を生成;ワークフローやサードパーティ API を再利用可能な Skill に変換
```bash
/skill list # インストール済み Skill の一覧
/skill search <キーワード> # マーケットプレイスで検索
/skill install <名前> # ワンクリックインストール
```
- `bot_type`: `openai` を指定
- `model`: プロバイダーがサポートするモデル名
- `open_ai_api_base`: プロバイダーのCoding Plan API Base標準の従量課金とは異なります
- `open_ai_api_key`: プロバイダーのCoding Plan APIキー
> 注意Coding PlanのAPI BaseとAPIキーは、通常の従量課金のものとは別です。各プロバイダーのプラットフォームから取得してください。
対応プロバイダーには、Alibaba Cloud、MiniMax、Zhipu GLM、Kimi、Volcengineなどがあります。各プロバイダーの詳細設定については、[Coding Planドキュメント](https://docs.cowagent.ai/en/models/coding-plan)を参照してください。
詳細: [Skill 概要](https://docs.cowagent.ai/ja/skills/index) · [Skill 作成](https://docs.cowagent.ai/ja/skills/create)。
<br/>
## チャネル
## 🏷 更新履歴
複数のプラットフォームに対応しています。`config.json``channel_type` を設定して切り替えます:
> **2026.05.22:** [v2.0.9](https://github.com/zhayujie/CowAgent/releases/tag/2.0.9) — モデル管理、MCP プロトコル対応、ブラウザセッション永続化、新モデルgpt-5.5、gemini-3.5-flash、qwen3.7-max、デプロイのセキュリティ強化。
| チャネル | `channel_type` | ドキュメント |
| --- | --- | --- |
| WeChat | `weixin` | [WeChat設定](https://docs.cowagent.ai/ja/channels/weixin) |
| Webデフォルト | `web` | [Webチャネル](https://docs.cowagent.ai/en/channels/web) |
| Feishu飛書 | `feishu` | [Feishu設定](https://docs.cowagent.ai/en/channels/feishu) |
| DingTalk釘釘 | `dingtalk` | [DingTalk設定](https://docs.cowagent.ai/en/channels/dingtalk) |
| WeCom Bot | `wecom_bot` | [WeCom Bot設定](https://docs.cowagent.ai/en/channels/wecom-bot) |
| WeComアプリ | `wechatcom_app` | [WeCom設定](https://docs.cowagent.ai/en/channels/wecom) |
| WeChat公式アカウント | `wechatmp` / `wechatmp_service` | [WeChat公式アカウント設定](https://docs.cowagent.ai/en/channels/wechatmp) |
| ターミナル | `terminal` | — |
> **2026.05.06:** [v2.0.8](https://github.com/zhayujie/CowAgent/releases/tag/2.0.8) — Feishu チャネル全面アップグレード音声、ストリーミング、QR 接続、DeepSeek V4 と Baidu Qianfan 対応、スケジューラツール強化。
複数チャネルを同時に有効化できます。カンマ区切りで指定してください:`"channel_type": "feishu,dingtalk"`
> **2026.04.22:** [v2.0.7](https://github.com/zhayujie/CowAgent/releases/tag/2.0.7) — 組み込み画像生成GPT Image 2、Nano Banana、新モデルKimi K2.6、Claude Opus 4.7、GLM 5.1)、ナレッジベースと記憶の強化。
> **2026.04.14:** [v2.0.6](https://github.com/zhayujie/CowAgent/releases/tag/2.0.6) — ナレッジベース、Deep Dream 記憶蒸留、スマートコンテキスト圧縮、マルチセッション Web コンソール。
> **2026.04.01:** [v2.0.5](https://github.com/zhayujie/CowAgent/releases/tag/2.0.5) — Cow CLI、Skill Hub オープンソース化、ブラウザツール、WeCom Bot QR 接続。
> **2026.02.03:** [v2.0.0](https://github.com/zhayujie/CowAgent/releases/tag/2.0.0) — マルチステップタスク計画、長期記憶、Skill フレームワークを備えたスーパー Agent アシスタントへの全面アップグレード。
完全な履歴: [リリースノート](https://docs.cowagent.ai/ja/releases/overview)
<br/>
## エンタープライズサービス
## 🤝 コミュニティとサポート
<a href="https://link-ai.tech" target="_blank"><img width="720" src="https://cdn.link-ai.tech/image/link-ai-intro.jpg"></a>
- 🐛 [Issue を報告](https://github.com/zhayujie/CowAgent/issues) · 💬 [GitHub Discussions](https://github.com/zhayujie/CowAgent/discussions) · 📖 [FAQ](https://github.com/zhayujie/CowAgent/wiki/FAQs)
> [LinkAI](https://link-ai.tech/) は、企業や開発者向けのワンストップAIエージェントプラットフォームです。マルチモーダルLLM、ナレッジベース、Agentプラグイン、ワークフローを統合しています。主要プラットフォームへのワンクリック統合、SaaSおよびプライベートデプロイに対応しています。
WeChat の QR コードをスキャンしてオープンソースコミュニティグループに参加:
<img width="130" src="https://img-1317903499.cos.ap-guangzhou.myqcloud.com/docs/open-community.png">
<br/>
## 🔗 関連プロジェクト
- [Cow Skill Hub](https://github.com/zhayujie/cow-skill-hub): AIエージェント向けのオープンSkillマーケットプレイスCowAgent、OpenClaw、Claude Codeなどで利用可能なSkillの閲覧・検索・インストール・公開が可能。
- [bot-on-anything](https://github.com/zhayujie/bot-on-anything): 軽量で高い拡張性を持つLLMアプリケーションフレームワークSlack、Telegram、Discord、Gmailなどに対応
- [AgentMesh](https://github.com/MinimalFuture/AgentMesh): エージェントチーム協調による複雑な問題解決のためのオープンソースのマルチエージェントフレームワーク
- **[Cow Skill Hub](https://github.com/zhayujie/cow-skill-hub)** — AI エージェント向けのオープン Skill マーケットプレイスCowAgent、OpenClaw、Claude Code などに対応
- **[bot-on-anything](https://github.com/zhayujie/bot-on-anything)** — 軽量な LLM アプリケーションフレームワークSlack、Telegram、Discord、Gmail などに対応
- **[AgentMesh](https://github.com/MinimalFuture/AgentMesh)** — チーム協調による複雑な問題解決のためのオープンソースのマルチエージェントフレームワーク
## 🔎 よくある質問
<br/>
FAQ: <https://github.com/zhayujie/CowAgent/wiki/FAQs>
## 🛠️ 開発とコントリビューション
## 🛠️ コントリビューション
新しいチャネルの追加を歓迎します — [Feishu チャネル](https://github.com/zhayujie/CowAgent/blob/master/channel/feishu/feishu_channel.py) を参考にカスタムチャネルを実装できます。新しい Skill のコントリビューションも [Skill Hub](https://skills.cowagent.ai/submit) で受け付けています。
新しいチャネルの追加を歓迎します。[Feishuチャネル](https://github.com/zhayujie/CowAgent/blob/master/channel/feishu/feishu_channel.py)を参考にしてください。また、新しいSkillのコントリビューションも歓迎します。[Skill作成ドキュメント](https://docs.cowagent.ai/ja/skills/create)を参照するか、[Skill Hub](https://skills.cowagent.ai/submit)に提出してください
## ✉ お問い合わせ
PRやIssueの提出を歓迎します。🌟 Starでプロジェクトをサポートしてください。ご質問がある場合は、[FAQリスト](https://github.com/zhayujie/CowAgent/wiki/FAQs)を確認するか、[Issues](https://github.com/zhayujie/CowAgent/issues)を検索してください。
⭐ Star でプロジェクトの更新をフォローしてください。PR や Issue の提出も歓迎します
## 🌟 コントリビューター
![cow contributors](https://contrib.rocks/image?repo=zhayujie/CowAgent&max=1000)
<br/>
## 🏢 エンタープライズサービス
[**LinkAI**](https://link-ai.tech/) は企業や開発者向けのワンストップ AI Agent プラットフォームで、CowAgent にマネージドホスティングとエンタープライズグレードのサポートを提供します:
- **🚀 デプロイ不要のホスト型ランタイム** — [CowAgent オンラインアシスタント](https://link-ai.tech/cowagent/create) を 1 分以内に起動、サーバー不要
- **🧠 統合モデル & Skill マーケットプレイス** — 主要 LLM への統一アクセスと公式 Skill マーケットプレイスで CowAgent の活用範囲を拡大
- **🏢 チーム & エンタープライズ機能** — ワークスペース、ロールベースのアクセス制御、監査ログ、本番運用向けプライベートデプロイ
エンタープライズに関するお問い合わせ:**sales@simple-future.tech** または [QR コードをスキャン](https://cdn.link-ai.tech/consultant.jpg) して WeChat でお問い合わせください。
<br/>
## ⚠️ 免責事項
1. 本プロジェクトは [MIT License](/LICENSE) に基づき、技術研究と学習を目的としています。利用者は所在地の法令・規制を遵守する必要があり、本プロジェクトの利用に起因するいかなる結果についてもメンテナーは責任を負いません。
2. **コストと安全性:** Agent モードは通常のチャットよりトークン消費が大幅に多いため、品質とコストのバランスを考慮してモデルを選択してください。Agent はローカル OS にアクセスできるため、信頼できる環境にのみデプロイしてください。
3. CowAgent は純粋なオープンソースプロジェクトであり、暗号通貨の発行・参加・承認は一切行いません。
<br/>
## 📌 プロジェクト改名のお知らせ
本プロジェクトは旧名 `chatgpt-on-wechat` から、2026.04.13 に **CowAgent** へ正式に改名されました。元の GitHub URL は自動的にリダイレクトされます。既存ユーザーは `git remote set-url origin https://github.com/zhayujie/CowAgent.git` でローカルのリモートを更新できます。

View File

@@ -0,0 +1,39 @@
---
title: チャネル一覧
description: CowAgent が対応するチャネルと機能マトリクス
---
CowAgent は複数のチャットチャネルへの接続に対応しており、起動時に `channel_type` で切り替えます。Web コンソールはデフォルトで有効で、他の接続チャネルと並行して動作します。
## 機能マトリクス
下表は各チャネルが対応する受信メッセージタイプ、ボットの返信タイプ、グループチャット機能をまとめたものです。シーンに合わせて選択してください。
| チャネル | テキスト | 画像 | ファイル | 音声 | グループチャット |
| --- | :-: | :-: | :-: | :-: | :-: |
| [WeChat](/ja/channels/weixin) | ✅ | ✅ | ✅ | ✅ | |
| [Web コンソール](/ja/channels/web) | ✅ | ✅ | ✅ | ✅ | |
| [Feishu](/ja/channels/feishu) | ✅ | ✅ | ✅ | ✅ | ✅ |
| [DingTalk](/ja/channels/dingtalk) | ✅ | ✅ | ✅ | ✅ | ✅ |
| [WeCom スマートボット](/ja/channels/wecom-bot) | ✅ | ✅ | ✅ | ✅ | ✅ |
| [QQ](/ja/channels/qq) | ✅ | ✅ | ✅ | | ✅ |
| [WeCom アプリ](/ja/channels/wecom) | ✅ | ✅ | ✅ | ✅ | |
| [WeChat 公式アカウント](/ja/channels/wechatmp) | ✅ | ✅ | | ✅ | |
- **画像 / ファイル / 音声**列は対応するメッセージタイプの送受信に対応していることを示します。詳細は各チャネルのドキュメントを参照してください
- **グループチャット**列はグループメッセージを認識して応答できることを示します
<Tip>
各チャネルの音声 / 画像機能は、対応するモデルプロバイダーの設定に依存します。詳細は [モデル一覧](/ja/models) を参照してください。
</Tip>
## チャネル一覧
- [Web コンソール](/ja/channels/web) — 組み込みのブラウザ対話・管理パネル、デフォルトで有効
- [WeChat](/ja/channels/weixin) — 個人 WeChat の QR コードログイン
- [Feishu](/ja/channels/feishu) — Feishu 自作ボット
- [DingTalk](/ja/channels/dingtalk) — DingTalk 自作ボット
- [WeCom スマートボット](/ja/channels/wecom-bot) — WeCom スマートボット
- [QQ](/ja/channels/qq) — QQ 公式ボットオープンプラットフォーム
- [WeCom アプリ](/ja/channels/wecom) — WeCom 自作アプリ接続
- [WeChat 公式アカウント](/ja/channels/wechatmp) — WeChat 公式アカウント(購読アカウント / サービスアカウント)

View File

@@ -3,56 +3,65 @@ title: Web コンソール
description: Web コンソールで CowAgent を使用する
---
Web コンソールは CowAgent のデフォルトチャネルです。起動後に自動的に開始され、ブラウザを通じて Agent とチャットしたり、モデル、Skill、メモリ、チャネルなどの設定をオンラインで管理できます。
Web コンソールは CowAgent のデフォルトチャネルです。起動後に自動的に実行され、ブラウザを通じて Agent と対話できるほか、モデル、Skill、メモリ、チャネルなどの設定をオンラインで管理できます。
## 設定
```json
{
"channel_type": "web",
"web_port": 9899
"web_host": "0.0.0.0",
"web_port": 9899,
"web_password": "",
"enable_thinking": false
}
```
| パラメータ | 説明 | デフォルト値 |
| --- | --- | --- |
| `channel_type` | `web` に設定 | `web` |
| `web_host` | Web サービスのリスンアドレス。デフォルトは `127.0.0.1`(ローカルのみ)。公開アクセスが必要な場合は `0.0.0.0` に変更してパスワードを設定してください | `""` |
| `web_port` | Web サービスのリスンポート | `9899` |
| `web_password` | アクセスパスワード。空欄の場合はパスワード保護が無効。`0.0.0.0` でリスンする場合は設定を推奨 | `""` |
| `web_session_expire_days` | ログインセッションの有効日数 | `30` |
| `enable_thinking` | 深い思考モードを有効化するか | `false` |
パスワード設定後、コンソールへアクセスする際にはまずパスワード入力によるログインが必要です。ログイン状態はデフォルトで 30 日間保持され、その間はサービスを再起動しても再ログインは不要です。パスワードはコンソールの「設定」ページからオンラインで変更することもできます。
## アクセス URL
プロジェクト起動後、以下にアクセスしてください:
- ローカル: `http://localhost:9899`
- サーバー: `http://<server-ip>:9899`
- ローカル実行: `http://localhost:9899`
- サーバー実行: `http://<server-ip>:9899`
<Note>
サーバーのファイアウォールとセキュリティグループで該当ポートが許可されていることを確認してください。
</Note>
## 機能
## 機能紹介
### チャット画面
ストリーミング出力に対応しており、Agent の推論プロセスやツール呼び出しをリアルタイムで表示、Agent の意思決定を直感的に観察できます
ストリーミング出力に対応しており、Agent の思考プロセスReasoningとツール呼び出しプロセスTool Callsをリアルタイムで表示でき、Agent の意思決定をより直感的に観察できます。深い思考機能は設定またはコンソールの「Agent 設定」スイッチで制御できます。
<img width="850" src="https://cdn.link-ai.tech/doc/20260227180120.png" />
#### マルチセッション管理
チャット画面はマルチセッション管理に対応しています。すべてのセッション記録は SQLite データベースに永続的に保存されます:
チャット画面はマルチセッションSession管理に対応しています。すべてのセッション記録はデータベースに永続されます:
- **セッション一覧**:左側の履歴アイコンをクリックしてセッション一覧パネルを展開/折りたたみでき、スクロールですべての履歴セッションを読み込めます
- **AI によるタイトル生成**:新しいセッションの最初のやり取りが完了すると、自動的にモデルを呼び出して短い要約タイトルを生成します
- **新規セッション**:セッション一覧上部の「新しい会話」ボタンまたは入力エリアの `+` ボタンをクリックして新しいセッションを作成します
- **セッション一覧**:左側の履歴セッションアイコンをクリックするとセッション一覧パネルを展開/折りたたみでき、スクロールですべての履歴セッションを読み込めます
- **AI によるタイトル生成**:新しいセッションの初回対話完了後、自動的にモデルを呼び出して短いセッション要約タイトルを生成します
- **新規セッション**:セッション一覧上部の「新しい会話」ボタンまたは入力エリアの `+` ボタンをクリックして新しいセッションを作成します
- **セッション削除**:セッション項目の削除ボタンをクリックし、確認後にそのセッションとすべてのメッセージを完全に削除します
- **コンテキストクリア**:入力エリアのクリアボタンをクリックすると、現在のセッションに区切り線が挿入されます。区切り線より上のメッセージは表示されたままですが、モデルのコンテキストには含まれなくなります
- **コンテキストクリア**:入力エリアのクリアボタンをクリックすると、現在のセッションに区切り線が挿入されます。区切り線より上のメッセージは表示されたままですが、モデルのコンテキスト入力には含まれなくなります
### モデル管理
設定ファイルを手動で編集せずに、オンラインでモデル設定を管理できます:
設定ファイルを手動で編集することなく、異なるモデルプロバイダーのテキスト、画像、音声、埋め込みモデル設定をオンラインで管理できます:
<img width="850" src="https://cdn.link-ai.tech/doc/20260227173811.png" />
<img width="850" src="https://cdn.link-ai.tech/doc/20260521212949.png" />
### Skill 管理
@@ -68,18 +77,18 @@ Agent のメモリをオンラインで閲覧・管理できます:
### チャネル管理
接続中のチャネルをオンラインで管理、リアルタイムで接続・切断操作を行えます:
接続中のチャネルをオンラインで管理でき、リアルタイムで接続・切断操作に対応しています:
<img width="850" src="https://cdn.link-ai.tech/doc/20260227173331.png" />
### スケジュールタスク
スケジュールタスクをオンラインで閲覧・管理できます。一回限りのタスク、固定間隔、Cron 式に対応しています:
スケジュールタスクをオンラインで閲覧・管理できます。一回限りのタスク、固定間隔、Cron 式など複数のスケジューリング方式を可視化管理できます:
<img width="850" src="https://cdn.link-ai.tech/doc/20260227173704.png" />
### ログ
Agent のランタイムログをリアルタイム確認でき、監視やトラブルシューティングに活用できます:
Agent のランタイムログをオンラインでリアルタイム確認でき、実行状態の監視やトラブルシューティングに便利です:
<img width="850" src="https://cdn.link-ai.tech/doc/20260227173514.png" />

View File

@@ -9,7 +9,7 @@ CowAgent 2.0 は、シンプルなチャットボットから、自律的な思
CowAgent のアーキテクチャは以下のコアモジュールで構成されています:
<img src="https://cdn.link-ai.tech/doc/cow-agent-arch-en.jpg.jpg" alt="CowAgent Architecture" />
<img src="https://cdn.jsdelivr.net/gh/zhayujie/cowagent-assets@main/architecture/en/architecture.jpg" alt="CowAgent Architecture" />
| モジュール | 説明 |
| --- | --- |

View File

@@ -1,8 +1,16 @@
---
title: Claude
description: Claudeモデル設定
description: Anthropic Claude モデル設定(テキスト対話 + 画像理解)
---
Claude は Anthropic が提供するモデルで、テキスト対話と画像理解をサポートします。主流の Sonnet / Opus モデルはネイティブにビジョンをサポートしており、別途 Vision モデルを指定する必要はありません。
<Tip>
Web コンソールの「モデル管理」ページから、以下のすべての機能をワンストップで設定でき、設定ファイルを手動で編集する必要はありません。
</Tip>
## テキスト対話
```json
{
"model": "claude-sonnet-4-6",
@@ -12,6 +20,30 @@ description: Claudeモデルの設定
| パラメータ | 説明 |
| --- | --- |
| `model` | `claude-sonnet-4-6`、`claude-opus-4-7`、`claude-opus-4-6`、`claude-sonnet-4-5`、`claude-sonnet-4-0`、`claude-3-5-sonnet-latest`などから選択可能。[公式モデル一覧](https://docs.anthropic.com/en/docs/about-claude/models/overview)を参照 |
| `claude_api_key` | [Claude Console](https://console.anthropic.com/settings/keys)で作成 |
| `claude_api_base` | 任意。デフォルトは`https://api.anthropic.com/v1`。サードパーティプロキシを使用する場合に変更 |
| `model` | `claude-sonnet-4-6`、`claude-opus-4-7`、`claude-opus-4-6`、`claude-sonnet-4-5`、`claude-sonnet-4-0`、`claude-3-5-sonnet-latest` などをサポート。詳細は [公式モデル一覧](https://docs.anthropic.com/en/docs/about-claude/models/overview) を参照 |
| `claude_api_key` | [Claude コンソール](https://console.anthropic.com/settings/keys) で作成 |
| `claude_api_base` | 任意。デフォルトは `https://api.anthropic.com/v1`。サードパーティプロキシに変更可能 |
### モデル選択
| モデル | 用途 |
| --- | --- |
| `claude-sonnet-4-6` | デフォルト推奨。コストパフォーマンスと速度のバランスが良い |
| `claude-opus-4-7` | 複雑な推論や長いタスクチェーンに最適。効果は最高だがコストも高い |
| `claude-sonnet-4-5` / `claude-sonnet-4-0` | 前世代のフラッグシップ。価格はより安い |
## 画像理解
`claude_api_key` を設定すると、Agent の Vision ツールは Claude のメインモデルを使用して自動的に画像を認識します。追加設定は不要です。
Vision モデルを手動で指定したい場合は、設定ファイルで明示的に指定できます:
```json
{
"tools": {
"vision": {
"model": "claude-sonnet-4-6"
}
}
}
```

View File

@@ -1,26 +1,26 @@
---
title: カスタム
description: サードパーティAPIやローカルモデル向けのカスタムプロバイダー設定
description: カスタムベンダー設定。サードパーティ API プロキシやローカルモデル向け
---
OpenAI互換プロトコルでアクセスするモデルサービスに適用します
OpenAI 互換プロトコルで接続するサードパーティのモデルサービスや、ローカルにデプロイしたモデルに適しています。例えば
- **サードパーティAPIプロキシ**:統一APIベースで複数モデルを呼び出
- **ローカルモデル**Ollama、vLLM、LocalAIなどでローカルにデプロイされたモデル
- **プライベートデプロイ**組織内でホストされたモデルサービス
- **サードパーティ API プロキシ**:統一された API Base から複数モデルを呼び出
- **ローカルモデル**Ollama、vLLM、LocalAI などのツールでローカルにデプロイたモデル
- **プライベートデプロイ**企業内部にデプロイしたモデルサービス
<Note>
`openai` プロバイダーとの違い:カスタムプロバイダーでは `/config model` でモデルを切り替えてもプロバイダータイプは自動切り替えされず、カスタムAPIアドレスが常に保持されます。
`openai` ベンダーとの違い:カスタムベンダーを選択した場合、`/config model` でモデルを切り替えてもベンダータイプは自動切り替わらず、常にカスタムAPI アドレスを使用します。
</Note>
## 設定方法
## テキスト対話
### サードパーティAPIプロキシ
### サードパーティ API プロキシ
```json
{
"bot_type": "custom",
"model": "deepseek-v4-flash",
"model": "",
"custom_api_key": "YOUR_API_KEY",
"custom_api_base": "https://{your-proxy.com}/v1"
}
@@ -28,14 +28,14 @@ OpenAI互換プロトコルでアクセスするモデルサービスに適用
| パラメータ | 説明 |
| --- | --- |
| `bot_type` | `custom` に設定必須 |
| `model` | モデル名プロキシサービスがサポートする任意のモデル名 |
| `custom_api_key` | プロキシサービスが提供するAPIキー |
| `custom_api_base` | APIアドレス、OpenAI互換プロトコルが必要 |
| `bot_type` | `custom` に設定する必要があります |
| `model` | モデル名プロキシサービスがサポートする任意のモデル名を指定 |
| `custom_api_key` | API キー。プロキシサービスから提供されます |
| `custom_api_base` | API アドレス。プロキシサービスから提供され、OpenAI プロトコル互換である必要があります |
### ローカルモデル
ローカルモデルは通常APIキー不要で、APIベースのみ設定します:
ローカルモデルは通常 API Key が不要で、API Base のみ設定します:
```json
{
@@ -47,15 +47,15 @@ OpenAI互換プロトコルでアクセスするモデルサービスに適用
一般的なローカルデプロイツールとデフォルトアドレス:
| ツール | デフォルトAPIベース |
| ツール | デフォルト API Base |
| --- | --- |
| [Ollama](https://ollama.com) | `http://localhost:11434/v1` |
| [vLLM](https://docs.vllm.ai) | `http://localhost:8000/v1` |
| [LocalAI](https://localai.io) | `http://localhost:8080/v1` |
## モデル切り替え
### モデル切り替え
カスタムプロバイダーでモデル切り替え時に `model` のみ変更され、`bot_type` APIアドレスは変わりません
カスタムベンダーでモデル切り替える際は `model` のみ変更され、`bot_type` API アドレスは変わりません:
```
/config model qwen3.5:27b

View File

@@ -1,9 +1,11 @@
---
title: DeepSeek
description: DeepSeekモデル設定
description: DeepSeek モデル設定(テキスト対話 + 思考モード)
---
方法1公式接続推奨
DeepSeek は現在 Agent モードでデフォルト推奨されているベンダーの 1 つで、コストパフォーマンスの高いテキスト対話とタスクプランニング能力を主力としています。
## テキスト対話
```json
{
@@ -15,23 +17,23 @@ description: DeepSeekモデルの設定
| パラメータ | 説明 |
| --- | --- |
| `model` | `deepseek-v4-flash`(デフォルト)、`deepseek-v4-pro` をサポート |
| `deepseek_api_key` | [DeepSeek Platform](https://platform.deepseek.com/api_keys) で作成 |
| `deepseek_api_base` | オプション、デフォルトは `https://api.deepseek.com/v1`。サードパーティプロキシに変更可能 |
| `deepseek_api_key` | [DeepSeek プラットフォーム](https://platform.deepseek.com/api_keys) で作成 |
| `deepseek_api_base` | 任意。デフォルトは `https://api.deepseek.com/v1`。サードパーティプロキシアドレスに変更可能 |
## モデルの選び方
### モデル選択
| モデル | 適用シーン |
| モデル | 用途 |
| --- | --- |
| `deepseek-v4-flash` | デフォルト推奨高速低コスト |
| `deepseek-v4-pro` | 複雑なタスクでより強力 |
| `deepseek-v4-flash` | デフォルト推奨高速かつ低コスト |
| `deepseek-v4-pro` | より高い知能。複雑なタスクで効果が高い |
## 思考モード
V4シリーズ`deepseek-v4-flash` / `deepseek-v4-pro`)は明示的な「思考モード」をサポートします。最終回答の前に思考内容`reasoning_content`)を出力することで、回答品質を高めます。
V4 シリーズ(`deepseek-v4-flash` / `deepseek-v4-pro`)は明示的な「思考モード」をサポートしています:モデルは最終回答を出力する前に、まず思考連鎖`reasoning_content`)を出力することで、回答品質を向上させます。
### スイッチ
グローバル設定 `enable_thinking` で制御します:
グローバル設定 `enable_thinking` で制御し、Web コンソールの設定ページからも切り替えできます:
```json
{
@@ -39,12 +41,12 @@ V4シリーズ`deepseek-v4-flash` / `deepseek-v4-pro`)は明示的な「思
}
```
- `true`:すべてのチャネルで思考モードがオン。Webコンソールでは思考過程表示、IMチャネルWeChat / WeCom / DingTalk / Feishu)では表示されないものの、回答品質の向上というメリットを得られます。
- `false`:思考オフ、応答が速く、初回トークン遅延も低くなります。
- `true`:すべてのチャネルでモデルが先に思考してから回答します。Web コンソールでは思考過程表示され、IM チャネルWeChat / 企業 WeChat / DingTalk / Lark)では表示されませんが、同様により良い回答が得られます。
- `false`:思考オフにし、レスポンスが速くなり、初回トークン遅延が短くなります。
### 推論強度
思考モードでは `reasoning_effort` で推論のさを制御できます:
思考モードでは `reasoning_effort` で推論のさを制御できます:
```json
{
@@ -53,29 +55,18 @@ V4シリーズ`deepseek-v4-flash` / `deepseek-v4-pro`)は明示的な「思
}
```
| 値 | 適用シーン |
| 値 | 用途 |
| --- | --- |
| `high`(デフォルト) | 通常の Agent タスク思考の深さとレスポンス速度のバランス |
| `max` | 複雑なコーディング、長いプランニング、厳密な制約のあるタスク。より深い推論と引き換えに出力トークンとレイテンシが増加 |
| `high`(デフォルト) | 日常的な Agent タスク思考速度のバランス |
| `max` | 複雑なコーディング、長いプランニング、厳しい制約を伴うタスク。推論はより深いが、所要時間と出力トークンが増える |
`reasoning_effort` は `enable_thinking` が `true` の場合のみ有効になります。思考モードをサポートしないモデルでは自動的に無視されます。
`reasoning_effort` は `enable_thinking` が `true` の場合のみ有効です。モデルが思考モードに対応していない場合、このフィールドは自動的に無視されます。
### 注意事項
### 動作の補足
- **サンプリングパラメータ**:思考モードは `temperature`、`top_p`、`presence_penalty`、`frequency_penalty` がサーバ側で無視されますエラーにはなりません。CowAgentは自動的に送信をスキップします。
- **マルチターンのツール呼び出し**履歴にツール呼び出しが含まれる場合、DeepSeekはすべてのassistantメッセージ `reasoning_content` を返するよう要求します。CowAgentが自動でラウンドトリップ処理を行うため、セッション途中で思考スイッチを切り替えてもエラーになりません。
- **サンプリングパラメータ**:思考モードは `temperature`、`top_p`、`presence_penalty`、`frequency_penalty` がサーバ側で無視されますエラーにはなりません。CowAgent は自動的にこれらの送信をスキップします。
- **マルチターンのツール呼び出し**履歴にツール呼び出しが含まれる場合、DeepSeek はすべての assistant メッセージ `reasoning_content` を返することを要求します。CowAgent は返却ロジックを自動的に処理しており、ターンをまたいで思考スイッチを切り替えてもエラーになりません。
<Tip>
通常は `deepseek-v4-flash` を使い、難しいタスクは `deepseek-v4-pro` に切り替え、深い思考が必要なは `enable_thinking` を有効にしてください
デフォルトでは `deepseek-v4-flash` を使用します。複雑なタスクは `deepseek-v4-pro` を使用でき、深い推論が必要な場合は `enable_thinking` をオンにできます
</Tip>
方法2OpenAI互換方式
```json
{
"model": "deepseek-v4-flash",
"bot_type": "openai",
"open_ai_api_key": "YOUR_API_KEY",
"open_ai_api_base": "https://api.deepseek.com/v1"
}
```

View File

@@ -1,17 +1,66 @@
---
title: Doubao (ByteDance)
description: Doubao (火山方舟) モデル設定
title: Doubao
description: Doubao火山方舟モデル設定(テキスト / 画像理解 / 画像生成 / ベクトル)
---
Doubao火山方舟はテキスト対話、画像理解、画像生成Seedream、ベクトル機能をサポートしており、1 つの `ark_api_key` ですべての機能を有効化できます。
<Tip>
Web コンソールの「モデル管理」ページから、以下のすべての機能をワンストップで設定でき、設定ファイルを手動で編集する必要はありません。
</Tip>
## テキスト対話
```json
{
"model": "doubao-seed-2-0-code-preview-260215",
"model": "doubao-seed-2-0-pro-260215",
"ark_api_key": "YOUR_API_KEY"
}
```
| パラメータ | 説明 |
| --- | --- |
| `model` | `doubao-seed-2-0-code-preview-260215`、`doubao-seed-2-0-pro-260215`、`doubao-seed-2-0-lite-260215`などから選択可能 |
| `ark_api_key` | [火山方舟 Console](https://console.volcengine.com/ark/region:ark+cn-beijing/apikey)で作成 |
| `ark_base_url` | 任意。デフォルトは`https://ark.cn-beijing.volces.com/api/v3` |
| `model` | `doubao-seed-2-0-pro-260215`、`doubao-seed-2-0-code-preview-260215`、`doubao-seed-2-0-lite-260215` などを指定可能 |
| `ark_api_key` | [火山方舟コンソール](https://console.volcengine.com/ark/region:ark+cn-beijing/apikey) で作成 |
| `ark_base_url` | 任意。デフォルトは `https://ark.cn-beijing.volces.com/api/v3` |
## 画像理解
`ark_api_key` を設定すると、Agent の Vision ツールは自動的に `doubao-seed-2-0-pro-260215` を使用して画像を認識します。追加設定は不要です。
Vision モデルを手動で指定したい場合は:
```json
{
"tools": {
"vision": {
"model": "doubao-seed-2-0-pro-260215"
}
}
}
```
## 画像生成
```json
{
"skills": {
"image-generation": {
"model": "seedream-5.0-lite"
}
}
}
```
選択可能なモデル:`seedream-5.0-lite`、`seedream-4.5`。
## ベクトル
```json
{
"embedding_provider": "doubao",
"embedding_model": "doubao-embedding-vision-251215"
}
```
デフォルトモデルは `doubao-embedding-vision-251215`(マルチモーダル embeddingです。設定ファイルで `embedding_dimensions` から 1024 または 2048 次元を指定できます。embedding を変更した後は `/memory rebuild-index` コマンドを実行してインデックスを再構築する必要があります。

View File

@@ -1,16 +1,59 @@
---
title: Gemini
description: Google Geminiモデル設定
description: Google Gemini モデル設定(テキスト対話 + 画像理解 + 画像生成)
---
Google Gemini はテキスト対話、画像理解、画像生成Nano Banana シリーズをサポートしており、1 つの `gemini_api_key` ですべての機能を有効化できます。
<Tip>
Web コンソールの「モデル管理」ページから、以下のすべての機能をワンストップで設定でき、設定ファイルを手動で編集する必要はありません。
</Tip>
## テキスト対話
```json
{
"model": "gemini-3.1-pro-preview",
"model": "gemini-3.5-flash",
"gemini_api_key": "YOUR_API_KEY"
}
```
| パラメータ | 説明 |
| --- | --- |
| `model` | `gemini-3.1-flash-lite-preview`、`gemini-3.1-pro-preview`、`gemini-3-flash-preview`、`gemini-3-pro-preview`などから選択可能。[公式ドキュメント](https://ai.google.dev/gemini-api/docs/models)を参照 |
| `gemini_api_key` | [Google AI Studio](https://aistudio.google.com/app/apikey)で作成 |
| `model` | 推奨は `gemini-3.5-flash`。`gemini-3.1-pro-preview`、`gemini-3.1-flash-lite-preview`、`gemini-3-flash-preview`、`gemini-3-pro-preview` などもサポート。詳細は [公式ドキュメント](https://ai.google.dev/gemini-api/docs/models) を参照 |
| `gemini_api_key` | [Google AI Studio](https://aistudio.google.com/app/apikey) で作成 |
| `gemini_api_base` | 任意。デフォルトは `https://generativelanguage.googleapis.com`。サードパーティのプロキシに変更可能 |
## 画像理解
Gemini の全シリーズモデルはネイティブにビジョンをサポートしています。`gemini_api_key` を設定すると、Agent の Vision ツールは自動的にメインモデルを使用して画像を認識します。追加設定は不要です。
Vision モデルを手動で指定したい場合:
```json
{
"tools": {
"vision": {
"model": "gemini-3.1-flash-lite-preview"
}
}
}
```
## 画像生成
```json
{
"skills": {
"image-generation": {
"model": "gemini-3.1-flash-image-preview"
}
}
}
```
| モデル ID | エイリアス |
| --- | --- |
| `gemini-3.1-flash-image-preview` | Nano Banana 2 |
| `gemini-3-pro-image-preview` | Nano Banana Pro |
| `gemini-2.5-flash-image` | Nano Banana |

View File

@@ -1,8 +1,16 @@
---
title: GLM (智谱AI)
description: 智谱AI GLMモデル設定
title: Zhipu GLM
description: Zhipu AI GLM モデル設定(テキスト / 画像理解 / 音声認識 / ベクトル)
---
Zhipu AI はテキスト対話、画像理解、音声認識ASR、ベクトルEmbeddingをサポートしており、1 つの `zhipu_ai_api_key` ですべての機能を有効化できます。
<Tip>
Web コンソールの「モデル管理」ページから、以下のすべての機能をワンストップで設定でき、設定ファイルを手動で編集する必要はありません。
</Tip>
## テキスト対話
```json
{
"model": "glm-5.1",
@@ -12,16 +20,37 @@ description: 智谱AI GLMモデルの設定
| パラメータ | 説明 |
| --- | --- |
| `model` | `glm-5.1`、`glm-5-turbo`、`glm-5`、`glm-4.7`、`glm-4-plus`、`glm-4-flash`、`glm-4-air`などから選択可能。[モデルコード](https://bigmodel.cn/dev/api/normal-model/glm-4)を参照 |
| `zhipu_ai_api_key` | [智谱AI Console](https://www.bigmodel.cn/usercenter/proj-mgmt/apikeys)で作成 |
| `model` | `glm-5.1`、`glm-5-turbo`、`glm-5`、`glm-4.7`、`glm-4-plus`、`glm-4-flash`、`glm-4-air` などを指定可能。詳細は [モデルコード](https://bigmodel.cn/dev/api/normal-model/glm-4) を参照 |
| `zhipu_ai_api_key` | [Zhipu AI コンソール](https://www.bigmodel.cn/usercenter/proj-mgmt/apikeys) で作成 |
| `zhipu_ai_api_base` | 任意。デフォルトは `https://open.bigmodel.cn/api/paas/v4` |
OpenAI互換の設定もサポートしています:
## 画像理解
Zhipu の chat 系モデル(`glm-5.1`、`glm-5-turbo` など)はビジョンに対応していないため、ビジョン呼び出しは `glm-5v-turbo` に統一的にルーティングされます。`zhipu_ai_api_key` を設定すると、Agent の Vision ツールは自動的にこのモデルを使用するため、設定ファイルで明示的に指定する必要はありません。
## 音声認識
```json
{
"bot_type": "openai",
"model": "glm-5.1",
"open_ai_api_base": "https://open.bigmodel.cn/api/paas/v4",
"open_ai_api_key": "YOUR_API_KEY"
"voice_to_text": "zhipu",
"voice_to_text_model": "glm-asr-2512"
}
```
| パラメータ | 説明 |
| --- | --- |
| `voice_to_text` | `zhipu` に設定すると Zhipu ASR が有効になります |
| `voice_to_text_model` | 任意。デフォルトは `glm-asr-2512` |
認証情報は `zhipu_ai_api_key` を自動的に再利用します。音声ファイルは 25MB 未満を推奨します。サイズが大きすぎるファイルはサーバ側で拒否される可能性があります。
## ベクトル
```json
{
"embedding_provider": "zhipu",
"embedding_model": "embedding-3"
}
```
選択可能なモデル:`embedding-3`、`embedding-2`。embedding を変更した後は `/memory rebuild-index` コマンドを実行してインデックスを再構築する必要があります。

View File

@@ -1,58 +1,45 @@
---
title: モデル概要
description: CowAgentがサポートするモデルとおすすめの選択肢
description: CowAgent がサポートするモデルベンダーと機能マトリクス
---
CowAgentは国内外の主要なLLMをサポートしています。モデルインターフェースはプロジェクトの`models/`ディレクトリに実装されています。
CowAgent は国内外の主要ベンダーの大規模言語モデルをサポートしており、モデル接続の実装はプロジェクトの `models/` ディレクトリにあります。テキスト対話に加えて、一部のベンダーは画像理解、画像生成、音声認識、音声合成、ベクトルなどの機能も提供しており、Agent フローの中で必要に応じて呼び出すことができます。
<Note>
Agent モードでは、品質とコストのバランスから以下のモデルをおすすめします: deepseek-v4-flash、MiniMax-M2.7、claude-sonnet-4-6、gemini-3.1-pro-preview、glm-5.1、qwen3.6-plus、kimi-k2.6、ernie-5.1
Agent モードでは、効果とコストのバランスを考慮して以下のモデルの利用を推奨しますdeepseek-v4-flash、MiniMax-M2.7、claude-sonnet-4-6、gemini-3.5-flash、glm-5.1、qwen3.6-plus、kimi-k2.6、ernie-5.1
同時に [LinkAI](https://link-ai.tech) プラットフォームの API もサポートしており、1 つの Key で複数ベンダーを柔軟に切り替えられ、ナレッジベース、ワークフロー、プラグインなどの機能も付属しています。
</Note>
## 設定
選択したモデルに応じて、`config.json`にモデル名とAPI Keyを設定してください。各モデルは`bot_type`を`openai`に設定し、`open_ai_api_base`と`open_ai_api_key`を設定することで、OpenAI互換アクセスもサポートしています。
## モデル機能の全体像
また、[LinkAI](https://link-ai.tech)プラットフォームインターフェースを使用すると、ナレッジベース、ワークフロー、その他のAgent機能をサポートしながら、複数のモデルを柔軟に切り替えることができます。
各ベンダーが提供する機能の一覧です。「テキスト」はメインの対話モデルを指し、その他の列はそのベンダーが対応する Agent 機能を担えるかを示します。
## サポートモデル
<CardGroup cols={2}>
<Card title="DeepSeek" href="/ja/models/deepseek">
deepseek-v4-flash、deepseek-v4-pro など
</Card>
<Card title="Baidu Qianfan / ERNIE" href="/ja/models/qianfan">
ernie-5.1、ernie-5.0、ernie-4.5-turbo-128k など
</Card>
<Card title="MiniMax" href="/ja/models/minimax">
MiniMax-M2.7およびその他のシリーズモデル
</Card>
<Card title="Claude" href="/ja/models/claude">
claude-sonnet-4-6など
</Card>
<Card title="Gemini" href="/ja/models/gemini">
gemini-3.1-pro-previewなど
</Card>
<Card title="OpenAI" href="/ja/models/openai">
gpt-5.4、gpt-4.1、oシリーズなど
</Card>
<Card title="GLM (智谱AI)" href="/ja/models/glm">
glm-5.1、glm-5-turbo、glm-5およびその他のシリーズモデル
</Card>
<Card title="Qwen (通义千问)" href="/ja/models/qwen">
qwen3.6-plus、qwen3-maxなど
</Card>
<Card title="Doubao (ByteDance)" href="/ja/models/doubao">
doubao-seedシリーズモデル
</Card>
<Card title="Kimi" href="/ja/models/kimi">
kimi-k2.6、kimi-k2.5、kimi-k2など
</Card>
<Card title="LinkAI" href="/ja/models/linkai">
統合マルチモデルインターフェース + ナレッジベース
</Card>
</CardGroup>
| ベンダー | 代表モデル | テキスト | 画像理解 | 画像生成 | 音声認識 | 音声合成 | ベクトル |
| --- | --- | :-: | :-: | :-: | :-: | :-: | :-: |
| [DeepSeek](/models/deepseek) | deepseek-v4-flash / pro | ✅ | | | | | |
| [MiniMax](/models/minimax) | MiniMax-M2.7 | ✅ | ✅ | ✅ | | ✅ | |
| [Claude](/models/claude) | claude-opus-4-7 | ✅ | ✅ | | | | |
| [Gemini](/models/gemini) | gemini-3.5-flash | ✅ | ✅ | ✅ | | | |
| [OpenAI](/models/openai) | gpt-5.5、o シリーズ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| [Zhipu GLM](/models/glm) | glm-5.1、glm-5v-turbo | ✅ | ✅ | | ✅ | | ✅ |
| [Tongyi Qianwen](/models/qwen) | qwen3.7-max | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| [Doubao](/models/doubao) | doubao-seed-2.0 シリーズ | ✅ | ✅ | ✅ | | | ✅ |
| [Kimi](/models/kimi) | kimi-k2.6 | ✅ | ✅ | | | | |
| [Baidu Qianfan](/models/qianfan) | ernie-5.1 | ✅ | ✅ | | | | |
| [LinkAI](/models/linkai) | 複数ベンダー 100+ モデルを統一接続 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| [カスタム](/models/custom) | ローカルモデル / サードパーティプロキシ | ✅ | | | | | |
<Tip>
モデル名の完全なリストについては、プロジェクトの[`common/const.py`](https://github.com/zhayujie/CowAgent/blob/master/common/const.py)ファイルを参照してください
Web コンソール上では各機能(ビジョン / 画像 / 音声認識 / 音声合成 / ベクトル / Web 検索)ごとに独立してベンダーとモデルを設定でき、互いに強制的に紐付けされません
</Tip>
## 設定方法
**方法 1推奨:** [Web コンソール](/channels/web) からオンラインでモデルや各機能を管理でき、設定ファイルを手動で編集する必要はありません:
<img width="900" src="https://cdn.link-ai.tech/doc/20260521212527.png" />
**方法 2:** `config.json` を手動で編集し、選択したモデルに応じてモデル名と API Key を設定します。各モデルは OpenAI 互換方式での接続もサポートしており、`bot_type` を `openai` に設定し、`open_ai_api_base` と `open_ai_api_key` を設定すれば利用できます。

View File

@@ -1,8 +1,16 @@
---
title: Kimi (Moonshot)
description: Kimi (Moonshot) モデル設定
title: Kimi
description: KimiMoonshotモデル設定(テキスト対話 + 画像理解)
---
Kimi は Moonshot が提供するモデルで、テキスト対話と画像理解をサポートします。`kimi-k2.x` シリーズはネイティブにビジョンをサポートしています。
<Tip>
Web コンソールの「モデル管理」ページから、以下のすべての機能をワンストップで設定でき、設定ファイルを手動で編集する必要はありません。
</Tip>
## テキスト対話
```json
{
"model": "kimi-k2.6",
@@ -12,16 +20,22 @@ description: Kimi (Moonshot) モデルの設定
| パラメータ | 説明 |
| --- | --- |
| `model` | `kimi-k2.6`、`kimi-k2.5`、`kimi-k2`、`moonshot-v1-8k`、`moonshot-v1-32k`、`moonshot-v1-128k`から選択可能 |
| `moonshot_api_key` | [Moonshot Console](https://platform.moonshot.cn/console/api-keys)で作成 |
| `model` | `kimi-k2.6`、`kimi-k2.5`、`kimi-k2`、`moonshot-v1-8k`、`moonshot-v1-32k`、`moonshot-v1-128k` を指定可能 |
| `moonshot_api_key` | [Moonshot コンソール](https://platform.moonshot.cn/console/api-keys) で作成 |
| `moonshot_base_url` | 任意。デフォルトは `https://api.moonshot.cn/v1` |
OpenAI互換の設定もサポートしています:
## 画像理解
`moonshot_api_key` を設定すると、Agent の Vision ツールは自動的に `kimi-k2.6` を使用して画像を認識します。追加設定は不要です。
Vision モデルを手動で指定したい場合:
```json
{
"bot_type": "openai",
"model": "kimi-k2.6",
"open_ai_api_base": "https://api.moonshot.cn/v1",
"open_ai_api_key": "YOUR_API_KEY"
"tools": {
"vision": {
"model": "kimi-k2.6"
}
}
}
```

View File

@@ -1,9 +1,15 @@
---
title: LinkAI
description: LinkAIプラットフォームで複数モデルに統合アクセス
description: LinkAI プラットフォーム経由でテキスト、ビジョン、画像、音声、ベクトル機能を統一接続
---
[LinkAI](https://link-ai.tech)プラットフォームでは、OpenAI、Claude、Gemini、DeepSeek、MiniMax、Qwen、Kimiなどのモデルを柔軟に切り替えることができ、ナレッジベース、ワークフロー、プラグイン、その他のAgent機能をサポートしています。
1 つの `linkai_api_key` で、OpenAI、Claude、Gemini、DeepSeek、MiniMax、Qwen、Kimi、Doubao など主要ベンダーのすべての機能にアクセスできます。
<Tip>
Web コンソールの「モデル管理」ページから、以下のすべての機能をワンストップで設定でき、設定ファイルを手動で編集する必要はありません。
</Tip>
## テキスト対話
```json
{
@@ -14,8 +20,84 @@ description: LinkAIプラットフォームで複数モデルに統合アクセ
| パラメータ | 説明 |
| --- | --- |
| `use_linkai` | `true`に設定してLinkAIインターフェースを有効化 |
| `linkai_api_key` | [LinkAI Console](https://link-ai.tech/console/interface)で作成 |
| `model` | 空のままにするとAgentのデフォルトモデルを使用。プラットフォーム上で柔軟に切り替え可能。[モデル一覧](https://link-ai.tech/console/models)のすべてのモデルをサポート |
| `use_linkai` | `true` に設定すると有効になります |
| `linkai_api_key` | [コンソール](https://link-ai.tech/console/interface) で作成 |
| `model` | [モデル一覧](https://link-ai.tech/console/models) の任意のコードを指定可能 |
詳細は[APIドキュメント](https://docs.link-ai.tech/platform/api)を参照してください。
詳細は [モデルサービス](https://link-ai.tech/console/models) を参照してください。
## 画像理解
設定が完了すると、Agent の Vision ツールは自動的にゲートウェイ上のマルチモーダルモデルを呼び出します。追加設定は不要です。Vision モデルを手動で指定したい場合:
```json
{
"tools": {
"vision": {
"model": "gpt-5.4-mini"
}
}
}
```
選択可能なモデル:`gpt-4.1-mini`、`gpt-5.4-mini`、`qwen3.6-plus`、`doubao-seed-2-0-pro-260215`、`kimi-k2.6`、`claude-sonnet-4-6`、`gemini-3.1-flash-lite-preview` など。
## 画像生成
```json
{
"skills": {
"image-generation": {
"model": "gpt-image-2"
}
}
}
```
| モデル ID | エイリアス |
| --- | --- |
| `gpt-image-2` | OpenAI |
| `gemini-3.1-flash-image-preview` | Nano Banana 2 |
| `gemini-3-pro-image-preview` | Nano Banana Pro |
| `seedream-5.0-lite` | ByteDance Doubao Seedream |
## 音声認識
```json
{
"voice_to_text": "linkai"
}
```
ASR は固定で Whisper を使用します。認証情報は `linkai_api_key` を自動的に再利用します。
## 音声合成
音声合成ゲートウェイは複数の TTS エンジンをサポートしており、`text_to_voice_model` でエンジンを選択し、音色はエンジンに応じて切り替わります。
```json
{
"text_to_voice": "linkai",
"text_to_voice_model": "doubao",
"tts_voice_id": "BV001_streaming"
}
```
| `text_to_voice_model` | エンジンの説明 |
| --- | --- |
| `tts-1` | OpenAI · 多言語汎用(音色 `alloy` / `nova` / `echo` など) |
| `doubao` | ByteDance Doubao · 中国語の音色が豊富 |
| `baidu` | Baidu · 中国語のアナウンサー音色 |
エンジンによって対応する音色が異なるため、Web コンソールの「モデル管理 → 音声合成」から視覚的に選択することをおすすめします。
## ベクトル
```json
{
"embedding_provider": "linkai",
"embedding_model": "text-embedding-3-small"
}
```
デフォルトモデルは `text-embedding-3-small`OpenAI 互換です。embedding を変更した後は `/memory rebuild-index` コマンドを実行してインデックスを再構築する必要があります。

View File

@@ -1,8 +1,16 @@
---
title: MiniMax
description: MiniMaxモデル設定
description: MiniMax モデル設定(テキスト / 画像理解 / 画像生成 / 音声合成)
---
MiniMax はテキスト対話、画像理解、画像生成、音声合成をサポートしており、1 つの `minimax_api_key` ですべての機能を有効化できます。
<Tip>
Web コンソールの「モデル管理」ページから、以下のすべての機能をワンストップで設定でき、設定ファイルを手動で編集する必要はありません。
</Tip>
## テキスト対話
```json
{
"model": "MiniMax-M2.7",
@@ -12,16 +20,52 @@ description: MiniMaxモデルの設定
| パラメータ | 説明 |
| --- | --- |
| `model` | `MiniMax-M2.7`、`MiniMax-M2.5`、`MiniMax-M2.1`、`MiniMax-M2.1-lightning`、`MiniMax-M2`などから選択可能 |
| `minimax_api_key` | [MiniMax Console](https://platform.minimaxi.com/user-center/basic-information/interface-key)で作成 |
| `model` | `MiniMax-M2.7`、`MiniMax-M2.7-highspeed`、`MiniMax-M2.5`、`MiniMax-M2.1`、`MiniMax-M2.1-lightning`、`MiniMax-M2` などを指定可能 |
| `minimax_api_key` | [MiniMax コンソール](https://platform.minimaxi.com/user-center/basic-information/interface-key) で作成 |
OpenAI互換の設定もサポートしています:
## 画像理解
MiniMax の M2.x シリーズの chat モデル自体はビジョンに対応していないため、ビジョン呼び出しは `MiniMax-Text-01` に統一的にルーティングされます。`minimax_api_key` を設定すると、Agent の Vision ツールは自動的にこのモデルを使用するため、設定ファイルで明示的に指定する必要はありません。
## 画像生成
```json
{
"bot_type": "openai",
"model": "MiniMax-M2.7",
"open_ai_api_base": "https://api.minimaxi.com/v1",
"open_ai_api_key": "YOUR_API_KEY"
"skills": {
"image-generation": {
"model": "image-01"
}
}
}
```
選択可能なモデル:`image-01`。
## 音声合成
```json
{
"text_to_voice": "minimax",
"text_to_voice_model": "speech-2.8-hd",
"tts_voice_id": "female-shaonv"
}
```
| パラメータ | 説明 |
| --- | --- |
| `text_to_voice_model` | `speech-2.8-hd`(感情表現、自然な聴感)、`speech-2.8-turbo`(高速)、`speech-2.6-hd`、`speech-2.6-turbo` |
| `tts_voice_id` | 音色 ID。中国語 / 広東語 / 英語 / 日本語 / 韓国語をサポートし、合計 70 種類以上 |
よく使われる音色の例:
| 音色 ID | 説明 |
| --- | --- |
| `female-shaonv` | 中国語 · 少女(女性) |
| `female-yujie` | 中国語 · お姉さま(女性) |
| `female-tianmei` | 中国語 · 甘い女性(女性) |
| `male-qn-jingying` | 中国語 · エリート青年(男性) |
| `male-qn-badao` | 中国語 · 強気な青年(男性) |
| `Cantonese_GentleLady` | 広東語 · 優しい女声 |
| `English_Graceful_Lady` | 英語 · Graceful Lady |
完全な音色リスト(中国語 / 広東語 / 英語 / 日本語 / 韓国語の合計 70 種類以上)は [システム音色一覧](https://platform.minimaxi.com/docs/faq/system-voice-id) を参照してください。Web コンソールの「モデル管理 → 音声合成」のドロップダウンから視覚的に選択することもできます。

View File

@@ -1,11 +1,20 @@
---
title: OpenAI
description: OpenAIモデル設定
description: OpenAI モデル設定(テキスト / ビジョン / 画像 / 音声 / ベクトル)
---
OpenAI は最も広範な機能をカバーするベンダーで、テキスト対話、画像理解、画像生成、音声認識ASR、音声合成TTS、ベクトルEmbeddingの各機能を同時に担えます。1 つの `open_ai_api_key` で Agent はすべての機能を利用できます。
<Tip>
Web コンソールの「モデル管理」ページから、以下のすべての機能をワンストップで設定でき、設定ファイルを手動で編集する必要はありません。
</Tip>
## テキスト対話
```json
{
"model": "gpt-5.4",
"model": "gpt-5.5",
"open_ai_api_key": "YOUR_API_KEY",
"open_ai_api_base": "https://api.openai.com/v1"
}
@@ -13,7 +22,82 @@ description: OpenAIモデルの設定
| パラメータ | 説明 |
| --- | --- |
| `model` | OpenAI API[modelパラメータ](https://platform.openai.com/docs/models)に対応。oシリーズ、gpt-5.4、gpt-5シリーズ、gpt-4.1などをサポート。Agentモードでは`gpt-5.4`を推奨 |
| `open_ai_api_key` | [OpenAI Platform](https://platform.openai.com/api-keys)で作成 |
| `open_ai_api_base` | 任意。サードパーティプロキシを使用する場合に変更 |
| `bot_type` | 公式OpenAIモデルでは不要。Claudeなど非OpenAIモデルをプロキシ経由で使用する場合は`openai`に設定 |
| `model` | OpenAI API[model パラメータ](https://platform.openai.com/docs/models) と同じです。`gpt-5.5`、`gpt-5.4`、`gpt-5.4-mini`、`gpt-5.4-nano`、`gpt-5` シリーズ、`gpt-4.1`、o シリーズなどをサポート。Agent モードのデフォルトは `gpt-5.5`、コストパフォーマンスを重視する場合は `gpt-5.4` に変更可能 |
| `open_ai_api_key` | [OpenAI プラットフォーム](https://platform.openai.com/api-keys) で作成 |
| `open_ai_api_base` | 任意。サードパーティプロキシに接続するために変更可能 |
| `bot_type` | OpenAI 公式モデルを使用する場合は不要。互換プロトコルでベンダーモデルに接続する場合は `openai` に設定 |
## 画像理解
`gpt-5.5`、`gpt-5.4`、`gpt-4o`、`gpt-4.1` などの OpenAI モデルはネイティブにビジョンをサポートしています。`open_ai_api_key` を設定すると、Agent の Vision ツールは自動的にメインモデルを使用して画像を認識します。メインモデルがビジョンに対応していない場合や明示的に指定したい場合は、設定ファイルで指定できます:
```json
{
"tools": {
"vision": {
"model": "gpt-5.4-mini"
}
}
}
```
サポートする Vision モデル:`gpt-5.5`、`gpt-5.4`、`gpt-5.4-mini`、`gpt-5.4-nano`、`gpt-5`、`gpt-4.1`、`gpt-4.1-mini`、`gpt-4o`。
## 画像生成
設定ファイルで画像生成モデルを指定すると、Agent が画像生成スキルを呼び出す際に自動的に OpenAI にルーティングされます:
```json
{
"skills": {
"image-generation": {
"model": "gpt-image-2"
}
}
}
```
サポートする画像生成モデル:`gpt-image-2`、`gpt-image-1`。
## 音声認識
```json
{
"voice_to_text": "openai",
"voice_to_text_model": "gpt-4o-mini-transcribe"
}
```
| パラメータ | 説明 |
| --- | --- |
| `voice_to_text` | `openai` に設定すると OpenAI 音声認識が有効になります |
| `voice_to_text_model` | 任意。デフォルトは `gpt-4o-mini-transcribe`。`gpt-4o-transcribe`、`whisper-1` も指定可能 |
認証情報は `open_ai_api_key` を自動的に再利用します。
## 音声合成
```json
{
"text_to_voice": "openai",
"text_to_voice_model": "tts-1",
"tts_voice_id": "alloy"
}
```
| パラメータ | 説明 |
| --- | --- |
| `text_to_voice_model` | `tts-1`、`tts-1-hd`、`gpt-4o-mini-tts` |
| `tts_voice_id` | 音色:`alloy`、`echo`、`fable`、`onyx`、`nova`、`shimmer`、`ash`、`ballad`、`coral`、`sage`、`verse` |
## ベクトル
```json
{
"embedding_provider": "openai",
"embedding_model": "text-embedding-3-small"
}
```
選択可能なモデル:`text-embedding-3-small`、`text-embedding-3-large`、`text-embedding-ada-002`。embedding を変更した後は `/memory rebuild-index` コマンドを実行してインデックスを再構築する必要があります。

View File

@@ -1,8 +1,16 @@
---
title: Qwen (通義千問)
description: 通義千問モデル設定
title: Tongyi Qianwen Qwen
description: Tongyi Qianwen モデル設定(テキスト / 画像理解 / 画像生成 / 音声認識 / 音声合成 / ベクトル)
---
Tongyi QianwenDashScope / Bailianは国内で最も広範な機能をカバーするベンダーの 1 つで、テキスト、画像理解、画像生成、音声認識、音声合成、ベクトルの各機能を 1 つの `dashscope_api_key` で有効化できます。
<Tip>
Web コンソールの「モデル管理」ページから、以下のすべての機能をワンストップで設定でき、設定ファイルを手動で編集する必要はありません。
</Tip>
## テキスト対話
```json
{
"model": "qwen3.6-plus",
@@ -12,16 +20,93 @@ description: 通義千問モデルの設定
| パラメータ | 説明 |
| --- | --- |
| `model` | `qwen3.6-plus`、`qwen3.5-plus`、`qwen3-max`、`qwen-max`、`qwen-plus`、`qwen-turbo`、`qwq-plus`などから選択可能 |
| `dashscope_api_key` | [百炼 Console](https://bailian.console.aliyun.com/?tab=model#/api-key)で作成。[公式ドキュメント](https://bailian.console.aliyun.com/?tab=api#/api)を参照 |
| `model` | `qwen3.6-plus`、`qwen3.7-max`、`qwen3.5-plus`、`qwen3-max`、`qwen-max`、`qwen-plus`、`qwen-turbo`、`qwq-plus` などを指定可能 |
| `dashscope_api_key` | [Bailian コンソール](https://bailian.console.aliyun.com/?tab=model#/api-key) で作成。詳細は [公式ドキュメント](https://bailian.console.aliyun.com/?tab=api#/api) を参照 |
OpenAI互換の設定もサポートしています:
## 画像理解
`dashscope_api_key` を設定すると、Agent の Vision ツールは自動的に Qwen のビジョンモデルを呼び出して画像を認識します。`qwen3-max` / `qwen3.5-plus` / `qwen3.6-plus` などのモデルはそのままマルチモーダルです。メインモデルがテキスト専用(`qwen-turbo` など)の場合は、自動的に `qwen-vl-max` にフォールバックします。
Vision モデルを手動で指定したい場合:
```json
{
"bot_type": "openai",
"model": "qwen3.6-plus",
"open_ai_api_base": "https://dashscope.aliyuncs.com/compatible-mode/v1",
"open_ai_api_key": "YOUR_API_KEY"
"tools": {
"vision": {
"model": "qwen3.6-plus"
}
}
}
```
サポートするモデル:`qwen3.6-plus`、`qwen3.5-plus`、`qwen3-max`。
## 画像生成
```json
{
"skills": {
"image-generation": {
"model": "qwen-image-2.0"
}
}
}
```
選択可能なモデル:`qwen-image-2.0`、`qwen-image-2.0-pro`。
## 音声認識
```json
{
"voice_to_text": "dashscope",
"voice_to_text_model": "qwen3-asr-flash"
}
```
| パラメータ | 説明 |
| --- | --- |
| `voice_to_text` | `dashscope` に設定すると Tongyi Qianwen ASR が有効になります |
| `voice_to_text_model` | 任意。デフォルトは `qwen3-asr-flash` |
認証情報は `dashscope_api_key` を自動的に再利用します。1 ファイルあたり 10MB 未満、長さ 300 秒以内を推奨します。
## 音声合成
```json
{
"text_to_voice": "dashscope",
"text_to_voice_model": "qwen3-tts-flash",
"tts_voice_id": "Cherry"
}
```
| パラメータ | 説明 |
| --- | --- |
| `text_to_voice_model` | 任意。デフォルトは `qwen3-tts-flash`。普通話、方言、主要な外国語をカバー |
| `tts_voice_id` | 音色 ID。下記のよく使われる一覧を参照 |
よく使われる音色の例:
| 音色 ID | 説明 |
| --- | --- |
| `Cherry` | 芊悦 · 明るい女声 |
| `Serena` | 苏瑶 · 優しい女声 |
| `Ethan` | 晨煦 · 明るい男声 |
| `Chelsie` | 千雪 · 二次元少女 |
| `Dylan` | 北京語 · 晓东 |
| `Rocky` | 広東語 · 阿强 |
| `Sunny` | 四川語 · 晴儿 |
完全な音色(普通話 / 各地の方言 / バイリンガルなどは、Web コンソールの「モデル管理 → 音声合成」のドロップダウンから視覚的に選択できます。
## ベクトル
```json
{
"embedding_provider": "dashscope",
"embedding_model": "text-embedding-v4"
}
```
デフォルトモデルは `text-embedding-v4` です。embedding を変更した後は `/memory rebuild-index` コマンドを実行してインデックスを再構築する必要があります。

View File

@@ -1,27 +1,32 @@
---
title: 変更履歴
description: CowAgent バージョン履歴
description: CowAgent バージョン更新履歴
---
| バージョン | 日付 | 説明 |
| --- | --- | --- |
| [2.0.7](/ja/releases/v2.0.7) | 2026.04.22 | 画像生成スキル6プロバイダー自動ルーティング、新モデルKimi K2.6、Claude Opus 4.7、GLM 5.1)、ナレッジベースと Web コンソールの改善 |
| [2.0.6](/ja/releases/v2.0.6) | 2026.04.14 | ナレッジベース、Deep Dream 記憶蒸留、スマートコンテキスト圧縮、Web コンソールアップグレード |
| [2.0.5](/ja/releases/v2.0.5) | 2026.04.01 | Cow CLI、Skill Hub オープンソース、ブラウザツール、企業微信スキャン作成、その他改善 |
| [2.0.4](/ja/releases/v2.0.4) | 2026.03.22 | 個人WeChatチャネル追加、新モデルサポート、日本語ドキュメント、スクリプトリファクタリングおよび複数修正 |
| [2.0.2](/ja/releases/v2.0.2) | 2026.02.27 | Web Console アップグレード、マルチチャネル同時実行、セッション永続化 |
| [2.0.1](/en/releases/v2.0.1) | 2026.02.27 | 組み込み Web Search ツール、スマートコンテキスト管理、複数の修正 |
| [2.0.0](/en/releases/v2.0.0) | 2026.02.03 | AI スーパーアシスタントへの全面アップグレード |
| 1.7.6 | 2025.05.23 | Web Channel 最適化、AgentMesh プラグイン |
| [2.0.9](/ja/releases/v2.0.9) | 2026.05.22 | モデル管理機能の追加、MCP プロトコル対応、ブラウザログイン状態の永続化、新モデル追加gpt-5.5、gemini-3.5-flash、qwen3.7-max など)、デプロイ・セキュリティ強化 |
| [2.0.8](/ja/releases/v2.0.8) | 2026.05.06 | Feishu チャネル全面アップグレード(音声、ストリーミング出力と Markdown、QR コードによるワンクリック接続、DeepSeek V4 と百度モデルの追加、スケジュールタスクツールの強化 |
| [2.0.7](/ja/releases/v2.0.7) | 2026.04.22 | 画像生成スキル6 プロバイダー自動ルーティング、新モデル対応Kimi K2.6、Claude Opus 4.7、GLM 5.1、ナレッジベース強化、Web コンソール最適化 |
| [2.0.6](/ja/releases/v2.0.6) | 2026.04.14 | プロジェクト名変更、ナレッジベースシステム、Deep Dream 記憶蒸留、コンテキストの賢い圧縮、Web コンソールのマルチセッションおよび複数の最適化 |
| [2.0.5](/ja/releases/v2.0.5) | 2026.04.01 | Cow CLI、Skill Hub オープンソース化、ブラウザツール、WeCom QR コード作成、複数の最適化と修正 |
| [2.0.4](/ja/releases/v2.0.4) | 2026.03.22 | 個人 WeChat チャネル追加、新モデル対応、日本語ドキュメント、スクリプトリファクタリングおよび複数の修正 |
| [2.0.3](/ja/releases/v2.0.3) | 2026.03.18 | WeCom スマートボットおよび QQ チャネル追加、Coding Plan 対応、複数モデル追加、Web 側のファイル処理、メモリシステムアップグレード |
| [2.0.2](/ja/releases/v2.0.2) | 2026.02.27 | Web コンソールアップグレード、マルチチャネル同時実行、セッション永続化 |
| [2.0.1](/ja/releases/v2.0.1) | 2026.02.13 | Web Search ツール組み込み、スマートコンテキスト管理、複数の修正 |
| [2.0.0](/ja/releases/v2.0.0) | 2026.02.03 | スーパー Agent アシスタントへの全面アップグレード |
| 1.7.6 | 2025.05.23 | Web Channel 最適化、AgentMesh マルチエージェントプラグイン |
| 1.7.5 | 2025.04.11 | DeepSeek モデル |
| 1.7.4 | 2024.12.13 | Gemini 2.0 モデル、Web Channel |
| 1.7.3 | 2024.10.31 | 安定性の改善、データベース機能 |
| 1.7.3 | 2024.10.31 | 安定性向上、データベース機能 |
| 1.7.2 | 2024.09.26 | ワンクリックインストールスクリプト、o1 モデル |
| 1.7.0 | 2024.08.02 | 讯飞 4.0 モデル、ナレッジベース参照 |
| 1.6.9 | 2024.07.19 | gpt-4o-mini、阿里音声認識 |
| 1.6.9 | 2024.07.19 | gpt-4o-mini、アリババ音声認識 |
| 1.6.8 | 2024.07.05 | Claude 3.5、Gemini 1.5 Pro |
| 1.6.0 | 2024.04.26 | Kimi 統合、gpt-4-turbo アップグレード |
| 1.6.0 | 2024.04.26 | Kimi 接続、gpt-4-turbo アップグレード |
| 1.5.8 | 2024.03.26 | GLM-4、Claude-3、edge-tts |
| 1.5.2 | 2023.11.10 | Feishu チャネル、画像認識対話 |
| 1.5.0 | 2023.11.10 | gpt-4-turbo、dall-e-3、tts マルチモーダル |
| 1.0.0 | 2022.12.12 | プロジェクト作成、初の ChatGPT 統合 |
| 1.0.0 | 2022.12.12 | プロジェクト作成、初の ChatGPT モデル接続 |
完全な履歴は [GitHub Releases](https://github.com/zhayujie/CowAgent/releases) をご覧ください。
その他の過去バージョンは [GitHub Releases](https://github.com/zhayujie/CowAgent/releases) をご覧ください。

View File

@@ -0,0 +1,65 @@
---
title: v2.0.9
description: CowAgent 2.0.9 - モデル管理機能、MCP プロトコル対応、ブラウザログイン状態の永続化、新モデル追加とデプロイ・セキュリティ強化
---
## 🖥️ モデル管理機能の追加
Web コンソールに「モデル」ページを新設。**モデルプロバイダー × モデル機能** の軸で管理し、対話、画像、音声、ベクトル、検索の各能力を一元的に設定可能になりました:
- **プロバイダー単位の設定**:各プロバイダーの API Key / API Base はページ上部で一度だけ設定すれば、下部の各機能が自動で参照。再入力は不要
- **画像モデル**:画像理解・画像生成それぞれで独立にプロバイダーとモデルを選択可能。未指定時はメインモデルに自動で追従
- **音声モデル**音声認識ASRと音声合成TTSを独立に設定可能。Qwen・Zhipu の ASR/TTS モデルを新たに追加
- **ベクトルモデル**埋め込みEmbeddingモデルを設定可能記憶およびナレッジベース検索で利用。OpenAI、Tongyi、Doubao、Zhipu などに対応。モデル切り替え後は `/memory rebuild-index` でインデックスをオンライン再構築してください
- **検索機能**ウェブ検索機能を強化、Bocha・Baidu・Zhipu など複数プロバイダーに対応。自動モードでは Agent が複数ソースの結果を統合してより深いリサーチを実行可能
ドキュメント:[モデル概要](https://docs.cowagent.ai/ja/models)
<img width="720" alt="20260522113305" src="https://cdn.link-ai.tech/doc/20260522113305.png" />
## 🧩 MCP プロトコル対応
**MCPModel Context Protocol** プロトコルに対応。固定のツールセットから、開放的でプラグイン可能なツールエコシステムへと拡張され、MCP 互換のあらゆるサービスを Agent のツールとして直接接続できます。
- ネイティブ JSON-RPC 実装、追加依存ゼロ。`stdio` と `sse` の両伝送方式に対応
- Claude Desktop / Cursor などの主流形式の `mcpServers` 設定に互換、`~/cow/mcp.json` を優先的に読み込み
ドキュメント:[MCP ツール](https://docs.cowagent.ai/ja/tools/mcp)。Thanks [@yangluxin613](https://github.com/yangluxin613) (#2801)
## 🌐 ブラウザログイン状態の永続化
ログインが必要なサイトや反クロウル機構のあるサイトに対して、ブラウザツールが一度のログイン状態を長期的に再利用できるようになりました。さらに自前の本物の Chrome に接続することで、フィンガープリント検出も回避可能です:
- **永続化ユーザープロファイル(デフォルト)**`~/.cow/browser_profile` をブラウザのユーザーディレクトリとしてデフォルト使用、一度ログインすれば次回以降は自動で復元
- **CDP モード**`tools.browser.cdp_endpoint` を設定することで実際の Chrome ブラウザを乗っ取り、完全なブラウザ権限を享受可能
ドキュメント:[ブラウザツール](https://docs.cowagent.ai/ja/tools/browser)。Thanks [@leafmove](https://github.com/leafmove) (#2809)
## 🤖 モデル追加と最適化
- **モデル新規追加**`gpt-5.5`、`gemini-3.5-flash`、`qwen3.7-max`、`ernie-5.1`
- **モデル最適化**DeepSeek V4 が `reasoning_effort` 思考深度パラメータをサポート。MiMo などの思考モデルが OpenAI 互換プロトコル経由で接続できない問題を修正
## 🔒 デプロイとセキュリティ
- **デフォルトでローカルアクセスのみ**Web コンソールの `web_host` をデフォルトで `127.0.0.1` にバインド。サーバーデプロイ時は手動で `0.0.0.0` に変更しパスワードを設定してください。Thanks @August829、@yidaozhongqing、@YLChen-007、@icysun
- **フロントエンド資源の完全ローカル化**:サードパーティ CSS / JS をすべてローカル配信化、オフライン / イントラネット環境でもコンソールが正常に動作。Thanks [@gitlayzer](https://github.com/gitlayzer) (#2816)
## 🛠 体験改善と修正
- **TTS のチャネル拡充**Web 対話、個人 WeChat、飛書、DingTalk、WeCom スマートボットすべてが音声返信に対応。詳細は [チャネル概要](https://docs.cowagent.ai/ja/channels) を参照
- **ログパネル強化**ログレベルに応じたハイライト表示と、レベル別フィルタリングをサポート。Thanks [@yangluxin613](https://github.com/yangluxin613) (#2807)
- **Web コンソールの自動起動**:プログラム起動後に Web コンソールが自動で開きます。Thanks [@yangluxin613](https://github.com/yangluxin613) (#2804)
- **Ctrl+C のクリーン終了**:長い `KeyboardInterrupt` スタックトレースが表示されなくなりました。Thanks [@yangluxin613](https://github.com/yangluxin613) (#2806)
- **フォルダアップロード**Web 端でディレクトリアップロードに対応、Windows 向けのパス検証に適合。Thanks [@TryToMakeUsBetter](https://github.com/TryToMakeUsBetter) (#2814)
- 特定条件下でスケジュールタスクが重複実行される問題を修正。Thanks [@CNXudiandian](https://github.com/CNXudiandian) (#2820)
- タイムゾーン付きの単発スケジュールタスクが発火しない問題を修正。Thanks @AethericSpace
- 実行失敗したツール呼び出しがページ更新後に表示されない問題を修正。Thanks [@a1094174619](https://github.com/a1094174619) (#2822)
- WeCom ボットメッセージに不正な制御文字が含まれる場合に配信が失敗する問題を修正。Thanks [@Jacques-Zhao](https://github.com/Jacques-Zhao) (#2810)
## 📦 アップグレード方法
ソースコードデプロイは `cow update` でワンクリックアップグレード、または最新コードを手動で pull して再起動してください。詳細は [アップグレードガイド](https://docs.cowagent.ai/ja/guide/upgrade) を参照。
**リリース日**2026.05.22 | [Full Changelog](https://github.com/zhayujie/CowAgent/compare/2.0.8...2.0.9)

View File

@@ -1,158 +1,98 @@
---
title: image-generation - 画像生成
description: テキストから画像生成 / 画像編集 / 複数画像融合複数プロバイダーの自動ルーティングとフォールバック対応
description: テキストから画像生成 / 画像編集 / 複数画像融合に対応。複数プロバイダーの自動ルーティングとフォールバックをサポート
---
汎用の画像生成・編集スキルです。OpenAI、Gemini、SeedreamVolcengine Ark、QwenDashScope、MiniMax、LinkAI の 6 社に対応。モデルを手動で選ぶ必要はなく、固定の優先順位に従って、設定済みのプロバイダーを自動的に選択します。
汎用の画像生成・編集スキルです。OpenAI、Gemini、SeedreamVolcengine Ark、QwenDashScope、MiniMax、LinkAI の 6 つのプロバイダーに対応しています。いずれか 1 社の Key を設定すれば利用でき、複数社を設定すると自動フォールバックが有効になります。
## モデル選択
`image-generation` は「固定優先度 + 自動フォールバック」のストラテジーを採用しています。API Key を設定するだけで使えます:
1. **優先順位**: `OpenAI → Gemini → Seedream → Qwen → MiniMax → LinkAI`
2. **未設定のプロバイダーはスキップ**: API Key が設定されているプロバイダーのみが参加
3. **失敗時は自動で次へ**: 401、モデル未開通、ネットワークエラーなどの場合、次のプロバイダーを試行
4. **モデル指定時は前置**: 特定のモデル名を渡すと、そのプロバイダーが最前列に昇格
### 対応モデル
## 対応モデル
| プロバイダー | モデル / エイリアス | 特徴 |
| --- | --- | --- |
| OpenAI | `gpt-image-2`、`gpt-image-1` | 汎用テキスト→画像、高品質、`quality` パラメータ対応 |
| OpenAI | `gpt-image-2`、`gpt-image-1` | 汎用テキスト→画像、高品質、`quality` で画質制御に対応 |
| Gemini Nano Banana | `nano-banana-2`、`nano-banana-pro`、`nano-banana` | `gemini-3.1-flash`、`gemini-3-pro`、`gemini-2.5-flash` の画像バージョン |
| SeedreamVolcengine Ark | `seedream-5.0-lite`、`seedream-4.5` | ネイティブ 2K4K、最大 14 枚の参照画像融合 |
| QwenDashScope | `qwen-image-2.0`、`qwen-image-2.0-pro` | 中国語テキスト描画やテキスト・画像レイアウトに強い |
| MiniMax | `image-01` | シンプルで高速な画像生成 |
| LinkAI | 任意のモデル | 汎用プロキシ、フォールバック用 |
| SeedreamVolcengine Ark | `seedream-5.0-lite`、`seedream-4.5` | ネイティブ 2K4K、最大 14 枚の画像融合 |
| QwenDashScope | `qwen-image-2.0`、`qwen-image-2.0-pro` | 中国語のレイアウトや画像とテキストの融合に強い |
| MiniMax | `image-01` | シンプルで高速 |
| LinkAI | 任意のモデル | 統一ゲートウェイ、フォールバック用 |
<Note>
デフォルトでは Agent はモデルを選ばず、自動ルーティングを使用します。特定のモデルを使いたい場合は、会話で直接指定してください「seedream で猫を描いて」「gpt-image-2 でポスターを作って」)。下記の「カスタム設定」でデフォルトモデルを固定することもできます。
</Note>
## モデル選択
## カスタム設定
デフォルトでは「自動ルーティング + 失敗時フォールバック」で動作します:
### API Key の設定
1. `OpenAI → Gemini → Seedream → Qwen → MiniMax → LinkAI` の順に、設定済みのプロバイダーを最初に選択
2. 401、モデル未開通、ネットワークエラーなどに遭遇した場合、自動的に次のプロバイダーへ切り替え
3. ユーザーが対話内でモデルを指定した場合「seedream で猫を描いて」)、該当プロバイダーが優先候補に繰り上がります
**少なくとも 1 つ**のプロバイダーの Key が必要です。複数設定すると自動フォールバックが有効になります。設定方法は 3 通り
#### 方法 1既存のモデル Key を自動再利用
Web コンソールや `config.json` で対話モデルの Key`openai_api_key`、`gemini_api_key` など)を設定済みの場合、起動時にこれらの Key は対応する環境変数に**自動同期**されます。つまり、対話モデルが使えていれば、画像生成も同じ Key で追加設定なしに利用できます。
#### 方法 2config.json で設定
`config.json` に Key フィールドを直接記述:
特定のモデルに固定したい場合
```json
{
"openai_api_key": "sk-xxx",
"openai_api_base": "https://api.openai.com/v1",
"gemini_api_key": "AIza-xxx",
"ark_api_key": "xxx",
"dashscope_api_key": "sk-xxx",
"minimax_api_key": "xxx",
"linkai_api_key": "xxx"
}
```
変更後は再起動が必要です。各 Key には対応する `*_api_base` フィールドがあり、カスタムエンドポイントを指定できます。
#### 方法 3会話で直接設定
チャットで API Key を送信すると、Agent が `env_config` ツールで `~/cow/.env` に保存します。**再起動不要**でただちに反映されます。例:
```
OPENAI_API_KEY を sk-xxx に設定して
```
または:
```
ARK_API_KEY を xxx に設定して
```
### API Key 一覧
| 環境変数 | config.json フィールド | プロバイダー | デフォルト Base URL |
| --- | --- | --- | --- |
| `OPENAI_API_KEY` | `openai_api_key` | OpenAI | `https://api.openai.com/v1` |
| `GEMINI_API_KEY` | `gemini_api_key` | Gemini | `https://generativelanguage.googleapis.com` |
| `ARK_API_KEY` | `ark_api_key` | Volcengine ArkSeedream | `https://ark.cn-beijing.volces.com/api/v3` |
| `DASHSCOPE_API_KEY` | `dashscope_api_key` | Alibaba DashScopeQwen | `https://dashscope.aliyuncs.com` |
| `MINIMAX_API_KEY` | `minimax_api_key` | MiniMax | `https://api.minimaxi.com` |
| `LINKAI_API_KEY` | `linkai_api_key` | LinkAI | `https://api.link-ai.tech` |
### デフォルトモデルの固定
すべての画像生成を特定のプロバイダーのモデルで固定したい場合、`config.json` に以下を追加:
```json
"skills": {
"image-generation": {
"model": "seedream-5.0-lite"
"skills": {
"image-generation": {
"model": "seedream-5.0-lite"
}
}
}
```
起動時にこの設定は環境変数 `SKILL_IMAGE_GENERATION_MODEL` に自動変換され、スクリプトはこのモデルのプロバイダーを常に使用します。
## API Key の設定
<Tip>
[Web コンソール](/ja/channels/web) の「モデル管理」ページから設定するのが推奨です。設定済みの対話モデル Key は画像生成スキルでも自動的に再利用されるため、重複した設定は不要です。設定ファイルを手動編集するか、対話中に `env_config` ツールで一時的に設定することもできます。
</Tip>
認証情報はメインモデルプロバイダーの Key を統一的に再利用します:
| フィールド | 対応プロバイダー |
| --- | --- |
| `openai_api_key` | OpenAI |
| `gemini_api_key` | Gemini |
| `ark_api_key` | Volcengine ArkSeedream |
| `dashscope_api_key` | Alibaba DashScopeQwen |
| `minimax_api_key` | MiniMax |
| `linkai_api_key` | LinkAI |
## 有効化と無効化
`image-generation` は内蔵スキルで、**API Key に基づいてステータスが自動調整**されます:
スキルは API Key に応じて自動的にステータスが調整されます:
- **Key 設定済み**スキルはアクティブ — Agent は画像生成リクエストを受けると呼び出す
- **Key 未設定**:スキルはコンテキストに表示され(「設定が必要」とマーク)Agent は呼び出し失敗の代わりに Key の設定を案内す
- **Key 設定済み**Agent は画像生成リクエストを受けると直接呼び出しま
- **Key 未設定**:スキルはコンテキストに表示されますが(「設定が必要」とマーク)Agent はユーザーに Key の設定を案内しま
手動で制御する場合:
```text
/skill disable image-generation # 無効化Key があっても呼び出されない)
/skill disable image-generation # 無効化
/skill enable image-generation # 再有効化
```
ターミナルで`cow skill disable image-generation` / `cow skill enable image-generation`。
ターミナルでの等価コマンド:`cow skill disable image-generation` / `cow skill enable image-generation`。
## パラメータ
| パラメータ | 型 | 必須 | デフォルト | 説明 |
| --- | --- | --- | --- | --- |
| `prompt` | string | はい | — | 画像の説明 |
| `image_url` | string / list | いいえ | null | 編集用の入力画像。ローカルパスまたは URL。複数指定で複数画像融合 |
| `quality` | string | いいえ | auto | `low` / `medium` / `high`一部のプロバイダーのみ対応 |
| `size` | string | いいえ | auto | `512` / `1K` / `2K` / `3K` / `4K`、またはピクセル値(例: `1024x1024` |
| `aspect_ratio` | string | いいえ | null | `1:1` / `3:2` / `2:3` / `16:9` / `9:16` / `21:9`Gemini は `1:4` / `4:1` / `1:8` / `8:1` にも対応 |
| `image_url` | string / list | いいえ | null | 編集用の入力画像。ローカルパスまたは URL。リスト指定で複数画像融合 |
| `quality` | string | いいえ | auto | `low` / `medium` / `high`一部のプロバイダーのみ対応 |
| `size` | string | いいえ | auto | `512` / `1K` / `2K` / `3K` / `4K`、またはピクセル値(例`1024x1024` |
| `aspect_ratio` | string | いいえ | null | `1:1` / `3:2` / `2:3` / `16:9` / `9:16` / `21:9`Gemini は `1:4` / `4:1` / `1:8` / `8:1` にも対応 |
<Warning>
**品質が高いほど解像度が大きいほど、コストが高く、時間がかかります。**
- 日常の会話やプレビューにはデフォルト(`auto`)、または `quality=low` + `size=1K` を使用 — 約 20 秒で生成
- ポスターやユーザーが高解像度を明示的に要求した場合は `quality=high` + `size=2K/4K` — モデルによって 1〜5 分かかる場合があります
**品質が高いほど解像度が大きいほど、時間とコストが高くなります。** 日常の対話ではデフォルト(`auto`)または `quality=low` + `size=1K` で十分で、約 20 秒で生成されます。ポスター制作や明示的に高解像度が必要な場合のみ `high` + `2K/4K` を使用してください。1〜5 分かかる場合があります。
</Warning>
## 出力
成功時:
```json
{
"model": "doubao-seedream-5-0-260128",
"images": [
{"url": "/path/to/output.png"}
]
}
```
失敗時:`{ "error": "..." }`。エラー後は**直接リトライしないでください** — ほぼ確実に設定の問題ですKey の誤り、API ベース URL の不一致、モデル未開通など)。まず設定を修正してから再試行してください。
## よくある使い方
- **テキスト→画像**:説明からイラスト、ポスター、アイコン、アバター、絵コンテなどを生成
- **画像→画像**:既存の画像のスタイル変更、要素の入れ替え、装飾やテキストの追加
- **複数画像融合**:複数の参画像を 1 枚に合成(着せ替え、キャラクター集合写真など)
- **テキスト→画像**:説明からイラスト、ポスター、アイコン、アバター、絵コンテなどを生成
- **画像→画像**:既存の画像のスタイル変更、要素差し替え、装飾や文字の追加など
- **複数画像融合**:複数の参画像を 1 枚に合成(着せ替え、キャラクター集合写真など)
<Note>
- bash タイムアウトは 600 秒に設定してください。各プロバイダーの HTTP タイムアウトは 300 秒ですが、スクリプト複数のプロバイダーを順に試行する場合があります
- 入力画像は自動的に 4 MB 以・最長辺 4096 px 以に圧縮されます
- Gemini / Seedream / Qwen / MiniMax は `quality` パラメータに対応していません(渡しても無視されます)
- bash タイムアウトは 600 秒に設定することを推奨:単一プロバイダーの HTTP タイムアウトは 300 秒、スクリプト複数を順に試行する場合があります
- 入力画像は自動的に 4 MB 以・最長辺 4096 px 以に圧縮されます
- Gemini / Seedream / Qwen / MiniMax は `quality` パラメータに対応していません
- Seedream のデフォルトは 2K。`seedream-5.0-lite` は 3K まで、`seedream-4.5` は 4K まで対応
</Note>

View File

@@ -1,41 +1,57 @@
---
title: vision - 画像分析
description: 画像コンテンツ分析認識、説明、OCR など)
title: vision - 画像理解
description: 画像コンテンツ分析認識、説明、OCR など)
---
Vision API を使用してローカル画像や画像 URL を分析します。コンテンツの説明、テキスト抽出OCR、オブジェクト認識などに対応しています。
## モデル選択
Vision ツールは多段階の自動選択自動フォールバック戦略を採用しており、手動設定なしで利用可能です:
Vision ツールは多段階の自動選択 + 自動フォールバック戦略を採用しており、手動設定なしで利用できます:
1. **メインモデル** — 現在設定されているメインモデルで画像認識を実行(追加コストなし
2. **その他の設定済みモデル** — API キーが設定されている他のマルチモーダルモデルを自動検出
3. **OpenAI** — `open_ai_api_key` を使用して gpt-4.1-mini を呼び出し
4. **LinkAI** — `linkai_api_key` を使用して LinkAI ビジョンサービスを呼び出し
1. **メインモデル** — 現在設定されているメインモデルを優先的に使用して画像認識を行います(マルチモーダルモデルである必要があります
2. **その他の設定済みモデル** — API Key が設定済みのその他のマルチモーダルモデルを自動的に検出して候補とします
`use_linkai=true` の場合、LinkAI が最優先になります。
現在のプロバイダーが失敗した場合、成功するかすべて失敗するまで自動的に次のプロバイダーを試行します。
現在のプロバイダーで呼び出しに失敗した場合、成功するかすべて失敗するまで自動的に次のプロバイダーを試行します。
### 対応モデル
| ベンダー | ビジョンモデル | 説明 |
| プロバイダー | ビジョンモデル | 説明 |
| --- | --- | --- |
| OpenAI / 互換プロトコル | メインモデル | すべての OpenAI 互換マルチモーダルモデルに対応 |
| Baidu Qianfan | メインモデル | 多モーダルの主モデル(`ernie-5.1` など)は直接画像を処理。テキスト専用主モデルの場合は `ernie-4.5-turbo-vl` に自動フォールバック |
| 通義千問 (DashScope) | メインモデル | MultiModalConversation API 経由 |
| Claude | メインモデル | Anthropic ネイティブ画像形式 |
| Gemini | メインモデル | inlineData 形式 |
| 豆包 (Doubao) | メインモデル | doubao-seed-2-0 シリーズがネイティブ対応 |
| Kimi (Moonshot) | メインモデル | kimi-k2.6、kimi-k2.5 がネイティブ対応 |
| OpenAI / 互換プロトコル | メインモデルを使用 | すべての OpenAI 互換マルチモーダルモデルに対応 |
| 通義千問 (DashScope) | メインモデルを使用 | 例qwen3.6-plus など |
| Claude | メインモデルを使用 | Anthropic ネイティブ画像形式 |
| Gemini | メインモデルを使用 | inlineData 形式 |
| 豆包 (Doubao) | メインモデルを使用 | doubao-seed-2-0 シリーズがネイティブ対応 |
| Kimi (Moonshot) | メインモデルを使用 | kimi-k2.6、kimi-k2.5 がネイティブ対応 |
| 百度 Qianfan | メインモデルを使用 | デフォルトでマルチモーダルメインモデル(`ernie-5.1` など)を使用。メインモデルが非対応の場合は `ernie-4.5-turbo-vl` にフォールバック |
| 智谱 AI | glm-5v-turbo | 常にビジョン専用モデルを使用 |
| MiniMax | MiniMax-Text-01 | 常にビジョン専用モデルを使用 |
<Note>
智谱 AI と MiniMax のテキストモデルは画像理解に対応していないため、対応するビジョン専用モデルが自動的に使用されます。
智谱と MiniMax のテキストモデルは画像理解に対応していないため、常に対応するビジョン専用モデルが使用されます。手動で指定する必要はありません。
</Note>
> `use_linkai=true` の場合、デフォルトで LinkAI のマルチモーダルモデルが使用されます。
## カスタム設定
Vision で使用するモデルを指定したい場合は、`config.json` に以下のように設定できます:
```json
{
"tools": {
"vision": {
"model": "gpt-4.1"
}
}
}
```
指定したモデルが**優先的に使用**され、ツールはモデル名に応じて対応するプロバイダーへ自動ルーティングします。呼び出しに失敗した場合は、他の設定済みプロバイダーへ自動的にフォールバックします。
ほとんどの場合、設定は不要です。メインモデルがマルチモーダルに対応しているか、ビジョン対応の API Key が 1 つでも設定されていれば自動的に動作します。
## パラメータ
| パラメータ | 型 | 必須 | 説明 |
@@ -45,29 +61,15 @@ Vision ツールは多段階の自動選択+自動フォールバック戦略
対応画像形式jpg、jpeg、png、gif、webp
## カスタム設定
Vision ツールで使用するモデルを指定するには、`config.json` に以下を追加します:
```json
{
"tools": {
"vision": {
"model": "ernie-4.5-turbo-vl"
}
}
}
```
ほとんどの場合、設定は不要です。メインモデルがマルチモーダルに対応しているか、ビジョン対応の API キーが設定されていれば自動的に動作します。
## ユースケース
- 画像コンテンツの説明
- 画像からのテキスト抽出OCR
- オブジェクト、色、シーンの識
- スクリーンショットやスキャン文書の分析
- オブジェクト、色、シーンの
- スクリーンショットやスキャン文書などの分析
<Note>
1MB を超える画像は自動的に圧縮されます(最大辺 1536px。すべての画像(リモート URL を含む)は base64 に変換して送信され、すべてのモデルバックエンドとの互換性を確保します。
1MB を超える画像は自動的に圧縮してアップロードされます。すべての画像(リモート URL を含む)は base64 に統一変換して送信され、すべてのモデルバックエンドとの互換性を確保します。
</Note>

View File

@@ -1,32 +1,51 @@
---
title: web_search - Web検索
description: インターネットからリアルタイム情報を検索
title: web_search - Web 検索
description: インターネットからリアルタイム情報を検索。複数の検索プロバイダーに対応
---
インターネットからリアルタイム情報、ニュース、リサーチなどを検索します。2つの検索バックエンドに対応し、自動フォールバック機能を備えています。
インターネットからリアルタイム情報、ニュース、リサーチなどを検索します。Bocha、百度 Qianfan、智谱Zhipu、LinkAI の 4 つのバックエンドに対応しており、いずれか 1 社を設定すれば利用可能です。
## 依存関係
<Tip>
[Web コンソール](/ja/channels/web) の「モデル管理 → 検索」パネルから、プロバイダーと戦略を可視化して設定するのが推奨です。設定ファイルを手動で編集する必要はありません。
</Tip>
少なくとも1つの検索APIキーが必要です`env_config` Toolまたはワークスペースの `.env` ファイルで設定):
## プロバイダー
| バックエンド | 環境変数 | 優先度 | 取得方法 |
| --- | --- | --- | --- |
| Bocha Search | `BOCHA_API_KEY` | プライマリ | [Bocha Open Platform](https://open.bochaai.com/) |
| LinkAI Search | `LINKAI_API_KEY` | フォールバック | [LinkAI Console](https://link-ai.tech/console/interface) |
| プロバイダー | 認証情報 | 申請窓口 |
| --- | --- | --- |
| Bocha | `tools.web_search.bocha_api_key` | [Bocha Open Platform](https://open.bochaai.com/) |
| 百度 Qianfan | `qianfan_api_key` を再利用 | [Qianfan コンソール](https://cloud.baidu.com/doc/qianfan/s/2mh4su4uy) |
| 智谱 Zhipu | `zhipu_ai_api_key` を再利用 | [Zhipu Open Platform](https://docs.bigmodel.cn/cn/guide/tools/web-search) |
| LinkAI | `linkai_api_key` を再利用 | [LinkAI コンソール](https://link-ai.tech/console/interface) |
## パラメータ
Bocha のみ独立した `bocha_api_key` が必要ですが、他の 3 社は対応するモデルの API Key をそのまま再利用するため、モデルを設定すれば検索機能も同時に利用可能になります。
## ルーティング戦略
```json
{
"tools": {
"web_search": {
"strategy": "auto",
"provider": ""
}
}
}
```
- `auto`デフォルトAgent が設定済みのプロバイダーから自動的に選択し、1 回のタスク内で複数回呼び出し、異なるプロバイダーを切り替えてより包括的な結果を取得できます。未指定の場合は `bocha → qianfan → zhipu → linkai` の順でフォールバックします。
- `fixed``provider` で指定したプロバイダーに固定。該当プロバイダーの認証情報が欠けている場合は自動的に auto の順序にフォールバックします。
## ツールパラメータ
| パラメータ | 型 | 必須 | 説明 |
| --- | --- | --- | --- |
| `query` | string | はい | 検索キーワード |
| `count` | integer | いいえ | 結果1-50、デフォルト10 |
| `freshness` | string | いいえ | 期間指定:`noLimit`、`oneDay`、`oneWeek`、`oneMonth`、`oneYear`、または `2025-01-01..2025-02-01` のような日付範囲 |
| `summary` | boolean | いいえ | ページ要約を返すデフォルトfalse |
## ユースケース
ユーザーが最新情報について質問したり、事実確認やリアルタイムデータが必要な場合、AgentはこのToolを自動的に呼び出します。
| `count` | integer | いいえ | 返却する結果数150、デフォルト 10 |
| `freshness` | string | いいえ | 期間指定:`noLimit`(デフォルト)、`oneDay`、`oneWeek`、`oneMonth`、`oneYear`、または `2025-01-01..2025-02-01` のような日付範囲 |
| `summary` | boolean | いいえ | ページ要約を返す(デフォルト false |
| `provider` | string | いいえ | `auto` 戦略で複数プロバイダーを設定している場合に表示。単回のプロバイダー切り替えに使用 |
<Note>
検索APIキーが設定されていない場合、このToolは読み込まれません。
4 社の認証情報がいずれも未設定の場合、このツールは Agent に登録されません。
</Note>

View File

@@ -5,12 +5,6 @@ description: CowAgent 支持的模型厂商及能力矩阵
CowAgent 支持国内外主流厂商的大语言模型,模型接口实现在项目的 `models/` 目录下。除文本对话外,部分厂商还提供视觉理解、图像生成、语音识别、语音合成、向量等能力,可在 Agent 流程中按需调用。
<Note>
Agent 模式下推荐使用以下模型可根据效果及成本综合选择deepseek-v4-flash、MiniMax-M2.7、claude-sonnet-4-6、gemini-3.5-flash、glm-5.1、qwen3.6-plus、kimi-k2.6、ernie-5.1。
同时支持使用 [LinkAI](https://link-ai.tech) 平台接口,一个 Key 即可灵活切换多家厂商,并附带知识库、工作流、插件等能力。
</Note>
## 模型能力总览

View File

@@ -5,7 +5,7 @@ description: CowAgent 版本更新历史
| 版本 | 日期 | 说明 |
| --- | --- | --- |
| [2.0.9](/releases/v2.0.9) | 2026.05.21 | MCP 工具生态接入、模型管理页重构(厂商凭据共享 + 多能力统一调度)、语音系统升级、浏览器持久登录 |
| [2.0.9](/releases/v2.0.9) | 2026.05.22 | 新增模型管理、MCP 协议支持、浏览器登录态持久化、新模型接入gpt-5.5、gemini-3.5-flash、qwen3.7-max 等)、部署安全加固 |
| [2.0.8](/releases/v2.0.8) | 2026.05.06 | 飞书渠道全面升级语音、流式输出和Markdown、扫码一键接入、DeepSeek V4和百度模型新增、定时任务工具增强 |
| [2.0.7](/releases/v2.0.7) | 2026.04.22 | 图像生成技能六厂商自动路由、新模型支持Kimi K2.6、Claude Opus 4.7、GLM 5.1、知识库增强、Web 控制台优化 |
| [2.0.6](/releases/v2.0.6) | 2026.04.14 | 项目更名、知识库系统、梦境记忆蒸馏、上下文智能压缩、Web 控制台多会话及多项优化 |

View File

@@ -1,92 +1,65 @@
---
title: v2.0.9
description: CowAgent 2.0.9 - MCP 工具生态接入、模型管理页重构、语音系统升级、浏览器持久登录
description: CowAgent 2.0.9 - 新增模型管理、MCP 协议支持、浏览器登录态持久化、新模型接入
---
## 🧩 MCP 工具生态接入
## 🖥️ 新增模型管理
新增 **MCPModel Context Protocol** 工具集成CowAgent 从固定工具集扩展为开放可插拔的工具生态。任何兼容 MCP 协议的服务高德地图、Chrome DevTools、Filesystem、Playwright 等)都可作为工具直接接入 Agent。
Web 控制台新增「模型」页面,按 **模型厂商 + 模型能力** 进行管理,支持对话、图像、语音、向量模型和搜索能力的配置:
- **零额外依赖**:原生 JSON-RPC 实现,同时支持 `stdio`(本地进程)和 `sse`(远程 URL两种传输
- **兼容主流配置**:兼容 Claude Desktop / Cursor 风格的 `mcpServers` 配置,优先读取 `~/cow/mcp.json`,未配置则回退 `config.json`
- **异步启动**MCP 服务在后台线程启动,不阻塞 Agent 初始化;单个服务失败不影响整体
- **多厂商配置**:所有厂商的 API Key / API Base 在顶部统一维护,下方所有能力立即生效,无需重复填写
- **图像模型**:图像理解与图像生成均可独立选择厂商和模型,未指定时跟随主模型自动选择
- **语音模型**:语音识别和合成可独立配置,新增千问、智谱 ASR/TTS 模型
- **向量模型**:支持配置 Embedding 模型(用于记忆及知识库检索),新增支持 OpenAI、通义、豆包、智谱等切换模型后需执行 `/memory rebuild-index` 在线重建索引
- **搜索能力**:联网搜索能力升级,支持博查、百度、智谱等多个厂商,自动模式下 Agent 可综合多来源搜索结果进行深度研究
相关文档:[MCP 工具](https://docs.cowagent.ai/tools/mcp) · 社区贡献 #2801 Thanks @yangluxin613
相关文档:[模型概览](https://docs.cowagent.ai/models)
## 🖥️ 模型管理页面重构
<img width="720" alt="20260522113305" src="https://cdn.link-ai.tech/doc/20260522113305.png" />
「模型」页面整体重新设计,从原来按 LLM 厂商堆叠的列表,重构为 **厂商凭据 + 能力调度** 两层结构:一处配置厂商凭据,对话、图像、语音、向量、搜索等多个能力共享。
- **厂商凭据集中管理**所有支持厂商OpenAI / Claude / Gemini / DeepSeek / Qwen / 豆包 / Kimi / 智谱 / MiniMax / 千帆 / LinkAI / Custom 等)的 API Key / API Base 在顶部统一维护,编辑后下方所有能力立即生效
- **能力卡片**:按主模型、图像理解、图像生成、语音识别、语音合成、向量、联网搜索分卡,每个能力可独立选择厂商和模型,未配置时自动跟随主模型或按默认顺序回退
## 🧩 MCP 协议支持
### 多厂商联网搜索
支持 **MCPModel Context Protocol** 协议,从固定工具集扩展为开放可插拔的工具生态,任何兼容 MCP 协议的服务均可作为工具直接接入 Agent。
联网搜索升级为多厂商架构,**输出格式统一**
- 原生 JSON-RPC 实现,零额外依赖,同时支持 `stdio` 和 `sse` 两种传输
- 兼容 Claude Desktop / Cursor 等主流风格的 `mcpServers` 配置,优先读取 `~/cow/mcp.json`
- 四家可选博查bocha、百度千帆qianfan、智谱zhipu、LinkAI
- 两种调度策略:`auto`(按 bocha > qianfan > zhipu > linkai 顺序自动选第一个已配置的厂商)/ `fixed`(固定指定厂商)
- 配置 ≥2 家且为 `auto` 时Agent 可在单次调用中临时指定 `provider` 切换搜索源
相关文档:[MCP 工具](https://docs.cowagent.ai/tools/mcp)。Thanks @yangluxin613 (#2801)
### 向量厂商热切换
## 🌐 浏览器登录态持久化
向量Embedding支持多厂商告别对 OpenAI 的单一依赖
针对需要登录、有反爬机制的网站,浏览器工具支持登录一次后长期复用登录态,并允许接入用户自己的真实 Chrome 以通过指纹检测
- 原生支持 `openai` / `dashscope` / `doubao` / `zhipu` / `linkai`
- **在线重建索引**:切换厂商后执行 `/memory rebuild-index`,无需重启、不会中断当前对话
- 梦境日记默认排除在向量索引之外,避免反复出现在检索结果中干扰对话
- **持久化用户配置(默认)**:默认使用 `~/.cow/browser_profile` 作为浏览器用户目录,登录一次后下次自动复用登录态
- **CDP 模式**:通过 `tools.browser.cdp_endpoint` 接管真实 Chrome 浏览器,享有完整浏览器权限
## 🎙️ 语音系统升级
相关文档:[浏览器工具](https://docs.cowagent.ai/tools/browser)。Thanks @leafmove (#2809)
- **TTS 适配更多通道**个人微信ilink、钉钉、企微智能机器人现已原生支持语音回复开关沿用 `always_reply_voice` / `voice_reply_voice`;触发 TTS 时先发文本气泡再发语音消息,方便对照阅读
- **新增 ASR 厂商**百炼DashScope、智谱
- **TTS 多厂商重构**MiniMax / LinkAI / DashScope / 智谱 TTS 在流式合成、长文本切分、错误回退上更稳
- **网页麦克风输入**Web 控制台聊天框新增麦克风按钮,可直接录音发送,自动走 ASR 转文本
## 🤖 模型新增与优化
## 🌐 浏览器工具
浏览器工具支持三种启动模式,告别"每次开会话都得重新登录"
- **持久化用户配置(默认)**:复用 `~/.cow/browser_profile`,登录一次后下次自动复用登录态
- **CDP 模式**:通过 `cdp_endpoint` 附加到手动启动的真实 Chrome享有完整指纹适合反爬严格的站点
- **Fresh 模式**:每次清空环境,适合做隔离任务
此外浏览器被用户中途关闭后下次调用会自动重新拉起CDP 模式下不会误杀用户的 Chrome 进程。相关文档:[浏览器工具](https://docs.cowagent.ai/tools/browser) #2809
## 🤖 新模型与模型增强
- **百度 ERNIE 5.1**:新增 `ernie-5.1` 模型
- **DeepSeek V4 reasoning_effort**DeepSeek V4 系列支持 `reasoning_effort` 配置思考深度
- **OpenRouter / Vercel AI Gateway 归因**:调用这两个平台时自动注入归因 Header平台可正确识别 CowAgent 用量
- 修复 MiMo 等思考模型在多轮对话中 `reasoning_content` 丢失的问题
## 🚀 启动与运行体验
来自社区的多项体验改进 Thanks @yangluxin613
- **自动选端口 + 自动开浏览器**:默认端口被占用时自动切换,启动成功后默认打开控制台
- **Ctrl+C 干净退出**:不再打印一长串堆栈
- **日志面板**:差异化级别配色、多行日志继承级别、新增级别筛选 Checkbox
- **模型新增**`gpt-5.5`、`gemini-3.5-flash`、`qwen3.7-max`、`ernie-5.1`
- **模型优化**DeepSeek V4 支持 `reasoning_effort` 思考深度参数;修复 MiMo 等思考模型通过 OpenAI 兼容协议接入的问题
## 🔒 部署与安全
- **默认本机访问**Web 控制台 `web_host` 默认 `127.0.0.1`避免无密码情况下被外网直接访问;显式 `0.0.0.0` 且未设密码时给出提示
- **前端资源完全本地化**:第三方 CSS / JS 全部本地分发,离线 / 内网环境也能正常加载控制台 #2816 Thanks @TryToMakeUsBetter
- **支持文件夹上传**:上传区支持整目录一次性上传,路径校验适配 Windows #2815 Thanks @TryToMakeUsBetter
- **默认本机访问**Web 控制台 `web_host` 配置默认绑定 `127.0.0.1`服务器部署时可手动设置为 `0.0.0.0` 并设置密码。Thanks @August829、@yidaozhongqing、@YLChen-007、@icysun
- **前端资源完全本地化**:第三方 CSS / JS 全部本地分发,离线 / 内网环境也能正常加载控制台Thanks @gitlayzer (#2816)
## 🛠 其他改进与修复
## 🛠 体验优化与修复
- **定时任务防重复执行**:调度器初始化做幂等处理
- **工具失败状态持久化**:刷新页面或重载历史时失败的工具调用正确显示失败状态 #2822 Thanks @a1094174619
- **企微机器人非法字符**:修复消息中包含非法控制字符导致投递失败的问题 #2810 Thanks @Jacques-Zhao
- **飞书文件消息**:飞书通道支持文件消息接收
- **工具配置合并**:修复用户自定义工具配置(如 `tools.browser`)被工作区默认值整体覆盖的问题,现按字段合并
- 修复单文件上传偶发 TypeError、切换语言后 JS 动态视图未重渲染等问题
- **TTS 适配更多通道**Web对话、个人微信、飞书、钉钉、企微智能机器人均已支持回复语音详情查看 [通道概览](https://docs.cowagent.ai/channels)
- **日志面板增强**根据日志等级差异化高亮展示、支持根据等级筛选。Thanks @yangluxin613 (#2807)
- **Web 控制台自动启动**:程序启动后自动打开 Web 控制台。Thanks @yangluxin613 (#2804)
- **Ctrl+C 干净退出**:不再打印一长串 `KeyboardInterrupt` 堆栈。Thanks @yangluxin613 (#2806)
- **文件夹上传**Web 端支持目录上传,路径校验适配 Windows。Thanks @TryToMakeUsBetter (#2814)
- 修复定时任务在某些情况下重复执行的问题。Thanks @CNXudiandian (#2820)
- 修复定时任务带时区时单次任务不触发的问题。Thanks @AethericSpace
- 修复执行失败的工具调用在页面刷新后不显示的问题。Thanks @a1094174619 (#2822)
- 修复企微机器人消息中包含非法控制字符导致投递失败的问题。Thanks @Jacques-Zhao (#2810)
## 📦 升级方式
源码部署可执行 `cow update` 或 `./run.sh update` 一键升级,或手动拉取代码后重启。详见 [更新升级文档](https://docs.cowagent.ai/guide/upgrade)。
源码部署可执行 `cow update` 一键升级,或手动拉取代码后重启。详见 [更新升级文档](https://docs.cowagent.ai/guide/upgrade)。
> ⚠️ 切换向量厂商后,建议执行一次 `/memory rebuild-index`,让历史记忆按新的向量维度重新入库。
**发布日期**2026.05.21 | [Full Changelog](https://github.com/zhayujie/CowAgent/compare/2.0.8...2.0.9)
**发布日期**2026.05.22 | [Full Changelog](https://github.com/zhayujie/CowAgent/compare/2.0.8...2.0.9)

262
docs/zh/README.md Normal file
View File

@@ -0,0 +1,262 @@
<p align="center"><img src= "https://github.com/user-attachments/assets/eca9a9ec-8534-4615-9e0f-96c5ac1d10a3" alt="CowAgent" width="420" /></p>
<p align="center">
<a href="https://github.com/zhayujie/CowAgent/releases/latest"><img src="https://img.shields.io/github/v/release/zhayujie/CowAgent" alt="Latest release"></a>
<a href="https://github.com/zhayujie/CowAgent/blob/master/LICENSE"><img src="https://img.shields.io/github/license/zhayujie/CowAgent" alt="License: MIT"></a>
<a href="https://github.com/zhayujie/CowAgent"><img src="https://img.shields.io/github/stars/zhayujie/CowAgent?style=flat-square" alt="Stars"></a> <br/>
[<a href="../../README.md">English</a>] | [中文] | [<a href="../ja/README.md">日本語</a>]
</p>
**CowAgent** 是一个开源的超级 AI 助理,能够主动思考和规划任务、操作计算机和外部资源、创造和执行 Skills、构建知识库与长期记忆与你一同成长是 Agent Harness 工程的最佳实践之一。
CowAgent 轻量、易部署、可扩展自由接入主流大模型覆盖微信、飞书、钉钉、企微、QQ、网页等多渠道7×24 运行于个人电脑或服务器中。
<p align="center">
<a href="https://cowagent.ai/">🌐 官网</a> &nbsp;·&nbsp;
<a href="https://docs.cowagent.ai/">📖 文档中心</a> &nbsp;·&nbsp;
<a href="https://docs.cowagent.ai/guide/quick-start">🚀 快速开始</a> &nbsp;·&nbsp;
<a href="https://skills.cowagent.ai/">🧩 技能广场</a> &nbsp;·&nbsp;
<a href="https://link-ai.tech/cowagent/create">☁️ 在线体验</a>
</p>
<br/>
## 🌟 核心能力
| 能力 | 说明 |
| :--- | :--- |
| 🤖 [自主任务规划](https://docs.cowagent.ai/intro/architecture) | 理解复杂任务并自主分解执行,循环调用工具直到完成目标 |
| 🧠 [长期记忆](https://docs.cowagent.ai/memory) | 三层记忆架构(上下文 → 天级 → 核心),梦境蒸馏自动整理,支持关键词与向量混合检索 |
| 📚 [个人知识库](https://docs.cowagent.ai/knowledge) | 自动整理结构化知识为 Markdown Wiki构建持续增长的知识图谱可视化浏览 |
| 🧩 [技能系统](https://docs.cowagent.ai/skills) | 从 [Skill Hub](https://skills.cowagent.ai/)、GitHub、ClawHub 等一键安装;也可通过对话创造自定义技能 |
| 🔧 [工具系统](https://docs.cowagent.ai/tools) | 内置文件读写、终端、浏览器、定时任务、记忆检索、联网搜索等 10+ 工具,支持 MCP 协议 |
| 💬 [多渠道接入](https://docs.cowagent.ai/channels) | 一个 Agent 同时接入 Web、微信、飞书、钉钉、企微、QQ、公众号 等多个渠道 |
| 🎨 多模态消息 | 文本、图片、语音、文件全消息类型支持,覆盖识别、生成、收发 |
| ⚙️ [多模型自由切换](https://docs.cowagent.ai/models) | DeepSeek、Claude、Gemini、GPT、GLM、Qwen、Kimi、MiniMax、Doubao 等主流厂商,配置一行切换 |
| 📦 [开箱即用](https://docs.cowagent.ai/guide/quick-start) | 一键脚本安装Web 控制台统一管理本地、Docker、服务器多种部署方式 |
<br/>
## 🏗️ 架构总览
<img src="https://cdn.jsdelivr.net/gh/zhayujie/cowagent-assets@main/architecture/zh/architecture.jpg" alt="CowAgent Architecture" width="750"/>
CowAgent 是一个完整的 **Agent Harness**:消息从各类**通道**进入,**Agent Core** 结合记忆、知识库与可用工具/技能进行任务规划与决策,调用**模型**生成结果,再回传至原通道。各模块解耦清晰,按需扩展。
详见 [项目架构](https://docs.cowagent.ai/intro/architecture)。
<br/>
## 🚀 快速开始
项目提供一键安装脚本,自动完成依赖安装、配置和启动:
**Linux / macOS**
```bash
bash <(curl -fsSL https://cdn.link-ai.tech/code/cow/run.sh)
```
**WindowsPowerShell**
```powershell
irm https://cdn.link-ai.tech/code/cow/run.ps1 | iex
```
**Docker**
```bash
curl -O https://cdn.link-ai.tech/code/cow/docker-compose.yml
docker compose up -d
```
启动成功后访问 `http://localhost:9899` 进入 **Web 控制台**,在控制台内即可完成模型配置、渠道接入、技能安装等全部操作。
> 📖 详细安装指南:[一键运行脚本](https://docs.cowagent.ai/guide/quick-start) · [手动源码安装](https://docs.cowagent.ai/guide/manual-install) · [升级](https://docs.cowagent.ai/guide/upgrade)
安装后可使用 `cow` [CLI 命令](https://docs.cowagent.ai/cli) 管理服务:
```bash
cow start | stop | restart # 服务管理
cow status | logs # 状态和日志
cow update # 拉取最新代码并重启
cow skill install <名称> # 安装技能
cow install-browser # 安装浏览器工具
```
<br/>
## 🤖 模型支持
CowAgent 支持国内外主流厂商的大语言模型。**文本对话、图像理解、图像生成、语音识别/合成、向量** 等能力均可独立配置厂商。
| 厂商 | 代表模型 | 文本 | 图像理解 | 图像生成 | 语音识别 | 语音合成 | 向量 |
| --- | --- | :-: | :-: | :-: | :-: | :-: | :-: |
| [DeepSeek](https://docs.cowagent.ai/models/deepseek) | deepseek-v4-flash / pro | ✅ | | | | | |
| [MiniMax](https://docs.cowagent.ai/models/minimax) | MiniMax-M2.7 | ✅ | ✅ | ✅ | | ✅ | |
| [Claude](https://docs.cowagent.ai/models/claude) | claude-opus-4-7 | ✅ | ✅ | | | | |
| [Gemini](https://docs.cowagent.ai/models/gemini) | gemini-3.5-flash | ✅ | ✅ | ✅ | | | |
| [OpenAI](https://docs.cowagent.ai/models/openai) | gpt-5.5、o 系列 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| [智谱 GLM](https://docs.cowagent.ai/models/glm) | glm-5.1、glm-5v-turbo | ✅ | ✅ | | ✅ | | ✅ |
| [通义千问](https://docs.cowagent.ai/models/qwen) | qwen3.7-max | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| [豆包 Doubao](https://docs.cowagent.ai/models/doubao) | doubao-seed-2.0 系列 | ✅ | ✅ | ✅ | | | ✅ |
| [Kimi](https://docs.cowagent.ai/models/kimi) | kimi-k2.6 | ✅ | ✅ | | | | |
| [百度千帆](https://docs.cowagent.ai/models/qianfan) | ernie-5.1 | ✅ | ✅ | | | | |
| [LinkAI](https://docs.cowagent.ai/models/linkai) | 100+ 模型统一接入 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| [自定义](https://docs.cowagent.ai/models/custom) | 本地模型 / 三方代理 | ✅ | | | | | |
> 推荐通过 Web 控制台在线配置,无需手动编辑文件。手动配置请参考各厂商文档,详见 [模型概览](https://docs.cowagent.ai/models)。
<br/>
## 💬 通道接入
一个 Agent 实例可同时接入多个渠道,启动时通过 `channel_type` 切换或并行运行。
| 通道 | 文本 | 图片 | 文件 | 语音 | 群聊 |
| --- | :-: | :-: | :-: | :-: | :-: |
| [Web 控制台](https://docs.cowagent.ai/channels/web)(默认) | ✅ | ✅ | ✅ | ✅ | |
| [微信](https://docs.cowagent.ai/channels/weixin) | ✅ | ✅ | ✅ | ✅ | |
| [飞书](https://docs.cowagent.ai/channels/feishu) | ✅ | ✅ | ✅ | ✅ | ✅ |
| [钉钉](https://docs.cowagent.ai/channels/dingtalk) | ✅ | ✅ | ✅ | ✅ | ✅ |
| [企微智能机器人](https://docs.cowagent.ai/channels/wecom-bot) | ✅ | ✅ | ✅ | ✅ | ✅ |
| [QQ](https://docs.cowagent.ai/channels/qq) | ✅ | ✅ | ✅ | | ✅ |
| [企业微信应用](https://docs.cowagent.ai/channels/wecom) | ✅ | ✅ | ✅ | ✅ | |
| [微信公众号](https://docs.cowagent.ai/channels/wechatmp) | ✅ | ✅ | | ✅ | |
> 飞书、企微智能机器人支持在 Web 控制台内**扫码一键接入**,无需公网 IP。详见 [通道概览](https://docs.cowagent.ai/channels)。
<img src="https://cdn.jsdelivr.net/gh/zhayujie/cowagent-assets@main/screenshots/zh/web-console-chat.png" alt="CowAgent Web 控制台" width="800"/>
*Web 控制台是默认通道,也是统一的 Agent 配置和管理入口*
<br/>
## 🧠 记忆与知识库
**长期记忆**采用三层架构:对话上下文(短期)→ 天级记忆(中期)→ MEMORY.md长期。每日自动执行**梦境蒸馏Deep Dream**,将分散记忆整合为精炼的长期记忆并生成叙事日记。详见 [长期记忆](https://docs.cowagent.ai/memory) · [梦境蒸馏](https://docs.cowagent.ai/memory/deep-dream)。
**个人知识库** 与按时间记录的记忆不同,以**主题为维度**组织结构化知识。Agent 在对话中自动整理有价值信息维护交叉引用与索引Web 控制台可可视化浏览知识图谱。详见 [个人知识库](https://docs.cowagent.ai/knowledge)。
<table>
<tr>
<td width="50%">
<img src="https://cdn.jsdelivr.net/gh/zhayujie/cowagent-assets@main/screenshots/zh/web-console-memory.png" alt="长期记忆" />
<p align="center"><em>长期记忆 · 三层记忆 + 梦境蒸馏</em></p>
</td>
<td width="50%">
<img src="https://cdn.jsdelivr.net/gh/zhayujie/cowagent-assets@main/screenshots/zh/web-console-knowledge.png" alt="个人知识库" />
<p align="center"><em>个人知识库 · 自动整理的 Markdown Wiki</em></p>
</td>
</tr>
</table>
<br/>
## 🔧 工具与技能
**工具Tools** 是 Agent 操作系统资源的原子能力,**技能Skills** 是基于说明文件的高级工作流,可组合多个工具完成复杂任务。
### 工具系统
**内置工具** 涵盖文件读写(`read` / `write` / `edit` / `ls`)、终端(`bash`)、文件发送(`send`)、记忆检索(`memory`)、环境变量(`env_config`)、网页获取(`web_fetch`)、定时任务(`scheduler`)、联网搜索(`web_search`)、图像识别(`vision`)、浏览器自动化(`browser`)等常用能力。
**MCP 协议** 通过 [Model Context Protocol](https://modelcontextprotocol.io) 接入开放生态中的各种 MCP 服务,配置一次 `mcp.json` 即用即得,支持 stdio / SSE 协议、热更新、零代码接入。
详见 [工具概览](https://docs.cowagent.ai/tools) · [MCP 集成](https://docs.cowagent.ai/tools/mcp)。
### 技能系统
- **[Skill Hub](https://skills.cowagent.ai/)** — 开源的技能广场,浏览、搜索、一键安装
- **GitHub / ClawHub** — 多平台技能源4w+ 技能可选
- **对话创造** — 通过 `skill-creator` 用对话快速生成自定义技能,可将工作流程或第三方接口直接固化为技能
```bash
/skill list # 查看当前技能
/skill search <关键词> # 在技能广场搜索
/skill install <名称> # 一键安装
```
详见 [技能概览](https://docs.cowagent.ai/skills) · [创建技能](https://docs.cowagent.ai/skills/create)。
<br/>
## 🏷 更新日志
> **2026.05.22** [v2.0.9](https://github.com/zhayujie/CowAgent/releases/tag/2.0.9) — 模型管理、MCP 协议支持、浏览器登录态持久化、新模型接入gpt-5.5、gemini-3.5-flash、qwen3.7-max、部署安全加固
> **2026.05.06** [v2.0.8](https://github.com/zhayujie/CowAgent/releases/tag/2.0.8) — 飞书渠道全面升级语音、流式输出、扫码接入、新模型支持DeepSeek V4、百度千帆、定时任务工具增强
> **2026.04.22** [v2.0.7](https://github.com/zhayujie/CowAgent/releases/tag/2.0.7) — 图像生成内置技能GPT Image 2、Nano Banana、新模型支持Kimi K2.6、Claude Opus 4.7、GLM 5.1)、知识库和记忆增强
> **2026.04.14** [v2.0.6](https://github.com/zhayujie/CowAgent/releases/tag/2.0.6) — 知识库系统、梦境记忆模块、上下文智能压缩、Web 控制台多会话
> **2026.04.01** [v2.0.5](https://github.com/zhayujie/CowAgent/releases/tag/2.0.5) — Cow CLI 命令系统、Skill Hub 开源、浏览器工具、企微扫码创建
> **2026.03.22** [v2.0.4](https://github.com/zhayujie/CowAgent/releases/tag/2.0.4) — 新增个人微信通道,支持文本/图片/文件/语音消息
> **2026.02.03** [v2.0.0](https://github.com/zhayujie/CowAgent/releases/tag/2.0.0) — 正式升级为超级 Agent 助理支持多轮任务决策、长期记忆、Skills 框架
完整更新历史:[Release Notes](https://docs.cowagent.ai/releases)
<br/>
## 🤝 社区与支持
添加小助手微信加入开源项目交流群:
<img width="130" src="https://img-1317903499.cos.ap-guangzhou.myqcloud.com/docs/open-community.png">
- 🐛 [提交 Issue](https://github.com/zhayujie/CowAgent/issues) · 💬 [GitHub Discussions](https://github.com/zhayujie/CowAgent/discussions) · 📖 [常见问题 FAQs](https://github.com/zhayujie/CowAgent/wiki/FAQs)
- 🤖 在线咨询:[项目小助手](https://link-ai.tech/app/Kv2fXJcH)(知识库持续完善中)
<br/>
## 🔗 相关项目
- **[Cow Skill Hub](https://github.com/zhayujie/cow-skill-hub)** — 开源的 AI Agent 技能广场,支持 CowAgent、OpenClaw、Claude Code 等多种 Agent
- **[bot-on-anything](https://github.com/zhayujie/bot-on-anything)** — 轻量大模型应用框架,支持 Slack、Telegram、Discord、Gmail 等海外平台
- **[AgentMesh](https://github.com/MinimalFuture/AgentMesh)** — 开源多智能体Multi-Agent框架通过团队协同解决复杂问题
<br/>
## 🛠️ 开发与贡献
欢迎接入更多应用通道,参考 [飞书通道实现](https://github.com/zhayujie/CowAgent/blob/master/channel/feishu/feishu_channel.py) 新增自定义通道;同时欢迎贡献新技能,向 [Skill Hub](https://skills.cowagent.ai/submit) 提交。
通过 ⭐ Star 关注项目更新,欢迎提交 PR、Issue 进行反馈。
## 🌟 贡献者
![cow contributors](https://contrib.rocks/image?repo=zhayujie/CowAgent&max=1000)
<br/>
## 🏢 企业服务
<a href="https://link-ai.tech" target="_blank"><img width="550" src="https://cdn.link-ai.tech/image/link-ai-intro.jpg"></a>
> [LinkAI](https://link-ai.tech/) 是面向企业和个人的一站式 AI 智能体平台,为 CowAgent 提供云端托管和企业级支持:
>
> - **🚀 免部署在线运行**:无需服务器即可创建 [CowAgent 在线助理](https://link-ai.tech/cowagent/create)1 分钟拥有专属 Agent
> - **🧠 模型与技能支持**:聚合主流大模型与官方技能市场,为 CowAgent 提供更广的模型与技能扩展
> - **🏢 企业级协作**:提供团队协作、权限分级、审计日志、私有化部署等能力,让 Agent 安全落地企业场景
**产品咨询和企业服务** 可联系产品客服:
<img width="130" src="https://cdn.link-ai.tech/portal/linkai-customer-service.png">
<br/>
## ⚠️ 声明
1. 本项目遵循 [MIT 开源协议](/LICENSE),主要用于技术研究和学习。使用时请遵守所在地法律法规及相关政策,因使用本项目所产生的一切后果由使用者自行承担。
2. **成本与安全:** Agent 模式 Token 消耗显著高于普通对话请根据效果与成本权衡选择模型Agent 具备访问本地操作系统的能力,请谨慎选择部署环境。
3. CowAgent 项目专注于开源技术开发,不会参与、授权或发行任何加密货币。
<br/>
## 📌 项目更名说明
本项目原名 `chatgpt-on-wechat`,于 2026.04.13 正式更名为 **CowAgent**。原 GitHub 地址已自动重定向,老用户可选择执行 `git remote set-url origin https://github.com/zhayujie/CowAgent.git` 更新本地远程地址。

View File

@@ -271,7 +271,7 @@ class CowCliPlugin(Plugin):
model_name = cfg.get("model", "unknown")
lines.append(f" 模型: {model_name}")
mode = "Agent" if cfg.get("agent") else "Chat"
mode = "Chat" if cfg.get("agent") is False else "Agent"
lines.append(f" 模式: {mode}")
session_id = self._get_session_id(e_context, fallback=session_id)

View File

@@ -1011,6 +1011,18 @@ _MODEL_PREFERRED_PROVIDER: list[tuple[tuple[str, ...], str]] = [
# Default global priority when the model has no preferred provider.
_DEFAULT_PROVIDER_ORDER = ["OpenAI", "Gemini", "Seedream", "Qwen", "MiniMax", "LinkAI"]
# UI provider id (persisted via the Models page) → internal label used by
# the factory dict in `_build_providers`. Allows pinning a vendor for
# custom model names that prefix-inference can't recognize.
_PROVIDER_ID_TO_LABEL = {
"openai": "OpenAI",
"gemini": "Gemini",
"doubao": "Seedream",
"dashscope": "Qwen",
"minimax": "MiniMax",
"linkai": "LinkAI",
}
def _preferred_provider(model: str) -> str | None:
m = (model or "").lower()
@@ -1020,7 +1032,7 @@ def _preferred_provider(model: str) -> str | None:
return None
def _build_providers(model: str) -> list[tuple[str, ImageProvider]]:
def _build_providers(model: str, provider_id: str = "") -> list[tuple[str, ImageProvider]]:
"""Build an ordered list of (label, provider) to try.
Behaviour:
@@ -1051,7 +1063,12 @@ def _build_providers(model: str) -> list[tuple[str, ImageProvider]]:
"LinkAI": os.environ.get("LINKAI_API_BASE", "https://api.link-ai.tech"),
}
pref = _preferred_provider(model)
# Provider preference resolution priority:
# 1. Explicit `provider_id` (UI-persisted, supports custom model names).
# 2. Model-name prefix inference.
pref = _PROVIDER_ID_TO_LABEL.get(provider_id) if provider_id else None
if not pref:
pref = _preferred_provider(model)
# If a specific model is requested and its native provider has no key,
# other backends won't recognise the id → reset to auto routing.
@@ -1114,6 +1131,9 @@ def main():
# 3. None → fall back to automatic provider routing (try every
# provider with a configured API key in global priority order)
model = args.get("model") or os.environ.get("SKILL_IMAGE_GENERATION_MODEL") or ""
# Provider hint persisted by the Models UI; lets users pin a vendor for
# custom model names that prefix-inference can't recognize.
provider_id = args.get("provider") or os.environ.get("SKILL_IMAGE_GENERATION_PROVIDER") or ""
quality = args.get("quality")
size = args.get("size")
aspect_ratio = args.get("aspect_ratio")
@@ -1121,7 +1141,7 @@ def main():
output_dir = os.environ.get("IMAGE_OUTPUT_DIR", os.path.join(os.getcwd(), "images"))
providers = _build_providers(model)
providers = _build_providers(model, provider_id=provider_id)
if not providers:
target = f"model '{model}'" if model else "image generation"
print(json.dumps({