GenericAgent 部署与接入:在全平台构建微信/QQ/飞书机器人

May 9, 2026

项目概览

GenericAgent 是一个极简、可自我进化的自主 Agent 框架。其核心只有 ~3K 行代码:配合 9 个原子工具 + 约 100 行的 Agent Loop,就能赋予任意 LLM 对你本地计算机的系统级控制能力。

它的设计理念很有意思:不预设技能,而是通过进化获得能力。当 GenericAgent 完成一个新任务后,会自动把执行路径“固化”为 Skill。你使用得越久,累积的技能就越多——从最初这 3K 行种子代码出发,逐步长出完全属于你的个人技能树。

TIP

更妙的是,这个项目在 arXiv 上有技术论文,证明了它的设计思路:“Token 高效 + 最大化上下文信息密度”。

相比 OpenClaw(~530K 行代码),GenericAgent 走的是极简路线:部署非常容易(pip install + API Key),不需要复杂的多服务编排,但仍保留了核心能力——包括完整的浏览器控制、键盘/鼠标操作,以及通过 ADB 控制移动设备。


难度 / 时长 / 收获

  • 难度:入门友好,不需要深度编程经验
  • 时长:约 30 分钟
  • 收获:掌握 GenericAgent 部署配置 + 接入三大 IM 平台(微信/QQ/飞书),让你随时随地用手机把 AI 操控到电脑上为你做事

目标读者

  • 1–5 年经验的后端或全栈开发者
  • 希望构建个人 AI 助手与自动化工作流的用户
  • 对 Agent 技术感兴趣,想快速体验“让 AI 真正替你做事情”
  • 有多平台 IM 接入需求的人(例如希望通过微信/QQ 远程控制电脑)

核心依赖与环境

类别要求
Python3.11 或 3.12(不要用 3.14,与 pywebview 不兼容)
操作系统Windows / macOS / Linux
LLM 支持Claude / GPT-4o / Gemini / Kimi / MiniMax 等主流模型
网络能访问 LLM API 的网络环境
可选依赖streamlit / pywebview(桌面 GUI)、pycryptodome / qrcode(微信)

WARNING

GenericAgent 本身不提供 LLM API——你需要自备 API Key。建议使用支持 Claude/GPT 的中转服务:在国内通常更便宜、也更稳定。例如 Defapi:官方价格是原来的一半,支持 Claude/GPT 全系列,还能自动识别兼容协议。


完整项目结构

GenericAgent/
├── agentmain.py              # 主入口;支持命令行模式
├── launch.pyw                # 桌面 GUI 启动脚本
├── agent_loop.py             # 核心 Agent Loop(约 100 行)
├── llmcore.py                # LLM 会话管理
├── ga.py                     # GenericAgentHandler;记忆与工具调度
├── frontends/                # IM 平台适配器
│   ├── wechatapp.py         # 微信 Bot
│   ├── qqapp.py             # QQ Bot
│   ├── fsapp.py             # 飞书 Bot
│   ├── tgapp.py             # Telegram Bot
│   ├── wecomapp.py          # 企业微信 Bot
│   ├── dingtalkapp.py       # 钉钉 Bot
│   ├── tuiapp.py            # 终端 UI
│   └── ...
├── assets/
│   ├── mykey_template.py    # API Key 配置模板
│   ├── tools_schema.json    # 9 个原子工具定义
│   ├── sys_prompt*.txt      # 系统提示词
│   └── tmwd_cdp_bridge/    # 浏览器注入插件
├── memory/                   # 记忆存储目录
└── temp/                     # 临时文件与日志

手把手步骤

Step 1:安装项目与依赖

先克隆仓库并安装基础依赖:

# 克隆仓库
git clone https://github.com/lsdefine/GenericAgent.git
cd GenericAgent

# 安装基础依赖
pip install requests

# 安装 GUI 依赖(桌面模式)
pip install streamlit pywebview

# 或安装终端 UI 依赖
pip install requests textual

TIP

GenericAgent 的设计理念是“让 Agent 自己安装环境”。你不需要预先安装太多依赖——Agent 会读代码,然后告诉你“请安装所有需要的 Python 依赖”,它会把剩下的处理好。

Step 2:配置 API Key

复制配置模板:

cp assets/mykey_template.py mykey.py

编辑 mykey.py 并填入你的 LLM 配置。下面是使用 Defapi 的示例(以 Claude 为例):

# 使用 Defapi 中转 Claude(官方半价)
native_claude_config = {
    'name': 'claude-defapi',                    # 显示名
    'apikey': 'sk-ant-your-defapi-key',         # Defapi 提供的 key
    'apibase': 'https://api.defapi.org',        # Defapi 端点
    'model': 'claude-sonnet-4-6',               # 或 claude-opus-4-7
    'fake_cc_system_prompt': True,              # 中转服务需要开启
    'thinking_type': 'adaptive',
    'max_tokens': 16384,
}

WARNING

如果你用的是 CC switch 类中转服务(例如 Defapi、anyrouter 等),必须设置 fake_cc_system_prompt: True。真 Anthropic 官方端点(sk-ant- 前缀直连)则不需要。

