cowagent-ai-assistant

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

CowAgent AI Assistant

CowAgent AI 助手

Skill by ara.so — AI Agent Skills collection.
CowAgent is an open-source autonomous AI assistant framework that plans tasks, executes tools and skills, and grows through memory and knowledge. It supports multiple LLM providers (Claude, GPT, Gemini, DeepSeek, etc.) and channels (Web, WeChat, Feishu, DingTalk), with a three-tier memory architecture and personal knowledge base.
ara.so开发的技能——AI Agent技能集合。
CowAgent是一个开源的自主AI助手框架,可进行任务规划、执行工具与技能,并通过记忆和知识实现能力成长。它支持多个LLM提供商(Claude、GPT、Gemini、DeepSeek等)和多种渠道(Web、微信、飞书、钉钉),具备三层内存架构和个人知识库功能。

Installation

安装

Quick Install (Recommended)

快速安装(推荐)

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
Docker:
bash
curl -O https://cdn.link-ai.tech/code/cow/docker-compose.yml
docker compose up -d
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
Docker:
bash
curl -O https://cdn.link-ai.tech/code/cow/docker-compose.yml
docker compose up -d

Manual Installation from Source

从源码手动安装

bash
undefined
bash
undefined

Clone repository

克隆仓库

Install dependencies (Python 3.8+)

安装依赖(Python 3.8+)

pip3 install -r requirements.txt
pip3 install -r requirements.txt

Copy and configure

复制并配置文件

cp config-template.json config.json
cp config-template.json config.json

Start the agent

启动Agent

python3 app.py

After starting, access the Web console at `http://localhost:9899`.
python3 app.py

启动后,可通过`http://localhost:9899`访问Web控制台。

CLI Commands

CLI 命令

The
cow
CLI manages the CowAgent service:
bash
undefined
cow
CLI用于管理CowAgent服务:
bash
undefined

Service control

服务控制

cow start # Start CowAgent cow stop # Stop CowAgent cow restart # Restart CowAgent cow status # Check service status cow logs # View logs
cow start # 启动CowAgent cow stop # 停止CowAgent cow restart # 重启CowAgent cow status # 检查服务状态 cow logs # 查看日志

Updates and skills

更新与技能管理

cow update # Pull latest code and restart cow skill install <name> # Install a skill from Skill Hub cow install-browser # Install browser automation dependencies
cow update # 拉取最新代码并重启 cow skill install <name> # 从技能中心安装技能 cow install-browser # 安装浏览器自动化依赖

Usage examples

使用示例

cow skill list # List installed skills cow skill search weather # Search for skills
undefined
cow skill list # 列出已安装技能 cow skill search weather # 搜索技能
undefined

Configuration

配置

Model Configuration

模型配置

Configure via Web console (recommended) or manually edit
config.json
:
json
{
  "model": "claude-opus-4",
  "claude_api_key": "${CLAUDE_API_KEY}",
  "openai_api_key": "${OPENAI_API_KEY}",
  "gemini_api_key": "${GEMINI_API_KEY}",
  
  "vision_model": "gpt-4o",
  "image_create_model": "dall-e-3",
  "speech_recognition_model": "whisper-1",
  "text_to_speech_model": "tts-1",
  "embedding_model": "text-embedding-3-small"
}
推荐通过Web控制台配置,或手动编辑
config.json
json
{
  "model": "claude-opus-4",
  "claude_api_key": "${CLAUDE_API_KEY}",
  "openai_api_key": "${OPENAI_API_KEY}",
  "gemini_api_key": "${GEMINI_API_KEY}",
  
  "vision_model": "gpt-4o",
  "image_create_model": "dall-e-3",
  "speech_recognition_model": "whisper-1",
  "text_to_speech_model": "tts-1",
  "embedding_model": "text-embedding-3-small"
}

Channel Configuration

渠道配置

