Skip to content

release: 0.6.0-alpha.1#119

Merged
huhamhire merged 226 commits into
masterfrom
dev
Jun 23, 2026
Merged

release: 0.6.0-alpha.1#119
huhamhire merged 226 commits into
masterfrom
dev

Conversation

@huhamhire

Copy link
Copy Markdown
Owner

dev 汇入 master,发布 0.6.0-alpha.1(0.6 首个开发期预览版)。合并后在 masterv0.6.0-alpha.1 tag 触发 release.yml(出 Windows / macOS 安装包 + GitHub Release,预发布不抢占 Latest)。

发版前置(已完成)

  • ✅ 版本号:apps/desktop/package.json0.6.0-alpha.1,lockfile 已同步
  • ✅ CHANGELOG:## [0.6.0-alpha.1] - 2026-06-23 段已就位,compare 链接已补
  • ✅ 校对:该段已覆盖自 0.5.0 以来合入 dev 的全部要点

本版重点

  • /ask 复评闭环:对评审建议发起复评、自动取代 / 关闭原评论
  • /ask 结构化分段输出完整文件上下文
  • Agent 会话中途输入与「计划」面板
  • Diff 体验增强:选区引用提问、按变更范围 / 单 commit 查看、冲突文件标注、删除行评论、滚动条总览标尺
  • PR「活动」时间线
  • 前后端基于领域设计的重大重构(行为不变)与 Agent 编排提速

详见 CHANGELOG.md0.6.0-alpha.1 段。

🤖 Generated with Claude Code

huhamhire and others added 30 commits June 17, 2026 19:32
0.5.0 正式版已发布(v0.5.0 tag),开启下一开发周期,对齐 package-lock。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
orchestrator/planner 里步骤行的固定 thought / 判读结果 / 兜底建议理由 / 拒绝前缀此前写死中文,
而渲染层逐字显示(不走 i18next 映射)→ 日/英/德上下文漏出中文(如「判断是否存在需追问的严重问题」)。
新增 AgentStepLabels 本地化表(zh-CN/en-US/ja-JP/de-DE,缺省回落 en-US,与 SUMMARY_SECTIONS 同策略),
按 input.language 在生成时落地;工具名连接符由 CJK 顿号改中性 ` + `。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
fix(agent): 评审/规划步骤文案按会话语言本地化
设置页手动「检查更新」此前只把结果回给设置页本地,与定时检查各自为政、均无缓存 →
手动查到的新版进不了状态栏,窗口/状态栏挂载时也无处读已知结果。

main 侧新增 update-state(进程内缓存 lastResult + publishUpdateResult 缓存并按需广播 +
getLastUpdateResult):手动(app:checkUpdate)与定时(runUpdateCheckIfDue)检查都经此收口,
手动查到新版也广播 app:updateAvailable,状态栏即时出升级 chip;新增只读 app:getUpdateStatus,
App 挂载时先水合缓存再订阅,重挂载不丢状态。失败结果仍静默(不覆盖好结果、不广播)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
fix(desktop): 版本检测收口单一真相源,手动检查同步状态栏并缓存
ipc.ts 从 2449 行收薄至约 50 行,仅做上下文装配与各域 handler 注册;
业务实现下沉到 apps/desktop/src/main/services/:

- common/ 公共工具:broadcast / pr-lookup(收口 adapter 查找)/ mirror /
  comments-cache / usage;context.ts 聚合依赖与公共工具
- 跨域 service:run-queue(pr-agent run 队列)、agent-orchestrator(编排 + AutoPilot)
- 四域 handler:app / pr / config / agent,各自维护领域私有工具

IPC 契约从 packages/shared/src/ipc.ts 拆分迁入新内部包 @meebox/ipc,按业务领域
分文件(app/pr/config/agent/events/common);renderer/preload/main 三侧改从
@meebox/ipc 导入。SyncProgressEvent 因被 repo-mirror 消费,归位到 @meebox/shared。

纯结构性重构,不改运行行为;lint/typecheck/test/build 全绿。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2578 行单文件 ChatPane.tsx 拆到 components/chat/ 下分层组织:
- 容器 ChatPane 只做布局编排,状态与生命周期归 useChatSession,
  业务动作归 useChatActions,时间线归并归 useChatTimeline
- 展示组件拆到 components/(FindingCard / RunResultView / RunningView /
  QueuedView / ConversationMessage / AgentStep / ChatEmpty /
  RulePreviewModal / ChatInputBar / shared)
