diff --git a/clean-audit.md b/clean-audit.md deleted file mode 100644 index e1980442c..000000000 --- a/clean-audit.md +++ /dev/null @@ -1,250 +0,0 @@ - -# 仓库审计发现 - -日期: 2026-04-24 -范围: 针对当前仓库状态验证三项已报告的问题 -工作区: `E:\Source_code\Claude-code-bast` - -repo-audit-findings-2026-04-24-zh.md -11 KB -在不处理要屎山了啊 -claude-code-best — 22:50 -我这边修吧, 残余数据还是多了点 - -amDosion -xc0455 -# 仓库审计发现 - -日期: 2026-04-24 -范围: 针对当前仓库状态验证三项已报告的问题 -工作区: `E:\Source_code\Claude-code-bast` - -## 摘要 - -本次审计检查了三项已报告的问题: - -1. `yoga-layout` 重复实现 -2. `src/` 下 `105` 个目录中存在 `621` 个死类型 stub 文件 -3. `CLAUDE.md` 包含六处不准确陈述 - -当前结论: - -- `yoga-layout` 重复实现:**已确认** -- `621 个死类型 stub 文件分布在 105 个目录`:**部分确认** -- `CLAUDE.md` 包含六处不准确陈述:**已确认** - -主要偏差在第二项。仓库确实在 `src/` 下包含 `621` 个自动生成的类型 stub 文件,但 `105` 个目录的数量无法复现,且"死文件"一词过于强硬——至少部分 stub 正被活跃代码导入使用。 - -## 发现 1: `yoga-layout` 重复实现 - -状态: 已确认,但原始报告中声称的 diff 大小不准确 - -存在两份近乎相同的 TypeScript Yoga 移植: - -- `src/native-ts/yoga-layout/index.ts` -- `packages/@ant/ink/src/core/yoga-layout/index.ts` - -支撑证据: - -- [src/native-ts/yoga-layout/index.ts#L2](/E:/Source_code/Claude-code-bast/src/native-ts/yoga-layout/index.ts#L2) -- [packages/@ant/ink/src/core/yoga-layout/index.ts#L2](/E:/Source_code/Claude-code-bast/packages/@ant/ink/src/core/yoga-layout/index.ts#L2) -- [src/native-ts/yoga-layout/index.ts#L1045](/E:/Source_code/Claude-code-bast/src/native-ts/yoga-layout/index.ts#L1045) -- [packages/@ant/ink/src/core/yoga-layout/index.ts#L1044](/E:/Source_code/Claude-code-bast/packages/@ant/ink/src/core/yoga-layout/index.ts#L1044) - -运行时实际使用的是 `packages/@ant/ink` 下的副本: - -- [packages/@ant/ink/src/core/layout/yoga.ts#L14](/E:/Source_code/Claude-code-bast/packages/@ant/ink/src/core/layout/yoga.ts#L14) -- [packages/@ant/ink/src/core/reconciler.ts#L4](/E:/Source_code/Claude-code-bast/packages/@ant/ink/src/core/reconciler.ts#L4) -- [packages/@ant/ink/src/core/ink.tsx#L15](/E:/Source_code/Claude-code-bast/packages/@ant/ink/src/core/ink.tsx#L15) - -直接对比的文件统计: - -- `src/native-ts/yoga-layout/index.ts`: `2581` 行 -- `packages/@ant/ink/src/core/yoga-layout/index.ts`: `2578` 行 -- `git diff --no-index` 显示当前工作区中仅 `3` 行被删除的注释差异 -- 两处的 `enums.ts` 逐行完全一致,均为 `134` 行 - -解读: - -- 重复风险确实存在 -- 漂移风险确实存在,因为有两份需要分别维护的副本 -- 先前声称的"仅 6 行差异"与当前仓库状态不符;当前可见差异为 `index.ts` 中的 `3` 行 - -## 发现 2: `src/` 下 `105` 个目录中存在 `621` 个死类型 stub 文件 - -状态: 部分确认 - -可复现的内容: - -- `src/` 下确实有 `621` 个文件包含标记 `Auto-generated type stub — replace with real implementation` -- 这些文件分布在 `src/` 下的 `344` 个唯一叶目录中,而非 `105` 个 - -计数证据: - -- `SRC_STUB_FILES=621` -- `SRC_STUB_DIRS=344` - -代表性示例: - -- [src/services/lsp/types.ts#L1](/E:/Source_code/Claude-code-bast/src/services/lsp/types.ts#L1) -- [src/utils/src/types/message.ts#L1](/E:/Source_code/Claude-code-bast/src/utils/src/types/message.ts#L1) -- [src/types/src/utils/permissions/PermissionRule.ts#L1](/E:/Source_code/Claude-code-bast/src/types/src/utils/permissions/PermissionRule.ts#L1) - -为什么"死文件"标签证据不充分: - -至少部分 stub 正被活跃代码导入。示例: - -- [src/services/lsp/types.ts#L1](/E:/Source_code/Claude-code-bast/src/services/lsp/types.ts#L1) 导出了 `any` 类型的别名 -- [src/types/plugin.ts#L1](/E:/Source_code/Claude-code-bast/src/types/plugin.ts#L1) 导入了 `LspServerConfig` -- [src/utils/plugins/lspPluginIntegration.ts#L7](/E:/Source_code/Claude-code-bast/src/utils/plugins/lspPluginIntegration.ts#L7) 导入了同一批 stub 类型 - -已确认的风险: - -- 这些文件确实污染了类型表面 -- 其中大量文件将类型坍缩为 `any` -- 这确实会掩盖真正的类型错误并削弱 IDE 反馈 - -未确认的内容: - -- 全部 `621` 个文件是否都是死代码或不可达的 -- 当前的目录分布是否为 `105` - -为准确性推荐的措辞: - -- 推荐: `src 下的 621 个自动生成的类型 stub 文件削弱了类型安全性和 IDE 反馈` -- 避免: `105 个目录中存在 621 个死类型 stub 文件` - -## 发现 3: `CLAUDE.md` 包含六处不准确陈述 - -状态: 已确认 - -### 3.1 `modifiers-napi` 被错误标记为 stub - -不准确的文档: - -- [CLAUDE.md#L174](/E:/Source_code/Claude-code-bast/CLAUDE.md#L174) -- [CLAUDE.md#L257](/E:/Source_code/Claude-code-bast/CLAUDE.md#L257) - -当前实现证据: - -- [packages/modifiers-napi/src/index.ts#L44](/E:/Source_code/Claude-code-bast/packages/modifiers-napi/src/index.ts#L44) — `prewarm()` 通过 `bun:ffi` 加载 macOS Carbon 框架 -- [packages/modifiers-napi/src/index.ts#L48](/E:/Source_code/Claude-code-bast/packages/modifiers-napi/src/index.ts#L48) — `isModifierPressed()` 查询键盘修饰键状态 -- [packages/modifiers-napi/src/__tests__/index.test.ts#L1](/E:/Source_code/Claude-code-bast/packages/modifiers-napi/src/__tests__/index.test.ts#L1) — 有配套测试 - -结论: - -- 已完整实现,通过 FFI 调用 macOS 系统 API -- 不是占位包 - -### 3.2 `url-handler-napi` 被错误标记为 stub - -不准确的文档: - -- [CLAUDE.md#L175](/E:/Source_code/Claude-code-bast/CLAUDE.md#L175) -- [CLAUDE.md#L257](/E:/Source_code/Claude-code-bast/CLAUDE.md#L257) - -当前实现证据: - -- [packages/url-handler-napi/src/index.ts#L12](/E:/Source_code/Claude-code-bast/packages/url-handler-napi/src/index.ts#L12) — `waitForUrlEvent()` 从环境变量/CLI 参数读取 deep link URL -- [packages/url-handler-napi/src/index.ts#L21](/E:/Source_code/Claude-code-bast/packages/url-handler-napi/src/index.ts#L21) — `findUrlEvent()` 按优先级检查三个环境变量 + CLI 参数 -- [packages/url-handler-napi/src/__tests__/index.test.ts#L1](/E:/Source_code/Claude-code-bast/packages/url-handler-napi/src/__tests__/index.test.ts#L1) — 有配套测试 - -结论: - -- 已完整实现(49 行功能代码) -- 不是 stub 包 - -### 3.3 Magic Docs 被错误标记为已移除 - -不准确的文档: - -- [CLAUDE.md#L262](/E:/Source_code/Claude-code-bast/CLAUDE.md#L262) - -当前实现证据: - -- [src/utils/backgroundHousekeeping.ts#L3](/E:/Source_code/Claude-code-bast/src/utils/backgroundHousekeeping.ts#L3) — 静态 import `initMagicDocs` -- [src/utils/backgroundHousekeeping.ts#L32](/E:/Source_code/Claude-code-bast/src/utils/backgroundHousekeeping.ts#L32) — 在后台管理中调用 `void initMagicDocs()` -- [src/commands/clear/caches.ts#L125](/E:/Source_code/Claude-code-bast/src/commands/clear/caches.ts#L125) — 缓存清理流程中引用 -- [src/services/MagicDocs/magicDocs.ts#L44](/E:/Source_code/Claude-code-bast/src/services/MagicDocs/magicDocs.ts#L44) — 完整实现文件 -- [src/services/MagicDocs/magicDocs.ts#L242](/E:/Source_code/Claude-code-bast/src/services/MagicDocs/magicDocs.ts#L242) — 包含数据处理逻辑 - -结论: - -- Magic Docs 仍然存在,且接入了后台管理和缓存清理流程 - -### 3.4 LSP Server 被错误标记为已移除 - -不准确的文档: - -- [CLAUDE.md#L262](/E:/Source_code/Claude-code-bast/CLAUDE.md#L262) - -当前实现证据: - -- [src/main.tsx#L407](/E:/Source_code/Claude-code-bast/src/main.tsx#L407) — 顶部静态 import `initializeLspServerManager` -- [src/main.tsx#L3512-L3515](/E:/Source_code/Claude-code-bast/src/main.tsx#L3512) — 信任对话框通过后初始化 LSP 管理器 -- [src/services/lsp/manager.ts#L63](/E:/Source_code/Claude-code-bast/src/services/lsp/manager.ts#L63) — LSP 服务器管理器实现 -- [src/services/lsp/manager.ts#L100](/E:/Source_code/Claude-code-bast/src/services/lsp/manager.ts#L100) — 服务器实例管理 -- [src/services/lsp/manager.ts#L145](/E:/Source_code/Claude-code-bast/src/services/lsp/manager.ts#L145) — 生命周期管理 -- [packages/builtin-tools/src/tools/LSPTool/LSPTool.ts#L127](/E:/Source_code/Claude-code-bast/packages/builtin-tools/src/tools/LSPTool/LSPTool.ts#L127) — 内置 LSP 工具 - -结论: - -- LSP 基础设施仍然存在 -- 仓库仍然初始化 LSP 管理器并暴露 LSP 工具 - -### 3.5 Plugins 被错误标记为已移除 - -不准确的文档: - -- [CLAUDE.md#L263](/E:/Source_code/Claude-code-bast/CLAUDE.md#L263) - -当前实现证据: - -- [src/main.tsx#L6153](/E:/Source_code/Claude-code-bast/src/main.tsx#L6153) — Commander 注册 `plugin` 命令组 -- [src/main.tsx#L6261](/E:/Source_code/Claude-code-bast/src/main.tsx#L6261) — `plugin install` 子命令 -- [src/services/plugins/pluginOperations.ts#L72](/E:/Source_code/Claude-code-bast/src/services/plugins/pluginOperations.ts#L72) — 插件操作实现 -- [src/commands/plugin/ManagePlugins.tsx](/E:/Source_code/Claude-code-bast/src/commands/plugin/ManagePlugins.tsx) — 插件管理 UI 组件 -- [src/utils/plugins/pluginLoader.ts](/E:/Source_code/Claude-code-bast/src/utils/plugins/pluginLoader.ts) — 插件加载器 - -结论: - -- 插件管理系统仍然完整实现 - -### 3.6 Marketplace 被错误标记为已移除 - -不准确的文档: - -- [CLAUDE.md#L263](/E:/Source_code/Claude-code-bast/CLAUDE.md#L263) - -当前实现证据: - -- [src/main.tsx#L6191-L6255](/E:/Source_code/Claude-code-bast/src/main.tsx#L6191) — Commander 注册 `plugin marketplace` 子命令,包含 `add`、`list`、`remove`、`update` 四个操作 -- [src/main.tsx#L6264](/E:/Source_code/Claude-code-bast/src/main.tsx#L6264) — `plugin install` 引用 marketplace 作为插件来源 -- [src/commands/plugin/BrowseMarketplace.tsx](/E:/Source_code/Claude-code-bast/src/commands/plugin/BrowseMarketplace.tsx) — UI 组件(通过 Commander action handler 中的动态 import 加载) -- [src/utils/plugins/marketplaceManager.ts](/E:/Source_code/Claude-code-bast/src/utils/plugins/marketplaceManager.ts) — Marketplace 数据管理 - -说明: Marketplace 通过 Commander 子命令 + action handler 中的动态 `await import(...)` 接入,而非 `main.tsx` 顶部的静态 import。 - -结论: - -- Marketplace 功能仍然存在,且完整注册在 CLI 命令树中 - -## 最终评估 - -当前仓库状态支持所有三项报告背后的广泛担忧,但具体措辞需要收紧: - -- Yoga 重复问题是真实的 -- 类型 stub 问题是真实的,但当前证据支持的是 `src 下 621 个 stub 文件`,而非 `105 个目录中 621 个死文件` -- 六处 `CLAUDE.md` 不准确之处是真实的,应当修正 - -## 建议的下一步行动 - -1. 更新 `CLAUDE.md`,修正六处过时陈述 -2. 确定哪个 Yoga 实现为权威版本,然后删除副本或替换为共享 import -3. 按类别审计 `621` 个 stub 文件: - - 被活跃导入的兼容性垫片 - - 待真正实现的生成占位符 - - 可删除的不可达重复路径 -4. 将类型 stub 数量视为类型安全债务指标,暂不作为死代码指标 -repo-audit-findings-2026-04-24-zh.md -11 KB diff --git a/package.json b/package.json index 56c558988..1eadeed83 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "claude-code-best", - "version": "1.9.4", + "version": "1.9.5", "description": "Reverse-engineered Anthropic Claude Code CLI — interactive AI coding assistant in the terminal", "type": "module", "author": "claude-code-best ",