Set
channel_type
to switch channels:
json
{
  "channel_type": "wx",  // Options: terminal, wx, web, feishu, dingtalk, wecom_bot, qq
  
  // Web channel (default)
  "web": {
    "port": 9899,
    "admin_password": "your_password"
  },
  
  // WeChat
  "wechat": {
    "single_chat_prefix": ["bot", "@bot"],
    "single_chat_reply_prefix": "[bot] ",
    "group_chat_prefix": ["@bot"],
    "group_name_white_list": ["ChatGroup1", "ChatGroup2"]
  },
  
  // Feishu
  "feishu": {
    "app_id": "${FEISHU_APP_ID}",
    "app_secret": "${FEISHU_APP_SECRET}"
  }
}
设置
channel_type
切换渠道:
json
{
  "channel_type": "wx",  // 可选值:terminal, wx, web, feishu, dingtalk, wecom_bot, qq
  
  // Web渠道(默认)
  "web": {
    "port": 9899,
    "admin_password": "your_password"
  },
  
  // 微信
  "wechat": {
    "single_chat_prefix": ["bot", "@bot"],
    "single_chat_reply_prefix": "[bot] ",
    "group_chat_prefix": ["@bot"],
    "group_name_white_list": ["ChatGroup1", "ChatGroup2"]
  },
  
  // 飞书
  "feishu": {
    "app_id": "${FEISHU_APP_ID}",
    "app_secret": "${FEISHU_APP_SECRET}"
  }
}

Memory Configuration

内存配置

json
{
  "memory": {
    "enable_long_term": true,
    "deep_dream_time": "03:00",  // Daily Deep Dream time
    "max_context_messages": 20,
    "enable_hybrid_search": true
  }
}
json
{
  "memory": {
    "enable_long_term": true,
    "deep_dream_time": "03:00",  // 每日深度梦境时间
    "max_context_messages": 20,
    "enable_hybrid_search": true
  }
}

Knowledge Base Configuration

知识库配置

json
{
  "knowledge": {
    "enable": true,
    "auto_curate": true,
    "update_threshold": 3
  }
}
json
{
  "knowledge": {
    "enable": true,
    "auto_curate": true,
    "update_threshold": 3
  }
}

Skills System

技能系统

Installing Skills

安装技能

Via CLI:
bash
cow skill install weather
cow skill install stock-query
cow skill install github-repo-search
Via Chat:
/skill search weather
/skill install weather
/skill list
通过CLI:
bash
cow skill install weather
cow skill install stock-query
cow skill install github-repo-search
通过聊天指令:
/skill search weather
/skill install weather
/skill list

Creating Custom Skills

创建自定义技能

Skills are defined in a
skill.json
manifest:
json
{
  "name": "custom-api-caller",
  "version": "1.0.0",
  "description": "Call external API and process results",
  "author": "Your Name",
  "triggers": ["call api", "fetch data from api"],
  "parameters": [
    {
      "name": "endpoint",
      "type": "string",
      "description": "API endpoint URL",
      "required": true
    },
    {
      "name": "method",
      "type": "string",
      "description": "HTTP method (GET/POST)",
      "default": "GET"
    }
  ],
  "steps": [
    {
      "action": "web_fetch",
      "params": {
        "url": "{{endpoint}}",
        "method": "{{method}}"
      }
    },
    {
      "action": "write",
      "params": {
        "path": "result.json",
        "content": "{{web_fetch.response}}"
      }
    }
  ]
}
Place in
skills/custom-api-caller/skill.json
and restart.
技能通过
skill.json
清单定义:
json
{
  "name": "custom-api-caller",
  "version": "1.0.0",
  "description": "Call external API and process results",
  "author": "Your Name",
  "triggers": ["call api", "fetch data from api"],
  "parameters": [
    {
      "name": "endpoint",
      "type": "string",
      "description": "API endpoint URL",
      "required": true
    },
    {
      "name": "method",
      "type": "string",
      "description": "HTTP method (GET/POST)",
      "default": "GET"
    }
  ],
  "steps": [
    {
      "action": "web_fetch",
      "params": {
        "url": "{{endpoint}}",
        "method": "{{method}}"
      }
    },
    {
      "action": "write",
      "params": {
        "path": "result.json",
        "content": "{{web_fetch.response}}"
      }
    }
  ]
}
将文件放置在
skills/custom-api-caller/skill.json
并重启服务。

Conversational Skill Creation

对话式创建技能

Use the built-in
skill-creator
skill:
Create a skill that fetches GitHub repository info and saves it to a markdown file.
The agent will generate the skill manifest interactively.
使用内置的
skill-creator
技能:
Create a skill that fetches GitHub repository info and saves it to a markdown file.
Agent会交互式生成技能清单。

Tools System

工具系统

Built-in Tools

内置工具

File Operations:
python
undefined
文件操作:
python
undefined

Agent uses these tools automatically

