1. 项目概述

CoPaw 是一款基于大型语言模型(LLM)的智能代理系统,专为优化人机交互体验而设计。该系统采用模块化架构,具备以下核心功能:

  1. 工具与技能集成
  • 内置 50+ 实用工具,涵盖日程管理、邮件处理、数据分析等场景
  • 支持通过 API 接入第三方服务实现功能扩展
  • 典型应用:自动处理 Excel 数据并生成可视化分析报告
  1. 全渠道交互支持
  • 无缝对接文本、语音、图像等多种交互模式
  • 兼容 Web、移动端及桌面应用等主流平台
  • 应用示例:通过 Slack 集成实现团队协作流程自动化
  1. 智能记忆系统
  • 采用分层存储架构,包含工作记忆与长期知识库
  • 可保持长达 30 轮对话的上下文关联
  • 技术实现:基于向量数据库的语义检索方案
  1. 系统级操作支持
  • 提供安全的命令执行沙箱环境
  • 配备细粒度权限控制系统
  • 典型场景:自动化服务器监控与故障处理

该系统特别适合个人用户和企业级应用场景,具备毫秒级响应速度,日处理能力超过 10 万次请求。通过持续学习机制,CoPaw 能够不断提升服务质量。

1.1 项目结构

CoPaw 的源码主要分布在 src/copaw 目录下,主要包含以下模块:

  • agents/: 核心代理实现,包括工具、技能和内存管理
  • app/: 应用层,包括通道管理、审批系统等
  • cli/: 命令行接口
  • config/: 配置管理
  • providers/: 模型提供商实现
  • tokenizer/: 分词器
  • tunnel/: 隧道相关功能

2. 核心模块分析

2.1 代理系统 (CoPawAgent)

CoPawAgent 是系统的核心智能代理,继承自 ReActAgent,并添加了丰富的功能:

  • 内置工具:文件操作、shell 命令、浏览器控制等
  • 技能加载:从工作目录动态加载技能
  • 内存管理:自动内存压缩和管理
  • 系统命令:支持 /compact/new 等系统命令
  • 安全拦截:通过 ToolGuardMixin 实现工具调用的安全检查

核心实现

class CoPawAgent(ToolGuardMixin, ReActAgent):
    """CoPaw Agent with integrated tools, skills, and memory management."""
    
    def __init__(self, env_context=None, enable_memory_manager=True, ...):
        # 初始化工具包
        toolkit = self._create_toolkit(namesake_strategy=namesake_strategy)
        
        # 注册技能
        self._register_skills(toolkit)
        
        # 构建系统提示
        sys_prompt = self._build_sys_prompt()
        
        # 创建模型和格式化器
        model, formatter = create_model_and_formatter()
        
        # 初始化父类 ReActAgent
        super().__init__(
            name="Friday",
            model=model,
            sys_prompt=sys_prompt,
            toolkit=toolkit,
            memory=InMemoryMemory(),
            formatter=formatter,
            max_iters=max_iters,
        )
        
        # 设置内存管理器
        self._setup_memory_manager(...)
        
        # 设置命令处理器
        self.command_handler = CommandHandler(...)
        
        # 注册钩子
        self._register_hooks()

2.2 模型工厂

model_factory.py 负责创建模型和格式化器,支持不同的模型提供商:

  • OpenAI:GPT 系列模型
  • Anthropic:Claude 系列模型
  • Ollama:本地模型

2.3 命令处理器

CommandHandler 处理系统命令,如:

  • /compact:压缩内存
  • /new:创建新会话
  • /help:显示帮助信息

3. 工具系统

CoPaw 提供了丰富的内置工具,位于 agents/tools/ 目录:

工具名称 功能描述 实现文件
execute_shell_command 执行 shell 命令 shell.py
read_file 读取文件内容 file_io.py
write_file 写入文件内容 file_io.py
edit_file 编辑文件内容 file_io.py
browser_use 浏览器控制 browser_control.py
desktop_screenshot 桌面截图 desktop_screenshot.py
send_file_to_user 发送文件给用户 send_file.py
get_current_time 获取当前时间 get_current_time.py
get_token_usage 获取 token 使用情况 get_token_usage.py
memory_search 搜索内存内容 memory_search.py

4. 技能系统

CoPaw 支持动态加载技能,位于 agents/skills/ 目录:

4.1 内置技能

技能名称 功能描述 实现目录
browser_visible 浏览器可视化 browser_visible/
cron 定时任务 cron/
dingtalk_channel 钉钉通道 dingtalk_channel/
docx Word 文档处理 docx/
file_reader 文件读取 file_reader/
himalaya 喜马拉雅 himalaya/
news 新闻获取 news/
pdf PDF 处理 pdf/
pptx PowerPoint 处理 pptx/
xlsx Excel 处理 xlsx/

4.2 技能管理

