Qwen Code 上游 backport 建议报告(Gemini CLI 源码对比)

June 11, 2026 · View on GitHub

Qwen Code 于 2025-10-23 从 Gemini CLI v0.8.2 fork。此后 Gemini CLI 独立演进了 33 个大版本(v0.9.0 → v0.41.0-nightly.20260425)、2350+ commit——大量新功能和优化未被 backport。本报告系统梳理 62 项可 backport 的改进点,并附 Qwen Code 独有优势的反向对比。

相关报告

一、为什么需要 backport

1.1 fork 时间线

2025-06-25  Gemini CLI v0.1.0 首次发布
2025-10-23  Qwen Code 最后同步上游(v0.8.2)← fork 点
    ↓ (此后 Qwen Code 独立发展,未再同步上游)
2025-11    Gemini CLI: Hook 引擎、模型路由器、会话恢复
2025-12    Gemini CLI: Hook 默认启用、/rewind、事件驱动调度器
2026-01    Gemini CLI: A2A 协议、远程 Agent、Plan 模式
2026-02    Gemini CLI: 后台 Shell、Vim 增强、sandbox 加固
2026-03    Gemini CLI: SlicingMaxSizedBox 防闪烁、Edit 模糊匹配、环境变量净化
2026-03    Gemini CLI: Model Routing 多策略路由、DevTools Inspector、Voice Formatter
2026-04    Gemini CLI v0.36.0 ~ v0.41.0-nightly——新增 Billing/Credits、CodeAssist 企业集成、Triage 代码分析、4 层 prompt-driven memory 重构、安全 .env headless、core tools allowlist、boot perf 异步化、@ recommendations watcher、skill recurrence evidence、topic narration default 等

1.2 差距的实际影响

问题根因影响
大输出屏幕闪烁无 SlicingMaxSizedBox + 无硬上限用户体验差
环境变量泄漏无环境净化secrets 传递给 npm install 等命令
编辑匹配失败率高仅精确匹配Agent 反复重试浪费 token
长命令内存泄漏无 Shell buffer 上限tail -f 等命令耗尽内存
无 /rewind 回退未 backport用户需手动 git checkout

1.3 Qwen Code 的独有优势(不受 backport 影响)

backport 不会丢失 Qwen Code 独立发展的优势:

能力说明规模
多 Provider 内容生成Anthropic/OpenAI/DashScope/DeepSeek 等核心差异
CoreToolSchedulerAgent 工具并行执行核心差异
规则权限系统L3→L4→L5 多层评估核心差异
Arena 多模型竞赛竞品无独有
开源 + 多 provider BYOKApache-2.0,模型可接 Qwen OAuth/Anthropic/Google/自定义独有
分离重试预算内容/流异常/速率限制分别计数工程优势
三格式扩展兼容Qwen + Claude + Gemini生态优势
多渠道部署DingTalk/Telegram/WeChat/Web(webui 14,414 行)Gemini CLI 无
Web UI浏览器端完整交互界面(web-templates 2,996 行)Gemini CLI 无
Java SDKJVM 生态集成Gemini CLI 无
Zed 编辑器扩展除 VS Code 外的 IDE 生态Gemini CLI 无
国际化 (i18n)内置中英多语言支持Gemini CLI 无

1.4 backport 策略建议

策略适用场景风险
直接复制文件新增功能(SlicingMaxSizedBox、toolLayoutUtils)低——不改现有代码
改一个数字字符上限降级(1MB→20KB)极低——改一行
新增常量ACTIVE_SHELL_MAX_LINES=15低——新增不影响
参考实现重写Edit 模糊匹配中——需适配 Qwen Code 的 edit 逻辑
大型 backportOS 级 sandbox高——跨平台+安全边界

二、backport 建议矩阵(62 项,按优先级排序)

注:item-13 / item-44(原 large paste)已在历史扫描中确认 Qwen Code 已实现,主动移除保留编号空位(不重排避免引用失效)。matrix 实际项数 = 62 个 item id 中减去 item-13、item-44 + item-44 复用为 Model Routing = 61 项。

优先级改进点Qwen Code 现状难度上游 PR
P0渲染前数据裁剪(SlicingMaxSizedBox) — 渲染前 .slice() 到 maxLines,避免 Ink 布局全量内容渲染后视觉裁剪(布局全部数据)#21416 / QwenPR#3013
P0工具输出硬上限常量ACTIVE_SHELL_MAX_LINES=15 等 4 个常量 + calculateShellMaxLines()无硬上限(=终端高度)#20378 / QwenPR#3013
P0Shell buffer 摊销截断 — 10MB 上限 + 1MB 摊销截断 + UTF-16 surrogate 保护无 buffer 上限#21416
P0流式高度稳定化(useStableHeight) — 流式输出期间吸收 <5 行高度波动,防止行数跳动无高度稳定QwenPR#3013
P0环境变量净化 — 25+ 模式过滤 secrets/API keys/credentials无净化,secrets 泄漏到 shell
P0危险命令黑名单rm -rf/find -exec/git -c 等深度验证仅 AST 只读检测提示层已有 QwenPR#2889
P1LRU 文本处理缓存 — 字符串宽度 / codePoints / 高亮 token 三级缓存无缓存,每次击键重新计算
P1紧凑工具视图(DenseToolMessage) — diff 折叠 + 15 行上限 + 紧凑布局缺失#20974
P1组件 memo 化HistoryItemDisplay / AppHeader 等高频组件 React.memo()未 memo 化
P1字符上限降级MAXIMUM_RESULT_DISPLAY_CHARACTERS 从 1MB 降到 20KB1MB(Gemini 的 50 倍)#21416 / QwenPR#3013
P1Edit 模糊匹配(Levenshtein) — 10% 容差 + 空白低惩罚 + LLM 修复回退仅精确匹配
P1省略占位符检测 — 拦截 "rest of methods..." 等不完整内容无检测
P1JIT 上下文发现 — 读/写/编辑文件时自动附加子目录上下文缺失
P1OS 级 sandbox — Linux bwrap + macOS Seatbelt + Windows 受限 token无进程隔离
P1Tool Output Masking — Hybrid Backward Scanned FIFO 裁剪大工具输出,保留最近 50k token全量加载到上下文
P1/rewind 检查点回退 — 会话内任意消息回退 + 文件恢复 + 确认对话框✓ 已实现QwenPR#3441 ✓(2026-04-25 合并 · double-ESC + /rewind · +1533/-6)
P1Model Availability Service — 模型健康追踪 + 容量/配额感知 + 自动降级无模型健康追踪
P2虚拟化列表(VirtualizedList) — 仅渲染可视区域 + StaticRender 离屏项全量渲染
P2批量滚动(useBatchedScroll) — 同一 tick 内多次滚动合并为一次渲染无批量滚动
P2Scrollable 滚动容器 — ResizeObserver 锚定 + 动画滚动条 + backbuffer缺失
P2终端能力管理器 — Kitty 键盘协议 + bracketed paste + 鼠标事件缺失
P2URL 安全检测 — Unicode 同形攻击 / Punycode 检测缺失
P2Shell 命令参数补全 — git/npm 命令参数补全 provider缺失
P2任务追踪工具(trackerTools) — 6 个子工具:创建/更新/依赖/可视化缺失
P2Folder Trust 发现 — 信任前扫描项目配置(hooks/agents/MCP/allowlist)无预执行扫描
P2Web Fetch 速率限制与 SSRF 加固 — 10 次/分钟/host + async DNS 验证 + IANA 段阻断最小 SSRF 检查
P2Grep 高级参数include_pattern/exclude_pattern/names_only/per-file 上限仅基础 pattern+path+glob
P2高级 Vim 操作 — 大词(dW/cW) + 查找(f/F/t/T) + 替换(r) + 大小写切换(~)仅基础词操作
P2Footer 自定义FooterConfigDialog 可配置状态指示器固定布局
P2Write File LLM 内容修正 — 写入前 LLM 校正畸形内容直接写入
P2Markdown 渲染切换 — Alt+M 切换渲染/原始 Markdown 视图缺失
P2A2A Agent-to-Agent 协议 — gRPC/REST 远程 Agent 通信 + 30 分钟超时缺失
P2Workspace TOML Policy — 项目级策略引擎 + 自动接受 + 完整性校验仅权限规则
P2后台 Shell 管理工具 — list/status/wait/terminate 4 个专用工具is_background 参数
P2Wave-based 并行工具调度 — 安全工具按波次并发执行仅 Agent 工具并行
P3自定义 Ink 构建@jrichman/ink@6.6.7 优化 fork标准 ink@6.2.3
P3超长回复分片渲染GeminiMessageContent 分片避免单组件过大单组件渲染全部
P3闪烁检测器useFlickerDetector 自动检测并缓解缺失
P3OAuth 流程重构 — 共享 oauth-flow.ts + RFC 9728 + OIDC 路径发现内联实现
P3Conseca 安全框架 — 策略生成 + 执行 + 可扩展 checker 链无内容安全评估
P3Ctrl+Z 终端挂起 — 挂起/恢复 + 终端状态管理缺失
P3Shell 不活跃超时 — 可配置超时 + 状态标题变化缺失
P3Startup Profiler — 启动阶段 CPU 计时 + 遥测集成缺失
P1Model Routing 多策略路由 — 8 种可组合路由策略 + Gemma 分类器 + 遥测集成(3,667 行)无路由层
P1Agent Session 协议层 — AsyncIterable Agent 通信 + 事件回放 + 多流管理(4,997 行)无 Agent 会话协议
P1Session Browser 会话浏览器 — TUI 内交互式历史会话搜索/筛选/切换(512 行)--resume 命令行
P2A2A Server 服务端包 — HTTP 应用服务器 + 远程 Agent 执行器(9,044 行)无 A2A 支持
P2DevTools Inspector 调试面板 — WebSocket 实时网络/控制台日志查看器(433 行)无调试面板
P2MCP Resource Registry 资源注册表 — MCP 资源发现 + URI 查找 + 缓存失效追踪(161 行)无资源注册
P2Voice Response Formatter 语音格式化 — Markdown→语音友好纯文本转换(473 行)无语音支持
P2Triage 代码问题检测 — Issue 识别 + 重复代码检测 UI(1,728 行)无代码分析 UI
P2CodeAssist 企业集成 — 用户分层 + 信用额度 + 管理员策略 + MCP 管控(9,825 行)无企业集成
P2Billing/Credits 计费系统 — Google One AI 额度管理 + 超额策略 + 计费集成(449 行)无第一方计费(Coding Plan 订阅或 BYOK provider 计费)
P0安全 .env + Workspace Trust Headless 模式 🆕 — 禁止 IDE_STDIO 等关键 key 被 .env 覆盖(RCE 修复),headless 模式默认 untrustedloadEnvironment() 无 trust 检查#25022 + #25814 + #24170
P1Memory 系统 4 层 Prompt-Driven 重构 🆕 — 删 MemoryManagerAgent 转主 agent prompt 编辑 4 层 (project/global/session/turn)单层 user memory,无 agent#25716
P1Core Tools Allowlist + Shell 验证增强 🆕 — 白名单工具模式 + shell substitution 96 个攻击向量回归测试仅 deny-list 模式#25720
P1Boot 性能异步化 🆕 — experiments/quota fire-and-forget Promise,冷启动 -300ms同步初始化阻塞启动#25758
P2@ 推荐 Watcher 增量更新 🆕 — chokidar 监听 + in-memory 缓存每次重新扫描#25256
P2Skill 提取质量门 🆕 — recurrence evidence (≥3 次) + skill-creator agent 集成提取门槛低,噪音多#25147 + #25421
P3Topic Narration + autoMemory 配置拆分 🆕 — 长对话主动 topic 播报 + memoryManager → autoMemory 独立开关单一 memoryManager 开关小-中#25586 + #25567 + #25601
P3小型 backport 集合 🆕/new alias / Bun SIGHUP fix / seatbelt $HOME 路径 / OSC 777 等单项几行变更8 个 PR 列表见详情
P2Real-time Voice Mode(双向语音 I/O)🆕🆕 — cloud + local backends + VoiceModelDialog + InputPrompt 集成。与 item-50(Voice Formatter)质变仅 item-50 提议(Markdown→TTS 文本)#24174

三、优先级分布

优先级数量核心主题
P07 项防闪烁(3)+ 高度稳定(1)+ 安全加固(3,含 .env RCE 修复)
P117 项渲染性能(4)+ 工具智能化(4)+ 上下文/会话管理(3)+ Model Routing + Agent 协议 + Session Browser + Memory 4 层 + Core Tools Allowlist + Boot 异步化
P228 项UI 组件(5)+ 安全(3)+ 工具增强(4)+ 调度/协议(3)+ UX(3)+ A2A Server + DevTools + 资源注册 + 语音格式化 + Real-time Voice Mode + Triage + 企业集成 + 计费 + @ Watcher + Skill 提取门
P310 项底层优化(3)+ 终端特性(3)+ 安全框架(2)+ Topic Narration + 小型 backport 集合
合计62 项

四、30 分钟快速见效——P0 实施指南

如果只有 30 分钟,做这 3 件事立即改善用户体验:

4.1 字符上限降级(5 分钟)

// packages/cli/src/ui/components/messages/ToolMessage.tsx
// 改一个数字:
const MAXIMUM_RESULT_DISPLAY_CHARACTERS = 20000; // 原来是 1000000

4.2 添加硬上限常量(10 分钟)

// packages/cli/src/ui/constants.ts — 新增:
export const ACTIVE_SHELL_MAX_LINES = 15;
export const COMPLETED_SHELL_MAX_LINES = 15;
export const SUBAGENT_MAX_LINES = 15;