Agent会自动使用这些工具

read(path="/path/to/file.txt") write(path="output.txt", content="data") edit(path="config.json", replacements=[{"old": "value1", "new": "value2"}]) ls(path="./data")

**Terminal:**
```python
bash(command="ls -la")
bash(command="python script.py")
Memory & Knowledge:
python
memory(query="what did user say about project X")
knowledge_search(query="API documentation")
Web & Browser:
python
web_fetch(url="https://api.example.com/data")
web_search(query="Python async best practices")
browser(action="navigate", url="https://example.com")
browser(action="click", selector="#submit-button")
Scheduling:
python
scheduler(action="add", time="2026-05-25 14:00", task="Send report")
scheduler(action="list")
read(path="/path/to/file.txt") write(path="output.txt", content="data") edit(path="config.json", replacements=[{"old": "value1", "new": "value2"}]) ls(path="./data")

**终端操作:**
```python
bash(command="ls -la")
bash(command="python script.py")
记忆与知识库:
python
memory(query="what did user say about project X")
knowledge_search(query="API documentation")
Web与浏览器:
python
web_fetch(url="https://api.example.com/data")
web_search(query="Python async best practices")
browser(action="navigate", url="https://example.com")
browser(action="click", selector="#submit-button")
任务调度:
python
scheduler(action="add", time="2026-05-25 14:00", task="Send report")
scheduler(action="list")

MCP Integration

MCP 集成

Configure MCP servers in
mcp.json
:
json
{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/workspace"],
      "transport": "stdio"
    },
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "transport": "stdio",
      "env": {
        "GITHUB_TOKEN": "${GITHUB_TOKEN}"
      }
    },
    "puppeteer": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-puppeteer"],
      "transport": "stdio"
    }
  }
}
Hot reload: edit
mcp.json
and restart CowAgent.
mcp.json
中配置MCP服务器:
json
{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/workspace"],
      "transport": "stdio"
    },
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "transport": "stdio",
      "env": {
        "GITHUB_TOKEN": "${GITHUB_TOKEN}"
      }
    },
    "puppeteer": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-puppeteer"],
      "transport": "stdio"
    }
  }
}
热重载:编辑
mcp.json
后重启CowAgent即可生效。

Working Code Examples

可用代码示例

Python Plugin Example

Python插件示例

Create a custom plugin in
plugins/my_plugin.py
:
python
import plugins
from bridge.context import ContextType
from bridge.reply import Reply, ReplyType
from common.log import logger

@plugins.register(
    name="MyPlugin",
    desc="Custom functionality plugin",
    version="1.0",
    author="Your Name"
)
class MyPlugin(plugins.Plugin):
    def __init__(self):
        super().__init__()
        self.handlers[Event.ON_HANDLE_CONTEXT] = self.on_handle_context
        logger.info("[MyPlugin] initialized")

    def on_handle_context(self, e_context: EventContext):
        context = e_context['context']
        if context.type != ContextType.TEXT:
            return
        
        content = context.content.strip()
        
        if content.startswith("/hello"):
            reply = Reply()
            reply.type = ReplyType.TEXT
            reply.content = "Hello from custom plugin!"
            e_context['reply'] = reply
            e_context.action = EventAction.BREAK_PASS
            return

    def get_help_text(self, **kwargs):
        return "MyPlugin: Use /hello to get a greeting"
plugins/my_plugin.py
中创建自定义插件:
python
import plugins
from bridge.context import ContextType
from bridge.reply import Reply, ReplyType
from common.log import logger

@plugins.register(
    name="MyPlugin",
    desc="Custom functionality plugin",
    version="1.0",
    author="Your Name"
)
class MyPlugin(plugins.Plugin):
    def __init__(self):
        super().__init__()
        self.handlers[Event.ON_HANDLE_CONTEXT] = self.on_handle_context
        logger.info("[MyPlugin] initialized")

    def on_handle_context(self, e_context: EventContext):
        context = e_context['context']
        if context.type != ContextType.TEXT:
            return
        
        content = context.content.strip()
        
        if content.startswith("/hello"):
            reply = Reply()
            reply.type = ReplyType.TEXT
            reply.content = "Hello from custom plugin!"
            e_context['reply'] = reply
            e_context.action = EventAction.BREAK_PASS
            return

    def get_help_text(self, **kwargs):
        return "MyPlugin: Use /hello to get a greeting"

