Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
10 changes: 5 additions & 5 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -171,8 +171,8 @@ bun run docs:dev
| `packages/audio-capture-napi/` | 原生音频捕获(已恢复) |
| `packages/color-diff-napi/` | 颜色差异计算(完整实现,11 tests) |
| `packages/image-processor-napi/` | 图像处理(已恢复) |
| `packages/modifiers-napi/` | 键盘修饰键检测(stub) |
| `packages/url-handler-napi/` | URL scheme 处理(stub) |
| `packages/modifiers-napi/` | 键盘修饰键检测(macOS FFI 实现) |
| `packages/url-handler-napi/` | URL scheme 处理(环境变量 + CLI 参数读取) |

### Bridge / Remote Control

Expand Down Expand Up @@ -254,13 +254,13 @@ Feature flags control which functionality is enabled at runtime. 代码中统一
| Module | Status |
|--------|--------|
| Computer Use (`@ant/*`) | Restored — macOS + Windows + Linux(后端完整度不一) |
| `*-napi` packages | `audio-capture-napi`、`image-processor-napi` 已恢复;`color-diff-napi` 完整;`modifiers-napi``url-handler-napi` 仍为 stub |
| `*-napi` packages | 全部已恢复/实现:`audio-capture-napi`、`image-processor-napi` 已恢复;`color-diff-napi` 完整;`modifiers-napi`(macOS FFI);`url-handler-napi`(环境变量+CLI) |
| Voice Mode | Restored — Push-to-Talk 语音输入(需 Anthropic OAuth) |
| OpenAI/Gemini/Grok 兼容层 | Restored |
| Remote Control Server | Restored — 自托管 RCS + Web UI |
| Analytics / GrowthBook / Sentry | Empty implementations |
| Magic Docs / LSP Server | Removed |
| Plugins / Marketplace | Removed |
| Magic Docs / LSP Server | Restored — Magic Docs 自动更新 + LSP 服务器管理器 |
| Plugins / Marketplace | Restored — 插件安装/卸载/启用/禁用 + Marketplace 浏览 |
| MCP OAuth | Simplified |

### Key Type Files
Expand Down
10 changes: 5 additions & 5 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -171,8 +171,8 @@ bun run docs:dev
| `packages/audio-capture-napi/` | 原生音频捕获(已恢复) |
| `packages/color-diff-napi/` | 颜色差异计算(完整实现,11 tests) |
| `packages/image-processor-napi/` | 图像处理(已恢复) |
| `packages/modifiers-napi/` | 键盘修饰键检测(stub) |
| `packages/url-handler-napi/` | URL scheme 处理(stub) |
| `packages/modifiers-napi/` | 键盘修饰键检测(macOS FFI 实现) |
| `packages/url-handler-napi/` | URL scheme 处理(环境变量 + CLI 参数读取) |

### Bridge / Remote Control

Expand Down Expand Up @@ -254,13 +254,13 @@ Feature flags control which functionality is enabled at runtime. 代码中统一
| Module | Status |
|--------|--------|
| Computer Use (`@ant/*`) | Restored — macOS + Windows + Linux(后端完整度不一) |
| `*-napi` packages | `audio-capture-napi`、`image-processor-napi` 已恢复;`color-diff-napi` 完整;`modifiers-napi``url-handler-napi` 仍为 stub |
| `*-napi` packages | 全部已恢复/实现:`audio-capture-napi`、`image-processor-napi` 已恢复;`color-diff-napi` 完整;`modifiers-napi`(macOS FFI);`url-handler-napi`(环境变量+CLI) |
| Voice Mode | Restored — Push-to-Talk 语音输入(需 Anthropic OAuth) |
| OpenAI/Gemini/Grok 兼容层 | Restored |
| Remote Control Server | Restored — 自托管 RCS + Web UI |
| Analytics / GrowthBook / Sentry | Empty implementations |
| Magic Docs / LSP Server | Removed |
| Plugins / Marketplace | Removed |
| Magic Docs / LSP Server | Restored — Magic Docs 自动更新 + LSP 服务器管理器 |
| Plugins / Marketplace | Restored — 插件安装/卸载/启用/禁用 + Marketplace 浏览 |
| MCP OAuth | Simplified |

### Key Type Files
Expand Down
250 changes: 250 additions & 0 deletions clean-audit.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,250 @@

# 仓库审计发现

日期: 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
3 changes: 0 additions & 3 deletions src/bootstrap/src/entrypoints/agentSdkTypes.ts

This file was deleted.

2 changes: 0 additions & 2 deletions src/bootstrap/src/tools/AgentTool/agentColorManager.ts

This file was deleted.

2 changes: 0 additions & 2 deletions src/bootstrap/src/types/hooks.ts

This file was deleted.

2 changes: 0 additions & 2 deletions src/bootstrap/src/types/ids.ts

This file was deleted.

2 changes: 0 additions & 2 deletions src/bootstrap/src/utils/crypto.ts

This file was deleted.

2 changes: 0 additions & 2 deletions src/bootstrap/src/utils/model/model.ts

This file was deleted.

2 changes: 0 additions & 2 deletions src/bootstrap/src/utils/model/modelStrings.ts

This file was deleted.

2 changes: 0 additions & 2 deletions src/bootstrap/src/utils/settings/constants.ts

This file was deleted.

2 changes: 0 additions & 2 deletions src/bootstrap/src/utils/settings/settingsCache.ts

This file was deleted.

2 changes: 0 additions & 2 deletions src/bootstrap/src/utils/settings/types.ts

This file was deleted.

2 changes: 0 additions & 2 deletions src/bootstrap/src/utils/signal.ts

This file was deleted.

2 changes: 0 additions & 2 deletions src/bridge/src/entrypoints/sdk/controlTypes.ts

This file was deleted.

2 changes: 0 additions & 2 deletions src/cli/src/QueryEngine.ts

This file was deleted.

2 changes: 0 additions & 2 deletions src/cli/src/cli/handlers/auth.ts

This file was deleted.

2 changes: 0 additions & 2 deletions src/cli/src/cli/remoteIO.ts

This file was deleted.

2 changes: 0 additions & 2 deletions src/cli/src/cli/structuredIO.ts

This file was deleted.

2 changes: 0 additions & 2 deletions src/cli/src/commands/context/context-noninteractive.ts

This file was deleted.

14 changes: 0 additions & 14 deletions src/cli/src/entrypoints/agentSdkTypes.ts

This file was deleted.

2 changes: 0 additions & 2 deletions src/cli/src/entrypoints/sdk/controlSchemas.ts

This file was deleted.

9 changes: 0 additions & 9 deletions src/cli/src/entrypoints/sdk/controlTypes.ts

This file was deleted.

2 changes: 0 additions & 2 deletions src/cli/src/hooks/useCanUseTool.ts

This file was deleted.

5 changes: 0 additions & 5 deletions src/cli/src/services/PromptSuggestion/promptSuggestion.ts

This file was deleted.

2 changes: 0 additions & 2 deletions src/cli/src/services/analytics/growthbook.ts

This file was deleted.

Loading
Loading