ToolMessage.tsx 中添加 Math.min(计算值, ACTIVE_SHELL_MAX_LINES)

4.3 从上游复制 SlicingMaxSizedBox(15 分钟)

从 Gemini CLI 复制 SlicingMaxSizedBox.tsx(103 行),在 ToolMessage.tsx 中用它包裹工具输出——渲染前裁剪数据到 maxLines 行。

效果:大输出闪烁问题基本消除。

4.4 扩展路线图

时间范围预期效果
30 分钟上述 3 项 P0大输出闪烁消除
1 天+ LRU 缓存 + 组件 memo + 字符上限 + 省略检测击键响应 + 工具输出体验显著提升
1 周+ Edit 模糊匹配 + JIT 上下文 + /rewind + Session Browser编辑成功率 + 会话管理完整化
1 月+ Model Routing + Agent Session + 环境净化 + 沙箱模型智能选择 + 安全模型完善
1 季度+ A2A Server + DevTools + Triage + Voice远程 Agent + 调试 + 代码分析

五、Gemini CLI vs Qwen Code 模块级架构差异

fork 后 Gemini CLI 新增了大量 Qwen Code 中完全不存在的模块:

5.1 Gemini CLI 独有模块

模块路径规模功能对标建议
Model Routingcore/routing/19 文件 3,667 行8 种可组合策略 + Gemma 分类器自动选模型P1——参考实现
CodeAssistcore/code_assist/26 文件 9,825 行企业分层 + 管理员策略 + MCP 管控P2——商业化需要时
Agent Sessioncore/agent/11 文件 4,997 行AsyncIterable 通信 + 事件回放 + 多流P1——远程 Agent 基础
A2A Serverpackages/a2a-server/33 文件 9,044 行HTTP Agent 服务器 + gRPC 远程执行P2——与 item-37 配套
Triageui/components/triage/2 文件 1,728 行Issue 检测 + 重复代码分析 UIP2——代码质量
Session Browserui/components/SessionBrowser/9 文件 512 行交互式历史会话搜索/切换P1——用户体验
Voicecore/voice/2 文件 473 行Markdown→TTS 友好文本转换P2——可访问性
Billingcore/billing/3 文件 449 行Google One AI 额度 + 超额策略P2——商业化
DevToolspackages/devtools/2 文件 433 行WebSocket 实时日志查看器P2——开发调试
Resourcescore/resources/2 文件 161 行MCP 资源注册 + URI 查找P2——MCP 增强

5.2 Qwen Code 独有模块(Gemini CLI 无)

模块路径规模功能
多渠道部署packages/channels/多子包DingTalk/Telegram/WeChat 渠道适配
Web UIpackages/webui/111 文件 14,414 行浏览器端完整交互界面
Web Templatespackages/web-templates/20 文件 2,996 行Web 部署模板
Java SDKpackages/sdk-java/JVM 生态集成
Zed 扩展packages/zed-extension/Zed 编辑器集成
国际化packages/cli/src/i18n/中英多语言支持
Arena内置多模型竞赛对比
多 Provider内置Anthropic/OpenAI/DashScope/DeepSeek 等

5.3 核心差异总结

维度Gemini CLIQwen Code评估
模型路由8 策略组合 + 分类器直接指定模型Gemini 显著领先
Agent 协议AsyncIterable + 事件回放基础 Agent 调用Gemini 领先
企业功能CodeAssist 分层 + 计费开源 + BYOK(Coding Plan 订阅或自带 provider)不同路线
多渠道仅 CLI + IDECLI + IDE + Web + 聊天平台Qwen Code 领先
多模型仅 Gemini 系列10+ ProviderQwen Code 领先
代码分析Triage Issue/DuplicateGemini 领先
调试工具DevTools InspectorGemini 领先
语音Voice FormatterGemini 领先
国际化i18n 多语言Qwen Code 领先

六、完整实施详情

每项的完整实现细节(问题定义、源码索引、修改方向、成本评估、前后对比)见 backport 建议详情

七、更新日志

2026-04-25(Gemini CLI 上游 git pull · 新增 1 项 + 3 项 enhancement)