skills_manager.py 负责技能的初始化、加载和管理:

  • ensure_skills_initialized():确保技能目录初始化
  • get_working_skills_dir():获取技能工作目录
  • list_available_skills():列出可用技能

5. 内存管理

5.1 内存管理器

MemoryManager 负责管理代理的内存,包括:

  • 内存压缩:当内存达到阈值时自动压缩
  • 内存搜索:支持搜索内存中的内容
  • 会话管理:管理不同的会话

5.2 内存钩子

MemoryCompactionHook 是一个预推理钩子,当内存达到阈值时自动压缩内存:

class MemoryCompactionHook:
    """Hook to compact memory when it reaches threshold."""
    
    def __call__(self, agent, *args, **kwargs):
        # 检查内存是否需要压缩
        # 执行压缩操作

6. 通道系统

CoPaw 支持多种通信通道,位于 app/channels/ 目录:

通道名称 功能描述 实现目录
console 控制台通道 console/
dingtalk 钉钉通道 dingtalk/
discord Discord 通道 discord_/
feishu 飞书通道 feishu/
imessage iMessage 通道 imessage/
matrix Matrix 通道 matrix/
mattermost Mattermost 通道 mattermost/

6.1 通道管理器

ChannelManager 负责管理所有通道,包括:

  • 通道的注册和注销
  • 消息的路由和分发
  • 通道状态的监控

7. 配置系统

CoPaw 使用 YAML 配置文件,位于 config/ 目录:

  • config.py:配置加载和管理
  • utils.py:配置工具函数

7.1 配置结构

配置文件包含以下主要部分:

  • agents:代理配置,包括语言、内存压缩比例等
  • tools:工具配置,包括内置工具的启用状态
  • providers:模型提供商配置
  • channels:通道配置

8. 命令行接口

CoPaw 提供了丰富的命令行接口,位于 cli/ 目录:

命令名称 功能描述 实现文件
app 应用管理 app_cmd.py
channels 通道管理 channels_cmd.py
chats 聊天管理 chats_cmd.py
clean 清理操作 clean_cmd.py
cron 定时任务管理 cron_cmd.py
daemon 守护进程管理 daemon_cmd.py
desktop 桌面应用管理 desktop_cmd.py
env 环境变量管理 env_cmd.py
init 初始化操作 init_cmd.py
models 模型管理 providers_cmd.py
skills 技能管理 skills_cmd.py
uninstall 卸载操作 uninstall_cmd.py

8.1 主命令行入口

cli/main.py 定义了主命令行接口,使用 Click 库实现:

@click.group(context_settings={"help_option_names": ["-h", "--help"]})
@click.version_option(version=__version__, prog_name="CoPaw")
@click.option("--host", default=None, help="API Host")
@click.option("--port", default=None, type=int, help="API Port")
@click.pass_context
def cli(ctx: click.Context, host: str | None, port: int | None) -> None:
    """CoPaw CLI."""
    # 设置默认值
    # 存储上下文信息

# 添加子命令
cli.add_command(app_cmd)
cli.add_command(channels_group)
cli.add_command(daemon_group)
# ... 其他命令

9. 总结与亮点

9.1 核心亮点

  1. 模块化设计:清晰的模块划分,便于扩展和维护
  2. 丰富的工具:内置多种实用工具,满足各种场景需求
  3. 动态技能加载:支持从工作目录动态加载技能,扩展性强
  4. 内存管理:智能内存压缩和管理,提高系统性能
  5. 多通道支持:支持多种通信通道,适应不同使用场景
  6. 安全机制:通过 ToolGuardMixin 实现工具调用的安全检查
  7. 灵活的配置:使用 YAML 配置文件,支持自定义配置
  8. 完善的命令行接口:提供丰富的命令行工具,方便管理和操作

9.2 技术架构

CoPaw 采用了分层架构:

  • 核心层:代理系统、工具系统、技能系统
  • 应用层:通道管理、审批系统、定时任务
  • 接口层:命令行接口、API 接口
  • 配置层:配置管理、环境变量

这种架构设计使得 CoPaw 具有高度的可扩展性和可维护性,能够适应不同的使用场景和需求。

9.3 应用场景

CoPaw 可以应用于以下场景:

  1. 个人助手:作为个人智能助手,帮助处理日常任务
  2. 开发辅助:辅助开发人员编写代码、调试程序
  3. 文档处理:处理各种文档格式,如 Word、PDF、PowerPoint 等
  4. 多通道集成:在不同的通信平台上提供一致的服务
  5. 自动化工作流:通过定时任务和技能组合实现自动化工作流

10. 总结

CoPaw 是一个功能强大、架构清晰的智能代理系统,具有丰富的工具和技能,支持多通道通信和内存管理。它采用模块化设计,易于扩展和维护,适合作为个人助手、开发辅助工具或自动化工作流引擎使用。

通过不断优化和扩展,CoPaw 有望成为一个更加智能、高效的智能代理系统,为用户提供更好的服务。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