TaroCub 代码精简评估

生成时间:2026-06-14;对象:/root/cc-telegram-bridge;方式:只读统计 + 依赖/遗留扫描 + 构建/定向测试验证 + 2 个子评审。

结论:可以精简,但不建议“一刀切删功能”。最高收益是先删除未跟踪备份文件,再按边界拆分巨型入口/服务/Lark/Telegram turn 文件,最后再做跨 Telegram/Lark 的命令语义去重。

当前基线

项目结果说明
工作区有未提交改动19 个 tracked 改动/暂存混合项 + 10 个 untracked 文件。精简前必须先备份或建分支。
构建通过npm run build 成功。
定向测试1 个失败6 个测试文件、97 个用例中 1 个失败:Antigravity /model 期望文案与实际文案不一致。精简前应先修复或记录为已知基线。
pygount未安装使用本地 Python 行数统计替代。

规模画像

区域文件数行数判断
src17157,043业务代码已是中大型项目,入口/服务/消息 turn 有明显巨型文件。
tests9560,054测试规模大于源码;不建议删覆盖,建议拆分巨型测试。
docs197,234可归档旧 plans,但文档总体不算主要负担。
scripts12546体量小;主要判断是否仍需要遗留脚本。

优先精简路线

优先级目标证据建议风险
1删除未跟踪 .bak 文件src/index.ts.bak-*src/service.ts.bak-*src/telegram/simple-commands.ts.bak-*先移动到临时归档或直接删除;这些不在 Git 跟踪且无引用。
2src/commands/cli.ts约 4,501 行,是 src 最大文件。按子命令拆为 configure/send/lark/service/session/task/audit/timeline/instructions/engine/usage/dashboard/logs/backup/restore。中:CLI 参数兼容敏感。
3src/service.ts约 1,763 行,混合 env、bootstrap、迁移、adapter 创建、polling。拆为 service/env、service/bootstrap、service/bridge-factory、service/poller。中高:启动和迁移链敏感。
4src/lark/commands.ts约 2,009 行,命令总桶。按 help/status/usage、model/effort/fast/engine/yolo、session/group、goal/cron/workspace 拆。中:Lark 文案/card 格式需保持一致。
5src/lark/card-actions.ts约 1,662 行,审批、AskUser、config card、fallback 混合。拆 approval、ask-user-question、config-actions、renderers。高:审批状态机不可破坏。
6src/telegram/message-turn.ts约 1,087 行,是 Telegram turn 核心。拆 preprocess、delivery-ledger、stream-events、workflow。高:投递去重、文件发送、stream 顺序敏感。
7抽 Telegram/Lark 共享命令语义simple-commands.tslark/commands.ts 有 model/effort/fast/status/usage 等重复语义。先抽纯逻辑,再保留各平台渲染层。中:渠道差异不能被过度抽象。

可删除 / 需确认 / 不建议删除

分类文件/模块建议
可安全删除src/index.ts.bak-20260521-220718
src/service.ts.bak-20260521-220718
src/telegram/simple-commands.ts.bak-20260521-220013
src/telegram/simple-commands.ts.bak-20260521-220718
src/telegram/simple-commands.ts.bak-20260521-221142
未跟踪、无引用、典型本地备份残留。先删这些是低风险瘦身。
需确认再删cctb-codex.service
scripts/qodercli-codex-wrapper.mjs
scripts/smoke-tdai-recall.mjs
src/runtime/tdai-capture.ts
src/runtime/tdai-recall.ts
可能是近期本地功能或部署入口。尤其 tdai 被 message-turn.ts 和 package script 关联,不应直接删。
不建议删除src/telegram/legacy-delivery-tool-tags.ts
scripts/cleanup-legacy-launchd.sh
大型测试文件
虽带 legacy 字样,但有直接引用和测试覆盖。应等兼容窗口结束后再移除。

最大文件清单

文件行数建议
tests/lark-service.test.ts10,337拆测试,不删覆盖。
tests/service.test.ts7,942按 bootstrap/polling/adapter/service lifecycle 拆。
src/commands/cli.ts4,501第一优先拆分。
tests/cli.test.ts4,490跟随 CLI 拆分同步拆测试。
tests/telegram-message-turn.test.ts4,040跟随 message-turn 子模块拆分。
src/lark/commands.ts2,009按命令族拆。
src/service.ts1,763拆启动/迁移/polling。
src/lark/card-actions.ts1,662拆审批/配置/问答卡。
src/codex/app-server-adapter.ts1,626中后期再拆 adapter session/event handling。

推荐执行顺序

  1. 先新建分支或 stash 当前改动,避免精简混入现有功能改动。
  2. 删除 5 个 untracked .bak 文件,运行 npm run build
  3. 修复或记录当前测试基线中 Antigravity /model 的 1 个失败。
  4. 做纯搬迁型拆分:先 src/commands/cli.ts,只移动代码不改行为。
  5. 每拆一组,运行对应定向测试;不要一次性重构多个高风险 turn/approval/polling 路径。
  6. 最后再做共享命令语义抽象,避免早期过度抽象。

一句话判断

可以精简,且有明确低风险入口;但真正收益不在“删很多代码”,而在把 CLI、service、Lark command/card、Telegram turn 这些巨型职责拆开,让后续维护成本下降。