Gemini CLI 源码扫描:从 v0.41.0-nightly.20260423.gaa05b4583(last scan 状态)→ v0.41.0-nightly.20260425.42587de7(21 个新 commit),识别出 1 项新可 backport 改进点 + 3 项现有 item enhancement

新增 item-63(P2)

#优先级功能关键 PR
item-63P2Real-time Voice Mode(双向语音 I/O)——cloud + local backends,VoiceModelDialog UI,settingsSchema 81 行配置 schema,InputPrompt 集成。与 item-50(Voice Formatter)质变——后者仅 Markdown→TTS 文本,本 item 是完整的 bidirectional 实时语音交互(说话→识别→agent→TTS→播放)#24174

现有 item enhancement(不增加 item 数)

影响的 itemGemini PR说明
item-55 Memory 4 层重构#25873持久化 auto-memory scratchpad 用于 skill extraction —— 给 4 层 memory 增加跨会话 scratchpad
item-57 Core Tools Allowlist + Shell 验证#25935YOLO 模式 fail-closed when shell parsing fails for restricted rules —— 解析器不确定时默认拒绝而非允许,关闭潜在绕过
通用 fix#25816jsonl session logs in memory/summary services —— 与 item-55 内部数据流相关

不直接对标的 Gemini 上游变更

Gemini PR为什么不单列
#25888 gemini-cli-bot metrics & workflowsAnthropic-内部 dogfood 指标流水线,Qwen 用不到
#25894 allow output redirection for cli commandsshell 解析微调,与已合并的 QwenPR#3508 等输出处理无明显冲突
#25941 revert backspace handling for WindowsWindows 兼容回退,未影响 Qwen Code 当前行为
#25925 docs link in README文档级
#25874 FatalUntrustedWorkspaceError doc link文档级(已在前次扫描标注)
#20108 abort error fatal crash fixbug fix,影响面有限

总数:61 → 62 项


2026-04-24(Gemini CLI 上游 git pull · 新增 8 项)

Gemini CLI 源码扫描:从 v0.36.0 → v0.41.0-nightly(296 个新 commit),识别出 8 项新可 backport 改进点

新增 8 项

#优先级功能关键 PR
item-55P1Memory 系统 4 层 prompt-driven 重构#25716
item-56P0安全 .env + Workspace Trust Headless(RCE 修复#25022 + #25814 + #24170
item-57P1Core Tools Allowlist + Shell 验证增强#25720
item-58P1Boot 性能异步化(experiments/quota fire-and-forget)#25758
item-59P2@ 推荐 Watcher 增量更新#25256
item-60P2Skill 提取质量门(recurrence evidence + skill-creator)#25147 + #25421
item-61P3Topic Narration default + autoMemory 拆分#25586 + #25567 + #25601
item-62P3小型 backport 集合(8 个 PR)/new alias / Bun SIGHUP fix / seatbelt 路径 / OSC 777 等

总数:53 → 61 项。

Qwen 已实现的 Gemini 上游变更(不需 backport)

Gemini PR说明Qwen 现状
#25342bundle ripgrep into SEA for offline✓ Qwen 已 vendor packages/core/vendor/ripgrep/(6 平台二进制:arm64-darwin / arm64-linux / x64-darwin / x64-linux / x64-win32 + COPYING)

不直接对标的 Gemini 上游变更

Gemini PR为什么不单列
#25090 .mdx support to get-internal-docsQwen 无 internal-docs 工具
#25513 Vertex AI request routingQwen 主用 DashScope/OpenAI-compat
#25498 gemini gemma local model setupQwen 走 qwen-oauth + multi-provider 路线
#25604 Gemma 4 models support模型清单变化,Qwen 走 models.dev 类似方向更合适
#25343 telemetry traces flag已有相似 telemetry flag
#25874 FatalUntrustedWorkspaceError doc link文档级别变更

2026-04-09

  • 新增 11 项 backport 建议(#44-#54),总项数 42→53
  • 根据 PR#3013 的 3 阶段实现,关联 item-1/#2/#7 的 QwenPR 追踪,新增 item-54(useStableHeight)
  • 新增第五节"模块级架构差异"——Gemini 独有 10 模块 vs Qwen Code 独有 8 模块
  • 扩展 Qwen Code 独有优势(+5 项:多渠道/Web UI/Java SDK/Zed/i18n)
  • 扩展实施路线图(30 分钟→1 季度阶段规划)
  • 新增第七节"更新日志"

2026-04-06

  • 初始版本:42 项 backport 建议 + 1271 行详情文档