结论:可以精简,但不建议“一刀切删功能”。最高收益是先删除未跟踪备份文件,再按边界拆分巨型入口/服务/Lark/Telegram turn 文件,最后再做跨 Telegram/Lark 的命令语义去重。
| 项目 | 结果 | 说明 |
|---|---|---|
| 工作区 | 有未提交改动 | 19 个 tracked 改动/暂存混合项 + 10 个 untracked 文件。精简前必须先备份或建分支。 |
| 构建 | 通过 | npm run build 成功。 |
| 定向测试 | 1 个失败 | 6 个测试文件、97 个用例中 1 个失败:Antigravity /model 期望文案与实际文案不一致。精简前应先修复或记录为已知基线。 |
| pygount | 未安装 | 使用本地 Python 行数统计替代。 |
| 区域 | 文件数 | 行数 | 判断 |
|---|---|---|---|
| src | 171 | 57,043 | 业务代码已是中大型项目,入口/服务/消息 turn 有明显巨型文件。 |
| tests | 95 | 60,054 | 测试规模大于源码;不建议删覆盖,建议拆分巨型测试。 |
| docs | 19 | 7,234 | 可归档旧 plans,但文档总体不算主要负担。 |
| scripts | 12 | 546 | 体量小;主要判断是否仍需要遗留脚本。 |
| 优先级 | 目标 | 证据 | 建议 | 风险 |
|---|---|---|---|---|
| 1 | 删除未跟踪 .bak 文件 | src/index.ts.bak-*、src/service.ts.bak-*、src/telegram/simple-commands.ts.bak-* | 先移动到临时归档或直接删除;这些不在 Git 跟踪且无引用。 | 低 |
| 2 | 拆 src/commands/cli.ts | 约 4,501 行,是 src 最大文件。 | 按子命令拆为 configure/send/lark/service/session/task/audit/timeline/instructions/engine/usage/dashboard/logs/backup/restore。 | 中:CLI 参数兼容敏感。 |
| 3 | 拆 src/service.ts | 约 1,763 行,混合 env、bootstrap、迁移、adapter 创建、polling。 | 拆为 service/env、service/bootstrap、service/bridge-factory、service/poller。 | 中高:启动和迁移链敏感。 |
| 4 | 拆 src/lark/commands.ts | 约 2,009 行,命令总桶。 | 按 help/status/usage、model/effort/fast/engine/yolo、session/group、goal/cron/workspace 拆。 | 中:Lark 文案/card 格式需保持一致。 |
| 5 | 拆 src/lark/card-actions.ts | 约 1,662 行,审批、AskUser、config card、fallback 混合。 | 拆 approval、ask-user-question、config-actions、renderers。 | 高:审批状态机不可破坏。 |
| 6 | 拆 src/telegram/message-turn.ts | 约 1,087 行,是 Telegram turn 核心。 | 拆 preprocess、delivery-ledger、stream-events、workflow。 | 高:投递去重、文件发送、stream 顺序敏感。 |
| 7 | 抽 Telegram/Lark 共享命令语义 | simple-commands.ts 与 lark/commands.ts 有 model/effort/fast/status/usage 等重复语义。 | 先抽纯逻辑,再保留各平台渲染层。 | 中:渠道差异不能被过度抽象。 |
| 分类 | 文件/模块 | 建议 |
|---|---|---|
| 可安全删除 | src/index.ts.bak-20260521-220718src/service.ts.bak-20260521-220718src/telegram/simple-commands.ts.bak-20260521-220013src/telegram/simple-commands.ts.bak-20260521-220718src/telegram/simple-commands.ts.bak-20260521-221142 | 未跟踪、无引用、典型本地备份残留。先删这些是低风险瘦身。 |
| 需确认再删 | cctb-codex.servicescripts/qodercli-codex-wrapper.mjsscripts/smoke-tdai-recall.mjssrc/runtime/tdai-capture.tssrc/runtime/tdai-recall.ts | 可能是近期本地功能或部署入口。尤其 tdai 被 message-turn.ts 和 package script 关联,不应直接删。 |
| 不建议删除 | src/telegram/legacy-delivery-tool-tags.tsscripts/cleanup-legacy-launchd.sh大型测试文件 | 虽带 legacy 字样,但有直接引用和测试覆盖。应等兼容窗口结束后再移除。 |
| 文件 | 行数 | 建议 |
|---|---|---|
tests/lark-service.test.ts | 10,337 | 拆测试,不删覆盖。 |
tests/service.test.ts | 7,942 | 按 bootstrap/polling/adapter/service lifecycle 拆。 |
src/commands/cli.ts | 4,501 | 第一优先拆分。 |
tests/cli.test.ts | 4,490 | 跟随 CLI 拆分同步拆测试。 |
tests/telegram-message-turn.test.ts | 4,040 | 跟随 message-turn 子模块拆分。 |
src/lark/commands.ts | 2,009 | 按命令族拆。 |
src/service.ts | 1,763 | 拆启动/迁移/polling。 |
src/lark/card-actions.ts | 1,662 | 拆审批/配置/问答卡。 |
src/codex/app-server-adapter.ts | 1,626 | 中后期再拆 adapter session/event handling。 |
.bak 文件,运行 npm run build。/model 的 1 个失败。src/commands/cli.ts,只移动代码不改行为。可以精简,且有明确低风险入口;但真正收益不在“删很多代码”,而在把 CLI、service、Lark command/card、Telegram turn 这些巨型职责拆开,让后续维护成本下降。