- 工具方法拆到 utils/(findings / format / tokens / chat-history)
- 对外 API 经 index.ts barrel 保持不变,仅 App.tsx 改导入路径

顺手把 token ↑/↓ 的绿红内联色值收进设计令牌 + 样式类
($color-token-in/out、.chat-token-in/out),视觉零变化。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
refactor(chat): ChatPane 拆分为容器/领域组件/hooks/工具方法
OnboardingWizard.tsx 的四个步骤组件(欢迎 / 平台 / LLM / 完成)从单文件
拆到 onboarding/steps/ 各自成文件,容器(485→236 行)只留向导骨架:
步骤指示 + slide 切换 + 底部导航 + finish/onLanguageChange。

容器路径与对外接口(OnboardingWizard / OnboardingResult)不变,纯搬运无
逻辑/界面变更。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
承接上一轮 service 层抽取,进一步按 request-controller 模式整理 main 侧 IPC:

- handler 与 ipcMain.handle 解耦:每个 handler 是具名 controller(统一签名
  (ctx, req, evt) => …),通道字符串只在 ipc.ts 集中 handle() 一次绑定,带每通道行内注释
- controller 从 service 层剥离到 apps/desktop/src/main/controllers/(app/pr/config/agent),
  register.ts 提供 IpcController 类型 + handle() 薄类型包装
- 解散 services/common/:broadcast / usage 上提为独立纯函数模块;pr-lookup / mirror /
  comments-cache 合并为 PrService 类(强 PR 领域,依赖构造注入),controller 经 ctx.pr.* 调用
- run-queue / agent-orchestrator 保持工厂函数(内聚单域,不强行类化)
- 主进程运行时上下文 IpcContext 改名 ServiceContext(不再误导成属于 @meebox/ipc 契约包)

纯结构性重构,不改运行行为;lint / typecheck / build 全绿。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
components/ 下扁平堆叠的 30 个组件按领域归入子目录:
- common/   基础公共 UI(Avatar / ConfirmModal / Loading / icons / Mermaid 等)
- layout/   应用骨架(MainPane / Sidebar / StatusBar / TitleBar)
- pr/ · diff/ · comments/ · drafts/ · settings/   各业务领域

纯文件位置调整 + import 路径改写(git 识别为 rename),无逻辑/界面变更。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
承接上一步的领域拆分,把强业务属性的领域目录统一收进 features/,与
common/(基础公共 UI)、layout/(应用骨架)三类平级:

  components/
  ├── common/   ├── layout/
  └── features/{ pr · diff · comments · drafts · settings · chat · onboarding }

顶层只剩 common / layout / features 三个桶,分类轴统一(kind vs 业务领域不再混层)。
纯目录迁移 + import 路径改写(git 识别为 rename),无逻辑/界面变更。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
refactor(onboarding): 步骤组件拆分到 steps/ 各自成文件
把两个持有可变实例状态的服务从工厂闭包改为 class,使 service 层封装一致
(PrService / RunQueueService / AgentOrchestratorService 均为 class,纯工具仍是函数模块):

- run-queue.ts → class RunQueueService:waiting / active / maxConcurrency /
  embeddedSecretsEnsured 为私有字段,executeRun / pump / ensureEmbeddedSecrets 为私有方法;
  纯语言助手(languageDirectiveFor / askLanguageSuffixFor / stripAskQuestionEcho)保留为模块函数
- agent-orchestrator.ts → class AgentOrchestratorService:agentControllers / runningAgentPrs /
  autopilotBusy 私有字段,编排各步骤为私有方法
- runAutopilotIfDue 消除冗余的 void (async () => {})() 闭包:异步 pass 体抽成具名私有方法
  runAutopilotPass,busy 锁置位 / 复位在其内成对管理
- ipc.ts 改用 new RunQueueService / new AgentOrchestratorService 装配

纯结构性重构,不改运行行为;lint / typecheck / build 全绿。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
refactor(components): 目录按 common / layout / features 三类重组
新增 common/Modal.tsx 统一模态脚手架:backdrop(点外关闭 + 嵌套防冒泡)、
dialog 容器、可选 header(标题 + 关闭键 icon/text)、modal-body 包裹、可选
footer 区、portal / nested / size 变体。键盘交互仍由调用方自管。

ConfirmModal、RulePreviewModal 改用 Modal 壳,消除手写 backdrop/容器/header
重复。视觉与行为不变。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1222 行单文件 SettingsModal 按职责拆开(容器 175 行):
- hooks/useSettingsDraft —— 草稿 → 整体保存状态机(连接 / LLM / 代理 / 轮询 /
  目录 / 语言),暴露各分区所需的语义化 state 与 setter(编辑即标脏)