Custom Channel Implementation

自定义渠道实现

python
from channel.channel import Channel
from bridge.context import Context, ContextType
from bridge.reply import Reply

class CustomChannel(Channel):
    def __init__(self):
        super().__init__()
        
    def startup(self):
        # Initialize your channel (websocket, HTTP server, etc.)
        logger.info("[CustomChannel] starting...")
        
    def handle_message(self, message):
        context = Context()
        context.type = ContextType.TEXT
        context.content = message['text']
        context['session_id'] = message['user_id']
        
        # Process through agent
        reply = super().build_reply_content(message['text'], context)
        
        # Send reply through your channel
        self.send_message(message['user_id'], reply.content)
        
    def send_message(self, user_id, content):
        # Implement sending logic
        pass
Register in
channel/channel_factory.py
:
python
from channel.custom.custom_channel import CustomChannel

def create_channel(channel_type):
    if channel_type == "custom":
        return CustomChannel()
    # ... existing channels
python
from channel.channel import Channel
from bridge.context import Context, ContextType
from bridge.reply import Reply

class CustomChannel(Channel):
    def __init__(self):
        super().__init__()
        
    def startup(self):
        # 初始化你的渠道(websocket、HTTP服务器等)
        logger.info("[CustomChannel] starting...")
        
    def handle_message(self, message):
        context = Context()
        context.type = ContextType.TEXT
        context.content = message['text']
        context['session_id'] = message['user_id']
        
        # 通过Agent处理消息
        reply = super().build_reply_content(message['text'], context)
        
        # 通过你的渠道发送回复
        self.send_message(message['user_id'], reply.content)
        
    def send_message(self, user_id, content):
        # 实现发送逻辑
        pass
channel/channel_factory.py
中注册:
python
from channel.custom.custom_channel import CustomChannel

def create_channel(channel_type):
    if channel_type == "custom":
        return CustomChannel()
    # ... 已有渠道

Advanced Skill with Multiple Tools

多工具高级技能

json
{
  "name": "github-issue-reporter",
  "version": "1.0.0",
  "description": "Search GitHub repos, analyze issues, generate report",
  "triggers": ["analyze github issues", "report on github repository"],
  "parameters": [
    {
      "name": "repo",
      "type": "string",
      "description": "GitHub repository (owner/repo)",
      "required": true
    }
  ],
  "steps": [
    {
      "action": "web_fetch",
      "params": {
        "url": "https://api.github.com/repos/{{repo}}/issues",
        "headers": {
          "Authorization": "token ${GITHUB_TOKEN}"
        }
      },
      "output": "issues_data"
    },
    {
      "action": "bash",
      "params": {
        "command": "echo '{{issues_data}}' | jq '[.[] | {title: .title, state: .state, comments: .comments}]' > /tmp/issues.json"
      }
    },
    {
      "action": "read",
      "params": {
        "path": "/tmp/issues.json"
      },
      "output": "processed_issues"
    },
    {
      "action": "write",
      "params": {
        "path": "github_report_{{repo | replace('/', '_')}}.md",
        "content": "# GitHub Issues Report for {{repo}}\n\n{{processed_issues}}\n\nGenerated at {{now}}"
      }
    }
  ]
}
json
{
  "name": "github-issue-reporter",
  "version": "1.0.0",
  "description": "Search GitHub repos, analyze issues, generate report",
  "triggers": ["analyze github issues", "report on github repository"],
  "parameters": [
    {
      "name": "repo",
      "type": "string",
      "description": "GitHub repository (owner/repo)",
      "required": true
    }
  ],
  "steps": [
    {
      "action": "web_fetch",
      "params": {
        "url": "https://api.github.com/repos/{{repo}}/issues",
        "headers": {
          "Authorization": "token ${GITHUB_TOKEN}"
        }
      },
      "output": "issues_data"
    },
    {
      "action": "bash",
      "params": {
        "command": "echo '{{issues_data}}' | jq '[.[] | {title: .title, state: .state, comments: .comments}]' > /tmp/issues.json"
      }
    },
    {
      "action": "read",
      "params": {
        "path": "/tmp/issues.json"
      },
      "output": "processed_issues"
    },
    {
      "action": "write",
      "params": {
        "path": "github_report_{{repo | replace('/', '_')}}.md",
        "content": "# GitHub Issues Report for {{repo}}\n\n{{processed_issues}}\n\nGenerated at {{now}}"
      }
    }
  ]
}

