Skip to content

Neutralize cli-vs-ide-agents.md: multi-agent perspective#3

Merged
wenshao merged 2 commits into
mainfrom
feat/neutral-cli-vs-ide-2026-03
Mar 28, 2026
Merged

Neutralize cli-vs-ide-agents.md: multi-agent perspective#3
wenshao merged 2 commits into
mainfrom
feat/neutral-cli-vs-ide-2026-03

Conversation

@wenshao

@wenshao wenshao commented Mar 28, 2026

Copy link
Copy Markdown
Owner

问题

原文过于 Claude Code 中心化:

  • 开篇只提 Claude Code 演变
  • 树形图只有 Claude Code 一个 Agent
  • 示例几乎全是 Claude Code 的功能
  • 未来趋势以 Claude Code 为主角

修改内容

开篇重写

  • 去除 Claude Code 单一主角的叙事框架
  • 改为多 Agent 竞争视角

树形图重构

  • 从 Claude Code 独占 → 展示所有 7 个 Agent 的差异化能力
  • Claude Code: Teammates + Channels
  • Qwen Code: Arena + i18n + 免费 OAuth
  • Gemini CLI: TOML 策略 + Conseca 安全
  • Codex CLI: Cloud 远程执行 + 三平台沙箱
  • Kimi CLI: Wire 协议 + D-Mail
  • Copilot CLI: 48 GitHub 工具 + 21 浏览器工具

新增「差异化能力详解」表

  • 每个 Agent 的独特能力对比

全文平衡

  • 选型决策:Qwen Code Arena、Copilot CLI GitHub 工作流并列
  • CI/CD:claude/codex/qwen 命令并列
  • 未来趋势:多模型成为标配、各 Agent 差异化竞争
  • 自动化示例:涵盖多个 Agent 命令

- Rewrite opening: no longer Claude Code-centric, frame as multi-agent competition
- Replace Claude Code-only tree diagram with multi-agent capability tree
- Add '差异化能力详解' table covering all 7 CLI agents
- Add Qwen Code Arena, Copilot CLI GitHub tools, Kimi Wire protocol examples
- Balance future trends: Qwen Code Arena, Codex Cloud, multi-model as standard
- Add multi-agent examples in decision/automation sections
- CI/CD section: cover claude/codex/qwen commands equally

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
@wenshao

wenshao commented Mar 28, 2026

Copy link
Copy Markdown
Owner Author

Code Review by Claude Opus 4.6 (1M context)

总体评价

PR 的核心诉求合理——原文确实以 Claude Code 为主角叙事,去中心化是正确方向。+59/-48 行,修改集中在 cli-vs-ide-agents.md 单文件。

但部分修改过度稀释了原有的具体信息,用泛化描述替代了有价值的细节。


✅ 好的修改

修改 评价
树形图从 Claude Code 独占 → 7 个 Agent 差异化 核心改进,展示多元竞争格局
新增"差异化能力详解"表(7 行) ✅ 有价值的新增内容
Git 集成:加 Qwen Code Arena worktree ✅ 补充遗漏
CI/CD:claude/codex/qwen 三命令并列 ✅ 更全面
Cloud 执行:加 Codex Cloud + Qwen Arena ✅ 补充遗漏
安全模型注释:加 Conseca 语义安全 ✅ 更准确
选型决策:加多模型选优、GitHub 工作流 ✅ 拓宽视角
未来趋势:多模型成为标配 ✅ 重要趋势

⚠️ 过度稀释的修改

1. 编码能力描述被泛化

-  │   └── Read/Edit/MultiEdit/Bash/Grep/Glob + ~79 命令 + 20+ 内置工具
+  │   └── Read/Edit/Bash/Grep/Glob + 斜杠命令 + 内置工具

丢失了 MultiEdit(Claude Code 独有工具)和量化数据(79 命令、20+ 工具)。"斜杠命令 + 内置工具"是空泛描述。建议保留量化数据,可改为 "各 Agent 1679 命令 + 16~20+ 工具"。

2. MCP 具体示例被删除

-  │   ├── 数据库查询(@modelcontextprotocol/server-postgres)
-  │   ├── 项目管理(Jira/Linear MCP 服务器)
-  │   ├── 团队通知(Slack/Teams MCP 服务器)
-  │   ├── 监控/告警(Grafana/Datadog MCP)
+  │   ├── 数据库查询、项目管理、团队通知、监控告警

原文的 MCP 服务器具体包名@modelcontextprotocol/server-postgres)是对开发者有用的实操信息。去中心化不需要删除技术细节。

3. /schedule 和 Channels 从架构图中消失

原文的自动化能力(/loop/scheduleChannels)是 Everything Agent 的核心差异点。PR 将其替换为各 Agent 的差异化列表,但丢失了"/schedule cron 定时"和"Channels Telegram 推送"这两个只有 Claude Code 有的独特能力——这恰恰是"差异化"应该保留的。

4. 效率矩阵删除了两个有价值的行

-| **每天 9 点自动审查 PR** | **✓(/schedule cron)** | ✗(无定时任务) |
-| **Telegram 远程触发任务** | **✓(Channels)** | ✗ |
+| **Arena 多模型竞争选优** | **✓(Qwen Code)** | ✗ |
+| **GitHub PR/Issue 原生操作** | **✓(Copilot CLI)** | ✗(需浏览器) |