- sections/ —— 九个独立分区(语言 / 连接 / 轮询 / LLM / 代理 / Agent 目录 /
  工作目录 / 缓存目录 / 运行环境),各自成文件、可独立维护
- editors/ —— 连接 / 代理 / LLM 编辑器弹窗,统一改用 common/Modal 壳
- elements/UpdateCheckButton —— 「检查更新」小部件
- utils —— formatBytes + 轮询档位(POLLER_TIERS / nearestPollerIdx)

容器只做布局编排 + 装配分区 + 底栏保存。对外接口与界面行为不变。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
diff / comments / drafts 仅在 PR 详情视图内渲染,属 PR 作用域子领域,迁入
features/pr/ 下,使 pr/ 成为「PR 评审工作区」的统一归属(与 PrItem /
PrInfoView / CommitsPanel 同处)。chat / onboarding / settings 仍在 features/
顶层。纯目录迁移 + import 路径改写(git 识别为 rename),无逻辑/界面变更。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
StatusBar 内部杂乱、各 chip 自带逻辑、无公共 chip 组件,重构:
- 新增 common/StatusChip 通用 chip 壳(span/button + ok/err 色调 + 专属类名)
- 各业务 chip 按归属下沉到所属 feature 的 statusbar/:
  · settings: LlmChip · UserChip
  · chat: PrAgentActiveChip(+QueuePopover) · AutopilotChip
  · pr: LastSyncChip · RepoSyncChip · PrsCountChip
- pr-agent 运行时 chip 与更新 chip(app 运行时级)留 layout
- StatusBar 退化为薄壳(610→146 行),只做组合与布局
- 时长 / 相对时间格式化统一抽到 utils/time(formatElapsed 带 compact
  选项、formatRelative),消除与 chat 的重复实现(DRY)

无逻辑 / 界面变更。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
layout/MainPane 原含整个 PR 评审工作区(头部 / tab 栏 / tab 内容 + 全部 PR
详情状态),与「布局壳」职责混淆。剥离:
- features/pr/PrPanel —— PR 工作区容器:tab / diff 视图选项 / 评论 + 提交计数 /
  草稿池 / 发布弹窗状态 + tab 内容装配
- features/pr/PrHeader —— 标题 / 元信息 + 动作区(浏览器 / 提交评论 / 合并 / 审批)
- features/pr/PrTabs —— tab 栏 + diff 工具条(空白 / blame / 并排-内联)
- layout/MainPane 退化为薄壳(503→96 行):仅主区 + 「未选 PR」空态,选中时挂 PrPanel

对外 props 接口不变,纯结构剥离,无逻辑/界面变更。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
MainPane 原持有 pr 及一众 PR 专属 props、空态分支、「面板 vs 空态」决策,
作为 layout 壳却深度感知 PR 业务,不利于后续扩展非 PR 的主区内容。改为:
- layout/MainPane —— 仅提供语义化 <main> 槽位(children),不感知任何领域
- features/pr/PrEmpty —— PR 工作区空态(未选 PR / 无连接引导)下沉到 pr 领域
- 由 App(组合根)决定槽位内容:selected ? <PrPanel> : <PrEmpty>

后续要加非 PR 主区业务,只需往 MainPane 槽里塞别的面板,无需改 layout。
无逻辑/界面变更。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
features/pr/ 根目录混了工作区外壳、tab 导航、各 tab 内容、列表项、状态栏 chip。
把 tab 相关(PrTabs 导航 + diff / comments / drafts / CommitsPanel / PrInfoView
五个 tab 内容)收进 pr/tabs/ 子目录,根目录只剩工作区外壳(PrPanel / PrHeader /
PrEmpty / PrItem)+ statusbar/。纯目录迁移 + import 改写,无逻辑/界面变更。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
handler 回归标准 ipcMain.handle 形态,去掉自定义 handle 包装层:

- controller 改为原生监听器签名 (event, req) => response(IpcController 类型仍绑通道契约
  做 body 类型校验);不带 ctx 参数,依赖经 getContext() 进程级单例取用
- ServiceContext 装配后经 setControllerContext 安装为单例;controllers/register.ts 去掉 handle
  包装函数,更名 controllers/types.ts 只留 IpcController 类型
