diff --git a/README.md b/README.md
index 74b4bca..d84bb9a 100644
--- a/README.md
+++ b/README.md
@@ -10,7 +10,7 @@
# 简介
-> 该项目既是一个可以开箱即用的超级AI助理,也是一个支持高度扩展的Agent框架,可以通过为项目扩展大模型接口、接入渠道、内置工具、Skills系统来灵活实现各种定制需求。核心能力如下:
+> 该项目既是一个可以开箱即用的超级AI助理,也是一个支持高FTS5 not available, using LIKE-based keyword searc度扩展的Agent框架,可以通过为项目扩展大模型接口、接入渠道、内置工具、Skills系统来灵活实现各种定制需求。核心能力如下:
- ✅ **复杂任务规划**:能够理解复杂任务并自主规划执行,持续思考和调用工具直到完成目标,支持通过工具操作访问文件、终端、浏览器、定时任务等系统资源
- ✅ **长期记忆:** 自动将对话记忆持久化至本地文件和数据库中,包括全局记忆和天级记忆,支持关键词及向量检索
@@ -65,7 +65,7 @@ DEMO视频(对话模式):https://cdn.link-ai.tech/doc/cow_demo.mp4
>**2024.10.31:** [1.7.3版本](https://github.com/zhayujie/chatgpt-on-wechat/releases/tag/1.7.3) 程序稳定性提升、数据库功能、Claude模型优化、linkai插件优化、离线通知
-更多更新历史请查看: [更新日志](/docs/version/release-notes.md)
+更多更新历史请查看: [更新日志](/docs/release/history.md)
diff --git a/agent/memory/storage.py b/agent/memory/storage.py
index 8518e81..539aea1 100644
--- a/agent/memory/storage.py
+++ b/agent/memory/storage.py
@@ -71,7 +71,7 @@ class MemoryStorage:
self.fts5_available = self._check_fts5_support()
if not self.fts5_available:
from common.log import logger
- logger.warning("[MemoryStorage] FTS5 not available, using LIKE-based keyword search")
+ logger.debug("[MemoryStorage] FTS5 not available, using LIKE-based keyword search")
# Check database integrity
try:
diff --git a/agent/prompt/builder.py b/agent/prompt/builder.py
index 1a01520..d8f8401 100644
--- a/agent/prompt/builder.py
+++ b/agent/prompt/builder.py
@@ -49,10 +49,10 @@ class PromptBuilder:
构建完整的系统提示词
Args:
- base_persona: 基础人格描述(会被context_files中的SOUL.md覆盖)
+ base_persona: 基础人格描述(会被context_files中的AGENT.md覆盖)
user_identity: 用户身份信息
tools: 工具列表
- context_files: 上下文文件列表(SOUL.md, USER.md, README.md等)
+ context_files: 上下文文件列表(AGENT.md, USER.md, RULE.md等)
skill_manager: 技能管理器
memory_manager: 记忆管理器
runtime_info: 运行时信息
@@ -99,13 +99,13 @@ def build_agent_system_prompt(
3. 记忆系统 - 独立的记忆能力
4. 工作空间 - 工作环境说明
5. 用户身份 - 用户信息(可选)
- 6. 项目上下文 - SOUL.md, USER.md, AGENTS.md(定义人格和身份)
+ 6. 项目上下文 - AGENT.md, USER.md, RULE.md(定义人格、身份、规则)
7. 运行时信息 - 元信息(时间、模型等)
Args:
workspace_dir: 工作空间目录
language: 语言 ("zh" 或 "en")
- base_persona: 基础人格描述(已废弃,由SOUL.md定义)
+ base_persona: 基础人格描述(已废弃,由AGENT.md定义)
user_identity: 用户身份信息
tools: 工具列表
context_files: 上下文文件列表
@@ -139,7 +139,7 @@ def build_agent_system_prompt(
if user_identity:
sections.extend(_build_user_identity_section(user_identity, language))
- # 6. 项目上下文文件(SOUL.md, USER.md, AGENTS.md - 定义人格)
+ # 6. 项目上下文文件(AGENT.md, USER.md, RULE.md - 定义人格)
if context_files:
sections.extend(_build_context_files_section(context_files, language))
@@ -151,8 +151,8 @@ def build_agent_system_prompt(
def _build_identity_section(base_persona: Optional[str], language: str) -> List[str]:
- """构建基础身份section - 不再需要,身份由SOUL.md定义"""
- # 不再生成基础身份section,完全由SOUL.md定义
+ """构建基础身份section - 不再需要,身份由AGENT.md定义"""
+ # 不再生成基础身份section,完全由AGENT.md定义
return []
@@ -374,7 +374,7 @@ def _build_workspace_section(workspace_dir: str, language: str, is_first_convers
"**路径使用规则** (非常重要):",
"",
f"1. **相对路径的基准目录**: 所有相对路径都是相对于 `{workspace_dir}` 而言的",
- f" - ✅ 正确: 访问工作空间内的文件用相对路径,如 `SOUL.md`",
+ f" - ✅ 正确: 访问工作空间内的文件用相对路径,如 `AGENT.md`",
f" - ❌ 错误: 用相对路径访问其他目录的文件 (如果它不在 `{workspace_dir}` 内)",
"",
"2. **访问其他目录**: 如果要访问工作空间之外的目录(如项目代码、系统文件),**必须使用绝对路径**",
@@ -391,13 +391,13 @@ def _build_workspace_section(workspace_dir: str, language: str, is_first_convers
"",
"以下文件在会话启动时**已经自动加载**到系统提示词的「项目上下文」section 中,你**无需再用 read 工具读取它们**:",
"",
- "- ✅ `SOUL.md`: 已加载 - Agent的人格设定",
+ "- ✅ `AGENT.md`: 已加载 - 你的人格和灵魂设定",
"- ✅ `USER.md`: 已加载 - 用户的身份信息",
- "- ✅ `AGENTS.md`: 已加载 - 工作空间使用指南",
+ "- ✅ `RULE.md`: 已加载 - 工作空间使用指南和规则",
"",
"**交流规范**:",
"",
- "- 在对话中,不要直接输出工作空间中的技术细节,特别是不要输出 SOUL.md、USER.md、MEMORY.md 等文件名称",
+ "- 在对话中,不要直接输出工作空间中的技术细节,特别是不要输出 AGENT.md、USER.md、MEMORY.md 等文件名称",
"- 例如用自然表达例如「我已记住」而不是「已更新 MEMORY.md」",
"",
]
@@ -416,10 +416,10 @@ def _build_workspace_section(workspace_dir: str, language: str, is_first_convers
" - 我该怎么称呼你?",
" - 你希望我们是什么样的交流风格?(一行列举选项:如专业严谨、轻松幽默、温暖友好、简洁高效等)",
"4. **风格要求**:温暖自然、简洁清晰,整体控制在 100 字以内",
- "5. 收到回复后,用 `write` 工具保存到 USER.md 和 SOUL.md",
+ "5. 收到回复后,用 `write` 工具保存到 USER.md 和 AGENT.md",
"",
"**重要提醒**:",
- "- SOUL.md 和 USER.md 已经在系统提示词中加载,无需再次读取",
+ "- AGENT.md、USER.md、RULE.md 已经在系统提示词中加载,无需再次读取。不要将这些文件名直接发送给用户",
"- 能力介绍和交流风格选项都只要一行,保持精简",
"- 不要问太多其他信息(职业、时区等可以后续自然了解)",
"",
@@ -433,9 +433,9 @@ def _build_context_files_section(context_files: List[ContextFile], language: str
if not context_files:
return []
- # 检查是否有SOUL.md
- has_soul = any(
- f.path.lower().endswith('soul.md') or 'soul.md' in f.path.lower()
+ # 检查是否有AGENT.md
+ has_agent = any(
+ f.path.lower().endswith('agent.md') or 'agent.md' in f.path.lower()
for f in context_files
)
@@ -446,8 +446,8 @@ def _build_context_files_section(context_files: List[ContextFile], language: str
"",
]
- if has_soul:
- lines.append("如果存在 `SOUL.md`,请体现其中定义的人格和语气。避免僵硬、模板化的回复;遵循其指导,除非有更高优先级的指令覆盖它。")
+ if has_agent:
+ lines.append("如果存在 `AGENT.md`,请体现其中定义的人格和语气。避免僵硬、模板化的回复;遵循其指导,除非有更高优先级的指令覆盖它。")
lines.append("")
# 添加每个文件的内容
diff --git a/agent/prompt/workspace.py b/agent/prompt/workspace.py
index 47d2e33..714632c 100644
--- a/agent/prompt/workspace.py
+++ b/agent/prompt/workspace.py
@@ -15,9 +15,9 @@ from .builder import ContextFile
# 默认文件名常量
-DEFAULT_SOUL_FILENAME = "SOUL.md"
+DEFAULT_AGENT_FILENAME = "AGENT.md"
DEFAULT_USER_FILENAME = "USER.md"
-DEFAULT_AGENTS_FILENAME = "AGENTS.md"
+DEFAULT_RULE_FILENAME = "RULE.md"
DEFAULT_MEMORY_FILENAME = "MEMORY.md"
DEFAULT_STATE_FILENAME = ".agent_state.json"
@@ -25,9 +25,9 @@ DEFAULT_STATE_FILENAME = ".agent_state.json"
@dataclass
class WorkspaceFiles:
"""工作空间文件路径"""
- soul_path: str
+ agent_path: str
user_path: str
- agents_path: str
+ rule_path: str
memory_path: str
memory_dir: str
state_path: str
@@ -48,9 +48,9 @@ def ensure_workspace(workspace_dir: str, create_templates: bool = True) -> Works
os.makedirs(workspace_dir, exist_ok=True)
# 定义文件路径
- soul_path = os.path.join(workspace_dir, DEFAULT_SOUL_FILENAME)
+ agent_path = os.path.join(workspace_dir, DEFAULT_AGENT_FILENAME)
user_path = os.path.join(workspace_dir, DEFAULT_USER_FILENAME)
- agents_path = os.path.join(workspace_dir, DEFAULT_AGENTS_FILENAME)
+ rule_path = os.path.join(workspace_dir, DEFAULT_RULE_FILENAME)
memory_path = os.path.join(workspace_dir, DEFAULT_MEMORY_FILENAME) # MEMORY.md 在根目录
memory_dir = os.path.join(workspace_dir, "memory") # 每日记忆子目录
state_path = os.path.join(workspace_dir, DEFAULT_STATE_FILENAME) # 状态文件
@@ -60,17 +60,17 @@ def ensure_workspace(workspace_dir: str, create_templates: bool = True) -> Works
# 如果需要,创建模板文件
if create_templates:
- _create_template_if_missing(soul_path, _get_soul_template())
+ _create_template_if_missing(agent_path, _get_agent_template())
_create_template_if_missing(user_path, _get_user_template())
- _create_template_if_missing(agents_path, _get_agents_template())
+ _create_template_if_missing(rule_path, _get_rule_template())
_create_template_if_missing(memory_path, _get_memory_template())
logger.debug(f"[Workspace] Initialized workspace at: {workspace_dir}")
return WorkspaceFiles(
- soul_path=soul_path,
+ agent_path=agent_path,
user_path=user_path,
- agents_path=agents_path,
+ rule_path=rule_path,
memory_path=memory_path,
memory_dir=memory_dir,
state_path=state_path
@@ -91,9 +91,9 @@ def load_context_files(workspace_dir: str, files_to_load: Optional[List[str]] =
if files_to_load is None:
# 默认加载的文件(按优先级排序)
files_to_load = [
- DEFAULT_SOUL_FILENAME,
+ DEFAULT_AGENT_FILENAME,
DEFAULT_USER_FILENAME,
- DEFAULT_AGENTS_FILENAME,
+ DEFAULT_RULE_FILENAME,
]
context_files = []
@@ -160,9 +160,9 @@ def _is_template_placeholder(content: str) -> bool:
# ============= 模板内容 =============
-def _get_soul_template() -> str:
+def _get_agent_template() -> str:
"""Agent人格设定模板"""
- return """# SOUL.md - 我是谁?
+ return """# AGENT.md - 我是谁?
*在首次对话时与用户一起填写这个文件,定义你的身份和性格。*
@@ -231,9 +231,9 @@ def _get_user_template() -> str:
"""
-def _get_agents_template() -> str:
- """工作空间指南模板"""
- return """# AGENTS.md - 工作空间指南
+def _get_rule_template() -> str:
+ """工作空间规则模板"""
+ return """# RULE.md - 工作空间规则
这个文件夹是你的家。好好对待它。
@@ -259,9 +259,8 @@ def _get_agents_template() -> str:
- **记忆是有限的** - 如果你想记住某事,写入文件
- "记在心里"不会在会话重启后保留,文件才会
- 当有人说"记住这个" → 更新 `MEMORY.md` 或 `memory/YYYY-MM-DD.md`
-- 当你学到教训 → 更新 AGENTS.md 或相关技能
-- 当你犯错 → 记录下来,这样未来的你不会重复
-- **文字 > 大脑** 📝
+- 当你学到教训 → 更新 RULE.md 或相关技能
+- 当你犯错 → 记录下来,这样未来的你不会重复,**文字 > 大脑** 📝
### 存储规则
@@ -279,7 +278,7 @@ def _get_agents_template() -> str:
## 工作空间演化
-这个工作空间会随着你的使用而不断成长。当你学到新东西、发现更好的方式,或者犯错后改正时,记录下来。
+这个工作空间会随着你的使用而不断成长。当你学到新东西、发现更好的方式,或者犯错后改正时,记录下来。你可以随时更新这个规则文件。
"""
diff --git a/channel/web/chat.html b/channel/web/chat.html
index 3134f3d..2ad5474 100644
--- a/channel/web/chat.html
+++ b/channel/web/chat.html
@@ -3,7 +3,7 @@
+
### 2. 任务规划和工具调用
工具是Agent访问操作系统资源的核心,Agent会根据任务需求智能选择和调用工具,完成文件读写、命令执行、定时任务等各类操作。内置工具的视线在项目的 `tools` 目录下。
@@ -43,7 +43,8 @@ Cow项目从简单的聊天机器人全面升级为超级智能助理 **CowAgent
基于编程能力和系统访问能力,Agent可以实现从信息搜索、图片等素材生成、编码、测试、部署、Nginx配置修改、发布的 Vibecoding 全流程,通过手机端简单的一句命令完成应用的快速demo:
-[TODO]
+
+
@@ -117,4 +118,63 @@ Agent可根据智能体的名称和描述进行决策,并通过 app_code 调
注:需通过 `env_config` 配置 `LINKAI_API_KEY`,或在config.json中添加 `linkai_api_key` 配置。
+## 使用方式
+> 详细使用方式参考项目README.md文档进行
+
+### 1.项目运行
+
+在命令行中执行:
+
+```bash
+bash <(curl -sS https://cdn.link-ai.tech/code/cow/run.sh)
+```
+
+详细说明及后续程序管理参考:[项目启动脚本](https://github.com/zhayujie/chatgpt-on-wechat/wiki/CowAgentQuickStart)
+
+
+### 2.模型选择
+
+Agent模式推荐使用以下模型,可根据效果及成本综合选择:
+
+- **Claude**: `claude-sonnet-4-5`、`claude-sonnet-4-0`
+- **Gemini**: `gemini-3-flash-preview`、`gemini-3-pro-preview`
+- **GLM**: `glm-4.7`
+- **MiniMax**: `MiniMax-M2.1`
+- **Qwen**: `qwen3-max`
+
+详细模型配置方式参考 [README.md 模型说明](../README.md#模型说明)
+
+### 3.Agent核心配置
+
+Agent模式的核心配置项如下,在 `config.json` 中配置:
+
+```json
+{
+ "agent": true, // 是否启用Agent模式
+ "agent_workspace": "~/cow", // Agent工作空间路径
+ "agent_max_context_tokens": 40000, // 最大上下文tokens
+ "agent_max_context_turns": 30, // 最大上下文记忆轮次
+ "agent_max_steps": 15 // 单次任务最大决策步数
+}
+```
+
+**配置说明:**
+
+- `agent`: 设为 `true` 启用Agent模式,获得多轮工具决策、长期记忆、Skills等能力
+- `agent_workspace`: 工作空间路径,用于存储 memory、skills、其他系统设定提示词
+- `agent_max_context_tokens`: 上下文token上限,超出将自动丢弃最早的对话
+- `agent_max_context_turns`: 上下文记忆轮次,每轮包括一次提问和回复
+- `agent_max_steps`: 单次任务最大工具调用步数,防止无限循环
+
+
+### 4.渠道接入
+
+Agent支持在多种渠道中使用,只需修改 `config.json` 中的 `channel_type` 配置即可切换。
+
+- **Web网页**:默认使用该渠道,运行后监听本地端口,通过浏览器访问
+- **飞书接入**:[飞书接入文档](https://docs.link-ai.tech/cow/multi-platform/feishu)
+- **钉钉接入**:[钉钉接入文档](https://docs.link-ai.tech/cow/multi-platform/dingtalk)
+- **企业微信应用接入**:[企微应用文档](https://docs.link-ai.tech/cow/multi-platform/wechat-com)
+
+更多渠道配置参考:[通道说明](../README.md#通道说明)
diff --git a/docs/release/2.0.0.md b/docs/release/2.0.0.md
new file mode 100644
index 0000000..469a1c5
--- /dev/null
+++ b/docs/release/2.0.0.md
@@ -0,0 +1,121 @@
+# CowAgent 2.0
+
+🚀 CowAgent 2.0 实现了从聊天机器人到**超级智能助理**的全面升级!现在它能够主动思考和规划任务、拥有长期记忆、操作计算机和外部资源、创造和执行技能,真正理解你并和你一起成长。
+
+### ✨ 重点更新
+
+- Agent核心能力:
+ - **复杂任务规划**:能够理解复杂任务并自主规划执行,持续思考和调用工具直到完成目标,支持多轮推理和上下文理解。
+ - **长期记忆**:自动将对话记忆持久化至本地文件和数据库中,包括全局记忆和天级记忆,支持关键词及向量检索。
+ - **内置系统工具**:内置实现10+种工具,包括文件操作、bash终端、浏览器、文件发送、定时任务、记忆管理等。
+ - **Skills**:新增Skill运行引擎,内置多种技能,并支持通过自然语言对话完成自定义Skills开发。
+ - **安全和成本**:通过秘钥管理工具、提示词控制、系统权限等手段控制Agent的访问安全;通过最大记忆轮次、最大上下文token、工具执行步数对token成本进行限制。
+- 其他更新:
+ - 渠道优化:飞书及钉钉接入渠道支持长连接接入(无需公网IP)、支持图片/文件消息的接收和发送。
+ - 模型更新:新增claude-sonnet-4-5、gemini-3-pro-preview、glm-4.7、MiniMax-M2.1、qwen3-max等最新模型。
+ - 部署优化:增加一键安装、配置、运行、管理的脚本,简化部署流程。
+
+## 一、长期记忆系统
+
+Agent 会在用户分享重要信息时主动存储,也会在对话达到一定长度时自动提取摘要。支持语义搜索和向量检索的混合检索模式。
+
+**首次启动**时,Agent 会主动询问关键信息,并记录至工作空间(默认 `~/cow`)中的智能体设定、用户身份、记忆文件中。
+
+**长期对话**中,Agent 会智能记录或检索记忆,不断更新自身设定、用户偏好,总结经验和教训,真正实现自主思考和持续成长。
+
+
+
+
+## 二、任务规划与工具调用
+
+Agent 根据任务需求智能选择和调用工具,完成各类复杂操作。
+
+### 1. 终端和文件访问
+
+最基础和核心的工具能力,用户可通过手机端与 Agent 交互,操作个人电脑或服务器上的资源:
+
+
+
+### 2. 应用编程能力
+
+基于编程能力和系统访问能力,Agent 可实现从信息搜索、素材生成、编码、测试、部署、Nginx配置、发布的 **Vibecoding 全流程**,通过手机端一句命令完成应用快速 demo。
+
+
+
+### 3. 定时任务
+
+支持 **一次性任务、固定时间间隔、Cron表达式** 三种形式,任务触发可选择 **固定消息发送** 或 **Agent动态任务执行** 两种模式:
+
+
+
+### 4. 环境变量管理
+
+通过 `env_config` 工具管理技能所需秘钥,支持对话式更新,内置安全保护和脱敏策略:
+
+
+
+## 三、技能系统
+
+每个 Skill 由说明文件、运行脚本(可选)、资源(可选)组成,为 Agent 提供无限扩展性。
+
+### 1. 技能创造器
+
+通过对话方式快速创建技能,将工作流程固化或对接任意第三方接口:
+
+
+
+### 2. 搜索和图像识别
+
+- **搜索技能**:内置 `bocha-search`(博查搜索),配置 `BOCHA_SEARCH_API_KEY` 即可使用。
+- **图像识别**:支持 `gpt-4.1-mini`、`gpt-4.1` 等模型,配置 `OPENAI_API_KEY` 即可使用。
+
+
+
+### 3. 三方知识库和插件
+
+`linkai-agent` 技能可将 [LinkAI](https://link-ai.tech/) 上的所有智能体作为 skill 使用,实现多智能体决策:
+
+
+
+
+## 四、快速开始
+
+### 一键启动
+
+本次新增了一键下载、配置、运行和管理的脚本,只需命令行中执行:
+
+```bash
+bash <(curl -sS https://cdn.link-ai.tech/code/cow/run.sh)
+```
+
+详细说明参考:[项目启动脚本](https://github.com/zhayujie/chatgpt-on-wechat/wiki/CowAgentQuickStart)
+
+### 模型选择
+
+Agent 模式推荐使用以下模型:
+
+- **Claude**: `claude-sonnet-4-5`、`claude-sonnet-4-0`
+- **Gemini**: `gemini-3-flash-preview`、`gemini-3-pro-preview`
+- **GLM**: `glm-4.7`
+- **MiniMax**: `MiniMax-M2.1`
+- **Qwen**: `qwen3-max`
+
+详细配置方式参考 [README.md 模型说明](../README.md#模型说明)
+
+
+### 渠道接入
+
+支持在 Web、飞书、钉钉、企业微信 等多渠道与 Agent 交互,随时随地使用超级助理,只需修改 `config.json` 中的 `channel_type` 配置即可切换:
+
+- **Web网页**:默认使用该渠道,运行后监听本地端口,通过浏览器访问。
+- **飞书接入**:[飞书接入文档](https://docs.link-ai.tech/cow/multi-platform/feishu)
+- **钉钉接入**:[钉钉接入文档](https://docs.link-ai.tech/cow/multi-platform/dingtalk)
+- **企业微信应用接入**:[企微应用文档](https://docs.link-ai.tech/cow/multi-platform/wechat-com)
+
+更多渠道配置参考:[通道说明](../README.md#通道说明)
+
+## 五、参与共建
+
+2.0版本后,项目将持续升级Agent能力、拓展接入渠道、内置工具、技能系统,降低模型成本和提升安全性。欢迎 [提出反馈](https://github.com/zhayujie/chatgpt-on-wechat/issues) 和 [贡献代码](https://github.com/zhayujie/chatgpt-on-wechat/pulls)。
+
+**🤖立即体验 CowAgent 2.0,开启你的超级AI助理之旅!**
diff --git a/docs/version/release-notes.md b/docs/release/history.md
similarity index 100%
rename from docs/version/release-notes.md
rename to docs/release/history.md