mirror of
https://github.com/zhayujie/chatgpt-on-wechat.git
synced 2026-07-20 21:57:14 +08:00
docs: update 2.0 README.md
This commit is contained in:
@@ -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插件优化、离线通知
|
>**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)
|
||||||
|
|
||||||
<br/>
|
<br/>
|
||||||
|
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ class MemoryStorage:
|
|||||||
self.fts5_available = self._check_fts5_support()
|
self.fts5_available = self._check_fts5_support()
|
||||||
if not self.fts5_available:
|
if not self.fts5_available:
|
||||||
from common.log import logger
|
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
|
# Check database integrity
|
||||||
try:
|
try:
|
||||||
|
|||||||
@@ -49,10 +49,10 @@ class PromptBuilder:
|
|||||||
构建完整的系统提示词
|
构建完整的系统提示词
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
base_persona: 基础人格描述(会被context_files中的SOUL.md覆盖)
|
base_persona: 基础人格描述(会被context_files中的AGENT.md覆盖)
|
||||||
user_identity: 用户身份信息
|
user_identity: 用户身份信息
|
||||||
tools: 工具列表
|
tools: 工具列表
|
||||||
context_files: 上下文文件列表(SOUL.md, USER.md, README.md等)
|
context_files: 上下文文件列表(AGENT.md, USER.md, RULE.md等)
|
||||||
skill_manager: 技能管理器
|
skill_manager: 技能管理器
|
||||||
memory_manager: 记忆管理器
|
memory_manager: 记忆管理器
|
||||||
runtime_info: 运行时信息
|
runtime_info: 运行时信息
|
||||||
@@ -99,13 +99,13 @@ def build_agent_system_prompt(
|
|||||||
3. 记忆系统 - 独立的记忆能力
|
3. 记忆系统 - 独立的记忆能力
|
||||||
4. 工作空间 - 工作环境说明
|
4. 工作空间 - 工作环境说明
|
||||||
5. 用户身份 - 用户信息(可选)
|
5. 用户身份 - 用户信息(可选)
|
||||||
6. 项目上下文 - SOUL.md, USER.md, AGENTS.md(定义人格和身份)
|
6. 项目上下文 - AGENT.md, USER.md, RULE.md(定义人格、身份、规则)
|
||||||
7. 运行时信息 - 元信息(时间、模型等)
|
7. 运行时信息 - 元信息(时间、模型等)
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
workspace_dir: 工作空间目录
|
workspace_dir: 工作空间目录
|
||||||
language: 语言 ("zh" 或 "en")
|
language: 语言 ("zh" 或 "en")
|
||||||
base_persona: 基础人格描述(已废弃,由SOUL.md定义)
|
base_persona: 基础人格描述(已废弃,由AGENT.md定义)
|
||||||
user_identity: 用户身份信息
|
user_identity: 用户身份信息
|
||||||
tools: 工具列表
|
tools: 工具列表
|
||||||
context_files: 上下文文件列表
|
context_files: 上下文文件列表
|
||||||
@@ -139,7 +139,7 @@ def build_agent_system_prompt(
|
|||||||
if user_identity:
|
if user_identity:
|
||||||
sections.extend(_build_user_identity_section(user_identity, language))
|
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:
|
if context_files:
|
||||||
sections.extend(_build_context_files_section(context_files, language))
|
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]:
|
def _build_identity_section(base_persona: Optional[str], language: str) -> List[str]:
|
||||||
"""构建基础身份section - 不再需要,身份由SOUL.md定义"""
|
"""构建基础身份section - 不再需要,身份由AGENT.md定义"""
|
||||||
# 不再生成基础身份section,完全由SOUL.md定义
|
# 不再生成基础身份section,完全由AGENT.md定义
|
||||||
return []
|
return []
|
||||||
|
|
||||||
|
|
||||||
@@ -374,7 +374,7 @@ def _build_workspace_section(workspace_dir: str, language: str, is_first_convers
|
|||||||
"**路径使用规则** (非常重要):",
|
"**路径使用规则** (非常重要):",
|
||||||
"",
|
"",
|
||||||
f"1. **相对路径的基准目录**: 所有相对路径都是相对于 `{workspace_dir}` 而言的",
|
f"1. **相对路径的基准目录**: 所有相对路径都是相对于 `{workspace_dir}` 而言的",
|
||||||
f" - ✅ 正确: 访问工作空间内的文件用相对路径,如 `SOUL.md`",
|
f" - ✅ 正确: 访问工作空间内的文件用相对路径,如 `AGENT.md`",
|
||||||
f" - ❌ 错误: 用相对路径访问其他目录的文件 (如果它不在 `{workspace_dir}` 内)",
|
f" - ❌ 错误: 用相对路径访问其他目录的文件 (如果它不在 `{workspace_dir}` 内)",
|
||||||
"",
|
"",
|
||||||
"2. **访问其他目录**: 如果要访问工作空间之外的目录(如项目代码、系统文件),**必须使用绝对路径**",
|
"2. **访问其他目录**: 如果要访问工作空间之外的目录(如项目代码、系统文件),**必须使用绝对路径**",
|
||||||
@@ -391,13 +391,13 @@ def _build_workspace_section(workspace_dir: str, language: str, is_first_convers
|
|||||||
"",
|
"",
|
||||||
"以下文件在会话启动时**已经自动加载**到系统提示词的「项目上下文」section 中,你**无需再用 read 工具读取它们**:",
|
"以下文件在会话启动时**已经自动加载**到系统提示词的「项目上下文」section 中,你**无需再用 read 工具读取它们**:",
|
||||||
"",
|
"",
|
||||||
"- ✅ `SOUL.md`: 已加载 - Agent的人格设定",
|
"- ✅ `AGENT.md`: 已加载 - 你的人格和灵魂设定",
|
||||||
"- ✅ `USER.md`: 已加载 - 用户的身份信息",
|
"- ✅ `USER.md`: 已加载 - 用户的身份信息",
|
||||||
"- ✅ `AGENTS.md`: 已加载 - 工作空间使用指南",
|
"- ✅ `RULE.md`: 已加载 - 工作空间使用指南和规则",
|
||||||
"",
|
"",
|
||||||
"**交流规范**:",
|
"**交流规范**:",
|
||||||
"",
|
"",
|
||||||
"- 在对话中,不要直接输出工作空间中的技术细节,特别是不要输出 SOUL.md、USER.md、MEMORY.md 等文件名称",
|
"- 在对话中,不要直接输出工作空间中的技术细节,特别是不要输出 AGENT.md、USER.md、MEMORY.md 等文件名称",
|
||||||
"- 例如用自然表达例如「我已记住」而不是「已更新 MEMORY.md」",
|
"- 例如用自然表达例如「我已记住」而不是「已更新 MEMORY.md」",
|
||||||
"",
|
"",
|
||||||
]
|
]
|
||||||
@@ -416,10 +416,10 @@ def _build_workspace_section(workspace_dir: str, language: str, is_first_convers
|
|||||||
" - 我该怎么称呼你?",
|
" - 我该怎么称呼你?",
|
||||||
" - 你希望我们是什么样的交流风格?(一行列举选项:如专业严谨、轻松幽默、温暖友好、简洁高效等)",
|
" - 你希望我们是什么样的交流风格?(一行列举选项:如专业严谨、轻松幽默、温暖友好、简洁高效等)",
|
||||||
"4. **风格要求**:温暖自然、简洁清晰,整体控制在 100 字以内",
|
"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:
|
if not context_files:
|
||||||
return []
|
return []
|
||||||
|
|
||||||
# 检查是否有SOUL.md
|
# 检查是否有AGENT.md
|
||||||
has_soul = any(
|
has_agent = any(
|
||||||
f.path.lower().endswith('soul.md') or 'soul.md' in f.path.lower()
|
f.path.lower().endswith('agent.md') or 'agent.md' in f.path.lower()
|
||||||
for f in context_files
|
for f in context_files
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -446,8 +446,8 @@ def _build_context_files_section(context_files: List[ContextFile], language: str
|
|||||||
"",
|
"",
|
||||||
]
|
]
|
||||||
|
|
||||||
if has_soul:
|
if has_agent:
|
||||||
lines.append("如果存在 `SOUL.md`,请体现其中定义的人格和语气。避免僵硬、模板化的回复;遵循其指导,除非有更高优先级的指令覆盖它。")
|
lines.append("如果存在 `AGENT.md`,请体现其中定义的人格和语气。避免僵硬、模板化的回复;遵循其指导,除非有更高优先级的指令覆盖它。")
|
||||||
lines.append("")
|
lines.append("")
|
||||||
|
|
||||||
# 添加每个文件的内容
|
# 添加每个文件的内容
|
||||||
|
|||||||
@@ -15,9 +15,9 @@ from .builder import ContextFile
|
|||||||
|
|
||||||
|
|
||||||
# 默认文件名常量
|
# 默认文件名常量
|
||||||
DEFAULT_SOUL_FILENAME = "SOUL.md"
|
DEFAULT_AGENT_FILENAME = "AGENT.md"
|
||||||
DEFAULT_USER_FILENAME = "USER.md"
|
DEFAULT_USER_FILENAME = "USER.md"
|
||||||
DEFAULT_AGENTS_FILENAME = "AGENTS.md"
|
DEFAULT_RULE_FILENAME = "RULE.md"
|
||||||
DEFAULT_MEMORY_FILENAME = "MEMORY.md"
|
DEFAULT_MEMORY_FILENAME = "MEMORY.md"
|
||||||
DEFAULT_STATE_FILENAME = ".agent_state.json"
|
DEFAULT_STATE_FILENAME = ".agent_state.json"
|
||||||
|
|
||||||
@@ -25,9 +25,9 @@ DEFAULT_STATE_FILENAME = ".agent_state.json"
|
|||||||
@dataclass
|
@dataclass
|
||||||
class WorkspaceFiles:
|
class WorkspaceFiles:
|
||||||
"""工作空间文件路径"""
|
"""工作空间文件路径"""
|
||||||
soul_path: str
|
agent_path: str
|
||||||
user_path: str
|
user_path: str
|
||||||
agents_path: str
|
rule_path: str
|
||||||
memory_path: str
|
memory_path: str
|
||||||
memory_dir: str
|
memory_dir: str
|
||||||
state_path: 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)
|
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)
|
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_path = os.path.join(workspace_dir, DEFAULT_MEMORY_FILENAME) # MEMORY.md 在根目录
|
||||||
memory_dir = os.path.join(workspace_dir, "memory") # 每日记忆子目录
|
memory_dir = os.path.join(workspace_dir, "memory") # 每日记忆子目录
|
||||||
state_path = os.path.join(workspace_dir, DEFAULT_STATE_FILENAME) # 状态文件
|
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:
|
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(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())
|
_create_template_if_missing(memory_path, _get_memory_template())
|
||||||
|
|
||||||
logger.debug(f"[Workspace] Initialized workspace at: {workspace_dir}")
|
logger.debug(f"[Workspace] Initialized workspace at: {workspace_dir}")
|
||||||
|
|
||||||
return WorkspaceFiles(
|
return WorkspaceFiles(
|
||||||
soul_path=soul_path,
|
agent_path=agent_path,
|
||||||
user_path=user_path,
|
user_path=user_path,
|
||||||
agents_path=agents_path,
|
rule_path=rule_path,
|
||||||
memory_path=memory_path,
|
memory_path=memory_path,
|
||||||
memory_dir=memory_dir,
|
memory_dir=memory_dir,
|
||||||
state_path=state_path
|
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:
|
if files_to_load is None:
|
||||||
# 默认加载的文件(按优先级排序)
|
# 默认加载的文件(按优先级排序)
|
||||||
files_to_load = [
|
files_to_load = [
|
||||||
DEFAULT_SOUL_FILENAME,
|
DEFAULT_AGENT_FILENAME,
|
||||||
DEFAULT_USER_FILENAME,
|
DEFAULT_USER_FILENAME,
|
||||||
DEFAULT_AGENTS_FILENAME,
|
DEFAULT_RULE_FILENAME,
|
||||||
]
|
]
|
||||||
|
|
||||||
context_files = []
|
context_files = []
|
||||||
@@ -160,9 +160,9 @@ def _is_template_placeholder(content: str) -> bool:
|
|||||||
|
|
||||||
# ============= 模板内容 =============
|
# ============= 模板内容 =============
|
||||||
|
|
||||||
def _get_soul_template() -> str:
|
def _get_agent_template() -> str:
|
||||||
"""Agent人格设定模板"""
|
"""Agent人格设定模板"""
|
||||||
return """# SOUL.md - 我是谁?
|
return """# AGENT.md - 我是谁?
|
||||||
|
|
||||||
*在首次对话时与用户一起填写这个文件,定义你的身份和性格。*
|
*在首次对话时与用户一起填写这个文件,定义你的身份和性格。*
|
||||||
|
|
||||||
@@ -231,9 +231,9 @@ def _get_user_template() -> str:
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
def _get_agents_template() -> str:
|
def _get_rule_template() -> str:
|
||||||
"""工作空间指南模板"""
|
"""工作空间规则模板"""
|
||||||
return """# AGENTS.md - 工作空间指南
|
return """# RULE.md - 工作空间规则
|
||||||
|
|
||||||
这个文件夹是你的家。好好对待它。
|
这个文件夹是你的家。好好对待它。
|
||||||
|
|
||||||
@@ -259,9 +259,8 @@ def _get_agents_template() -> str:
|
|||||||
- **记忆是有限的** - 如果你想记住某事,写入文件
|
- **记忆是有限的** - 如果你想记住某事,写入文件
|
||||||
- "记在心里"不会在会话重启后保留,文件才会
|
- "记在心里"不会在会话重启后保留,文件才会
|
||||||
- 当有人说"记住这个" → 更新 `MEMORY.md` 或 `memory/YYYY-MM-DD.md`
|
- 当有人说"记住这个" → 更新 `MEMORY.md` 或 `memory/YYYY-MM-DD.md`
|
||||||
- 当你学到教训 → 更新 AGENTS.md 或相关技能
|
- 当你学到教训 → 更新 RULE.md 或相关技能
|
||||||
- 当你犯错 → 记录下来,这样未来的你不会重复
|
- 当你犯错 → 记录下来,这样未来的你不会重复,**文字 > 大脑** 📝
|
||||||
- **文字 > 大脑** 📝
|
|
||||||
|
|
||||||
### 存储规则
|
### 存储规则
|
||||||
|
|
||||||
@@ -279,7 +278,7 @@ def _get_agents_template() -> str:
|
|||||||
|
|
||||||
## 工作空间演化
|
## 工作空间演化
|
||||||
|
|
||||||
这个工作空间会随着你的使用而不断成长。当你学到新东西、发现更好的方式,或者犯错后改正时,记录下来。
|
这个工作空间会随着你的使用而不断成长。当你学到新东西、发现更好的方式,或者犯错后改正时,记录下来。你可以随时更新这个规则文件。
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>AI Assistant</title>
|
<title>CowAgent - Personal AI Agent</title>
|
||||||
<link rel="icon" href="assets/favicon.ico" type="image/x-icon">
|
<link rel="icon" href="assets/favicon.ico" type="image/x-icon">
|
||||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
||||||
<script src="https://cdn.jsdelivr.net/npm/markdown-it@13.0.1/dist/markdown-it.min.js"></script>
|
<script src="https://cdn.jsdelivr.net/npm/markdown-it@13.0.1/dist/markdown-it.min.js"></script>
|
||||||
|
|||||||
@@ -2,13 +2,12 @@
|
|||||||
|
|
||||||
## 概述
|
## 概述
|
||||||
|
|
||||||
Cow项目从简单的聊天机器人全面升级为超级智能助理 **CowAgent**,能够主动思考和规划任务、拥有长期记忆、操作计算机和外部资源、创造和执行Skill,真正理解你并和你一起成长。CowAgent能够长期运行在个人电脑或服务器中,通过飞书、钉钉、企业微信、网页等多种方式进行交互。核心能力如下:
|
Cow项目从简单的聊天机器人全面升级为超级智能助理 **CowAgent**,能够主动规思考和规划任务、拥有长期记忆、操作计算机和外部资源、创造和执行Skill,真正理解你并和你一起成长。CowAgent能够长期运行在个人电脑或服务器中,通过飞书、钉钉、企业微信、网页等多种方式进行交互。核心能力如下:
|
||||||
|
|
||||||
|
|
||||||
- **复杂任务规划**:能够理解复杂任务并自主规划执行,持续思考和调用工具直到完成目标,支持多轮推理和上下文理解
|
- **复杂任务规划**:能够理解复杂任务并自主规划执行,持续思考和调用工具直到完成目标,支持多轮推理和上下文理解
|
||||||
- **工具系统**:内置 10+ 种工具,包括文件操作、bash终端、浏览器、文件发送、定时任务、记忆管理等
|
- **工具系统**:内置实现10+种工具,包括文件操作、bash终端、浏览器、文件发送、定时任务、记忆管理等
|
||||||
- **长期记忆**:持久化记忆自动保存到本地,通过文件存储和向量数据库实现智能检索,分为核心记忆、每日记忆、用户记忆三个层次
|
- **长期记忆**:自动将对话记忆持久化至本地文件和数据库中,包括全局记忆和天级记忆,支持关键词及向量检索
|
||||||
- **Skills系统**:可无限扩展的技能系统,内置技能创造器、网络搜索、图像识别等技能,支持通过自然语言完成技能创造
|
- **Skills系统**:新增Skill运行引擎,内置多种技能,并支持通过自然语言对话完成自定义Skills开发
|
||||||
- **多渠道和多模型支持**:支持在Web、飞书、钉钉、企微等多渠道与Agent交互,支持Claude、Gemini、OpenAI、GLM、MiniMax、Qwen 等多种国内外主流模型
|
- **多渠道和多模型支持**:支持在Web、飞书、钉钉、企微等多渠道与Agent交互,支持Claude、Gemini、OpenAI、GLM、MiniMax、Qwen 等多种国内外主流模型
|
||||||
- **安全和成本**:通过秘钥管理工具、提示词控制、系统权限等手段控制Agent的访问安全;通过最大记忆轮次、最大上下文token、工具执行步数对token成本进行限制
|
- **安全和成本**:通过秘钥管理工具、提示词控制、系统权限等手段控制Agent的访问安全;通过最大记忆轮次、最大上下文token、工具执行步数对token成本进行限制
|
||||||
|
|
||||||
@@ -27,6 +26,7 @@ Cow项目从简单的聊天机器人全面升级为超级智能助理 **CowAgent
|
|||||||
<img width="800" src="https://cdn.link-ai.tech/doc/20260203000455.png">
|
<img width="800" src="https://cdn.link-ai.tech/doc/20260203000455.png">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### 2. 任务规划和工具调用
|
### 2. 任务规划和工具调用
|
||||||
|
|
||||||
工具是Agent访问操作系统资源的核心,Agent会根据任务需求智能选择和调用工具,完成文件读写、命令执行、定时任务等各类操作。内置工具的视线在项目的 `tools` 目录下。
|
工具是Agent访问操作系统资源的核心,Agent会根据任务需求智能选择和调用工具,完成文件读写、命令执行、定时任务等各类操作。内置工具的视线在项目的 `tools` 目录下。
|
||||||
@@ -43,7 +43,8 @@ Cow项目从简单的聊天机器人全面升级为超级智能助理 **CowAgent
|
|||||||
|
|
||||||
基于编程能力和系统访问能力,Agent可以实现从信息搜索、图片等素材生成、编码、测试、部署、Nginx配置修改、发布的 Vibecoding 全流程,通过手机端简单的一句命令完成应用的快速demo:
|
基于编程能力和系统访问能力,Agent可以实现从信息搜索、图片等素材生成、编码、测试、部署、Nginx配置修改、发布的 Vibecoding 全流程,通过手机端简单的一句命令完成应用的快速demo:
|
||||||
|
|
||||||
[TODO]
|
|
||||||
|
<img width="800" src="https://cdn.link-ai.tech/doc/20260203121008.png">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -117,4 +118,63 @@ Agent可根据智能体的名称和描述进行决策,并通过 app_code 调
|
|||||||
注:需通过 `env_config` 配置 `LINKAI_API_KEY`,或在config.json中添加 `linkai_api_key` 配置。
|
注:需通过 `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#通道说明)
|
||||||
|
|||||||
121
docs/release/2.0.0.md
Normal file
121
docs/release/2.0.0.md
Normal file
@@ -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 会智能记录或检索记忆,不断更新自身设定、用户偏好,总结经验和教训,真正实现自主思考和持续成长。
|
||||||
|
|
||||||
|
<img width="800" src="https://cdn.link-ai.tech/doc/20260203000455.png">
|
||||||
|
|
||||||
|
|
||||||
|
## 二、任务规划与工具调用
|
||||||
|
|
||||||
|
Agent 根据任务需求智能选择和调用工具,完成各类复杂操作。
|
||||||
|
|
||||||
|
### 1. 终端和文件访问
|
||||||
|
|
||||||
|
最基础和核心的工具能力,用户可通过手机端与 Agent 交互,操作个人电脑或服务器上的资源:
|
||||||
|
|
||||||
|
<img width="800" src="https://cdn.link-ai.tech/doc/20260202181130.png">
|
||||||
|
|
||||||
|
### 2. 应用编程能力
|
||||||
|
|
||||||
|
基于编程能力和系统访问能力,Agent 可实现从信息搜索、素材生成、编码、测试、部署、Nginx配置、发布的 **Vibecoding 全流程**,通过手机端一句命令完成应用快速 demo。
|
||||||
|
|
||||||
|
<img width="800" src="https://cdn.link-ai.tech/doc/20260203121008.png">
|
||||||
|
|
||||||
|
### 3. 定时任务
|
||||||
|
|
||||||
|
支持 **一次性任务、固定时间间隔、Cron表达式** 三种形式,任务触发可选择 **固定消息发送** 或 **Agent动态任务执行** 两种模式:
|
||||||
|
|
||||||
|
<img width="800" src="https://cdn.link-ai.tech/doc/20260202195402.png">
|
||||||
|
|
||||||
|
### 4. 环境变量管理
|
||||||
|
|
||||||
|
通过 `env_config` 工具管理技能所需秘钥,支持对话式更新,内置安全保护和脱敏策略:
|
||||||
|
|
||||||
|
<img width="800" src="https://cdn.link-ai.tech/doc/20260202234939.png">
|
||||||
|
|
||||||
|
## 三、技能系统
|
||||||
|
|
||||||
|
每个 Skill 由说明文件、运行脚本(可选)、资源(可选)组成,为 Agent 提供无限扩展性。
|
||||||
|
|
||||||
|
### 1. 技能创造器
|
||||||
|
|
||||||
|
通过对话方式快速创建技能,将工作流程固化或对接任意第三方接口:
|
||||||
|
|
||||||
|
<img width="800" src="https://cdn.link-ai.tech/doc/20260202202247.png">
|
||||||
|
|
||||||
|
### 2. 搜索和图像识别
|
||||||
|
|
||||||
|
- **搜索技能**:内置 `bocha-search`(博查搜索),配置 `BOCHA_SEARCH_API_KEY` 即可使用。
|
||||||
|
- **图像识别**:支持 `gpt-4.1-mini`、`gpt-4.1` 等模型,配置 `OPENAI_API_KEY` 即可使用。
|
||||||
|
|
||||||
|
<img width="800" src="https://cdn.link-ai.tech/doc/20260202213219.png">
|
||||||
|
|
||||||
|
### 3. 三方知识库和插件
|
||||||
|
|
||||||
|
`linkai-agent` 技能可将 [LinkAI](https://link-ai.tech/) 上的所有智能体作为 skill 使用,实现多智能体决策:
|
||||||
|
|
||||||
|
<img width="750" src="https://cdn.link-ai.tech/doc/20260202234350.png">
|
||||||
|
|
||||||
|
|
||||||
|
## 四、快速开始
|
||||||
|
|
||||||
|
### 一键启动
|
||||||
|
|
||||||
|
本次新增了一键下载、配置、运行和管理的脚本,只需命令行中执行:
|
||||||
|
|
||||||
|
```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助理之旅!**
|
||||||
Reference in New Issue
Block a user