- ipc.ts 直接 ipcMain.handle('channel', controller) 注册,每通道一行 + 行内场景注释
- diff:listComments 的 in-flight 去重改为「显式构造 Promise(内部 async IIFE 顺序 await)+ 同步
  set 进 map」,并补注释说明为何不能整体写成顶层 async(首个 await 挂起前需先注册 Promise)
- controller 文档注释统一 3 行 /** */,领域分节统一块注释;IpcController 注释 JSDoc 化

纯结构性重构,不改运行行为;lint / typecheck / build 全绿。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
App 主入口承载了大量 PR 领域业务(prs 列表 + 选中、reloadPrs / triggerRefresh、
审批决断 setSelectedPrStatus、合并 mergeSelectedPr、focus 刷新),与「组合根」职责
混淆。抽到 features/pr/hooks/usePullRequests:领域内聚地管列表生命周期 + 选中态 +
详情动作;App 仅注入连接摘要与就绪态,bootstrap / 向导完成时经 setPrs 注入初始列表、
poll tick 时调 reloadPrs。无逻辑/界面变更。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
把分散的多条结构重构条目(ChatPane / SettingsModal / 目录重组 / Modal /
StatusBar / MainPane …)收敛为一条主线描述,次要整理一笔带过,保持简洁。
关键点以 tasklist 形式落到 milestone「代码质量重构」描述。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
pragent:*(pr-agent run 执行层:触发 / 取消 / 队列 / 历史)本是「在 PR 上跑 AI 评审工具」,
与 agent 编排同源(agent:run / AutoPilot 也经同一 run 队列派发),而非通用 PR CRUD。
故从 PR 域整体移到 Agent 域,三层一致:

- 契约 @meebox/ipc:pragent:run/listRuns/getRun/clearRuns/cancel/queue 从 PrChannels 移到
  AgentChannels(ReviewRun/PragentRunInfo import 随迁);IpcChannels 为交集,renderer 零改动
- controller:runPragent/cancelPragent/getQueue/listRuns/getRun/clearRuns 从 pr.ts 移到 agent.ts,
  run 相关 poller import 随迁
- 注册 ipc.ts:6 个 ipcMain.handle('pragent:…') 从「PR 操作」组移到「Agent 交互」组

纯结构性重构,不改运行行为;lint / typecheck / build 全绿。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
createSplash + resolveSplashLogo(自包含、不耦合 index 模块状态)从 640 行的
main/index.ts 抽到 main/splash.ts,index 只 import createSplash。启动流程与
界面不变。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
styles/ 下扁平的 17 个 scss 分区按职责归并(比 components 粗一档、不再下分领域):
全局基础(_tokens / base / markdown)留根,modal → common/,应用骨架(titlebar /
statusbar / sidebar / main-pane)→ layout/,其余领域样式 → features/。各分区对
tokens 的引用与 App.scss 聚合路径同步改写。无样式产物变化。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
renderer/src 根目录的三个第三方渲染/编辑器集成初始化文件(monaco-setup /
markdown / editor-font)收进 lib/,根目录只剩入口与 api/errors。纯文件位置调整
+ import 路径改写,无行为变更。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
App.tsx(465→217 行)只剩「hook 调用 + 少量派生 + 渲染」。抽出 hooks/:
- useBootstrap   启动加载 / 语言 / poll·focus 刷新 / 向导完成 / 连接热生效(持 boot)
- usePanelLayout 左右两栏宽度+折叠+持久化
- useUpdateNotice 版本更新提示(水合/订阅/调试)
- useToast       操作级 toast + 自动消失
- useAppStores   三个全局 store 接线
- useExternalLinkGuard 全局外链跳转防护
usePullRequests 去掉 boot 耦合(selectedConn 派生回 App、focus 刷新移入 useBootstrap)。
无逻辑/界面变更。

CHANGELOG 前端重构条目改为「标题 + 嵌套子列表」呈现重点。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
huhamhire and others added 28 commits June 23, 2026 14:02
状态角标(绿勾/琥珀叹号)尺寸 16→14、内部符号同步 16→14;去掉角标彩底的灰色描边环
(box-shadow),纯彩底靠颜色与头像区分。头像本身不变。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
此前已有远端评论的行被算作「占用」、hover 不出 + 图标,无法在同一行继续追加评论。改为仅
「已有未发布草稿」的行才抑制 +(避免同行两个编辑器),已有远端评论的行照常 hover 出 +;
点击新建的草稿 zone 挂在评论 zone 之下(useCommentZones 先于 useDraftZones 挂载 → 草稿
ordinal 更大、渲染在已有评论下方),按时间序展示在已有评论下方。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- 收起态头部归零 margin-bottom:正文隐藏后下方多出的间距导致上下不对称,归零后内边距对称。
- 可折叠卡(分析过程 / 已拒绝 / 被复评关闭的代码反馈)整行标题区即展开/收起热区,扩大可点
  面积(不止右侧 chevron);忽略来自内部按钮(编辑/拒绝/引用/chevron)的点击避免误触。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