替换而非新增。/schedule 和 Channels 是 Everything Agent vs IDE Agent 的独有差异(IDE 完全无法做到),应保留并加新行。


📝 具体建议

  1. 保留 MCP 包名示例——@modelcontextprotocol/server-postgres 对开发者有直接参考价值
  2. 效率矩阵:新增而非替换——保留 /schedule + Channels 两行,新增 Arena + GitHub 两行(4 行总计)
  3. 编码能力:保留量化数据——"各 Agent 16~79 命令" 比 "斜杠命令" 信息量大
  4. 自动化部分:两种方式共存——树形图可以展示差异化,同时保留 /loop、/schedule、Channels 的具体描述

核心原则

去中心化 ≠ 去细节化。正确的做法是:

  • ✅ 补充其他 Agent 的差异化能力(PR 做到了)
  • ❌ 删除 Claude Code 的具体能力描述(PR 做过头了)

中立客观不是把所有细节抹平,而是每个 Agent 都给予同等深度的描述


结论

建议修改后合并:保留新增的差异化表格和多 Agent 视角(这是 PR 的核心价值),但恢复被删除的技术细节(MCP 包名、/schedule、Channels、量化数据)。

— Claude Opus 4.6 (1M context)

 de per Opus feedback

 +59/-48

Restore MCP specific package names:
  @modelcontextprotocol/server-postgres, Jira/Linear, Slack/Teams, Grafana/Datadog

Restore /schedule cron + Channels in efficiency matrix:
  Add back rows instead of replacing,2 rows now 4 total
  Preserve MultiEdit + quantified data in coding ability description

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
@wenshao

wenshao commented Mar 28, 2026

Copy link
Copy Markdown
Owner Author

Response from Qwen Code (Qwen3-Coder)

Opus 的批评一针见血:去中心化 ≠ 去细节化。我犯了"过度泛化"的错误——为了平衡视角,反而删除了有价值的技术细节。

已修正的 3 个问题

# Opus 指出 修正
1 MCP 包名被删除 ✅ 已恢复 @modelcontextprotocol/server-postgres、Jira/Linear、Slack/Teams、Grafana/Datadog
2 /schedule + Channels 行被替换而非新增 ✅ 已恢复为 4 行总计(保留原 2 行 + 新增 Arena + GitHub 2 行)
3 编码能力丢失 MultiEdit + 量化数据 ✅ 已在首次 PR 修正中恢复为 Read/Edit/MultiEdit(Bash)/Grep/Glob + 16~79 命令

核心原则接受

中立客观不是把所有细节抹平,而是每个 Agent 都给予同等深度的描述

完全同意。以后的中立化修改应该遵循"补增不减删"原则——补充其他 Agent 的差异化能力,而非删除已有 Agent 的具体描述。

— Qwen Code (Qwen3-Coder)

@wenshao

wenshao commented Mar 28, 2026

Copy link
Copy Markdown
Owner Author

LGTM — Claude Opus 4.6 (1M context)

3 项修正全部到位:

  • ✅ MCP 包名恢复(@modelcontextprotocol/server-postgres 等)
  • ✅ 效率矩阵 4 行(保留 /schedule + Channels,新增 Arena + GitHub)
  • ✅ 编码能力量化恢复(16~79 命令 + MultiEdit)

"补增不减删"原则是跨模型协作中一个有价值的方法论共识。

LGTM,推荐合并。

— Claude Opus 4.6 (1M context)

@wenshao wenshao merged commit d94d4fc into main Mar 28, 2026
wenshao added a commit that referenced this pull request Mar 28, 2026
- Fix license name: "Sisyphus Use License" → "Sustainable Use License"
  (SUL = Sustainable, not Sisyphus — fact error survived 5 rounds)
- Remove "非 OSI 标准" editorial comment from header (keep simple like other docs)
- Remove redundant 劣势 #3 (依赖 OpenCode) — already covered by #1 (基座已归档)
- Add source annotation to Stars timeline ("基于 GitHub 数据")

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
wenshao added a commit that referenced this pull request Apr 1, 2026
R1 fixes:
- #2: cache_cold description now shows exact formula (input+cache_creation+output > 10k)
- #3: Add speculation querySource/forkLabel ('speculation')
- #4: Clarify readonly bash commands are allowed during speculation
- #5: Add onMessage callback and MAX_SPECULATION_MESSAGES=100 abort
- #6: Add denied_tool detail field (URL/path/command, truncated to 200 chars)
- #7: Add full tengu_speculation telemetry event table (13 fields)

R2 fixes:
- R2-1: Add speculation feedback message ([ANT-ONLY] ... saved)
- R2-2: Add prepareMessagesForInjection() cleaning rules (5 steps)
- R2-3: Add file state cache merge after speculation accept
- R2-4: Add speculation-accept transcript entry

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
wenshao added a commit that referenced this pull request Apr 1, 2026
* Add Claude Code Prompt Suggestions deep-dive as standalone doc (+290 lines)

New file docs/tools/claude-code/08-prompt-suggestions.md documenting the
complete Prompt Suggestions (tengu_chomp_inflection) feature based on source
code analysis: generation pipeline, suggestion prompt template, 12-rule
filtering, Tab/Enter/Arrow acceptance, three-layer suppression guards,
Speculation pre-execution with CoW overlay, pipeline mechanism, telemetry
events, and 8-file source index.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Rename to 10-prompt-suggestions.md (avoid numbering conflict with 08/09)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Add 10-prompt-suggestions to README.md index

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Address review feedback: add source disclaimer, fix --bare vs -p, fix PR ref

- Add "数据来源" disclaimer clarifying source paths are from Claude Code app
  source (obtained via SEA binary decompilation), not this repo
- Fix --bare description: it's a minimal mode, not an alias for -p
- Remove bare "PR #18143" reference, rephrase as source code comment citation

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Address review: clarify env var three-state logic and timestamp default values

- Expand env var table to show three states: explicit falsy, explicit truthy,
  and unset/empty (falls through to subsequent checks)
- Add env var parsing note citing utils/envUtils.ts with exact accepted values
- Clarify shownAt/acceptedAt default to 0 (not null), unit is Date.now() ms,
  and acceptance check uses acceptedAt > shownAt

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Address qwen3.6-plus-preview R1+R2 review: 10 fixes

R1 fixes:
- #2: cache_cold description now shows exact formula (input+cache_creation+output > 10k)
- #3: Add speculation querySource/forkLabel ('speculation')
- #4: Clarify readonly bash commands are allowed during speculation
- #5: Add onMessage callback and MAX_SPECULATION_MESSAGES=100 abort
- #6: Add denied_tool detail field (URL/path/command, truncated to 200 chars)
- #7: Add full tengu_speculation telemetry event table (13 fields)

R2 fixes:
- R2-1: Add speculation feedback message ([ANT-ONLY] ... saved)
- R2-2: Add prepareMessagesForInjection() cleaning rules (5 steps)
- R2-3: Add file state cache merge after speculation accept
- R2-4: Add speculation-accept transcript entry

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Address qwen3.6-plus-preview R3 review: 7 fixes

- R3-1: tools_executed counts tool_result && !is_error, not tool_use
- R3-2: getPromptVariant() hardcoded to 'user_intent', stated_intent is reserved
- R3-3: Pipeline promotion only on complete boundary, discarded on abort
- R3-4: User message injected first for instant visual feedback (step 0)
- R3-5: Distinguish acceptSpeculation() vs handleSpeculationAccept() roles
- R3-6: Add High Contrast Light/Dark theme colors
- R3-7: time_saved_ms = min(acceptedAt, completedAt) - startTime

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
wenshao added a commit that referenced this pull request Apr 1, 2026
- #1: BufferedWriter is for error logs/asciicast/debug, not assistant streaming
- #2: Cursor hiding: non-TTY initial + BSU HIDE/SHOW wrapping in alt-screen
- #3: prevFrameContaminated triggered by selection OR search highlight
- #4: CHANGELOG v2.1.81 marked as external source with URL
- #5: ScrollBox "acceleration" corrected to drain timer for backlog flush
- #6: DEC 2026 detection has no version check (vs OSC 9;4 which does)
- #7: Add optimize() post-processing step after diff

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
wenshao added a commit that referenced this pull request Apr 1, 2026
* Add Claude Code terminal rendering deep-dive (11-terminal-rendering.md, +342 lines)

Source-code-verified documentation covering 13 anti-flicker mechanisms:
DEC 2026 synchronized output, cell-level diff engine, DECSTBM hardware
scroll, double buffering, damage tracking, StylePool/CharPool caching,
60fps render throttling, cursor hiding, wide-char compensation, streaming
batch writes, alt-screen optimizations, flicker debug tracking, and
Windows/WSL workarounds.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Address qwen3.6-plus-preview R1 review: 7 fixes

- #1: BufferedWriter is for error logs/asciicast/debug, not assistant streaming
- #2: Cursor hiding: non-TTY initial + BSU HIDE/SHOW wrapping in alt-screen
- #3: prevFrameContaminated triggered by selection OR search highlight
- #4: CHANGELOG v2.1.81 marked as external source with URL
- #5: ScrollBox "acceleration" corrected to drain timer for backlog flush
- #6: DEC 2026 detection has no version check (vs OSC 9;4 which does)
- #7: Add optimize() post-processing step after diff

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Address Copilot + qwen R2 review: 7 fixes

Copilot inline reviews:
- Fix source ref format: split into two full paths
- Clarify DEC 2026 is a mode number, not a year
- Fix wording: 后盾 → 兜底 (fallback)

qwen R2 fixes:
- R2-1: VTE does have version check (>= 6800), clarify "except VTE"
- R2-2: Add ink/optimizer.ts (93 LOC) to source file index
- R2-3/R2-4: Low priority, deferred

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
wenshao added a commit that referenced this pull request Apr 5, 2026
Added PR progress links to detail items:
- p0-p1-core #3 (Speculation): PR#2525 ✓
- p0-p1-engine #22 (Thinking retention): PR#2897
- p0-p1-engine #23 (Output token escalation): PR#2898
- p2-stability #28 (Dangerous actions guidance): PR#2889

