> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cowagent.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Architecture

> CowAgent 2.0 system architecture and core design

CowAgent 2.0 has evolved from a simple chatbot into a super intelligent assistant with Agent architecture, featuring autonomous thinking, task planning, long-term memory, and skill extensibility.

## System Architecture

CowAgent's architecture consists of the following core modules:

<img src="https://cdn.jsdelivr.net/gh/zhayujie/cowagent-assets@main/architecture/en/architecture.png" alt="CowAgent Architecture" />

| Module        | Description                                                                                                                                                                                                    |
| ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Plan**      | Understands user intent, decomposes complex tasks into multi-step plans, and iteratively invokes tools until the goal is achieved                                                                              |
| **Memory**    | Automatically persists important information as core memory and daily memory, with hybrid keyword and vector retrieval for cross-session context continuity                                                    |
| **Knowledge** | Organizes structured knowledge by topic. The Agent autonomously distills valuable information into Markdown pages, maintaining indexes and cross-references to build a growing knowledge network               |
| **Evolution** | Reviews a conversation in an isolated environment after it goes idle, improving skills, following up on unfinished tasks, and backfilling memory and knowledge so the Agent keeps growing through everyday use |
| **Tools**     | Core capability for Agent to access OS resources. 10+ built-in tools including file read/write, terminal, browser, scheduler, memory search, web search, and more                                              |
| **Skills**    | Loads and manages Skills. Supports one-click installation from Skill Hub, GitHub, and more, or custom skill creation through conversation                                                                      |
| **Models**    | Model layer with unified access to OpenAI, Claude, Gemini, DeepSeek, MiniMax, GLM, Qwen, and other mainstream LLMs                                                                                             |
| **Channels**  | Message channel layer for receiving and sending messages. Supports Web console, WeChat, Feishu, DingTalk, WeCom, WeChat Official Account, and more with a unified protocol                                     |
| **CLI**       | Command-line system providing terminal commands (`cow`) and chat commands (`/`) for process management, skill installation, configuration, knowledge base management, and more                                 |

## Agent Mode Workflow

When Agent mode is enabled, CowAgent runs as an autonomous agent with the following workflow:

1. **Receive Message** — Receive user input through channels
2. **Understand Intent** — Analyze task requirements and context
3. **Plan Task** — Break complex tasks into multiple steps
4. **Invoke Tools** — Select and execute appropriate tools for each step
5. **Update Memory & Knowledge** — Store important information in long-term memory and organize structured knowledge into the knowledge base
6. **Return Result** — Send execution results back to the user

## Workspace Directory Structure

The Agent workspace is located at `~/cow` by default and stores system prompts, memory files, and skill files:

```
~/cow/
├── SYSTEM.md          # Agent system prompt
├── USER.md            # User profile
├── MEMORY.md          # Core memory
├── memory/            # Long-term memory storage
│   └── YYYY-MM-DD.md  # Daily memory
├── knowledge/         # Personal knowledge base
│   ├── index.md       # Knowledge index
│   └── <category>/    # Topic-based pages
└── skills/            # Custom skills
    ├── skill-1/
    └── skill-2/
```

Secret keys are stored separately in `~/.cow` directory for security:

```
~/.cow/
└── .env               # Secret keys for skills
```

## Core Configuration

Configure Agent mode parameters in `config.json`:

```json theme={null}
{
  "agent": true,
  "agent_workspace": "~/cow",
  "agent_max_context_tokens": 50000,
  "agent_max_context_turns": 20,
  "agent_max_steps": 20,
  "enable_thinking": false,
  "cow_lang": "auto"
}
```

| Parameter                  | Description                                                                                | Default |
| -------------------------- | ------------------------------------------------------------------------------------------ | ------- |
| `agent`                    | Enable Agent mode                                                                          | `true`  |
| `agent_workspace`          | Workspace path                                                                             | `~/cow` |
| `agent_max_context_tokens` | Max context tokens                                                                         | `50000` |
| `agent_max_context_turns`  | Max context turns                                                                          | `20`    |
| `agent_max_steps`          | Max decision steps per task                                                                | `20`    |
| `enable_thinking`          | Enable deep-thinking mode                                                                  | `false` |
| `knowledge`                | Enable personal knowledge base                                                             | `true`  |
| `self_evolution_enabled`   | Enable Self-Evolution (on by default for new installs)                                     | `false` |
| `cow_lang`                 | Language for the UI, command text and system prompts; `auto` to detect, or set `zh` / `en` | `auto`  |