正文 + 代码对比包进 grid 容器始终挂载,按 .chat-finding-collapsed 用 grid-template-rows
0fr↔1fr 做高度过渡(inner overflow:hidden 裁切),收/展平滑而非瞬时跳变;chevron 旋转已有
过渡。尊重系统「减少动效」关掉过渡。仅可折叠卡触发,其余卡恒展开无动画。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
去掉评审总结卡横向额外内缩(margin $space-6→0),与 finding 卡同宽(同处 chat-pane-body
的 $space-6 内边距内);加 3px 左侧色条,统一用蓝色,与卡片蓝色淡底成一套(不随判定变色)。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
字符数对用户无实际价值,标题简化为「原始输出」。各 locale 去掉 {{n}} 占位,调用处不再传 n。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
raw HTML 的 <details><summary> 内文本不会被 markdown 二次解析(反引号原样漏出)。新增
withInlineSummary 给 <summary> 套 MdInline,让折叠标题里的 `代码` / **强调** 等内联格式生效;
finding 卡 markdown(含 walkthrough)统一叠加。同步放开 shim 的 describe assessment 提示词
——原强制标题纯文本「禁用反引号」,改为允许标题内用 `inline code` 标识符。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
评审总结正文此前 $fs-md + 默认行高,比 finding 卡($fs-lg / $lh-normal)显得更窄。改为
同字号同行高;标题(h1-4)同步由 $fs-md 提到 $fs-lg(不小于正文、靠加粗区分层级)。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
fix: 评审 / 复评 / diff 一批交互改良与修复
有冲突的 PR 打开 Diff 时,对会冲突的文件在状态圆点左侧标琥珀色三角警示
图标(hover 提示合并到目标分支会冲突)。冲突文件由后端就目标分支 tip ⟂
源 head 跑本地 git merge-tree --write-tree 试合并解析得到,新增
diff:listConflictFiles 通道,仅 pr.hasConflict 为真时实际试合并、失败保守不标记。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
feat(diff): 文件树标注合并冲突文件
CLI(agentic)模式下 token 数为多轮累加(且含每轮 cache_read 重复计入),
远超模型单请求窗口,易被误读为超限或计量出错。改为在采集层补充真实轮次与
cache_read,运行卡片以「↑总量 ⛁缓存命中 ↓输出 · N 轮」呈现实际与模型交互的规模:

- shim:claude 解析顶层 num_turns、codex 按 turn.completed 计轮次,cache_read
  单列上抛;litellm/API 路径同步补 cache_read 采集(Anthropic cache_read /
  OpenAI cached_tokens),两条路径一致
- TokenUsage 增 cacheReadTokens / turns;turns 缺失回退为 LLM 调用次数
- UI 单轮(≤1)或无缓存命中时自动隐藏对应信息
- 新增浅蓝数据库柱体图标 DatabaseIcon 表示缓存命中,与输入统计留间隔

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
在「展示模型交互轮次与缓存命中量」基础上打磨展示:
- 轮次「N 轮」文案改为循环箭头图标 + 次数(RepeatIcon),省空间、免复数 i18n
- 输入 / 输出拆为各自独立的 hover 提示(tokensInTitle / tokensOutTitle),
  取代原合并提示;缓存命中悬浮另给「缓存 N」说明
- 缓存图标数字与周边同色、柱体图标用浅蓝($color-token-cache);间距移到
  cache 前,无命中时不留多余间距
- 抽出共用 TokenStat 组件,run 卡片(RunMeta) 与思考步骤(AgentStep) 复用,
  思考步骤也随之显示缓存命中量
