首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >我用 Opencode 做了一个 FakeClawBot

我用 Opencode 做了一个 FakeClawBot

作者头像
Ai学习的老章
发布2026-03-02 21:10:30
发布2026-03-02 21:10:30
630
举报

大家好,我是 Ai 学习的老章

今天聊点不太一样的。我用一个开源项目 OpenCode 的 Server API,花了一个下午,搭了一个自己的 Telegram AI 编程机器人。

我管它叫 FakeClawBot——一个"假的"Claude Code Bot,但它能干的活,一点也不假。

起因:Claude Code 太贵了,但我又离不开它

用过 Claude Code 的人都知道,这货是真能干活——分析项目结构、改代码、写测试、做重构,甚至帮你管理 Git,简直是编程版的贾维斯。但问题是,你得一直开着终端窗口才能用它。

OpenClaw呢,你最好有Mac mini,而且养起来蛮麻烦

我就在想:有没有办法把这种"AI 编程助手"的能力,塞进一个随时随地能用的 Telegram 机器人里? 在地铁上、在咖啡厅里、在床上刷手机的时候,随手给它丢一段代码让它帮我分析?

然后我发现了 OpenCode 的一个关键能力——Server 模式

什么是 OpenCode?

简单说,OpenCode 是一个完全开源的 Claude Code 替代品。

它不仅可以作为一个命令行 Agent 使用(就跟 Claude Code 一样),还有一个杀手锏功能:

代码语言:javascript
复制
opencode serve --port 4096

一行命令,它就变成了一个 HTTP API 服务。所有 Claude Code 能做的事——创建会话、发消息、执行命令、分析代码、管理文件——全部暴露成了 REST API。

这意味着什么?你可以用任何语言、任何平台去调用它。 Web 页面、手机 App、Discord Bot、Telegram Bot……只要能发 HTTP 请求,就能用上 AI 编程的全部能力。

而且 OpenCode 最秀的是它的提供商机制——你可以同时对接各家大模型。Anthropic 的 Claude 用腻了?切换到 Google 的 Gemini 3.1 Pro。硅基流动(SiliconFlow)上的 Kimi-K2.5、MiniMax-M2.5 也能一键接入。这些模型在 OpenCode 的 Agent 框架里跑起来,照样能读文件、写代码、跑命令。

Ollama 已经陆续免费放出 Kimi-K2.5GLM-5MiniMax-M2.5,也可以接进去

动手:从零搭建 FakeClawBot

整个项目的架构其实非常简单粗暴:

代码语言:javascript
复制
Telegram 用户
    ↓ 发消息
Telegram Bot API
    ↓ 转发
bot.py (Python)
    ↓ 调用 HTTP API
OpenCode Server (:4096)
    ↓ 调度大模型
Claude / Gemini / Kimi / GLM ...

用户在 Telegram 里发一句话,bot.py 接住消息,转手通过 HTTP 丢给本地跑着的 OpenCode Server,Server 调度你选好的大模型去干活(读代码、改文件、跑测试),最后把结果返回给 Telegram。

整个项目只有 2 个核心文件:

文件

作用

代码量

bot.py

Telegram Bot 主逻辑

~660 行

opencode_client.py

OpenCode HTTP API 客户端

~220 行

加起来不到 900 行 Python,就把一个全功能的 AI 编程助手机器人搞定了。

第一步:准备环境

你需要以下几样东西:

1. 安装 OpenCode

代码语言:javascript
复制
# macOS
brew install opencode-ai/tap/opencode

# 或者用 npm
npm install -g opencode

2. 从 @BotFather 申请一个 Telegram Bot Token

在 Telegram 里找 @BotFather,输入 /newbot,按提示走完流程,你会拿到一串类似 8784090274:AAGVjK67hSWqmo5-xxxxxxx 的 Token。

3. 克隆项目 & 安装依赖

代码语言:javascript
复制
git clone https://github.com/tjxj/fakeclawbot.git
cd fakeclawbot
pip install -r requirements.txt

依赖超级轻量,就三个包:

代码语言:javascript
复制
python-telegram-bot==20.7
aiohttp==3.9.1
python-dotenv==1.0.0

4. 配置环境变量

代码语言:javascript
复制
cp .env.example .env

然后编辑 .env

代码语言:javascript
复制
TELEGRAM_BOT_TOKEN=你从BotFather拿到的Token
OPENCODE_SERVER_URL=http://127.0.0.1:4096

第二步:配置多模型接入

这是 FakeClawBot 最有意思的地方。通过 OpenCode 的自定义提供商(Custom Provider)机制,你可以把几乎任何 OpenAI 兼容的 API 服务都接进来。

比如我同时接入了以下几个平台:

平台

模型

用途

Quotio(本地代理)

Claude Opus 4.6、Gemini 3.1 Pro 等

主力 Agent 编程

Ollama(本地部署)

GLM-5、Kimi-K2.5、MiniMax-M2.5

隐私敏感场景

SiliconFlow

Kimi-K2.5、GLM-5、MiniMax-M2.5

高性价比云端调用

OpenCode Zen(免费)

多个免费模型

薅官方羊毛

opencode.json(全局配置文件 ~/.config/opencode/opencode.json)里添加一个自定义提供商非常简单:

代码语言:javascript
复制
{
  "provider": {
    "siliconflow": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "SiliconFlow",
      "options": {
        "apiKey": "sk-你的API密钥",
        "baseURL": "https://api.siliconflow.cn/v1"
      },
      "models": {
        "Pro/MiniMaxAI/MiniMax-M2.5": {
          "name": "Pro/MiniMaxAI/MiniMax-M2.5"
        },
        "Pro/moonshotai/Kimi-K2.5": {
          "name": "Pro/moonshotai/Kimi-K2.5"
        },
        "Pro/zai-org/GLM-5": {
          "name": "Pro/zai-org/GLM-5"
        }
      }
    }
  }
}

关键点就是 npm 字段设为 @ai-sdk/openai-compatible,然后填上 baseURLapiKey。就这么简单,OpenCode 就能通过这个接口调用国产大模型了。

第三步:启动!

先在一个终端启动 OpenCode Server:

代码语言:javascript
复制
opencode serve --port 4096

然后在另一个终端启动 Bot:

代码语言:javascript
复制
python3 bot.py

看到 🤖 Bot 已启动! 就说明一切就绪了。

Bot 有哪些功能?

在 Telegram 里发 /help,你会看到完整的命令列表:

命令

功能

/start

开始对话

/new

创建新的编程会话

/sessions

查看所有会话

/switch <id>

切换会话

/model <name>

切换大模型(支持 25 个模型!)

/init

初始化项目(生成 AGENTS.md)

/undo

撤销上一步操作

/status

检查服务器状态

最常用的流程:

  1. /new 创建一个会话
  2. /model 25 切换到 SiliconFlow 的 Kimi-K2.5(或者用数字快速选择其它模型)
  3. 直接发消息:帮我分析一下 src/main.py 的代码结构
  4. 等几秒钟,AI 的分析结果就推送到你手机上了

在地铁上就能 Code Review,在咖啡厅里就能让AI帮你重构,这种感觉真的很爽。

踩过的坑

这个项目虽然简单,但在实际搭建和使用过程中还是踩了一些值得分享的坑:

坑一:模型名称包含多个斜杠

OpenCode 的模型格式是 provider/modelID,比如 quotio/gemini-3.1-pro-high。但 SiliconFlow 的模型名叫 Pro/moonshotai/Kimi-K2.5,拼起来就变成了 siliconflow/Pro/moonshotai/Kimi-K2.5——足足 3 个斜杠!

我最开始在 opencode_client.py 里用 model.split("/") 来拆分提供商和模型名,结果 4 段文字要塞进 2 个变量里,Python 直接抛了 too many values to unpack 的错误。

修复方法很简单:把 split("/") 改成 split("/", 1),只按第一个斜杠切一刀。

代码语言:javascript
复制
# ❌ 错误
provider_id, model_id = model.split("/")

# ✅ 正确
provider_id, model_id = model.split("/", 1)

坑二:Telegram Bot 的"单例监听"限制

一个 Telegram Bot Token 在同一时间只能有一个进程在监听消息(getUpdates 或 Webhook)。如果你同时跑了两个脚本都在拿着同一个 Token 去轮询消息,它们会互相踢下线,导致消息丢送。

但是——纯发送消息不受此限制。所以如果你有其他服务(比如我还做了一个 RSS 定时摘要推送)也需要通过这个 Bot 发消息给你,完全没问题,只要它不去"监听"就行。

核心代码解析

整个项目的精髓在 opencode_client.py 这个文件。它封装了 OpenCode Server 的全部 HTTP API:

代码语言:javascript
复制
class OpenCodeClient:
    asyncdef send_message(self, session_id, content, model=None):
        """发送消息并获取AI回复"""
        body = {
            "parts": [{"type": "text", "text": content}],
        }
        if model:
            provider_id, model_id = model.split("/", 1)
            body["model"] = {
                "providerID": provider_id,
                "modelID": model_id
            }
        returnawait self._request(
            "POST", f"/session/{session_id}/message", json=body
        )

OpenCode Server 的 API 设计非常清晰:

  • POST /session — 创建会话
  • POST /session/{id}/message — 发送消息(同步等待回复)
  • POST /session/{id}/command — 执行斜杠命令(如 /init
  • POST /session/{id}/abort — 中止运行中的任务
  • POST /session/{id}/revert — 撤销操作

模型选择通过请求体中的 model 对象来指定:

代码语言:javascript
复制
{
  "model": {
    "providerID": "siliconflow",
    "modelID": "Pro/moonshotai/Kimi-K2.5"
  }
}

providerID 对应你在 opencode.json 里配置的提供商键名,modelID 对应该提供商下的模型键名。这种设计让模型切换变得极其灵活。

进阶玩法

有了这个基础架构,你还可以做很多有意思的扩展:

  1. 多用户隔离:目前 Bot 已经实现了按 user_id 隔离会话,每个人有独立的会话和模型选择
  2. 定时任务集成:我额外做了一个 RSS 每日技术博客摘要,用同一个 Bot Token 推送给自己,完全不冲突
  3. 接入更多平台:同样的 opencode_client.py,换一个前端就能做成 Discord Bot、Slack Bot、微信机器人……
  4. 团队协作:开启 OpenCode Server 的认证功能,配合内网穿透,你的小团队也能共享这个 AI 编程助手

总结

FakeClawBot 这个项目的核心思路其实就一句话:OpenCode 开放了 HTTP Server API,你可以在上面搭建任何形态的 AI 编程助手。

它不是又一个"套壳 ChatGPT"的聊天机器人。OpenCode 的 Agent 在后端真的能执行文件操作、代码分析、项目初始化这些"干活"的能力。你只是把终端窗口换成了 Telegram 窗口。

优点:

  • 开源免费,代码不到 900 行,部署简单
  • 支持 25+ 个模型自由切换,国产模型也能跑 Agent
  • 随时随地通过手机使用 AI 编程能力
  • 架构简洁,容易二次开发

不足 / 局限:

  • 需要本地跑一个 OpenCode Server(你的电脑得开着)
  • Telegram 单条消息 4096 字符限制,超长回复需要分块(我已经写好解决方案了)
  • 不能直接传文件给 Bot(未来可以加)

GitHub 地址:https://github.com/tjxj/fakeclawbot OpenCode

官方文档:https://opencode.ai/docs/zh-cn/server/

如果你也在用 OpenCode 或者 Claude Code,强烈建议你试试这个玩法。把 AI 编程助手搬到手机上,真的会让你对"随时随地写代码"有一个全新的认知。

#OpenCode #Telegram #Bot #AI编程 #Agent

制作不易,如果这篇文章觉得对你有用,可否点个关注。给我个三连击:点赞、转发和在看。若可以再给我加个🌟,谢谢你看我的文章,我们下篇再见!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-02-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器学习与统计学 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 起因:Claude Code 太贵了,但我又离不开它
  • 什么是 OpenCode?
  • 动手:从零搭建 FakeClawBot
  • 第一步:准备环境
  • 第二步:配置多模型接入
  • 第三步:启动!
  • Bot 有哪些功能?
  • 踩过的坑
  • 核心代码解析
  • 进阶玩法
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档