Repository navigation
refactor: 全仓死代码与杂物清理并开启 noUnusedLocals(约 −11k 行) - #1849
Merged
Merged
Conversation
deepcoldy
requested review from
47seek,
LucasIcarus,
xiaoxueSunn and
xiongz-c
as code owners
October 13, 2026 01:39
Owner
Author
|
自动评审初步意见(维护者审阅为准): 整体结论:0 个阻断项(P1/P2),1 个 P3 小尾巴,可以进入合码流程(需先合 #1848)。 核验方式与结果:
P3(不阻断,顺手清理): 合码注意(非代码问题):
|
Owner
Author
|
自动复审(独立验证,与首审并行): 结论:0 个阻断项,同意可进入合码流程(先合 #1848)。复现并确认了首审的结论,另把几处首审未展开的点查实如下。 审查范围:仅看本分支 6 个 commit 相对 #1848 head( 独立复现的验证
补充核实的删除安全性(首审未展开的点)
P3(同首审,不阻断)
合码注意
未改动作者提交、未 force-push。 |
- 删除根目录误提交的 tmux-client-2881929.log(并加入 .gitignore)、无引用的 ROLE_PROFILE_PLAN.md、pm2 时代的 ecosystem.config.cjs - 删除 11 个全仓零引用的一次性脚本(probe / verify / dogfood / 迁移脚本) - 删除 v2 演示 workflows/*.workflow.json 及只调用已下线命令的 dogfood-o1.sh - 删除 docs/pr-803-round5-* 评审过程产物(git 历史保留) - docs-site workflow 文档:去掉已下线的 v0.2 模板章节(/template run、 workflow ls/tail/resume/validate 现均报错),改为现行的 Saved Workflow 与 v2 离线迁移说明,并注明 Workflow 默认关闭及开启方式 - 依赖:删除 10-10 起已无 import 的 smol-toml;@xterm/addon-unicode11 仅被 脚本与测试使用(web 终端走 CDN),降为 devDependency。bun.lock 手工最小 编辑,已用 `bun install --frozen-lockfile --dry-run` 校验一致 - 保留 @playwright/test:@midscene/web/playwright 入口静态 import 它
以 import 图(26 个生产入口)+ 全仓 grep 双重核实,以下模块只被测试引用: - services/codex-app-turn-controller.ts(逻辑已内联进 codex-app-runner) - adapters/cli/append-system-discovery.ts 及 buildPiArgs 的 appendSystemPrompt 选项(pi 已改走扩展注入,生产从不传该选项) - services/traex-user-input.ts(已由 RPC 桥接取代) - core/ask-hook/codex.ts:parseQuestions 恒 null、passthrough 恒空串,与 "无 adapter" 路径对外行为一致,同步从 registry 去掉注册 - cli/log-tail.ts、cli/pm2-env.ts、cli/supervisor-shutdown-client.ts、 core/supervisor-shutdown-protocol.ts、dashboard/web/substitute-targets.ts、 im/types.ts、workflows/hostExecutors/index.ts(零引用 barrel) TmuxBackend:session-backend-selector 对 tmux 一律 new TmuxPipeBackend,全仓 无 new/extends TmuxBackend。删除其实例部分(构造器、spawn/write/paste/ copy-mode/attach 等约 415 行),保留生产仍在用的静态方法与导出工具函数。 测试:TmuxPipeBackend 已有等价覆盖的用例直接删除;POSIX 启动 argv 与 e2e 用例改写到 TmuxPipeBackend 上。 刻意保留:dispatch-launch-*(预留协议)、sqlite-durable-coordination(在建)。
均经全仓 grep(src/test/scripts/packages)核实无生产调用方: - daemon:VC consumer 指令构建与注入标记(buildVcMeetingConsumerInstruction、 markVcMeetingConsumerTranscriptItemsInjected)及只服务它们的常量/间隔函数 - worker-pool:case 'tui_prompt' —— 唯一生产者 ScreenAnalyzer 已于 27305e6 删除,ds.tuiPromptCardId 此后不再被写入;同步从 WorkerToDaemon 联合移除该 成员(tui_prompt_resolved / _submit_failed 仍在用,保留)。另删零调用的 reparkUnsubmittedQueuedActivation 与两个零引用 __testOnly_ 导出 - session-manager:suspendActiveSessionsForBot(调用方已不存在)、 buildReforkPrompt(已被 buildReforkCliInput 取代) - card-builder:buildDetouredPendingResponseCard、buildGrantNotifyCard - bot-registry:isChatOncallBoundForAnyBot、从未实现的 idleDays 字段 - ws-proxy-agent:createLarkWsAgent;overload-nonce:_overloadNonceCountForTest - types:botClassifyDeadlineAt;command-handler:6 个无人 import 的类型再导出 - config:单 bot .env 时代残留的 config.lark / daemon.cliPathOverride / daemon.allowedUsers,以及无读取方的 herdrTraexPlugin、cardBrandLabelEnabled getter(生产走 bot-registry.isCardBrandLabelEnabled) - global-config:herdr `spec` 字段迁移 —— 该 schema 引入与修复之间无任何 发布 tag,从未对外发布 - cli:cd 命令对旧 daemon 'inject' 模式的兼容分支(daemon 只返回 respawn-resume / cold-restart) 测试同步:删除驱动已删 tui_prompt handler 的用例(含一条已变成恒真的 doc-native 用例),其余改测仍存活的等价函数。
- 死 endpoint(前端/CLI/脚本/文档均无调用方): PUT /api/bots/:id/summary-trigger(自称 short-lived 兼容别名,前端已改用 summary-range)及其 IPC 路由;PUT /api/bots/:id/default-oncall 及其 IPC 路由(GET 仍被 /api/bots 使用,保留) - 12 个零引用导出及随之变孤儿的内部组件/函数(SplitPane、PaneTree*、 localizeEvidence 等) - 死 i18n key:web 字典 127 个、后端 zh/en 各 74 个。以 AST 提取模板/拼接 调用做前缀匹配,凡可能被动态拼出的 key 整组保留(web 212 个、后端 57 个) - 死 CSS:78 个 class 的 210 条规则。动态拼接前后缀命中的 class、:root/主题 选择器、组合选择器中任一部分仍存活的规则一律保留;已用 esbuild 与 postcss 重新解析校验 刻意保留:POST /api/bot-onboarding/recover-permissions(MOSA 权限恢复状态机 唯一 HTTP 入口,外部 wrapper 依赖)、dashboard-command/stub.ts 兜底(有测试钉住)。
/effort 切档确认框的回归(唯一调用点在合并中被冲掉,函数沦为未使用的局部 函数、功能静默失效)说明:未使用的局部符号既可能是死代码,也可能是丢失的 接线。开启 noUnusedLocals 让这类"孤儿"在编译期暴露,并逐个溯源处理: - 删除 104 个未使用的 import(无 verbatimModuleSyntax,编译产物本就会丢弃, 不存在副作用 import 被误删) - 删除 36 个死局部符号:每个都用 git log -S / -L 查到最后一个读者消失于哪次 有意重构(或"出生即未读")。其中 cli.ts 一批 pm2 时代残留(#873)、 event-dispatcher 的 mentionMatchesBot(#617 收敛为 messageMentionsBot)、 codex-app-runner 从未被读取的 private 构造参数属性、zellij-backend 从未被 读取的 paneId / configPath 字段等 - 保留并标记:cli.ts 的 dispatch(有源码锁测试)、desktop 的 tray(持有引用 防 GC)、tmux-pipe 的 fifoFd(测试 fixture 读取)、session-commands 的编译期 类型断言 - 审查中另发现两处丢失接线,已作为独立修复提交在本分支之前:trigger-session 新建会话绕过 setActiveSessionIfActive 的隔离路由检查;daemon 冷启动透传丢弃 substitute 标记 - tsconfig.scripts.json 继承主配置后暴露的 2 处脚本未用 import 一并删除 三套 tsconfig(主 / scripts / test-mocks)均零错误。
test/e2e-browser 与 test/midscene 的 tsconfig 继承主 tsconfig,开启 noUnusedLocals 后 feishu-schedule.e2e.ts 未使用的 sendThreadReply import 让 test:midscene:typecheck 失败。逐个核对了所有继承主配置的 tsconfig, 仅此一处。
rebase 合入最新 master 后,主干经 c25f073 新增的 mock-llm-server 两个文件 未满足本分支开启的 noUnusedLocals:recorder.ts 未用的 extractMarkerFromMessages 导入、server.ts handleOpenAiChat 内从未读取的 lastMsg 局部变量。 Co-Authored-By: Claude Code <noreply@anthropic.com>
deepcoldy
force-pushed
the
chore/prune-dead-code
branch
from
October 13, 2026 04:31
bbe44c2 to
367254f
Compare
deepcoldy
changed the base branch from
fix/effort-confirm-and-audit-bugs
to
master
October 13, 2026 04:33
|
🚀 Released in v3.43.0 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
改了什么
全仓死代码与杂物清理,并开启
noUnusedLocals,净删约 11k 行。分 5 个提交,可逐个 review:tmux-client-*.log(并加入 .gitignore)、无引用的ROLE_PROFILE_PLAN.md、pm2 时代的ecosystem.config.cjs。workflows/*.workflow.json与只调用已下线命令的dogfood-o1.sh、docs/pr-803-round5-*评审产物。/template run、workflow ls/tail/resume/validate现均报错),改为现行的 Saved Workflow 与 v2 离线迁移说明,并注明 Workflow 默认关闭。smol-toml;@xterm/addon-unicode11降为 devDependency(web 终端走 CDN)。bun.lock手工最小编辑,已用bun install --frozen-lockfile --dry-run校验。@playwright/test保留,因为@midscene/web/playwright入口静态 import 它。codex-app-turn-controller、append-system-discovery(及buildPiArgs.appendSystemPrompt)、traex-user-input、ask-hook/codex(与无 adapter 行为等价)、cli/{log-tail,pm2-env,supervisor-shutdown-client}等。new TmuxPipeBackend,删其实例实现约 415 行,保留生产在用的静态方法。测试改写到 TmuxPipeBackend。case 'tui_prompt':唯一生产者 ScreenAnalyzer 已在 7 月删除。suspendActiveSessionsForBot、buildReforkPrompt、单 bot.env时代的config.lark/daemon.allowedUsers等。spec迁移。PUT summary-trigger、PUT default-oncall。noUnusedLocalsgit log -S溯源。刻意保留:
dispatch-launch-*(预留协议)、sqlite-durable-coordination(在建)、POST recover-permissions(权限恢复状态机唯一 HTTP 入口)、docs/assets下未引用图片(历史 PR 描述可能按 master 路径引用)。影响面
纯删除,不改任何存活路径的行为。动到的公共层:
core/(worker-pool、session-manager、command-handler)、config.ts、bot-registry.ts、im/lark/。每处删除前都核实过全仓(src / test / scripts / packages)无生产引用,并检查了字符串路径引用、动态 import、打包脚本入口、按dist/*.js路径 spawn 等间接引用。会话后端只动了 TmuxBackend 的不可达实例部分,tmux 会话一直走 TmuxPipeBackend。验证
noUnusedLocals: true下零错误。vitest --project unit:用--reporter=json分别跑未改动的 master 与本分支,按用例做差集,零新增失败。本机 master 自带约 58 个环境性失败文件(react 副本重复、缺 dist 等),本分支降到 49 个,减少的是随死代码一并删除的测试。npx vitest run --project e2e test/tmux-backend.e2e.ts:5 通过、1 跳过(bwrap 仅 Linux)。bun run build通过,生成物与已提交版本逐字节一致。style.css,语法完整。删除的都是零引用 class,不应有视觉变化。