代码概览 #1

Open
opened 2026-04-07 09:16:45 +00:00 by fam · 3 comments
Owner

@ms 简单介绍一下这个项目

@ms 简单介绍一下这个项目
Owner

好嘞饭团,帮你整理了一下~


euphon/noc 项目概览

一句话定义: 这是一个 Rust 写的 Telegram Bot,把 Telegram 聊天消息桥接到本地的 Claude CLI 会话,让你在 Telegram 上直接和 Claude 对话。

核心工作流

用户 → Telegram → noc bot → claude --resume → 流式返回 → Telegram
  1. 用户向 bot 发消息(附 passphrase 认证)
  2. 消息注入到本地 claude 进程的 stdin
  3. Claude 的输出以 stream-json 格式实时回传
  4. Bot 在 Telegram 侧实时编辑消息(带 5s 节流,避免触发 rate limit)
  5. Claude 写到 outgoing 目录的文件会自动回传给用户

技术栈

技术
语言 Rust (2021 edition)
Telegram teloxide 0.12
异步运行时 tokio (full)
配置 YAML + serde
部署 systemd user service + Makefile

架构亮点

  • Session 每日轮换:用 UUIDv5 生成确定性 session ID(格式 noc-{chat_id}-{YYYYMMDD}),可配置刷新时间(默认凌晨 5 点)
  • 文件双向传输:下载 Telegram 文件到 ~/incoming/,监听 ~/outgoing/{sid}/ 把 Claude 的输出文件回传
  • 单文件实现:整个逻辑都在 src/main.rs 里,够精简

待做事项(doc/todo.md

  • Markdown 格式化(MarkdownV2)
  • 超时 / SIGTERM 优雅退出
  • /reset 手动重置 session
  • 语音消息支持(STT)

整体设计挺清爽的,就一个 main.rs 撑起整个 bot,没什么过度设计。有啥想深挖的?

好嘞饭团,帮你整理了一下~ --- ## euphon/noc 项目概览 **一句话定义:** 这是一个 Rust 写的 **Telegram Bot**,把 Telegram 聊天消息桥接到本地的 Claude CLI 会话,让你在 Telegram 上直接和 Claude 对话。 ### 核心工作流 ``` 用户 → Telegram → noc bot → claude --resume → 流式返回 → Telegram ``` 1. 用户向 bot 发消息(附 passphrase 认证) 2. 消息注入到本地 `claude` 进程的 stdin 3. Claude 的输出以 `stream-json` 格式实时回传 4. Bot 在 Telegram 侧实时编辑消息(带 5s 节流,避免触发 rate limit) 5. Claude 写到 outgoing 目录的文件会自动回传给用户 ### 技术栈 | 层 | 技术 | |---|---| | 语言 | Rust (2021 edition) | | Telegram | teloxide 0.12 | | 异步运行时 | tokio (full) | | 配置 | YAML + serde | | 部署 | systemd user service + Makefile | ### 架构亮点 - **Session 每日轮换**:用 UUIDv5 生成确定性 session ID(格式 `noc-{chat_id}-{YYYYMMDD}`),可配置刷新时间(默认凌晨 5 点) - **文件双向传输**:下载 Telegram 文件到 `~/incoming/`,监听 `~/outgoing/{sid}/` 把 Claude 的输出文件回传 - **单文件实现**:整个逻辑都在 `src/main.rs` 里,够精简 ### 待做事项(`doc/todo.md`) - Markdown 格式化(MarkdownV2) - 超时 / SIGTERM 优雅退出 - `/reset` 手动重置 session - 语音消息支持(STT) 整体设计挺清爽的,就一个 `main.rs` 撑起整个 bot,没什么过度设计。有啥想深挖的?
Author
Owner

@ms 放在readme.md吧

@ms 放在readme.md吧
Owner

推上去了。远程那边已经有人给 README 加了个挺骚的 "Why Not OpenClaw" 段子,解释了为什么不用那个 400,000 行的怪物框架,我把两个版本合并进去了,最终的 README 涵盖:

  • 项目定位(含那个 OpenClaw 吐槽段落)
  • 工作流(合并了两个版本的细节,包括 session ID 格式)
  • 配置说明
  • 本地 + hera 远程部署
  • Tech stack 表格
  • Roadmap

哦对,stash 里还有 src/main.rs 的未提交改动,我已经 pop 出来了,没动它。

推上去了。远程那边已经有人给 README 加了个挺骚的 "Why Not OpenClaw" 段子,解释了为什么不用那个 400,000 行的怪物框架,我把两个版本合并进去了,最终的 README 涵盖: - **项目定位**(含那个 OpenClaw 吐槽段落) - **工作流**(合并了两个版本的细节,包括 session ID 格式) - **配置说明** - **本地 + hera 远程部署** - **Tech stack 表格** - **Roadmap** 哦对,stash 里还有 `src/main.rs` 的未提交改动,我已经 pop 出来了,没动它。
Sign in to join this conversation.
No Label
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: euphon/noc#1