GenericAgent 会根据变量名自动判断协议格式:

  • native + claude → NativeClaudeSession(原生 tool 字段)
  • native + oai → NativeOAISession(OpenAI 原生 tool 字段)
  • claude(不含 native)→ ClaudeSession(文本协议工具)

Step 3:启动 GenericAgent

先测试命令行模式是否正常:

python agentmain.py

你应该能看到交互提示符 >。输入一句测试:

> 在桌面创建一个 hello.txt,内容是 Hello World

如果一切正常,Agent 会执行任务并返回结果。

切换到桌面 GUI 模式:

python launch.pyw

Step 4:接入微信 Bot

微信 Bot 支持个人微信扫码登录,接入方式是最简单的。

安装额外依赖

pip install pycryptodome qrcode requests

配置(可选;不配置也能用,但建议设置白名单):

mykey.py 中添加:

# 微信白名单:填写微信 ID;不填则允许所有人
wechat_allowed_users = []

启动微信 Bot

python frontends/wechatapp.py

首次启动会弹出一个二维码窗口,用微信扫码确认。登录成功后,你的微信就变成了与 GenericAgent 对话的入口。

TIP

微信 Bot 的命令与桌面版一样:支持 /new 开始新对话、/continue 恢复历史会话。

Step 5:接入 QQ Bot

QQ Bot 使用 QQ 的官方机器人 API,不需要公网 webhook,通过 WebSocket 长连接接收消息。

安装依赖

pip install qq-botpy

配置

  1. QQ 开放平台 创建机器人,获取 AppID 和 AppSecret
  2. mykey.py 中添加:
qq_app_id = "你的APP_ID"
qq_app_secret = "你的APP_SECRET"
qq_allowed_users = ["用户openid"]  # 或 ['*'] 允许所有人

启动 QQ Bot

python frontends/qqapp.py

当用户首次给机器人发送消息后,该用户的 openid 会记录到 temp/qqapp.log

Step 6:接入飞书 Bot

飞书 Bot 支持多种消息格式:文本、富文本、图片、文件、音频、交互卡片等。

安装依赖

pip install lark-oapi

配置

  1. 去飞书开放平台创建企业自建应用,获取 AppID 和 AppSecret
  2. mykey.py 中添加:
fs_app_id = "cli_xxxxxxxxxxxxxxxx"
fs_app_secret = "xxxxxxxxxxxxxxxx"
fs_allowed_users = ["ou_xxxxxxxxxxxxxxxx"]  # 或 ['*'] 允许所有人

启动飞书 Bot

python frontends/fsapp.py

TIP

飞书 Bot 的亮点之一是 视觉模型支持:图片首轮会以真正的多模态方式发送给兼容 OpenAI Vision 的后端。如果你的 Agent 需要“看”图片,飞书是最好的接入选择。

Step 7:验证与调优

所有 Bot 都支持这些通用命令:

  • /new - 开启新对话,清空当前上下文
  • /continue - 列出可恢复的会话快照
  • /continue N - 恢复第 N 个历史会话

验证多平台同时接入

如果你想同时运行多个 Bot,只需要开多个终端窗口即可:

# 终端 1:微信
python frontends/wechatapp.py

# 终端 2:QQ
python frontends/qqapp.py

# 终端 3:飞书
python frontends/fsapp.py

WARNING

多个 Bot 会共享同一个 memory/temp/ 目录,因此记忆在不同平台间是互通的。这既是优势(跨平台上下文一致),也是潜在风险——确保你的使用场景适合这种设计。


常见问题排查

1:配置 API Key 后报认证错误

原因:变量名写错或 fake_cc_system_prompt 配置不正确

解决

  • 确认变量名包含正确的关键字(如 native_claudeoai_config 等)
  • 中转服务必须设置 fake_cc_system_prompt: True
  • 检查 apibase 是否正确(例如 Defapi 使用 https://api.defapi.org

2:微信扫码后登录失败

原因:微信风控对新设备登录的限制

解决

  • 尝试在手机端确认登录(有时需要手机端二次验证)
  • 确保你的微信账号没有异常行为
  • 降低 Bot 使用频率,避免触发风控

3:QQ Bot 收不到消息

原因:机器人未启用或权限/订阅配置有误

解决

  • 在 QQ 开放平台确认机器人已启用
  • 检查是否添加了正确的事件订阅(需要订阅 私聊消息 事件)
  • 查看 temp/qqapp.log,确认用户 openid 是否正确记录

4:飞书 Bot 响应延迟高

原因:LLM 推理本身较慢或网络延迟较高

解决

  • 选择更快的模型(例如 GPT-4o-mini、MiniMax-M2)
  • 检查从网络到 LLM API 的延迟
  • 适当降低 max_tokens,加快首 token 响应

5:Bot 无法记住对话上下文

原因:执行了 /new 命令或会话超时

解决

  • 使用 /continue 恢复历史会话
  • 确认 memory/ 目录有写入权限
  • 检查 temp/model_responses/ 目录中是否有会话记录

6:运行时报 ModuleNotFoundError

原因:缺少依赖包

解决

# 让 Agent 自己安装依赖
> 请帮我安装所有需要的 Python 依赖

# 或手动安装常见依赖
pip install requests pycryptodome qrcode streamlit pywebview

扩展阅读 / 进阶方向

浏览器自动化能力

解锁 Web 工具后,GenericAgent 可以在保留你登录态的真实浏览器中执行操作:

> 执行 web setup sop,解锁 web 工具

之后你可以这样用:

> 打开淘宝,搜索 iPhone 16,并按价格排序
> 去 B 站,查看我最近看过的历史视频

浏览器插件位于 assets/tmwd_cdp_bridge/,支持 Chrome/Edge 等主流浏览器。

自我进化机制如何运作

GenericAgent 的核心差异在于:完成每个任务后,它会自动把执行路径固化为 Skill。下次遇到类似任务时,它就能直接调用,而不需要重新探索。

这意味着:

  • 用得越久,它越懂你的工作流
  • 技能树完全属于你,不会与他人的“预设技能”雷同
  • 3K 行种子代码可以长出无限可能

Skill 库生态

社区已经积累了百万级 Skill 库公众号文章)。你可以:

  • 让 Agent 搜索:帮我找个做 XXX 的 skill
  • 直接导入:访问 XXX,按照这个 skill 做

进阶模式

GenericAgent 的所有高级功能都是自文档化的——直接问 Agent 即可:

模式问 Agent
Reflect查看你的代码,告诉我你的 reflect 模式怎么启用
计划任务查看你的代码,告诉我你的计划任务模式怎么启用
Plan查看你的代码,告诉我你的 plan 模式怎么启用
子代理查看你的代码,告诉我你的 subagent 模式怎么启用
自主探索查看你的代码,告诉我你的自主探索模式怎么启用

TIP

这也是 GenericAgent 的核心理念:代码即文档。Agent 能读懂它自己的源码,因此你任何功能都可以直接问它。

编程能力对比:与 Claude Code

很多开发者关心一个问题:GenericAgent 能替代 Claude Code 或 Codex 吗?

答案是:能编程,但不能完全替代

GenericAgent 的编程能力

GenericAgent 通过 code_run 工具执行任意代码。配合 file_read/file_write/file_patch 等文件操作,它的编程能力是完整的。只要你把它接上擅长编程的模型(例如 Claude、GPT-4o),它就能:

  • 读写文件
  • 执行命令行
  • 调试代码
  • 解释代码逻辑
# 配置 Claude 作为后端
native_claude_config = {
    'apikey': 'your-key',
    'apibase': 'https://api.defapi.org',
    'model': 'claude-sonnet-4-6',
    'fake_cc_system_prompt': True,
}

然后你就可以用自然语言直接编程:

> 帮我写一个快速排序函数,然后运行测试
> 用 Python 实现一个 HTTP 服务器
> 解释一下这个 React 组件是怎么工作的

与 Claude Code / Codex 的区别

特性GenericAgentClaude Code / Codex
编程能力完整(文件 + 代码执行)完整
上下文消耗<30K token(极省)200K-1M token(更大上下文)
进化能力每次任务沉淀 Skill,会话间积累会话间无状态
部署方式pip install + API KeyCLI 工具 + 订阅

关键区别在于:Claude Code 通过自己的协议和工具链工作(类似 MCP),GenericAgent 无法直接调用它们。但可以通过间接方式实现协作:

方法 1:并行使用 Codeg

Codeg 可以同时启动 GenericAgent + Claude Code + Codex,并在同一个 UI 内协作:

# 把 GenericAgent 和 Codeg 放在同级目录
/workspace/
  ├── GenericAgent/
  └── codeg/

# Codeg 会自动检测到 GenericAgent,然后并行使用

方法 2:通过 API 中转

GenericAgent 的 NativeClaudeSession 使用的是 Claude Code 兼容协议。如果你的中转服务(例如 Defapi)支持 Claude Code 透传,你就可以用 GenericAgent 调用 Claude 的编程能力:

# GenericAgent 通过 Claude 能力编程
native_claude_config = {
    'name': 'claude-defapi',
    'apikey': 'your-defapi-key',
    'apibase': 'https://api.defapi.org',
    'model': 'claude-sonnet-4-6',
    'fake_cc_system_prompt': True,  # Claude Code 协议透传
}

结论

问题答案
GenericAgent 能编程吗?——文件操作 + 代码执行是完整的
能直接调用 Claude Code 吗?不能——Claude Code 是独立工具
能像 Claude Code 那样编程吗?类似,但体验取决于后端模型
能并行使用吗?——Codeg 支持多 Agent 协作

TIP

如果你既想要 Claude Code 的编程体验,又要 GenericAgent 的自动化能力,可以尝试把 Codeg + GenericAgent 组合起来:在同一次对话里,多 Agent 协作——Claude Code 负责写代码,GenericAgent 负责自动化任务。


参考

Updated May 9, 2026