claude-code-best/docs/upstream-sync.md
James Feng 61c80c6963 docs: merge upstream sync records and 180-commit audit into upstream-sync.md
Absorb content from:
- 上游同步记录.md (8 chapters of cherry-pick history)
- 上游commit审查清单.md (187 candidate commits reviewed)

Additions to upstream-sync.md (386→958 lines):
- Detailed merge history grouped by category (ACP, cherry-picks, auto-merge, infra)
- Commit-by-commit evaluation (P0/P1/P2/P3/REVIEW, 59 merged + 34 existing + 93 skipped)
- Skip reasons catalog (13 categories)
- Suggested merge order for future cherry-picks
- All merged commits annotated with upstream→CCP hash mapping
- Source attribution header noting absorbed documents
2026-06-07 17:30:47 +08:00

959 lines
47 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 上游同步追踪
> CC_PureCCP与上游 CCBclaude-code-best之间的版本对齐、合并历史、遗留问题和策略。
> 最后更新2026-06-08
>
> **来源说明**:本文档合并了「上游同步记录.md」和「上游commit审查清单.md」的内容。已审查过的 commit 标注了"可直接跳过"。
---
## 版本对齐信息
| 项目 | 版本 | 最新 Commit | 分支 |
|------|------|-------------|------|
| **CC_Pure (CCP)** | v2.6.11 | `328ab1ee` | `acp` |
| **上游 CCB** | v2.6.11 | `6b205f57` | `upstream/main` |
| **ccb-upstream (本地镜像)** | — | — | `ccb-upstream/main` |
### 同步时间线
| 阶段 | 日期 | CCP 版本 | 上游版本 | 说明 |
|------|------|----------|----------|------|
| 初始基线 | 2026-05-22 | v2.6.5 | v2.6.5 | CCP 从 CCB fork建立独立分支 `acp` |
| 早期 cherry-pick | 2026-04~05 | v2.6.5→v2.6.8 | v2.6.5 | 逐个拣选上游修复和特性 |
| Phase 2 monorepo 对齐 | 2026-06-01~03 | v2.6.8→v2.6.10 | v2.6.5 | 删除 `/src/tools/`,改用 `packages/builtin-tools/` |
| 2.6.11 批量同步 | 2026-06-06~07 | v2.6.10→v2.6.11 | v2.6.11 | 批量合并 2.6.5→2.6.11 上游改动 |
| tsc 清零冲刺 | 2026-06-07 | v2.6.11 | v2.6.11 | 修复可修复类型错误,遗留社区代码问题 |
### 合并统计
| 指标 | 数值 |
|------|------|
| 上游总 commitpost-April | 664 个 |
| 候选 commit过滤已合并/文档/CI | 187 个 |
| ✅ 已合并至 CCP | **59 个**11 P0/P1 + 23 P2 + 16 P3 + 2 REVIEW + 7 RCS/SSH |
| 🟡 已存在(无需再次合并) | **34 个** |
| ❌ 跳过(无关/Windows/纯测试等) | **93 个** |
| ⏸️ 延后 | **1 个** |
| 可精确追溯 upstream commit 合计 | **41 个**(延 hash cherry-pick + 批次同步带入) |
acp 分支与 upstream/main 在 `src/` 下有 **316 个 commit** 的分叉差异。
---
## 上游合并历史(按时间倒序)
### 2.6.11 同步批次2026-06-06 ~ 06-07
这是 CCP 的主要上游合并动作,将 2.6.5→2.6.11 的上游改动批量合入。
| Commit | 日期 | 描述 | 来源(上游) | 冲突处理 |
|--------|------|------|-------------|---------|
| `3013b051` | 06-07 | fix: add resetAbortController/getAbortSignal to QueryEngine | CCB upstream | 无冲突 |
| `00a0c86c` | 06-07 | docs: add devlog for upstream sync 2.6.5→2.6.11 | — | — |
| `930aecec` | 06-07 | chore: align acp with upstream | 多 commit | 无冲突 |
| `e3908ab4` | 06-07 | chore: align remote control web ui with upstream | 多 commit | 无冲突 |
| `b21ed050` | 06-07 | chore: sync providers.ts (Grok), Config.tsx, poorMode.ts | 多 commit | 手动合入 |
| `d04846f5` | 06-06 | checkpoint — restore 40+ upstream files, fix 21 syntax errors | 批量 | 修复 21 个语法错误 |
| `be722795` | 06-06 | chore: merge fcbc8822 — remove 113 unused imports | `fcbc8822` | 自动合并 |
| `3013db2d` | 06-06 | chore: merge upstream cleanup — 536 stubs + 17 dead files + 4 as any fixes | 批量 | 手动,处理大量删文件冲突 |
| `2020a84b` | 06-06 | feat: port mode system with 6 AI personality presets | `9947ae75` | 手动拣选CCP 已有修改做适配 |
| `16712e03` | 06-07 | fix: eliminate 8 as any in MCP handlers | 自研(非上游) | — |
### Phase 2 — Monorepo 工具对齐2026-06-01 ~ 06-03
将 CCP 的扁平 `/src/tools/` 结构迁移到上游的 `packages/builtin-tools/` monorepo。
| Commit | 日期 | 描述 | 说明 |
|--------|------|------|------|
| `bdfff8de` | 06-03 | Phase 2: delete src/tools/ — align with upstream monorepo | 删除旧扁平工具目录 |
| `638affff` | 06-03 | Phase 2b Batch 3: merge AgentTool(38) drift files | 38 个 AgentTool 差异文件 |
| `46b2b0bf` | 06-03 | Phase 2b Batch 2: merge BashTool(23) + FileEditTool(13) + FileWriteTool(5) | 批量合并工具差异 |
| `0c01c93e` | 06-03 | Phase 2a: mechanical dedup — import rewrite to canonical package | 机械重写 import 路径 |
| `a8c5fd95` | 06-03 | fix: revert AgentTool prompt.ts to upstream fork terminology | 术语回退 |
| `05fd5e14` | 06-03 | fix: restore /dev/tcp /dev/udp network device redirect security check | 网络安全检查恢复 |
| `39ba9a56` | 06-01 | feat: pull in Vite build system + complete packages/builtin-tools/ | Vite 构建系统引入 |
| `ed197502` | 06-01 | fix: resolve tsc errors (remaining upstream type fixes) | 上游类型修复 |
| `d70de466` | 06-01 | fix: resolve tsc errors (upstream type cleanup batch) | 上游类型清理批次 |
### 中间 Cherry-Pick 批次2026-05-22 ~ 06-04
从上游拣选的独立修复和特性。
| Commit | 日期 | 描述 | 来源(上游) | 冲突处理 |
|--------|------|------|-------------|---------|
| `cdd62520` | 06-02 | feat(upstream): sync b1c4f40f ACP fix + WorkflowTool | `b1c4f40f` | 无冲突 |
| `a9e1a1e4` | 06-02 | feat: merge 4 upstream improvements (effort + sideQuery + agent hints + plan/paste) | 4 commits | 手动合并 |
| `289fc9bf` | 06-02 | fix: sync multiStore.ts and localValidate.ts from upstream | 上游 | 无冲突 |
| `5b0c0fa4` | 06-02 | fix: sync missing test mocks and agentToolFilter from upstream | 上游 | 无冲突 |
| `d1d74d4a` | 06-02 | fix: restore notifyAutomationStateChanged + skip 4 unfixable tests | 上游 | 手动 |
| `8c9efedd` | 06-02 | fix: resolve 8 test failures across 6 files | 多文件 | — |
| `80a88286` | 06-04 | fix: backfill upstream OpenAI fixes | `c82f5994`, `901628b4` | 无冲突 |
| `b5bcbdbd` | 06-04 | fix: 修复斜杠命令自动补全 | `ad09f38f` | 无冲突 |
| `10dfcc67` | 06-04 | fix: Batch 1a — WebFetchTool 安全加固 + 核心运行时修复 | `c2ac9a74` | 无冲突 |
| `8485589c` | 06-04 | fix: add typeof TungstenPill guard (partial cherry-pick) | `a02a9fc` | 部分拣选 |
| `be767204` | 06-04 | fix: RemoteTriggerTool 测试补充 mock对齐上游 | `a2cfaf9` | 无冲突 |
| `379335e3` | 06-04 | feat: add provider-aware model name resolution | `771e3db` + `f7f69b7` | 无冲突 |
| `dc71add9` | 06-04 | feat: register LocalMemoryRecallTool + VaultHttpFetchTool | `5bb0306` | 无冲突 |
| `aa72a8ed` | 04-23 | fix: 修复 model alias 导致无限递归栈溢出 | `cee62bc` | 无冲突 |
| `e0382ce2` | 06-07 | chore: bump version to 2.6.11 | — | — |
| `2ea37816` | 06-04 | fix: restore CCP version 2.6.5 (overwritten by cherry-pick) | — | — |
| `a308aa8f` | 06-04 | fix: add missing FILE_WRITE_TOOL_NAME import + poorMode stub | 回归修复 | — |
| `03975066` | 05-01 | chore: merge 4 upstream commits (Grok, OpenAI image, CodeRabbit, tsc) | 4 commits | 无冲突 |
### 早期独立同步2026-04 ~ 05
| Commit | 日期 | 描述 | 说明 |
|--------|------|------|------|
| `f1c7f7dc` | 06-04 | feat: full merge of f2e9af49 autonomy PR #386 | 上游 autonomy 大 PR |
| `9538ebd2` | 06-04 | feat: full merge of f2e9af49 autonomy PR #386 | 同上(双分支) |
| `edae3a7d` | 04-29 | feat: harden autonomy lifecycle, OOM bounds | 上游 PR #386 |
| `f2e9af49` | 04-29 | feat: harden autonomy lifecycle, OOM bounds | 上游原始 commit |
| `c4e9efb7` | 05-06 | Merge pull request #417 (sync/mcp-transform-2.1.128) | PR #417 |
### acp ↔ main 同步
| Commit | 日期 | 描述 | 说明 |
|--------|------|------|------|
| `ae932e11` | 06-05 | merge: acp → main (14 test failures → 0) | 主线合并 |
| `da2d3c93` | 06-05 | merge: sync acp → main (CI baseline 7→14) | 同步 |
| `580bcfa5` | 06-04 | merge: bring main (ccp-core baseline) into acp | 基线对齐 |
| `2c27fd80` | 06-05 | fix: update CI test baseline from 7 to 14 | 基线更新 |
| `d3566259` | 06-05 | docs: 同步合并统计 | — |
---
## 上游同步详细记录
> 以下内容由「上游同步记录.md」合并而来提供更细致的 commit 分组和上游→CCP 映射。
### 6.5 ACP 全量引入 (2026-06-04)
> 在 `acp` 分支独立维护,从上游 CCB 合并 5 个 ACP 相关 commit。
| 上游 commit | 说明 | 状态 |
|---|---|---|
| `3cb1e50b` | 添加对 ACP 协议的支持 (#284) | ✅ 提取核心文件 |
| `7881cc61` | 增强 ACP 桥接与权限处理 | ✅ Cherry-pick |
| `2c8a22d4` | fix(acp): 对齐 ACP session ID | ✅ Cherry-pick |
| `66d2671c` | feat: acp manager (#304) | ✅ 以上游 CCB 为准,覆盖本地旧版 |
| `4dcbaf1e` | fix: messageSelector require 崩溃 | ⏭️ CCP 已有同类修复 |
| `b1c4f40f` | fix: ACP extended thinking 导致 400 | ⏭️ CCP 已有同类修复 |
分支: [acp](https://github.com/GhostDragon124/CC_Pure/tree/acp) | 测试 3551 / build 586 files
### 合并统计
| 类别 | 数量 | 说明 |
|------|------|------|
| 延原始 hash 的 cherry-pick | **8** | d4a60147, b1c4f40f, 897c186f, 6766f08e, 9d17597e, 7b52054f, 03598d3f, 48a19b8a |
| 批次同步中带入 | **10** | 02298cb1, e33b17bd, ed619327, a91653a0, a05242ce, 27b334ac, dab04af7, 6dd378bf, efc218d8, f9106083 |
| 自动合并的 upstream PR | **23** | 见下方表格 |
| 批次同步(无法 1:1 映射) | **5 批** | 39ba9a56, a9e1a1e4, cdd62520, d70de466, ed197502 |
| **P2 评估+合并 (2026-06-04)** | **23** | 3.1→3.7 逐 commit 评估 |
| **可精确追溯 upstream commit 合计** | **41** | |
### 一、批次同步(多 commit 合并)
| CCP Commit | 日期 | 说明 | 涉及文件 |
|---|---|---|---|
| `39ba9a56` | 2026-06-01 | **Vite 构建系统 + 完整 packages/builtin-tools/** | 大量文件,引入 Vite 替代 Bun build |
| `a9e1a1e4` | 2026-06-02 | **合并 4 个上游改进**effort 模型白名单解除 + sideQuery 路由 + agent hints + plan/paste fixes | `src/utils/effort.ts`, `src/utils/sideQuery.ts`, `src/utils/model/model.ts`, `packages/@ant/model-provider/` |
| `cdd62520` | 2026-06-02 | **ACP fix b1c4f40f + WorkflowTool top-level require()** | `src/utils/messages.ts`, `scripts/defines.ts` |
| `d70de466` | 2026-06-01 | **tsc 类型修复(上游清理批次)** | `packages/@ant/computer-use-*/`, `packages/@ant/ink/`, `src/cli/handlers/mcp.tsx` |
| `ed197502` | 2026-06-01 | **tsc 类型修复(残余上游修复)** | `src/bridge/`, `src/bootstrap/state.ts`, `src/QueryEngine.ts` |
### 二、单独 Cherry-pick
#### API / 查询
| CCP Commit | 上游 Commit | 日期 | 说明 |
|---|---|---|---|
| (内置) | `02298cb1` | 2026-06-02 | **安全**:关闭 preconnectAnthropicApi 启动路径遥测泄漏 (#1253) |
| (内置) | `e33b17bd` | 2026-05-31 | **feat**sideQuery 支持第三方 provider 路由 (OpenAI/Grok/Gemini) |
| (内置) | `ed619327` | 2026-05 | **fix**OpenAI stream adapter 中 cached_tokens 未从 input_tokens 中减去 |
#### 工具系统
| CCP Commit | 上游 Commit | 日期 | 说明 |
|---|---|---|---|
| `98c3deb2` | `d4a60147` | 2026-05-22 | **fix**:修复 BriefTool 循环依赖导致 isBriefEnabled 未定义 |
| (内置) | `a91653a0` | 2026-06-02 | **fix**:删除 edit tool 中的旧逻辑处理 (#1251) |
| (内置) | `a05242ce` | 2026-05 | **fix**:明确告知 agent SearchExtraTools/ExecuteExtraTool 是核心工具 |
| (内置) | `27b334ac` | 2026-05 | **fix**:防止 MCP 工具调用失败后的死循环 |
#### Effort / 模型
| CCP Commit | 上游 Commit | 日期 | 说明 |
|---|---|---|---|
| `7b52054f` | 同 | 2026-05-22 | **feat**:解除 max/xhigh effort 级别的模型白名单限制 |
| `03598d3f` | 同 | 2026-05 | **refactor**:移除 resolveAppliedEffort 中的 max/xhigh 降级分支 |
| `f35fb02b` | `897c186f` | 2026-05-22 | **docs**effort 级别描述去掉模型名限制 |
#### ACP / Bridge
| CCP Commit | 上游 Commit | 日期 | 说明 |
|---|---|---|---|
| `b1d322f7` | `b1c4f40f` | 2026-05-22 | **fix**ACP 模式下 extended thinking + tool_use 触发连续 user 消息导致 400 (CC-1215) |
#### 构建 / 性能
| CCP Commit | 上游 Commit | 日期 | 说明 |
|---|---|---|---|
| (内置) | `dab04af7` | 2026-05 | **perf**Vite 构建启用 code splittingBun RSS 从 966MB 降至 35MB |
#### GitHub 集成命令
| CCP Commit | 上游 Commit | 日期 | 说明 |
|---|---|---|---|
| `241aca1e` | `6766f08e` | 2026-05-09 | **feat**:添加 GitHub 集成命令(/issue、/share、/autofix-pr |
| `1c802164` | `9d17597e` | 2026-05-22 | **feat**autofix-pr 完成回流机制latent bug fix + completionChecker + 内容回流) |
#### 其他修复
| CCP Commit | 上游 Commit | 日期 | 说明 |
|---|---|---|---|
| (内置) | `6dd378bf` | 2026-05 | **fix**:退出启动对话框时终端残留一行内容 |
| (内置) | `efc218d8` | 2026-05 | **fix**searchSkills 使用缓存 IDF 前校验 index 引用一致性 |
| (内置) | `f9106083` | 2026-05 | **fix(swarm)**WindowsTerminalBackend pidFile health check (#1237) |
| `48a19b8a` | 同 | 2026-05-17 | **fix**isUsing3PServices 检查所有非 Anthropic provider (#1235) |
| `27b665ac` | 同 | 2026-05 | **Fix type** (#1242) |
| `ea399f18` | 同 | 2026-05 | **Fix type** (#1239) |
| `b67e9f9d` | 同 | 2026-05 | **Fix/plan paste fixes** (#1238) |
| `d66a6f61` | 同 | 2026-05 | **feat**:添加 /goal 命令 (#1222) |
| `2cc9a7da` | 同 | 2026-05 | **Revert**:回退 /goal 命令 (#1236) |
#### 自动合并的 PR
| CCP Commit | 日期 | 说明 |
|---|---|---|
| `0face46f` | 2026-05-14 | Merge PR #1228: fix/spinner-tree-local-agent-tokens |
| `d451e307` | 2026-05-14 | Merge PR #1226: feat/mimo-thinking-support |
| `80b46d22` | 2026-05-14 | Merge PR #1225 |
| `3d7b32f5` | 2026-05-12 | Merge PR #1117: fix/acp-session-id-alignment |
| `998890b4` | 2026-05-10 | Merge PR #446: feature/prompt-cut-down |
| `3f0f699c` | 2026-05-10 | Merge PR #445: feature/many-feature-packagee |
| `7e2b8e81` | 2026-05-09 | Merge PR #442: feature/tool_search |
| `df8c4f4b` | 2026-05-09 | Merge PR #438: feature/codex-subscription |
| `02dd7967` | 2026-05-08 | Merge PR #435: fix/conditional-hooks-ctrlo-error |
| `2fdfb844` | 2026-05-07 | Merge PR #428 |
| `c7efac6b` | 2026-05-06 | Merge PR #423: feat/statusline-refresh-interval |
| `68c7ebb2` | 2026-05-06 | Merge PR #419: codex/sub-agents-docs |
| `9e299a72` | 2026-05-06 | Merge PR #420: fix/third-party-api-user-id |
| `5c107e5f` | 2026-05-06 | Merge PR #416: feat/subagent-fork-render |
| `c4e9efb7` | 2026-05-06 | Merge PR #417: sync/mcp-transform-2.1.128 |
| `f5c9880d` | 2026-05-05 | Merge PR #413: performance/20260505/memory-leak-fix |
| `a1108870` | 2026-05-05 | Merge PR #412: feature/20260504/improve |
| `4cbf406c` | 2026-05-02 | Merge PR #403: fix/deepseek-empty-reasoning-content |
| `385baf57` | 2026-05-02 | Merge PR #402: fixture/memory-peak |
| `96f1700e` | 2026-05-02 | Merge PR #400: fixture/memory-peak |
| `cd8136f4` | 2026-04-30 | Merge PR #395: fix/theme-switching |
| `632f3e19` | 2026-04-30 | Merge PR #381 |
| `00da5d7d` | 2026-04-29 | Merge PR #388: fix/modelpicker-1m-toggle-hint |
| `edae3a7d` | 2026-04-29 | feat: harden autonomy lifecycle, OOM bounds (#386) |
### 三、基础设施同步
| CCP Commit | 日期 | 说明 | 涉及 |
|---|---|---|---|
| `5b0c0fa4` | 2026-06-02 | 同步缺失的 test mocks + agentToolFilter | `tests/mocks/` (6 个文件), `src/utils/agentToolFilter.ts` |
| `289fc9bf` | 2026-06-02 | 同步 multiStore.ts + localValidate.ts | `src/services/SessionMemory/`, `src/utils/` |
| `8c9efedd` | 2026-06-02 | 修复 8 个测试失败6 个文件) | ExecuteTool, OpenAI stream adapter, localVault, effort, formatBriefTimestamp |
| `d1d74d4a` | 2026-06-02 | 恢复 notifyAutomationStateChanged + 跳过 4 个不可修复测试 | `src/utils/sessionState.ts`, 测试文件 |
| `d020ca4b` | 2026-05-22 | chore: 2.6.5 版本号 | `package.json` |
### 四、Autonomy 全量合并 (2026-06-04)
> 从上游 `f2e9af49` (PR #386) 完整合并 autonomy 源码 + 测试。此前 batch sync 只带了代码,遗漏了 5 处源码集成点和 11 个测试文件。
| 类别 | 文件 | 说明 |
|---|---|---|
| 源码 | `useScheduledTasks.ts` | 导出 `createScheduledTaskQueuedCommand`autonomy 队列去重 |
| 源码 | `processUserInput.ts` | 透传 autonomy payload暴露 `deferAutonomyCompletion` |
| 源码 | `processSlashCommand.tsx` | 接受 autonomy 参数background fork 延迟终结 |
| 源码 | `handlePromptSubmit.ts` | 空闲队列过滤 stale autonomy 命令 |
| 源码 | `Tool.ts` | 添加 `allowBackgroundForkedSlashCommands` |
| 测试 | `autonomyAuthority.test.ts` | 权威配置解析 + prompt 组装 |
| 测试 | `autonomyFlows.test.ts` | 托管流生命周期 |
| 测试 | `autonomyPersistence.test.ts` | 文件锁 + 活跃保留 |
| 测试 | `autonomyQueueLifecycle.test.ts` | 队列分区/认领/终结 |
| 测试 | `autonomyRuns.test.ts` | 状态机 + 去重 + 格式化 |
| 测试 | `queryAutonomyProviderBoundary.test.ts` | provider 错误终结 |
| 测试 | `handlePromptSubmit.test.ts` | stale autonomy 过滤 |
| 测试 | `useScheduledTasks.test.ts` | cron → autonomy 队列 |
| 测试 | `processSlashCommand.test.ts` | slash 命令 autonomy 集成 |
| 测试 | `autonomy-lifecycle-user-flow.test.ts` | CLI 子进程集成 |
| 测试 | `RemoteTriggerTool.test.ts` | 合并上游断言改进 |
**测试3699 pass, 0 fail** (+97 from 3602)
Tag: `v2.2.2` | Commit: `9538ebd2` (acp) / `f1c7f7dc` (main)
#### 后续同步时可跳过
```
# Autonomy (PR #386) — 全量合并
f2e9af49 # harden autonomy lifecycle, OOM bounds, provider-boundary finalization
452a7e6a # fixup: CodeRabbit review
189766c5 # fixup: CodeRabbit second-round review
6b7cfda9 # fixup: 4 remaining review items
7a6e65ca # refactor: simplify/reuse/defense
edae3a7d # squashed final PR #386
a2cfaf91 # RemoteTriggerTool + autonomy test fixes
```
#### Tags
| Tag | 日期 | 说明 |
|---|---|---|
| `v0.1.0-toolsearch-fix` | 2026-06-01 | Tool Search 缓存修复 |
| `v1.6.2` | 2026-06-01 | 早期版本 |
| `v1.7.0` | 2026-06-02 | 基础设施同步 |
| `v1.8.0` | 2026-06-04 | P2 完成 (23 merged) |
| `v2.0.0` | 2026-06-04 | P3 A 完成 (12 merged) |
| `v2.1.0` | 2026-06-04 | REVIEW 24 执行完毕 (2 merged) |
| `v2.2.0` | 2026-06-04 | P3 B 完成 (3 merged) |
| `v2.2.1` | 2026-06-04 | OpenAI fixes backfill (c82f5994, 901628b4) |
| `v2.2.2` | 2026-06-04 | Autonomy 全量合并 (f2e9af49) |
### 五、RCS/Web + SSH 全量合并 (2026-06-04)
> RCS Web UI 从 vanilla JS 全面迁移到 React 架构SSH Remote 替换 stub 为完整实现。
| CCP Commit | 上游 Commit | 说明 |
|---|---|---|
| `d1176325` | `fe08cac` | fix(remote-control): harden self-hosted session flows (#278) — RCS 安全加固 |
| `7f4dcfba` | `72a2093` | feat(remote-control): 优化 Web 展示、状态同步与桥接控制 (#288) — 64 files |
| `056231d0` | `34154ee` | feat: React Web UI 迁移 + acp-link 完善 (#292) — 142 files, vanilla JS → React |
| `d7195087` | `2e9aaf4` | feat: ACP 协议 remote control (#293) — 54 files, ACP bridge |
| `c112237e` | `f9d0111` | fix: web 端 crypto.randomUUID → uuid 库 |
| `2d05da10` | `c7bc8c8` | feat: remote control auto bind (#300) — TokenManager + auto bind |
| `1b6ae3d3` | `03811f9` | feat: SSH Remote — 本地 REPL + 远端工具执行 — 10 files, 2010 行, 17 tests |
---
## 当前遗留问题
### 1. tsc 错误21 个)— 全部来自社区代码
来源:[docs/community-code-issues.md](./community-code-issues.md)
#### bridge.ts — ACP SDK 类型14 个)
文件:`src/services/acp/bridge.ts`
核心问题:`nextSdkMessageOrAbort()` 返回 `void | SDKMessage`,代码未做 void 守卫直接访问属性。
| 行号 | 错误 | 说明 |
|------|------|------|
| 649 | `Property 'type' does not exist on type 'void \| SDKMessage'` | `msg.type` — msg 可能为 void |
| 654 | `Property 'subtype' does not exist...` | `msg.subtype` |
| 682 | `Property 'usage' does not exist...` | `msg.usage` |
| 700 | `Property 'modelUsage' does not exist...` | `msg.modelUsage` |
| 719 | `Property 'total_cost_usd' does not exist...` | `msg.total_cost_usd` |
| 734 | `Property 'subtype' does not exist...` | result 分支 |
| 735 | `Property 'is_error' does not exist...` | result 分支 |
| 744 | `Property 'stop_reason' does not exist...` | stop_reason 分支 |
| 755 | `Property 'stop_reason' does not exist...` | error_during_execution 分支 |
| 780 | `Argument of type 'void \| SDKMessage'...` | streamEventToAcpNotifications() |
| 800 | `Property 'message' does not exist...` | assistant 分支 |
| 803 | `Property 'parent_tool_use_id' does not exist...` | assistant 分支 |
| 825 | `Argument of type 'void \| SDKMessage'...` | assistantMessageToAcpNotifications() |
| 850 | `Property 'data' does not exist...` | progress 分支 |
#### autofix-pr2 个)
文件:`src/commands/autofix-pr/launchAutofixPr.ts`
| 行号 | 错误 | 说明 |
|------|------|------|
| 237 | `Property 'errors' does not exist on type '{ eligible: true; }'` | `eligibility.errors` — 判别式不准确 |
| 321 | `Property 'source' does not exist in type '...'` | `teleportToRemote` 传入 `source: 'autofix_pr'` |
#### 测试文件4 个)
| 文件 | 行号 | 错误 | 说明 |
|------|------|------|------|
| `issue-gh.test.ts` | 224:25 | `Property 'msg' does not exist...` | `b.msg` — 判别式收窄问题 |
| `issue-gh.test.ts` | 224:37 | `Property 'msg' does not exist...` | 同上 |
| `share-gh.test.ts` | 216:25 | `Property 'msg' does not exist...` | 同上 |
| `share-gh.test.ts` | 216:37 | `Property 'msg' does not exist...` | 同上 |
#### client.ts — GoogleAuth 泛型1 个)
| 行号 | 错误 | 说明 |
|------|------|------|
| 297 | `Type 'GoogleAuth<AuthClient>' is not assignable to 'GoogleAuth<JSONClient>'` | Vertex AI GoogleAuth 泛型参数不兼容,`as unknown as GoogleAuth` 绕过 |
### 2. as any 遗留49 个)
#### API Provider 适配器31 个)
| 文件 | 数量 | 范围 |
|------|------|------|
| `openai/index.ts` | 14 | 流事件适配、usage 提取、错误包装 |
| `grok/index.ts` | 11 | 流事件适配、usage 提取 |
| `gemini/index.ts` | 6 | 流事件适配 |
#### 生成代码 — protobuf 自动生成7 个)
| 文件 | 数量 | 模式 |
|------|------|------|
| `claude_code_internal_event.ts` | 4 | `{} as any``.create()` 空对象兜底 |
| `timestamp.ts` | 1 | `{} as any` |
| `growthbook_experiment_event.ts` | 1 | `{} as any` |
| `auth.ts` | 1 | `{} as any` |
#### MCP/cli 社区代码5 个)
| 文件 | 数量 | 说明 |
|------|------|------|
| `ccrClient.ts` | 3 | `(result as any).retryAfterMs` — 重试延迟提取 |
| `structuredIO.ts` | 1 | `input as any` — hook callback 输入强制转换 |
| `useManageMCPConnections.ts` | 1 | `origin: {...} as any` — origin 字段强制转换 |
#### 其他社区代码6 个)
| 文件 | 数量 | 说明 |
|------|------|------|
| `relay.ts` | 3 | `ws.send(encodeChunk(...) as any)` — WebSocket 类型不兼容 |
| `streamAdapter.ts` | 2 | `(chunk.usage as any).prompt_tokens_details` / `(delta as any).reasoning_content` |
| `branch.ts` | 1 | `(firstUserMessage as any)?.message?.content` |
### 3. client.ts googleAuth as any
已在上方 tsc 错误部分记录。这是社区代码引入的 Vertex AI GoogleAuth 泛型不兼容问题。
---
## 未来 Cherry-Pick 策略
### 1. 如何监控上游新 commit
```bash
# 定期拉取上游
git fetch upstream
# 查看上游未合入的 commit相对于 acp
git log upstream/main..acp --oneline --since="2026-06-07"
# 查看上游新 commit
git log acp..upstream/main --oneline
```
建议:
- **每日** `git fetch upstream` + 检查新 commit 列表
- 关注上游的 `chore: 2.6.x` tag commits版本发布标记
- 关注 PR 中的 `fix:` / `security:` 前缀 commit
- 特别关注涉及 ACP、Bridge、MCP 协议层的修复
### 2. Cherry-Pick 流程
```
1. git fetch upstream
2. git checkout acp
3. git log acp..upstream/main --oneline # 查看待合入 commit
4. 评估优先级(见下方第 4 节)
5. git cherry-pick -x <commit-hash>
6. 解决冲突(见下方第 3 节)
7. bun run check # lint + format
8. bunx tsc --noEmit # 类型检查
9. bun test # 测试
10. git commit --amend -m "fix: ... (cherry-pick <upstream-hash>)"
11. git push origin acp
```
### 3. 冲突处理原则
| 情况 | 处理方式 |
|------|----------|
| **CCP 特有文件**telemetry、skill、acp bridge 等) | 以上游为准,手动适配 CCP 修改 |
| **纯新增文件** | 直接接受,无冲突 |
| **已删除的 CCP 文件**(如旧 `/src/tools/` | 上游修改跳过 |
| **双方修改的同一行** | 手动判断功能性以上游为准CCP 定制部分保留 |
| **import 路径差异**CCP 用 canonical package vs 上游用 direct import | 按 CCP monorepo 规则重写 import |
| **测试文件冲突** | 视情况上游测试修复优先合入CCP 独有测试保留 |
**通用原则:**
- 功能性修复 > 代码风格改动
- 上游 tsc 修复优先合入(可降低 CCP tsc 计数)
- 涉及安全/隐私的 commit 必须立即合入
- 排除仅与 Anthropic 内部基础设施相关的 commit
### 4. 优先级分级
| 优先级 | 类别 | 说明 | 示例 |
|--------|------|------|------|
| **P0** | 安全/隐私 | 遥测泄漏修复、路径遍历修复 | 类似 `#1253` telemetry leak fix |
| **P1** | 功能性 bug 修复 | ACP 协议修复、核心运行时崩溃修复 | ACP extended thinking fix |
| **P1** | TypeScript 修复 | 减少社区 tsc 错误 | 各类 as any → 具体类型 |
| **P2** | 测试修复/改善 | 上游测试修复可提升 CI 可靠性 | mock 补充、test baseline 更新 |
| **P3** | 非功能性移植 | 新特性、重构、文档 | mode system、effort 描述调整 |
| **P4** | Anthropic 内部专用 | 遥测上传、内部 API、权限系统 | BigQuery exporter、内部 endpoints |
### 5. 值得优先合入的上游 commit 方向
- **ACP SDK 适配器修复** — 直接影响 CCP 核心 ACP 协议功能
- **TypeScript 类型增强** — reduce `as any` / 修复 tsc 错误
- **流事件处理改进** — OpenAI/Grok/Gemini provider 的流事件处理
- **安全性修复** — 防止遥测泄漏、命令注入、路径遍历
- **测试基础设施** — mock 框架、测试工具、CI 配置
- **Chrome/Computer Use MCP** — 若上游修复了相关包依赖
### 6. 建议合并顺序
以下顺序基于 commit 审查清单中的分析,按收益/风险比排序。
#### 第一批内存修复P0 + P2 内存,约 12 个)
```
52b61c2 → e7220c5 → f2e9af4 → f724300 → 198c09b → ab0bbbc
→ 835dd2d → b3d28bc → ef10ad2 → f5c3ee5 → 0290fe3 → 08cd02c
```
预期效果RSS 降低 200-500MB消除已知泄漏点。
#### 第二批Provider 兼容P1约 9 个)
```
3cf94fb → d136872 → dc3d3e8 → 771e3db → cee62bc → 047c85f
→ ecd3f9d → 941bcbd → eca1acc (OpenAI 图片兼容)
```
预期效果DeepSeek/Gemini 调用不再报 400/403图片粘贴可用。
#### 第三批:工具系统(约 5 个)
```
c14b7ea → e5f31af → fc8d531 → b4e52d0 → 7be08f5
```
预期效果Tool Search 缓存正确agent 工具链完整。
#### 第四批:体验 + 构建(余下)
```
2f86485 → 2006ab2 → b28de71 → 2934f30 → 33fe494 → ...
```
---
## CCP 特有改动清单
以下为 CCP 与上游的主要分叉点。**这些改动不能合入上游**(上游是公开的 Anthropic 官方案例)。
### 1. 遥测数据本地化
| 文件 | 改动 |
|------|------|
| `src/utils/telemetry/bigqueryExporter.ts` | Anthropic 遥测 endpoint 清空为 `''`,阻止数据外泄 |
| `src/utils/telemetry/instrumentation.ts` | 本地化分析链路,不向 Anthropic 发送遥测 |
| `src/utils/sinks.ts` | 本地 analytics sink`64ca3250` |
| `src/services/analytics/growthbook.ts` | GrowthBook 实验默认 fallback不依赖远程配置 |
**commit** `83abbbc2`、`64ca3250`、`8a301dcf`
### 2. 穷鬼模式Poor Mode移除
上游的穷鬼模式(低成本模式)已被 CCP 彻底移除。
**commit** `987578b5`、`51ce0931`
### 3. Chrome / Computer Use MCP 恢复
上游删除的 Chrome 浏览器自动化和 Computer Use 功能CCP 已从历史记录中恢复。
**commit** `e2aafbb5`、`957076c5`
相关包保留在 `packages/` 下。
### 4. ACP 对齐(内部 QueryEngine
CCP 的 `acp` 分支包含大量 ACP 协议层改动,上游 CCB 的 ACP 支持是独立的:
| commit | 说明 |
|--------|------|
| `34154ee3` | 支持 acp-link 包进行 ACP remote-control |
| `09fc515e` | 远程群控功能 |
| `2d05da10` | remote control auto bind |
| `d7195087` | ACP 协议版本 remote control |
| `6950401c` | ACP session ID 与全局会话状态对齐 |
| 多个 ACP bug fix | `01f26cf4`、`230eb489`、`a077ec8d`、`7e3d825f` |
### 5. Skill 系统替换
上游使用 `skillLearning` 子系统Anthropic 内部分析用户行为CCP 替换为 Hermes skill 系统。
| commit | 说明 |
|--------|------|
| `42100d62` | 关闭 skill learning 编译开关 |
| `75fa2127` | 彻底移除 skillLearning 子系统 |
| (Hermes) | 技能系统由外部 Hermes Agent 框架提供 |
### 6. 其他 CCP 特有改动
| 类别 | 说明 |
|------|------|
| **配置文件本地化** | `~/.claude/` → 本地配置,不依赖 Anthropic 云端 |
| **更新机制** | `updateCCB.ts` 被删除,替换为本地更新管理 |
| **Vite 构建系统** | `build.ts` + `vite.config.ts` 双构建管线,上游仅有 Bun build |
| **代码分割** | Vite 代码分割 600+ chunk 降低 RSS966MB→35MB |
| **Bridge 系统** | `src/bridge/` 包含远程控制桥接层(上游已删除) |
| **HTTP proxy 解析** | `src/utils/sensitive.ts` 敏感信息处理 |
| **ACL 访问控制** | `src/utils/processUserInput/` 中的命令处理安全加固 |
| **移除的测试文件** | `src/commands/__tests__/` 中大量上游测试被删除或 stubbed |
| **Bootstrap 差异** | `src/bootstrap/` 中的状态管理、类型定义差异 |
| **ripgrep 二进制** | vendor 二进制拷贝脚本定制 |
### diff 概要
```
git diff upstream/main..acp -- src/ | stat:
1448 files changed, 55529 insertions(+), 89243 deletions(-)
```
主要删减集中在上游的测试文件(`__tests__/`、Claude In Chrome、Agents Platform、CCR 等 CCP 不使用的功能。
---
## 六、已审查 commit 清单(可直接跳过)
> 以下内容由「上游commit审查清单.md」合并而来。基于 2026-06-04 上游 `claude-code-best/main` (708 commits) vs CCP `main` 的 diff 分析。
>
> 初筛664 个 post-April commit → 过滤已合并/文档/CI → **180 个候选**(后补充至 187 个)。
>
> Windows 特供的已标记 SKIPCCP 跑 Linux
### 判定标准
| 标记 | 含义 | 说明 |
|------|------|------|
| ✅ MERGE | 推荐合并 | 有明确收益,已实际合并 |
| 🟡 EXISTS | 已存在 | 前期批次已自动带入,无需再次合并 |
| ❌ SKIP | 不合并 | 与 CCP 无关/低价值/Windows 特供/已覆盖 |
| ⏸️ 延后 | 暂缓合并 | 待条件满足时再合 |
### 统计概览
| 类别 | 总数 | ✅ 已合并 | 🟡 已存在 | ❌ 跳过 | ⏸️ 延后 |
|------|------|----------|----------|---------|---------|
| P0 高优先级 | 8 | 5 | 2 | 1 | 0 |
| P1 建议合并 | 9 | 6 | 2 | 1 | 0 |
| **P0+P1 合计** | **17** | **11** | **4** | **2** | **0** |
| P2 (3.1-3.7) | 53 | 23 | 13 | 17 | 0 |
| P3 低优先级 | 106 | 16 | 14 | 76 | 0 |
| REVIEW | 24 | 2 | 3 | 18 | 1 |
| RCS/Web 全量 | 6 | 6 | 0 | 0 | 0 |
| SSH Remote | 1 | 1 | 0 | 0 | 0 |
| **全量总计** | **187** | **59** | **34** | **93** | **1** |
> 额外标注skill learning 全家桶6 个 commit已确认不合并——上游自己都注释掉了 `SKILL_LEARNING`,功能未成熟。
### 已合并 commit 列表59 个)
#### P0 — 高优先级5 个)
| # | 上游 Commit | 说明 | CCP Commit |
|---|-----------|------|-----------|
| 1 | `f2e9af4` | feat: harden autonomy lifecycle, OOM bounds | `9538ebd2` (acp) / `f1c7f7dc` (main) |
| 2 | `3cf94fb` | fix: 修复对穷鬼模式的 auto dream 和 session memory 越过 | `51ce0931` |
| 3 | `5bb0306` | feat: 添加 LocalMemoryRecallTool 和 VaultHttpFetchTool | `dc71add9` |
| 4 | `a2ea69c` | feat: 添加 Session Memory 多存储支持 | `95482ce7` |
#### P1 — 建议合并6 个)
| # | 上游 Commit | 说明 | CCP Commit |
|---|-----------|------|-----------|
| 5 | `f724300` | fix: FileReadTool 100KB 上限、lookups 缓存、microcompact | `b8dec7f7` (Codex) |
| 6 | `2f86485` | refactor: 精简系统提示词 | `3b38767c` |
| 7 | `bdea5a2` | fix: Fix deferred tools handling in OpenAI compatibility layer | `70d6b288` |
| 8 | `e88dcb2` | fix: OpenAI adapter tool calling compatibility | `a442aee5` |
| 9 | `b28de71` | perf: 优化内存与遥测管理,启用 Vite minify | `db84f971` (Codex) |
| 10 | `4f0aa86` | feat: 添加本地 Memory/Vault 管理命令 | `a3ef9a1b` |
#### P2 — 逐 commit 评估23 个)
##### 3.1 内存/性能5 个)
| 上游 Commit | 说明 | CCP Commit |
|-----------|------|-----------|
| `198c09b` | 内存优化 — 预测性 compact 阈值、增量 lookups orphaned 修复 | `aff7b0e8` |
| `ef10ad2` | 优化内存峰值与 CPU 性能,降低 100-300MB | `b7bbbeb0` |
| `f5c3ee5` | 修复长时间运行会话的内存泄漏问题 | `39a3ff8d` |
| `3a2b6dd` | 表格渲染效率升级 | `b4629aa5` |
| `08cd02c` | highlight 缓存改用 LRUCache 降低内存开销 | `d35f0db1` |
##### 3.2 Provider/API 兼容6 个)
| 上游 Commit | 说明 | CCP Commit |
|-----------|------|-----------|
| `d136872` | 修复第三方 API 不兼容部分参数 | `72b13ee2` |
| `dc3d3e8` | 移除 auto mode 的 provider 和模型白名单限制 | `90406a10` |
| `771e3db` | 修复非 Anthropic provider 署名模型名获取错误 | `379335e3` |
| `6f80e96` | modelType 优先于所有 env vars | `ef80d21d` |
| `462fe69` | 修复 OpenAI cost 计算问题 | `f484c9fa` |
| `cee62bc` | 修复 model alias 导致无限递归栈溢出 | `aa72a8ed` |
##### 3.3 工具系统3 个)
| 上游 Commit | 说明 | CCP Commit |
|-----------|------|-----------|
| `c14b7ea` | 修复 Tool Search 缓存失效 | `eaa6199f` |
| `fc8d531` | ExecuteExtraTool 加入子代理允许列表 | `3922ce07` |
| `ba74e09` | fork-agent-redesign — AgentTool fork 参数 | `e1e23787` |
##### 3.4 系统提示词 / UX4 个)
| 上游 Commit | 说明 | CCP Commit |
|-----------|------|-----------|
| `84f12f3` | 提升 CLAUDE.md 指令权重 | `35927b20` |
| `2006ab2` | 添加 React Error Boundary 防止渲染崩溃 | `1d3951d4` |
| `1f80043` | 修复子代理 token 消耗显示为 0 | `4e050df9` |
| `e7070e0` | showSpinnerTree 下保留 local-agent token | `cbe32ea5` |
##### 3.6 会话/Bridge2 个)
| 上游 Commit | 说明 | CCP Commit |
|-----------|------|-----------|
| `eb833da` | 创建 agent 后刷新缓存 | `44bfc189` |
| `a2cfaf9` | RemoteTriggerTool 测试 mock 补全(部分) | `be767204` |
##### 3.7 杂项3 个)
| 上游 Commit | 说明 | CCP Commit |
|-----------|------|-----------|
| `c499bfb` | 修复 voice provider 的问题 | `1dfe9093` |
| `6c5df39` | 添加 compact 缓存与上下文压缩增强 | `6a63706b` |
#### P3 — 低优先级已合并16 个)
| # | 上游 Commit | 说明 | CCP Commit |
|---|-----------|------|-----------|
| 71 | `ecd3f9d` | fix: Gemini 适配器补全 usage 字段映射 | 🟡 空提交 — 已存在 |
| 80 | `82be5ff` | fix: 代码审查修复 — 安全、性能和正确性 | `fe9da6e5` (partial) |
| 89 | `26ddbda` | fix: align mcp transform pipeline with Anthropic 2.1.128 | `5ebd5466` |
| 90 | `3f1c846` | fix: 调小 snapshots 的范围 | `5886421a` |
| 91 | `75952bd` | fix: 尝试请求参数克隆以解除闭包引用 | `9d49306b` |
| 115 | `047c85f` | fix: 修复 DeepSeek V4 reasoning_content 回传导致 400 | `3cc9545d` |
| 116 | `da6d063` | fix: 修复 anthropic 四个 bug (#352) | `995d3a47` (partial) |
| 117 | `4dcbaf1` | fix: 修复 ACP 模式下 messageSelector require 失败 | `6a025582` |
| 119 | `299953b` | fix: 修复 cliHighlight 类型不兼容问题 | `5ed0fa57` |
| 130 | `c5ab83a` | fix: 修复 Linux 端的安装问题 | `2074f646` |
| 133 | `8442aaa` | fix: 修复 n 快捷键导致关闭的问题 | `6362f1af` |
| 147 | `bb07836` | fix: support CRLF SSE frame parsing (#223) | `d0278e89` |
| 155 | `70baa6f` | feat: add Grok (xAI) API adapter | acp 分支合并 |
| 159 | `eca1acc` | feat: 支持 OpenAI 图片兼容 | acp 分支合并 |
| 169 | `a02a9fc` | fix: 修复定义导入缺失 | `8485589c` (partial) |
| 80 dup | `1d38eae` | fix: address CodeRabbit review findings | acp 分支合并 |
#### REVIEW — 最终判定2 个)
| 上游 Commit | 说明 | CCP Commit |
|-----------|------|-----------|
| `e8759f3` | 禁用 opus[1m] 自动迁移,尊重用户手动移除 [1m] 后缀 | `4ceeedee` |
| `86df024` | 修复模型相关问题 | `9df9e037` |
#### RCS/Web + SSH7 个)
| 上游 Commit | 说明 | CCP Commit |
|-----------|------|-----------|
| `fe08cac` | fix(remote-control): harden self-hosted session flows (#278) | `d1176325` |
| `72a2093` | feat(remote-control): 优化 Web 展示、状态同步 (#288) | `7f4dcfba` |
| `34154ee` | feat: React Web UI 迁移 (142 files) | `056231d0` |
| `2e9aaf4` | feat: ACP 协议 remote control (54 files) | `d7195087` |
| `f9d0111` | fix: web 端 crypto.randomUUID → uuid 库 | `c112237e` |
| `c7bc8c8` | feat: remote control auto bind (#300) | `2d05da10` |
| `03811f9` | feat: SSH Remote — 本地 REPL + 远端工具执行 | `1b6ae3d3` |
### 已存在 commit 列表34 个)
这些 commit 在前期批次同步或自动合并中已带入 CCP再次 cherry-pick 会产生冲突或无变化。
| # | 上游 Commit | 说明 | 来源 |
|---|-----------|------|------|
| 2 | `e7220c5` | fix: eliminate memory leak in promptCacheBreakDetection | 批次同步带入 |
| 5 | `4b44047` | fix: prevent iTerm2 terminal response sequences leaking into REPL input | 批次同步带入 |
| 14 | `2934f30` | fix: 彻底移除 /loop AGENT_TRIGGERS gate | 前期已合并 |
| 19 | `0290fe3` | fix: 关闭 context-collapse 来修复 auto compact 失效 | 批次同步带入 |
| 20 | `ab0bbbc` | fix: 修复内存溢出compact 时清理持久增长数据结构 | 批次同步带入 |
| 21 | `835dd2d` | fix: 为 sessionStorage Map 添加容量上限 | 批次同步带入 |
| 22 | `b3d28bc` | fix: 为 cacheWarningStateBySource Map 设置上限 | 批次同步带入 |
| 31 | `941bcbd` | fix: third-party API user_id validation error (DeepSeek) | 前期批次 |
| 32 | `9624f88` | fix: 修复第三方 Anthropic base URL 应使用 ExaSearchAdapter | 前期批次 |
| 38 | `e5f31af` | fix: ExecuteExtraTool validateInput 校验 | 前期批次 |
| 40 | `b4e52d0` | fix: 拦截 ExecuteExtraTool 直接调用未搜索的延迟工具 | 前期批次 |
| 43 | `ca29e4e` | fix: 禁用 FORK_SUBAGENT 恢复 Explore 子代理 | 前期批次 |
| 49 | `3ac866b` | fix: 修复缓存命中率警告消息不显示 | 前期批次 |
| 56 | `e784f23` | fix: validate and encode target sessionId in peer messages | Bridge 批次 |
| 58 | `e4403ff` | fix: 移除 RCS 按 machineName 复用 agent 记录 | 已确认无需合并 |
| 63 | `6e1d3d8` | fix: 修复 feature 的使用问题 | CCP 用 if 结构已等效 |
| 64 | `91ee142` | Fix bug OpenAI tooluse, improve error messaging | 前期已存在 |
| 73 | `1f80043` | fix: 子代理 token 消耗显示为 0 | P2 #47 已合并(去重) |
| 86 | `f7f69b7` | fix: 模型别名未解析导致署名显示 haiku | 随 `771e3db` 已覆盖 |
| 88 | `12f5aed` | fix: 恢复消息流中 diff 高亮渲染功能 | CCP 已有 StructuredDiffList |
| 99 | `1b10ea3` | fix: preserve empty reasoning_content for DeepSeek v4 (#399) | 已在 CCP |
| 103 | `3276589` | fix: /dev/tcp /dev/udp 网络伪设备安全检测 | CCP 已有 `05fd5e14` |
| 105 | `b8b48bf` | fix: truncate 函数接收到 undefined/null 时崩溃 | CCP 已有 `d0aa028a` |
| 125 | `13a0bfc` | fix: 修复构建产物 import 失效问题 | 空提交 |
| 138 | `bd6448e` | fix: 修正顺序 | CCP 原本正确 |
| 146 | `01cf45f` | fix: 修复 permission 面板 | 代码已包含 |
| 149 | `a3505ae` | feat: DeepSeek thinking mode support for OpenAI compatibility | 前期批次已带入 |
| 150 | `e86573a` | fix: 修复 -r 模式下键盘输入无响应 | 空提交 |
| 153 | `4e1e681` | fix: 删除 debug 限制 | 代码已包含 |
| 156 | `379e40f` | fix: 回退全屏模式 | 代码已包含 |
| 162 | `354c11f` | fix: improve size calculation for LRU cache and handle nested object | 空提交 |
| 171 | `8645d37` | fix: add Authorization header to peer message requests | e784f23 批次已带入 |
| 175 | `221fb6e` | fix: 修复 @ typeahead 文件搜索无结果的问题 | 空提交 |
| 176 | `a889ed8` | fix: 移除 Settings 中未定义的 Gates 引用 | 空提交 |
### 跳过 commit 列表及原因93 个)
#### 1. 缺依赖模块 / 云端后台4 个)
| 上游 Commit | 说明 | 原因 |
|-----------|------|------|
| `52b61c2` | fix: bound agent communication memory growth (#369) | 缺 AgentSummary/summaryContext/summaryPrompt/udsResponseReader |
| `2437040` | feat: 添加云端管理命令 | 缺 CCB 云端后台 API |
| `8fccd32` | fix: 脱敏 probe-subscription-endpoints 日志 | CCB 的 probe 脚本 CCP 未引入 |
| `78d46aa` | fix: 替换 extractMemories 的 require() 为动态 import() | Vite onlyCCP 用 Bun.build |
#### 2. CCB 云端 / SaaS 功能8 个)
| `f8a289b` | OTEL 遥测 | `be97a0b` | AWS Bedrock |
| `31b2fdd` | provider usage 统计 | `96ec96c` | ccb update 命令 |
| `a7e03a5` | interrupt 日志上传 | `9da7345` | Ultraplan Multi-Agent |
| `8137b66` | 初次登录校验 | `eb86e34` | 远程 agent 调度 |
#### 3. Ant 模式 / 穷鬼模式5 个)
| `e986141` | 穷鬼模式写入 | CCP poor mode 处理不同 |
| `d6bfc34` | ant 模式 | CCP 不开 ant |
| `52a9cc0` | ant 模式 | 同上 |
| `e944633` | getAntModels is not defined | 同上 |
| `4ab4506` | USER_TYPE=ant TUI 无法启动 | 同上 |
#### 4. Skill LearningCCP 用自己的 Hermes Skill 系统3 个)
| `0a9e6c0` | 先关闭 skill learning | CCP 用 Hermes skill 系统 |
| `1a1d570` | 限制 skill-learning 无限增长 | 同上 |
| `1c3b280` | 修复多轮对话缓存失效 skill 提升 | 同上 |
#### 5. Chrome MCPCCP 已有完整 Chrome MCP 功能2 个)
| `d4b30d3` | fix: 修复 chrome 链接版本 | 只改 bun.lock+package.json |
| `e0484e2` | fix: 简化版本 chrome 桥接器 | bun.lock+package.json+setup 脚本 |
#### 6. Node.js 运行时专属CCP 只跑 Bun6 个)
| `7e61e71` | 禁用 UDS_INBOX 修复 nodejs | `c81dac8` | Node UDS socket |
| `4266149` | keep UDS peer failures structured | `a57ca08` | Node es 版本 |
| `ac42ce2` | node loading 按钮计算错误 | `b80483c` | node ws 打包 |
#### 7. Tool Search 2.0 重构CCP 实测正常无需重构2 个)
| `7be08f5` | Tool Search 基础设施层4000 行改动) | 无需此重构 |
| `8c157f0` | 统一自建 Tool Search | 依赖 #41,同上 |
#### 8. 纯测试 / CI / 文档 / 类型14 个)
| `ae7a4e5` | CI 跳过 AutofixProgress 测试 | `ea51474` | 删除 issues 测试 |
| `4a39fd7` | CI test 阶段退出 | `8980013` | issue-template 测试 |
| `80d4e09` | setupAxiosMock 并发丢失 | `547ce9e` | prefetch 测试 |
| `b52c10d` | CI 格式检查 | `6becb8b` | tasks.test.ts 类型错误 |
| `f43350e` | 4 个测试失败修复 | `956e98a` | 重复依赖声明 |
| `1a4e970` | 类型问题(#267) | `8399d9e` | 类型问题 |
| `0b1e678` | mintlify ignore / 侧边栏 | `ff03fe7` | 类型问题 |
| `714ef13` | dev.ts 路径解析 | `2cc626c` | 测试文件 |
| `7935bfb` | debug 启动 | `ac1f029` | external 字面量 |
#### 9. 文件已删除CCP 无对应代码4 个)
| `af0d7dc` | Agents/Teams 纳入 Tool Search | `ad09f38` | 斜杠命令自动补全 |
| `a0dc454` | 服务器双 / 问题 | `be80da4` | 修复缓存 |
#### 10. UX 文案不影响功能5 个)
| `6ff839d` | 优化压缩错误消息 | `88057b1` | 优化 ModelPicker 副标题 |
| `4d0048a` | 优化权限提示用词 | `8a5ef8c` | 优化用户交互文案 |
| `29a1edb` | 模型选择器 Space to toggle | — | — |
#### 11. 其他跳过原因14 个)
| 上游 Commit | 说明 | 原因 |
|-----------|------|------|
| `aa06cea` | GLM 署名邮箱 | 不影响功能 |
| `71c89e9` | theme switching | CCP 主题处理不同 |
| `bd6448e` | 修正顺序 | 已存在CCP 原本正确)→ 已归入 EXISTS |
| `513ccc3` | 修复鉴权 | CCB 私有云后端 |
| `a7d9a22` | 修复 main 文件 | 13199 行 biome 格式化噪音 |
| `919011a` | login 表单 enter 覆盖 | CCB 登录CCP 无 |
| `3923af4` | login 面板左右切换 | 同上 |
| `4e5a0dd` | 终端高亮 | CCP 无对应 highlight 模块 |
| `d3a607e` | 终端高亮 (dup) | 同上 |
| `17c0669` | 非 UTF-8 文件 round-trip | CCP 删了 encoding.ts |
| `5c499d3` | 脱敏 probe 日志 | CCP 删了 probe 脚本 |
| `8ba51ed` | 条件式 hook Rendered fewer hooks | 16 个冲突build 模式不触发 |
| `a8ed0cd` | vendor 二进制路径 | CCP 用 --no-splitting |
| `ca1c87f` | usePipeIpc require 崩溃 | CCP 删了 usePipeIpc.ts |
| `562e9da` | Handle undefined command names | useTypeahead.tsx 被重写,冲突太大 |
| `a6bef45` | rg 文件传入 | 加 download-ripgrep 脚本 |
| `6585d0f` | 禁用 COORDINATOR_MODE | **上游关了CCP 开着!不合!** |
| `91ee142` (dup) | OpenAI tool use | 已存在 |
| `6e598fc` | Merge PR #149 fix/openai-tool-compat | 重复,内容已有 |
| `efaf4af` | Provider Registry/StatusLine/Cache Stats | 3600+ 行新功能 |
| `23bb09d` | model/provider 层改进 | 700 行重构 |
| `d208855` | builtin-tools 增强与测试覆盖 | 1400 行重构 |
| `eec9613` | napi 包测试覆盖 | 非关键 |
| `7e888ce` | 测试 agent 模板 + 文档 | CCP 有独立 README |
| `27a0111` | Bun mock.module 跨文件污染 | 上游测试CCP 受影响? |
| `5486d3c` | Bun mock.module 污染修复 | CCB 云端功能测试 |
| `cdd62520` (dup) | 已在批次同步中记录 | — |
| `9afcb39` | bun publish npmrc | CCP 不发布 npm |
| `7d4c427` | highlight.js 静态导入 | CCP 不用 --compile |
| `ecbd5a9` | Bun.hash 不存在 | 本地 Bun 已支持 |
| `9b8503d` | node 环境没有 bun | CCP 只跑 Bun |
| `2545dca` | ccb update bun install | CCP 用 git pull |
| `227083d` | 截图 MIME 硬编码 | CCP 不用 |
| `8fccd32` (dup) | 脱敏日志 | 缺脚本 |
#### 12. Windows 特供4 个)
| `7a3cc24` | Node.js Windows 环境 | `e38d454` | Windows stdin.ref() 泄漏 |
| `c99021d` | Windows 没有 unzip | `ca086b0` | Windows Computer Use |
#### 13. 延后1 个)
| 上游 Commit | 说明 | 原因 |
|-----------|------|------|
| `c2ac9a7` | CI workflow + bun.lock + ACP 安全加固144 file | 非 ACP 部分已通过 Batch 1a 提取ACP agent 安全加固待启用 ACP 时再合并 |
---
## 附录
### 获取上游最新状态的命令
```bash
# 拉取上游
git fetch upstream
# 查看有意义的待合入 commit排除合并/文档)
git log acp..upstream/main --oneline --no-merges |
grep -v "docs:\|chore:\|contributors"
# 统计分叉数量
git rev-list --count upstream/main..acp -- src/
# 查看特定文件的分叉
git diff upstream/main..acp -- <path>
# 查看 CCP 特有改动统计
git log --all --grep="cherry\|sync\|merge\|upstream" --since="2026-01-01" --oneline | wc -l
```
### 相关文档
- [社区代码遗留问题](./community-code-issues.md) — 详细的 tsc 和 as any 列表
- [Upstream Sync Devlog](./upstream-sync-devlog-2.6.5-2.6.11.md) — 2.6.5→2.6.11 同步过程记录
- [测试规范](./testing-spec.md) — 测试基线和工作流