Common Patterns

常见模式

Agent Planning Loop

Agent规划循环

The agent follows a plan-execute-reflect loop:
  1. Plan: Decompose user request into subtasks
  2. Execute: Run tools and skills step by step
  3. Reflect: Check if goal achieved, adjust plan
  4. Loop: Continue until task complete
Agent遵循“规划-执行-反思”循环:
  1. 规划:将用户请求分解为子任务
  2. 执行:逐步运行工具与技能
  3. 反思:检查目标是否达成,调整规划
  4. 循环:持续直到任务完成

Memory Retrieval Pattern

记忆检索模式

python
undefined
python
undefined

Agent automatically searches memory when relevant

Agent会自动检索相关记忆

Manual retrieval in custom code:

在自定义代码中手动检索:

from plugins import memory_search
results = memory_search( query="user's favorite programming language", limit=5 )
undefined
from plugins import memory_search
results = memory_search( query="user's favorite programming language", limit=5 )
undefined

Knowledge Base Update Pattern

知识库更新模式

python
undefined
python
undefined

Agent auto-curates during conversation

Agent会在对话中自动整理知识

Manual update:

手动更新:

from plugins import knowledge_update
knowledge_update( topic="Project Setup", content="New setup steps: 1. Install deps 2. Configure .env", operation="append" )
undefined
from plugins import knowledge_update
knowledge_update( topic="Project Setup", content="New setup steps: 1. Install deps 2. Configure .env", operation="append" )
undefined

Multi-Step Workflow Pattern

多步骤工作流模式

For complex workflows, chain tools in skills:
json
{
  "steps": [
    {"action": "web_fetch", "params": {"url": "..."}},
    {"action": "bash", "params": {"command": "process.sh"}},
    {"action": "read", "params": {"path": "result.txt"}},
    {"action": "memory", "params": {"action": "save", "content": "{{read.content}}"}}
  ]
}
对于复杂工作流,可在技能中串联多个工具:
json
{
  "steps": [
    {"action": "web_fetch", "params": {"url": "..."}},
    {"action": "bash", "params": {"command": "process.sh"}},
    {"action": "read", "params": {"path": "result.txt"}},
    {"action": "memory", "params": {"action": "save", "content": "{{read.content}}"}}
  ]
}

Troubleshooting

故障排查

Installation Issues

安装问题

Python version mismatch:
bash
python3 --version  # Ensure 3.8+
pip3 install --upgrade pip setuptools wheel
Missing dependencies:
bash
pip3 install -r requirements.txt --force-reinstall
Port already in use:
json
{
  "web": {
    "port": 9900  // Change from default 9899
  }
}
Python版本不匹配:
bash
python3 --version  # 确保版本为3.8+
pip3 install --upgrade pip setuptools wheel
依赖缺失:
bash
pip3 install -r requirements.txt --force-reinstall
端口已被占用:
json
{
  "web": {
    "port": 9900  // 从默认的9899修改为其他端口
  }
}

Model Configuration Issues

模型配置问题

API key not working:
  • Ensure environment variables are set:
    export CLAUDE_API_KEY=sk-...
  • Or set in
    config.json
    directly (not recommended for production)
  • Check key has proper permissions and quota
Model not responding:
bash
cow logs  # Check for API errors
Common fixes:
  • Verify
    model
    field matches provider's model name
  • Check provider-specific API key field (
    claude_api_key
    ,
    openai_api_key
    , etc.)
  • Test with curl:
bash
curl -X POST https://api.anthropic.com/v1/messages \
  -H "x-api-key: ${CLAUDE_API_KEY}" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{"model":"claude-opus-4","messages":[{"role":"user","content":"test"}],"max_tokens":100}'
API密钥无效:
  • 确保已设置环境变量:
    export CLAUDE_API_KEY=sk-...
  • 或直接在
    config.json
    中设置(生产环境不推荐)
  • 检查密钥是否有足够权限和配额
模型无响应:
bash
cow logs  # 查看API错误信息
常见修复方案:
  • 验证
    model
    字段与提供商的模型名称一致
  • 检查提供商专属的API密钥字段(
    claude_api_key
    openai_api_key
    等)
  • 使用curl测试:
bash
curl -X POST https://api.anthropic.com/v1/messages \
  -H "x-api-key: ${CLAUDE_API_KEY}" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{"model":"claude-opus-4","messages":[{"role":"user","content":"test"}],"max_tokens":100}'

Channel Connection Issues

渠道连接问题

WeChat not connecting:
  • QR code expired: restart and scan new code within 60 seconds
  • Check
    wechat
    config in
    config.json
  • Ensure network allows WeChat web protocol
Feishu/Lark setup:
  • Verify
    app_id
    and
    app_secret
    from Feishu admin console
  • Enable bot capabilities in app settings
  • Add bot to target groups before testing
微信无法连接:
  • QR码过期:重启服务并在60秒内扫描新二维码
  • 检查
    config.json
    中的
    wechat
    配置
  • 确保网络支持微信网页协议
飞书配置问题:
  • 验证飞书管理控制台获取的
    app_id
    app_secret
  • 在应用设置中启用机器人能力
  • 测试前将机器人添加到目标群组

Memory & Knowledge Issues

记忆与知识库问题

Deep Dream not running:
  • Check
    memory.deep_dream_time
    in config
  • Ensure agent is running at scheduled time
  • Verify sufficient conversation history
Knowledge not updating:
  • Set
    knowledge.auto_curate: true
  • Check
    knowledge.update_threshold
    (default 3 relevant exchanges)
深度梦境未运行:
  • 检查配置中的
    memory.deep_dream_time
  • 确保Agent在计划时间处于运行状态
  • 验证是否有足够的对话历史
知识库未更新:
  • 设置
    knowledge.auto_curate: true
  • 检查
    knowledge.update_threshold
    (默认需要3次相关交互)

Skill Issues

技能问题

Skill not triggering:
  • Check
    triggers
    in
    skill.json
    match user input
  • List skills:
    /skill list
  • Reinstall:
    cow skill install <name>
Skill execution fails:
bash
cow logs  # Check for tool errors
Verify:
  • Required tools are available
  • Parameters match schema
  • File paths are accessible
技能未触发:
  • 检查
    skill.json
    中的
    triggers
    是否匹配用户输入
  • 列出已安装技能:
    /skill list
  • 重新安装:
    cow skill install <name>
技能执行失败:
bash
cow logs  # 查看工具错误信息
验证:
  • 所需工具是否可用
  • 参数是否符合 schema
  • 文件路径是否可访问

Browser Tool Issues

浏览器工具问题

Browser not installed:
bash
cow install-browser
Headless mode issues:
json
{
  "browser": {
    "headless": false  // Debug with visible browser
  }
}
浏览器未安装:
bash
cow install-browser
无头模式问题:
json
{
  "browser": {
    "headless": false  // 启用可见浏览器进行调试
  }
}

Performance Optimization

性能优化

Slow responses:
  • Use faster models:
    claude-sonnet-4
    ,
    gpt-4o-mini
    ,
    deepseek-v4-flash
  • Reduce
    memory.max_context_messages
  • Disable unused features
High memory usage:
  • Limit conversation history
  • Disable Deep Dream if not needed
  • Restart agent daily:
    0 3 * * * cow restart
响应缓慢:
  • 使用更快的模型:
    claude-sonnet-4
    gpt-4o-mini
    deepseek-v4-flash
  • 减少
    memory.max_context_messages
    的值
  • 禁用未使用的功能
内存占用过高:
  • 限制对话历史长度
  • 若不需要则禁用深度梦境
  • 每日定时重启Agent:
    0 3 * * * cow restart

Logs and Debugging

日志与调试

bash
cow logs               # View recent logs
cow logs -f            # Follow logs in real-time
tail -f logs/app.log   # Direct log access
Enable debug mode in
config.json
:
json
{
  "debug": true,
  "log_level": "DEBUG"
}
For issues, check:
  1. cow status
    - service running
  2. cow logs
    - error messages
  3. Config validation: ensure JSON is valid
  4. Port conflicts:
    netstat -tuln | grep 9899
bash
cow logs               # 查看近期日志
cow logs -f            # 实时跟踪日志
tail -f logs/app.log   # 直接访问日志文件
config.json
中启用调试模式:
json
{
  "debug": true,
  "log_level": "DEBUG"
}
遇到问题时,按以下步骤排查:
  1. cow status
    - 检查服务是否运行
  2. cow logs
    - 查看错误信息
  3. 配置验证:确保JSON格式有效
  4. 端口冲突检查:
    netstat -tuln | grep 9899