- 补 CHANGELOG 说明

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
feat(chat): 运行卡片/思考步骤展示模型交互轮次与缓存命中量
judge 提示词此前只规定把 finding id 填进 targetFindingId 字段,未禁止写进
question 正文,模型遂把 review-00x 这类内部句柄抄进自然语言问题,用户侧读来突兀。
补一句约束:id 仅用于 targetFindingId,问题正文用自包含的自然语言(按内容 / 文件:行号)
描述,绝不出现内部 id。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
说明 CLI(claude/codex)多轮 agentic 的 token 累计语义、cache_read 与
cache_creation 区分、缓存暖化与并行启动对命中的影响、litellm 路径的跨模型缓存适配。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- CLI 缓存命中量采集兼容 codex/OpenAI 约定:cache_read 在 Anthropic 的
  cache_read_input_tokens 缺失时回退取 codex 的 cached_input_tokens;后者已含在
  input_tokens 内,仅作命中量展示、不重复计入总量(Anthropic 的需累加)。
- docs/arch/04 增「CLI 模式的 token 计量与提示缓存」小节:累计语义(num_turns)、
  cache_read vs cache_creation(命中≠写入)、describe→review 缓存暖化、并行启动对命中的
  影响、litellm 跨模型缓存适配;并补 codex cached_input_tokens 字段说明。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
_apply_chat_system_cache 扩展为 _apply_system_prompt_cache,除编排 chat 通道
(CACHE_BREAK 断点缓存)外,对无断点的 pr-agent 工具 run(/review /describe
/improve /ask)也把整段 system 标 cache_control(1h)。

pr-agent 的 system 是指令 + 输出格式(约 12k 字符,仅随配置/语言/规则变、跨 PR 稳定,
可变的 diff 在 user 侧不进缓存),故同配置下跨运行 1h 内命中:API Anthropic 评审现也
显示缓存命中量,重复/多 PR 评审降本降延迟。仅 anthropic/ 模型生效,_CACHE_MIN_CHARS
兜底过小前缀。docs/arch/04 同步更新缓存说明。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
npm audit fix(非 --force)仅应用上游父依赖已允许的兼容升级:undici 6.27.0
(直接,修 6.x 告警)+ 7.28.0(@electron/get 传递)、vite 7.3.5、tar 7.5.16。
清掉对应 Dependabot 告警(undici/vite/tar)。仅 lockfile 变更。

余下 dompurify(monaco) / form-data+tmp(nx) / js-yaml(gray-matter) / esbuild(vite 锁 ^0.27)
均无兼容上游修复(仅 major 父升级可解),按既定规则暂不强升、保留告警。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
litellm 对未进本地 model_cost 表的新模型(如 claude-opus-4-8)在 cost/token 计量里
get_llm_provider 解析失败时,会先把红字「Provider List: …」print 到 stdout 再抛错
(错误被上游吞掉、不影响结果);编排 chat 通道以子进程 stdout 作模型回复,该 print 漏进了
评审总结正文。patch 时置 litellm.suppress_debug_info=True 关掉这些 print(正是该段的开关),
全局生效、与版本无关,放在版本守卫/CLI 分支之前。docs/arch/04 同步说明。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
fix(deps): 修复可兼容升级的依赖安全告警(undici/vite/tar)
- 将 Unreleased 改名为 [0.6.0-alpha.1] - 2026-06-23,另起空 Unreleased
- changelog 精简:特性按功能场景分类缩进、fix 一句话表述、突出领域设计重大重构
- 补 #107 贡献者致谢 @csj2000
- apps/desktop 版本号定为 0.6.0-alpha.1,同步 lockfile 与 compare 链接

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- 各正式版(0.5.0~0.1.0)特性按功能场景缩进分组、Fixed 压成只述现象的一句话
- 版本重点改用无序列表排版;0.1.0 改为标准 Added / Fixed 分段
- 移除被正式版取代的 alpha stub 段及其底部 compare 链接
- AGENTS.md 发布流程补 alpha 段删除规则与「CHANGELOG 撰写风格」说明

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
docs(changelog): 精简历史版本日志并统一分段规范、定版 0.6.0-alpha.1
源分支恰为主干(master/dev 等)的 fork 原创 PR 被 autopilot 误判为「纯分支合并」
而跳过。classifyBranchMerge 不再仅凭源分支名裁决:仅当提交全为 merge commit 才判
isBranchMerge,源是否主干降为 sourceMainline 背景信号。autopilot 改为逐候选拉
commits 按结构判定;judge prompt 以中性 signals 列出证据(去掉 prefer skip 硬措辞),
明确「仅源为主干不构成跳过理由」,由 judge 综合权衡。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
fix(agent): 分支合并判定改以实际提交结构为准,信号交 judge 权衡
@huhamhire huhamhire added the enhancement New feature or request label Jun 23, 2026
@huhamhire huhamhire merged commit 99d9915 into master Jun 23, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant