GoForum🌐 V2EX

ClawRelay — 用不习惯 OpenClaw,我自己撸了一个 Claude Code 调度器

chenshuoshi · 2026-02-27 00:12 · 0 次点赞 · 7 条回复

起因

先说结论:用了一个假期的 OpenClaw 之后,我决定自己造一个。

不是 OpenClaw 不好,Telegram UI 确实香,但用深了之后问题实在太多,多到我一个写代码的人每天花一半时间在跟工具较劲,而不是在干活。

痛点一:发了消息之后完全不知道它在干什么

这是最让我抓狂的。你给 Claude 一个任务,然后呢?然后就是对着 Telegram 聊天窗口干瞪眼。它在读文件?在跑命令?在思考人生?你不知道。配了消息切分也不行——切太碎 Telegram 直接 429 ,指数退避之后两条消息要等 10 分钟才发出来。10 分钟。你坐在那里等 10 分钟看一条消息,这体验跟拨号上网有什么区别?

痛点二:两个 Agent 打架

这是架构层面的硬伤。Claude Code 本身已经是一个非常成熟的 Agent 了,有完整的工具链:Bash 、Read 、Write 、Edit 、Grep 、WebSearch……它自己就能干活。但 OpenClaw 的 pi-mono 框架也是个 Agent ,也想管事。结果就是两个 Agent 互相抢活干,你不得不把 Claude 本来就能做的事情委托给 OpenClaw 去调度,这太不 AI 了。

说白了我需要的只是一个监工 + 调度器,不是另一个 Agent 。那堆 SAUL 和 SKILL 对我来说完全用不上——Claude 自己就能做。唯一算有点用的计划任务和 heartbeat ,对稍微有点经验的人来说也是鸡肋。

痛点三:Anthropic 封了 OpenClaw

嗯,这个不多说了。


所以我做了 ClawRelay

架构图一目了然:

Flutter 桌面客户端
    ↓ HTTP/SSE ( OpenAI 兼容协议)
Go Relay Server (:50009 )
    ↓ subprocess fork
Claude Code CLI (带完整工具链)
    ↓
Anthropic API → Claude Opus/Sonnet/Haiku

核心设计哲学:Claude Code 是干活的人,ClawRelay 只是给它装了个好看的壳。

不抢活,不加戏,不搞中间商赚差价。Go relay 是一个无状态的透传层,把 Claude Code 的 stream-json 转成 OpenAI 兼容的 SSE 格式,Flutter 客户端接住渲染。所有工具调用、文件读写、命令执行,全部由 Claude Code 自己搞定。

你能看到 Claude 在干什么

这是我最在意的功能。消息发出去之后:

  • 实时 token 流:Claude 打一个字你就看到一个字
  • Extended Thinking 面板:Claude 的思考过程实时展示,默认折叠,点开看完整思维链
  • Tool Call 标签:Claude 每调用一个工具,底部就多一个 chip——Bash 、Read 、Edit 、WebSearch……一目了然

再也不用对着屏幕发呆猜它在干嘛了。

多项目管理

每个项目独立配置:

  • 工作目录( Claude 在哪个目录下干活)
  • System Prompt (你的个性化指令)
  • 模型选择( Opus / Sonnet / Haiku 随便切)
  • 独立的消息历史,SQLite 本地持久化

项目之间互不干扰,有新消息还会亮未读标记。同时盯三四个项目的进度完全没问题。

OpenAI 兼容协议

/v1/chat/completions,标准的 OpenAI API 格式。这意味着理论上你可以用任何支持 OpenAI API 的客户端连上来。Go relay 做了模型别名映射:gpt-4 → Opus ,gpt-4o → Sonnet ,gpt-3.5-turbo → Haiku 。还有 /v1/stats 端点追踪 token 用量。


技术栈

组件 技术
桌面客户端 Flutter + Riverpod + Drift(SQLite) + Material Design 3
Relay 服务 Go 1.24 ,无框架,subprocess 管理
流式传输 SSE ( Server-Sent Events )
本地存储 SQLite (~/.config/clawrelay/clawrelay.sqlite )

整个项目没用什么花里胡哨的依赖,Go 后端甚至没引 web 框架,标准库直接撸。


跟 OpenClaw 的本质区别

OpenClaw ClawRelay
架构 Agent 调度 Agent 纯 UI 壳 + 透传 Relay
工具执行 框架接管 Claude Code 原生执行
UI Telegram Bot Flutter 原生桌面应用
消息延迟 受 Telegram API 限制 本地直连,零延迟
可观测性 黑盒 实时 streaming + thinking + tool chips
复杂度 重( pi-mono + SAUL + SKILL ) 轻(一个 Go binary + 一个 Flutter app )

手机上和电脑上之前都没法愉快地做监工,现在终于舒服了。


最后

代码已开源,欢迎 PR:https://github.com/roodkcab/clawrelay

如果你也是 Claude Code 重度用户,如果你也受够了终端的不好体验或者对着 Telegram 猜 Claude 在干什么,试试 ClawRelay 。

它不多管闲事,不跟 Claude 抢活干,只做一件事:随时随地让你清清楚楚地看到 Claude Code 在帮你干什么。


一个假期的怨气,化成了代码。

ClawRelay

7 条回复
andforce · 2026-02-27 00:32
#1

知识点有点密集,收藏学习

yukinotech · 2026-02-27 01:22
#2

啊?那和直接用 claude code 有啥区别?没看懂,解决了什么问题,似乎变成了在应用里面调用 Claude code 了,还有别的不一样的地方吗

MHPSY · 2026-02-27 01:37
#3

是我准备要搞的东西,start 了,睡醒就开始用

Aquariuslt · 2026-02-27 06:27
#4

不抢活,不加戏,不搞中间商赚差价。

看文章看到这个 AI 修饰语气有点不适。

Edward4074 · 2026-02-27 06:42
#5

@yukinotech 大概是有点类似 codex cli 和 codex 客户端的关系吧

win8en · 2026-02-27 06:47
#6

@yukinotech 正是我想问的

yadorez · 2026-02-27 08:02
#7

@yukinotech 因为我有 7-8 个项目需要并行处理,我需要的是一个调度器,最好是能远程的.手机上之前用 terminus+tmux+claude code,体验上太难用了,我需要看到 thinking 和看聊天记录,然后好几个项目来回切过于难受了.

看到 openclaw,第一时间就想到可以用来做调度工具,实际上确实有人这么做了,tmux 负责接管标准输入输出,然后由 openclaw 调度任务,每 10 分钟做一次状态管理,是一种高级的拉尔夫循环

我之前也是这么做的,直到 cc 开始封禁 openclaw,我自己弄了个 openai compatible streaming api 继续用,但是也很不爽,触发了 telegram 封禁后,10 分钟才能看到返回的消息

加上 openclaw 过于笨重,所以自己搞一个最轻量的远程调度器是最爽的

添加回复
你还需要 登录 后发表回复

登录后可发帖和回复

登录 注册
主题信息
作者: chenshuoshi
发布: 2026-02-27
点赞: 0
回复: 0