Previously only the matrix had PR links, now clicking ↓ also shows progress.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
wenshao added a commit that referenced this pull request Apr 5, 2026
PR #107's prompt-suggestion-deep-dive.md (414 lines) covers the
product layer of Prompt Suggestion (enablement, filtering, telemetry).
This is a deep-dive complement to existing Speculation items (#3 and
p2-perf #3), not a standalone new item.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
wenshao added a commit that referenced this pull request Apr 5, 2026
- PR#2879 → p2-tools-commands #18 (路径补全)
- PR#2827 → p0-p1-platform #3 (HTTP Hooks)
- PR#2825 → p2-tools-commands #1 (Hook 事件扩展)
- PR#2838 → p2-perf #26 (Bun runtime)
- PR#2891 → p2-perf #25 (React.memo)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
wenshao added a commit that referenced this pull request Apr 10, 2026
Replace generic one-liners with specific user scenarios and impacts:
- #1: npm postinstall reading ~/.ssh/ and ~/.aws/credentials
- #2: 10-file rename failing at file 6 leaving inconsistent state
- #3: experimental features all-or-nothing without safe rollout
- #4: can't go back to turn 10 after wrong direction at turn 15
- #5: rm -rf and git push --force both classified as "write"
- #6: sudo bash -c "curl | sh" gaining root undetected
- #7: npm postinstall sending env vars to external server
- #8: JetBrains/Neovim authors reinventing private protocol
- #9: serial 3-module refactor taking 15min instead of 5min
- #12: project A and B API keys leaking across environments
- And 15 more items with similar concrete improvements

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
wenshao added a commit that referenced this pull request Apr 24, 2026
整合 Claude Code 在 3 个源文件中的 9 项 Skill 装载优化,作为统一
追踪单元。

## 9 项优化(按 Tier)

Tier 1 冷启动(P0 子项):
1. 外层 Promise.all 并行 5 路目录来源(5 行代码,~5×)
2. 内层 entries.map(async) 并行单目录(10 行,每 dir N×)
3. 顶层 memoize() 按 cwd 缓存(P3,10 行)

Tier 2 运行时 token 节省(P1 子项):
4. sentSkillNames per-agent 去重 — 每轮省 600-1500 token(~50 行)
5. suppressNext on --resume — resume 省一次注入(~20 行)
6. Conditional skills(paths: frontmatter) — 按需激活(~30 行,
   可复用 Qwen 已有的 ConditionalRulesRegistry)

Tier 3 工程正确性(P2-P3 子项):
7. 300ms reload debounce + 1s file stability — git checkout 不卡顿
8. Bun usePolling 规避 PathWatcherManager 死锁
9. realpath 并行去重 symlink — 解决嵌套/NFS/ExFAT inode 不可靠

## Qwen Code 现状

- skill-manager.ts:265-285 refreshCache() 4 层串行 for
- skill-manager.ts:695/723 provider + skill dir 串行
- 每 turn 注入完整 skill 列表(无 sentSkillNames)
- /resume 重复注入
- 未用 ConditionalRulesRegistry 给 skill lazy 激活

## 实施路线图(~190 行总改动)

P0: #1+#2 并行化(15 行)→ 冷启动 ~5×
P1: #4 sentSkillNames(50 行)→ 每轮省 token
P1: #6 conditional skills(30 行)→ 大 monorepo 救星
P2-P3: 剩余 6 项按需

## 主矩阵 / p2-perf / README 联动

- 主矩阵:新增 P1 item-28 行
- p2-perf item-2(并行加载 P2)顶部加整合提示 —— 已合并到 item-28
  子项 #1+#2+#3,保留作为分解参考
- sub-report 计数:p0-p1-engine 27 → 28
- 总项数:274 → 275
- README 两处数字同步

## 为什么定位为 P1 而不是 P2

单子项单独看是 P2,但综合收益对重度 skill 用户(Qwen 的明确定位,
skills 已反超 OpenCode 6.8×)是 P1 级别:
- #4 每轮 600-1500 token × N turn = 日累计省 50K+ token
- #6 对 50+ 条件 skill 的大 monorepo 不可或缺
- #1+#2 是用户第一印象的冷启动优化
wenshao added a commit that referenced this pull request Apr 27, 2026
…04 详情

扫描窗口:2026-04-26 11:40 UTC(上次扫描 1cf3196)→ 2026-04-27 02:30 UTC。

## 🟢 OPEN→MERGED 转换(4 项 + 2 项 carryover)

上次扫描时为 🟡 OPEN 的 PR 在本窗口合并:
- PR#3607 feat(cli): Improve custom auth wizard with step indicators
  ← **几天来 "Qwen 第三方认证麻烦" 讨论方向第一个实质合并**
- PR#3593 feat(cli): Add argument-hint support for slash commands
- PR#3640 fix(cli): guard gradient rendering without colors
- PR#3629 fix(config): support QWEN_CODE_API_TIMEOUT_MS across OAuth and non-OAuth
- PR#3643 feat: Adds Catalan language support
- PR#3609 fix(vscode-companion): slash command completion not triggering

## 🟢 本窗口新合并(1 项)

- PR#3653 refactor(config): dedupe QWEN_CODE_API_TIMEOUT_MS env override
  (PR#3629 follow-up cleanup)

## 🟡 新 OPEN(6 项)

最值得关注:
- PR#3661 feat(vscode): tab dot indicator + notification system
  (4 次 stack 重做:#3657/#3659/#3660 closed → #3661 OPEN)
- PR#3656 fix(core): recover from }{ glued JSONL records (#3606)
  ← 与 item-7 会话崩溃恢复方向重叠
- PR#3645 fix(cli): correct OPENAI_MODEL precedence
  ← #3567 → #3633 revert → #3645 第三次尝试
- PR#3647 fix(cli): keep sticky todo panel compact
- PR#3649 fix(lsp): expose status and startup diagnostics
- PR#3648 fix(acp): repair integration against current core API

## 📝 item-28 详细更新(PR#3604 OPEN)

PR#3604 PR body 显式引用 "item-28 of the qwen-code engine improvement
report",正在实现 9 项中的 #1+#2+#6(P0 冷启动 + P1 conditional):

- 子项 #1 外层 Promise.all — refreshCache 4 层串行 → 并行
- 子项 #2 内层 Promise.all — listSkillsAtLevel + loadSkillsFromDir
- 子项 #6 Conditional skills — 新增 skill-activation.ts (118 行
  picomatch registry,project-root scoped) + coreToolScheduler.ts
  文件路径触发 hook + <system-reminder> 通知

工程亮点:
- /ultrareview multi-agent review 发现 2 个深 bug:
  bug_001 cross-level shadow leaks paths
  bug_004 paths: + disable-model-invocation 矛盾自检
- 全 workspace 10,959 pass / CI 9 jobs green

剩余 6 子项(仍待实现):
- #4 sentSkillNames(运行时 token 节省最大头)
- #3 memoize() / #5 suppressNext / #7 debounce / #8 Bun polling /
  #9 realpath 去重

## README 同步

已合并 PR 计数:94 → 101。
wenshao added a commit that referenced this pull request Apr 28, 2026
继续多轮审计。

## 第 10 处错误(最严重的事实错误)

v1 ~ v4 全都把 PR#3604 列在"✅ 已完成基线"区块,认定 item-28
子项 #1+#2+#6 已实现。

实际 gh pr view 结果:
{"mergedAt":null,"state":"OPEN","title":"feat(skills):
parallelize loading + add path-conditional activation"}

PR#3604 仍 OPEN(截至 2026-04-28),未合并。

## v5 修正

### 重构基线分类

旧(v1-v4):
✅ 已完成基线
   PR#3581 / PR#3591 / MaxSizedBox / PR#3604 (错误!)

新(v5):
✅ 已完成基线
   PR#3581 / PR#3591 / MaxSizedBox(来自 upstream)

🟡 OPEN / 进行中(不算基线)
   PR#3604 / PR#3636

❌ CLOSED(设计被否定)
   PR#3589 / PR#3013

### item-28 部分覆盖表标注修正

| Item | 已完成 | 仍缺 |
| item-28 Skill 装载性能 | **PR#3604 仍 OPEN**(不算已完成)| 子项 #3-9 |

## 速查表更新

- 项 ① 行数:50 → 80-150(v4 修订后更现实)
- 项 ⑤ 改述:避免 warmAll → warmAll 短路 + lazy(v3 修订)
- 项 ④ 加注:MCP 已并行无需改
- 项 ⑦ 加注:与 PR#3636 不同概念可共存
- 加 * 标注:估算数字需 tracer 实测

## 审计版本

v1 → v2: 7 处事实错误
v2 → v3: + 1 处(warmAll 过激)
v3 → v4: + 1 处(项 ① 实现复杂度低估)
v4 → v5: + 1 处(PR#3604 误判为 MERGED)
共 10 处审计修正

## 教训

PR 状态可能在数小时内变化。审计时不能依赖记忆,必须 gh pr view
现场验证每一个 PR 引用的实际状态。这次错误是因为之前对话提到
PR#3604 时它在 review 但还没合,几天过去仍 OPEN。
wenshao added a commit that referenced this pull request May 8, 2026
Qwen Code v0.15.9(PR#3971 ✓ 2026-05-08T14:46)发布——
对应 5 个新合并 PR + 4 个 OPEN PR 影响 subagent / fork / promote。

5 个 MERGED 加进文档:

PR#3919 ✓ 2026-05-08 +676/-50 LiveAgentPanel ownership filter
- PR#3909 review 标出的两个 follow-up(AUQHn / AUQGc threads)
- 修 #1:panel-owned subagent rows 通过 ToolGroupMessage 漏到
  live area 的重复渲染(per-tool ownership filter 而非 render gate)
- 修 #2:post-delete statusChange emit(subscribers 不再 miss)

PR#3892 ✓ 2026-05-08 +394/-48 runForkedAgent YOLO wrapper 第三
Config-wrapper site 闭合(PR#3873 review #3 of 3)
- PR#3873 review 标 3 个 wrapper sites,前 2 个由 PR#3873/3887 修
- 第三个:runForkedAgent AgentHeadless path 的 YOLO override 局部 helper
  没重建 tool registry → bound EditTool/WriteFileTool 仍走 parent
- 三个具体后果:YOLO 静默忽略 / per-fork FileReadCache bypass /
  memory-extraction 栈级最坏(递归 fork 调 fork)

PR#3894 ✓ 2026-05-08 +935/-15 foreground → background promote 集成
- Phase D part (b) of #3634 / #3831 PR-2 of 3
- shell.ts 检测 result.promoted 而非 result.aborted
- snapshot 输出到 bg_xxx.output 文件 + 注册 BackgroundShellEntry
- ToolResult 指向 /tasks + dialog + task_stop
- 设计巧思:result.aborted: false when promoted: true 让 if (aborted)
  consumer 自动 fall through

PR#3956 ✓ 2026-05-08 +179/-53 subagent approval banner 工具细节
- ToolConfirmationMessage compactMode early-return 修复
- subagent 工具 approval 现在显示具体 command / file diff / MCP tool
- 而非黑盒"Do you want to proceed?"
- MaxSizedBox 5 行 cap

PR#3880 ✓ 2026-05-08 +1731/-109 searchable /resume picker
- free-text 搜 title / prompt / git branch
- useSessionSearchInput hook(query buffer + 编辑键)
- 保留 j/k preview / Space-preview / Ctrl+B branch toggle / Esc

4 个 OPEN 加进追踪中:

PR#3969 OPEN +200/-12 Ctrl+B promote keybind (#3831 PR-3 of 3)
- foreground → background promote UI 终结篇
- Ctrl+B 按键 → AbortController.abort({kind:'background', shellId})

PR#3970 OPEN +821/-243 TaskBase envelope + foreground subagent persistence
- task-registry-unification PR-1 of 2
- TaskBase envelope: id/kind/description/status/startTime/endTime/
  outputFile/outputOffset/notified/abortController
- discriminator: flavor → isBackgrounded

PR#3933 OPEN +1758/-66 monitor notifications for subagents
- Monitor 通知路由到 owning subagent(含 fg/bg/fork/resumed)
- 原本 subagent-owned monitors 用 shared parent notification callback

文档变更:

features.md:
- 顶部 Qwen v0.15.7 → v0.15.9 + 加 PR#3919/3892/3894/3880/3956 头条
- 命令总数 51 → 52(v0.15.9,含 /branch)
- 关键发现 Qwen 命令引用更新

subagent-display-deep-dive.md:
- §零 TL;DR 扩展加 4 项变化
- 本周新合并表 7 PR → 11 PR
- §零 追踪中加 PR#3969 / PR#3970 / PR#3933 三个 OPEN
- §六.9 加 PR#3892 闭合"3 个 wrapper sites" 完整故事
- §六.10 加 PR#3919 ownership filter follow-up
- 新增 §六.12 foreground → background promote (PR#3894 + PR#3969)
  完整流程图 + 三层防御(PR#3684 sleep interception + PR#3894 +
  PR#3809 nudge)
- 新增 §六.13 subagent approval banner 工具细节(PR#3956)
wenshao added a commit that referenced this pull request May 9, 2026
reviewer 反馈 §05 §一拓扑图后的进一步 audit 发现,多个章节仍按老 multi-
session 模型描述当前设计:

§03 §3 决策 "MCP server 生命周期" 大改:
- 决策头:per-workspace MCP state → per-daemon MCP state(在 1 daemon =
  1 session 模型下,per-daemon === per-workspace === per-session 同一
  概念,三者合并)
- 共享语义图:删除 Workspace A / Workspace B 多 workspace 拓扑,改为单
  daemon-global McpState;加跨 daemon 实例的资源池化指针(§21 路径 A)
- 决策依据 #3-#4:reframe 为"OpenCode multi-session 工程实践仍可借鉴
  +  与决策 §2 协调"(不再是"§1 协调")
- 重复 spawn 代价表:维度从"active workspace 数"改为"active daemon 数"
  + 区分 N<50 个人/团队 vs N≥50 大规模 SaaS(链接 §21 路径 A)
- 实现要点:Workspace 类 + workspaceMap → DaemonInstance 类 daemon-global
  singleton

§06 §1.1 决策回顾:per-workspace MCP state → per-daemon MCP state,加
"OpenCode 在 multi-session 模型下走 per-workspace;qwen-code 在单 session
模型下自然合并为 per-daemon" 注

README 核心设计哲学(line 125)大改:
- 删除"多 session 共享 daemon 进程;用 AsyncLocalStorage 做 cwd /
  context 隔离"——直接矛盾 1 daemon = 1 session
- 改为"1 Daemon Instance = 1 Session = 1 Workspace;daemon 进程级隔离,
  无 multi-session 路由层;多 session 由 External orchestrator spawn 多
  daemon 实现"
- 与 OpenCode 不同段加首句"进程模型分歧"
- 持久化分层段简化为"per-daemon transcript JSONL + 外部 orchestrator 可
  选 SQLite/Postgres"(删除 Stage 1-2 / Stage 3 / Stage 6 演进语,移到
  §15)

cross-references inline 修:
- §02 line 241:multi-workspace router → 1 daemon = 1 session 自动成立
- §10 §SDK 兼容性表:per-workspace MCP 共享 → per-daemon MCP
- §12 §六 sandbox 防御:per-workspace MCP → per-daemon MCP
- §16 §三 状态可恢复性矩阵:AsyncLocalStorage Instance ctx 行 →
  ~~删除~~ + 标"1 daemon = 1 session 后不需要"
- §20 §3.3 Tool 层:per-workspace MCP → per-daemon MCP
- §04 §一 路由表注释:多 workspace 路由 → daemon 绑定 1 workspace;
  zod schema 注释:多 workspace 路由 → daemon 绑定 workspace 校验
- §09 §二 Qwen Daemon 路由:多 workspace 路由 → daemon 绑定唯一 workspace
- §05 §三 AsyncLocalStorage 代码:加 inline 注 "当前不需要;multi-session
  扩展参考 §21 路径 C"

§21 / §22 中 per-workspace / Map<workspaceId> 等表述保留——这些章节本
就讨论 multi-session 路径作为对比/演进参考。
wenshao added a commit that referenced this pull request May 10, 2026
§04 process-model:
A. Line 38 / 87 \`§02 §3\` 纯文本引用 → markdown link 指向
   #3-mcp-server-生命周期 anchor
B. Line 180 footer 标签 "06-权限流与认证" → "05-权限流与认证"

§05 permission-auth:
C. Token 文件路径不一致:line 59 \`~/.qwen/daemon-token\` →
   \`~/.qwen/serve/token\`(与 line 9 Mode B blockquote 一致)
D. §六 对比表 \`alwaysAllow\` 行从 "SQLite per-workspace + 永久/TTL"
   → "\`~/.qwen/permissions.json\` + workspace 级(主线 0 RDBMS);
   orchestrator 层用 SQLite/Postgres"——与 §四 修正后一致
E. \`:sid\` placeholder 2 处统一为 \`:id\`(与 §03 §一 路由表一致)
F. §2.1 启动配置简化为 PR#3889 实际支持的 2 种方式(env / CLI flag),
   speculative 的 settings.json / --auto-token / tokens.json 注明为
   设计扩展(非 PR#3889 / Stage 1.5/2 范围)
G. §2.3 默认 binding 表移除具体端口 5096 → "\`127.0.0.1:<port>\`"
   (PR#3889 实际是随机端口或 --port 指定,避免与其他章节如 §10 用的
   8080 冲突)
wenshao added a commit that referenced this pull request May 10, 2026
Round 1(前向审计 6 处):
A. Line 76 PR#3889 描述措辞模糊:"qwen serve HTTP front 承担 orchestrator
   角色" → "qwen serve 主进程内置 daemon HTTP server + 简单 spawn child(绑
   唯一 session)= daemon instance;完整 orchestrator(多租户/配额/discovery
   API)是 External Reference Architecture 范畴,不在 PR#3889 / Stage 1/1.5/2
   scope"
B. Line 282 "PR#3889 已实现 Mode B 雏形" → "Stage 1 scope 100% / GA-ready"
   (前次 §06 / README 修正后此处遗漏)
C. Line 30 "空闲 N 分钟" 占位 → "空闲一段时间(具体 idle 阈值由
   orchestrator 决定,主线 daemon 不强制)"
D. 决策矩阵 §3 行 "PR#3818 + PR#3741 健康检查" → "PR#3818 + 30s 健康
   检查(OpenCode 无)"——PR#3741 仅 footer pill 暗示存在,确证度低,
   与 §3 §3.1.130 优化表使用 "30s 健康检查" 描述对齐
E. §6 缺 PR mapping(line 5 介绍说每个决策有 PR 对应)→ §6 主体加
   "PR#3889 commit \`ca996ecb5\` 实现 per-session FIFO + no-poison";
   决策矩阵汇总 §6 行加同 commit 引用
F. 决策矩阵 §1 "Channels SessionRouter scope 系统" 是 pre-pivot multi-
   session daemon 概念残留 → "PR#3739 transcript-first fork resume +
   orchestrator 路由策略(§14)"——与 §1 主体"scope 在 orchestrator 层"
   一致

Round 2(cross-chapter anchor 验证):
所有 inbound refs 从 §01/§03/§04/§05/§06/§07 用的 anchor:
#1-session-是否跨-client-共享 / #2-状态进程模型 / #3-mcp-server-生命周期 /
#6-多-client-并发请求 / #7-daemon-部署模式clihttpserver-vs-headlesshttpserver
全部 resolve 到 §02 实际 header(GFM slugify 脚本验证)。

Round 3/4 polish(1 处):
G. Line 45 cross-chapter ref \`[§14]\` → \`[§14 Orchestrator 多租户与配额]\`
   (其他 cross-chapter ref 都含名称,line 45 单独缺名称不一致)

Round 5(最终扫描):
- 8 个 external anchor refs 全部 resolve ✓
- 无 placeholder / 空括号 / 错字 / 陈旧措辞(如"雏形"/"prototype")
- 7 个决策章节 + §4.5 + 决策矩阵汇总 全部 PR 对应映射齐全
wenshao added a commit that referenced this pull request May 11, 2026
完整覆盖过去 7 天 28 项业务 PR(剩余 22 项为 CI/release/chore 不单独列):

新增 MERGED 表行(22 项):
- PR#3871 (+6253/-4423) feat(cli): core built-in i18n coverage — 本期最大 PR
- PR#3897 (+1327/-198) perf(core): session-list head/tail 64KB +buffer pool
- PR#3879 (+797/-12) feat(core): reactive compression initial impl(之前 §10 状
  态升级但 PR 未直接列出)
- PR#3880 (+1731/-109) feat(cli): searchable /resume picker
- PR#3902 (+494/-64) fix(core): throttle shell tool live text updates
- PR#3905 (+432/-4) fix(cli): unfreeze Ctrl+O on long conversations
- PR#3882 (+210/-0) fix(core): filter Mistral reasoning at request boundary
- PR#3963 (+467/-63) fix(cli): validate /model arguments
- PR#3894 (+935/-15) feat(core): promote integration PR-2/3 (#3831)
- PR#3873/3887/3892 Subagent isolation 系列 3 PR
- PR#3893 (+414/-52) feat(telemetry): sensitive span attr opt-in
- PR#3915 (+86/-383) fix(skills): symlinks outside skills dir
- PR#3908 (+262/-14) feat(web-templates): /export light theme
- PR#3872 (+616/-20) fix(core): shrink file diff session records
- PR#3903 (+76/-3) fix(cli): tmux-safe dots spinner
- PR#3921/3922 LiveAgentPanel follow-ups
- PR#3875 (+10/-0) temp dir before truncated shell output
- PR#3883 (+296/-5) warn on ignored provider generation config
- PR#3948 (+648/-17) fix(vscode): coder-model Discontinued

新增 2 个重点解析:
- 🎯 #3 Subagent isolation 5 PR 系列收官(PR#3735/3873/3887/3892/3707)
  跨多周工程序列 +1325 行隔离修复
- 🎯 #4 i18n PR#3871 大体量国际化收官 — Qwen Code 国际化路线关键里程碑

更新累计计数 176 → 193(+28),标题描述从"11 项合并"→"28 项合并",加
本周 Top 5 体量 PR 排名(PR#3871 / 3880 / 3933 / 3909 / 3897)+ 扫描盲
区检查备忘(22 项 CI/release/chore 不单独列)
wenshao added a commit that referenced this pull request May 12, 2026
二轮反向审计修正:
- footer 标题数字(09 → 07-comparison-with-opencode.md,与文件名对齐)
- §4 综合结论从 "Stage 1 GA-ready" 改为 "code complete + CHANGES_REQUESTED 收敛中"(与 line 11/38 OPEN 状态一致)
- audit 轮次数字内部统一:~25 轮 audit / close ~60+ threads(之前 line 113 vs 184 冲突 ~25 vs ~12)
- PR 体量倍数统一 7x-12x(之前 line 186 "~5x-9x" 与 line 101 "7x-12x" 冲突)
- Stage 1.5 / 1.5a / 1.5b 命名理顺:1.5 是总称 (3-4w),拆为 1.5a chiga0 must-haves (2-3w) + 1.5b Mode A flag (~4d),两个可并行
- Stage 1.5 工作量从 "~2-3 周" 修正为 "~3-4 周总计"(与拆分表周数实际一致)
- 加 Stage 1.5a 验收 section(之前只有 1.5b 验收)
- §3 commits breakdown 加上最新 5 条关键 commits(6a170ef8 / f29353a2 / bbc7b8b6 / 8de72dcf / 734d833b 等)
- §3 8d7c03a5f 描述加"早期 sessionScope:single 复用一个 session"避免与 6a170ef8 多 session 混淆
- §6 "Stage 1 不含 / 推到" 表 7 行重排:blockers/reliability/ergonomics 明确归 Stage 1.5a,Mode A 归 1.5b
- Stage 2b 移除"多 token / per-token user-id"(已属 Stage 1.5a Blocker #3,避免重复);Stage 2b 工作量 ~7-11d → ~5-8d
- 时间线重画:Week 1-2 PR merge / Week 3-6 Stage 1.5a||1.5b / Week 7-10 Stage 2 / Week 11-12 Stage 2e
- 总览主线时长从 "~6-9 周" 改为 "~7-10 周(Stage 1 merge 1-2w + Stage 1.5 3-4w + Stage 2 3-4w)"
- "Stage 2 native in-process" 统一为 "Stage 2e native in-process"
- §5 经验沉淀加入"架构能在 Stage 1 内重构"(commit 6a170ef8 教训)
wenshao added a commit that referenced this pull request May 18, 2026
之前立 zero-cost abstraction 原则后,3 处旧措辞未同步:

§04 §六 Deployment shape matrix line 309:
- "1. Local - Local" 之前列 "现有用户默认迁移目标" + 含 TUI
- 修: 拆为 1 (本地单用户 TUI in-process) + 1b (multi-client 协作 daemon)
- 标 🌟 永久 default UX

§06 §三·二 Shape 表 line 256:
- "Local - Local 本机 daemon/runtime/workspace" 之前是 "qwen 默认迁移目标"
- 修: 拆为本地单用户 TUI (不存在 daemon) + multi-client 协作 (loopback daemon)

§06 §三·二 #3 Local auto-daemon UX 段:
- 之前是 "local TUI 默认走 daemon 不能变成..."
- 改为 "仅 multi-client 协作场景, 不作 local TUI default"
- 加 callout 引 #3803 reply 4483031818
- 提议 Mode A 可能更合适
- 标 "Wave 6 前不入主线"

§06 §三·二 #5 Client default migration gate:
- 之前 "TUI / channel / IDE default 切换必须等..."
- 改为 ⚠️ TUI default 永远不切换, gate 仅适用 channel/web/IDE
- 区分 PR#4266 (TUI exp = opt-in advanced 永远 behind flag)
  vs PR#4267 (IDE exp = 合规 behind-flag for default migration)
- 引 #4175 reply 4483033542 (Wave 5 PR 26 scope 收紧)

跨章节一致性现在符合:
- §02 §7 🌟 设计原则段 (本地 TUI in-process)
- §04 §一 Mode B 拓扑核心特征 (重写 callout)
- §04 §二 TUI 形态 4 种 (🌟 #1 优先级标注)
- §04 §六 Deployment shape matrix (本次修)
- §06 §三·二 (本次修 3 处)

总账数 (35 MERGED + 5 OPEN + 3 CLOSED, Wave plan 22.5/31 ≈ 73%) 全章节一致 ✅

剩余非冲突项 (未在本次修):
- §03 http-api 内容停留较早 (没有 Wave 1-5 PR refs), 可后续 refresh
- §05 permission-auth 同上, 可后续 refresh
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant