Skip to content

feat(macos): AI 设置资源库、Agent 上下文长度与压缩阈值、对话多标签与性能、ACP 适配器升级 - #1490

Merged
xiaoyumuxi merged 6 commits into
previewfrom
feat/settings-ai-resource-library
Oct 25, 2026
Merged

xiaoyumuxi merged 6 commits into
previewfrom
feat/settings-ai-resource-library

Conversation

@xiaoyumuxi

@xiaoyumuxi xiaoyumuxi commented Oct 25, 2026 •

Copy link
Copy Markdown
Collaborator

概述

一个 PR 里收口 Agent 相关的设置布局、ACP 适配器升级、Claude 订阅观测、对话多标签与性能,以及新的上下文长度 / 自动压缩阈值配置。下面按改动点列出,评审可以逐项对照。

改动点

设置界面

  • AI 下新增“资源库”折叠:收纳指令、技能、Hooks、MCP 配置;SettingsSubgroup 声明,页面仍归 AI 分组所有(categories 保持平铺,新增 entries 决定侧栏行)。面包屑 AI › 资源库 › 页面,搜索和跳转自动展开。
  • 设置页随窗口宽度伸缩:去掉各页 maxWidth: 900/860/760,调大设置窗口不再在右侧留白。
  • 说明收进 ⓘ:详情栏的会话统计 / Token 用量 / 本轮统计卡片、上下文卡片和发送旁面板的说明文字改为 ⓘ;悬停小卡片仍直接显示。
  • 提示更正:分项 “—” 的提示不再说“请开启模型调用统计”(该开关默认已开)。

Agent 上下文长度与自动压缩阈值(新)

  • 设置 › Agents 每个 Agent 新增“上下文”卡片:上下文长度、自动压缩阈值,可输入 200K / 1M / 200000,范围 10K–10M,留空沿用 Agent 默认值;占位值是 Agent 自己上报的大小;已连接时提示“重新连接后生效”。
  • Codex:写入 model_context_window / model_auto_compact_token_limit(Codex 自己取窗口 95% 上报)。Claude Code 只有一个官方开关,阈值(否则上下文长度)作为 CLAUDE_CODE_AUTO_COMPACT_WINDOW 传入。
  • 圆环分母按配置封顶:实测 Claude 会在回合内先报配置值、结束时又报回模型值(200000 → 1000000),所以由 Lithe 封顶,只缩小不放大;阈值与圆环不同时弹窗多一行“自动压缩阈值”。
  • 配置不写进 AgentConfiguration(它多处整体重建会丢字段),单独存 agentContextLimits。

ACP 适配器与观测

  • codex-acp 1.13.1 → 2.2.2,claude-agent-acp 0.81.2 → 0.95.0,配套 CLI 最低版本 Codex 0.160.1 / Claude Code 2.1.309;夹具和测试数据同步。
  • Codex 2.x 的 401:2.x 把 401 当“需要登录”且不再发失败更新,宿主不知道是永久错误,会等 Codex 按 Retry-After 重试。codex-config-relay.cjs 对 401 把传给适配器的类别改成通用类别(原始类别仍在信封里),恢复 1.x 的立即取消。
  • Claude 订阅可观测:开启“模型调用统计”时给 Claude Code 设 ANTHROPIC_BASE_URL 指向本机回环代理,请求原样转发到 api.anthropic.com,Lithe 不读取、保存令牌,计费仍走订阅。
  • 起标题请求:Claude Code 在会话开始时自己发一次起标题请求,modelCall 新增 auxiliary,只计 Token,不计步数 / 首字延迟 / 速度(macOS 与 Windows)。
  • 读图失败:附件以 file:///…%20… 发给适配器,模型会按 %20 去读文件而失败;路径含编码时额外带一行 📎 /真实路径(界面本来就识别并隐藏),以 / 开头的原生命令不追加。

Agent 对话

  • 编辑区多标签:EditorTabItem.agentConversation(UUID),每个对话一个标签;+ 新开标签(当前标签为空时复用);历史选择已打开的会话只聚焦;关闭最后一个回到工具窗口;⌘W 只关当前对话标签;分屏时非当前对话的窗格显示“显示对话”。
  • 性能:点开/收起思考过程原先要重算整条对话(20/100/400 轮 36/98/311ms,Debug),展开状态移入引用类型存储后为 16/19/20ms;已完成轮次的分组与导航索引缓存(AgentTranscriptDerivation),流式输出每个字块从约 32ms 降到约 2.7ms(2400 条消息,Debug)。卡顿来自 CPU 上的视图重算,不是渲染,所以没有用 drawingGroup。

验证

  • Rust lithe-agent-host 单元测试 253 个通过;本地 HTTP 端到端:Codex 2.2.2 16/16(两次),Claude 0.95.0 17/18(旧版同环境基线同为 17/18,invalid_request 在旧版就失败)。
  • 真实对话:Claude 订阅经代理(解析出标题请求与带工具的对话请求),Codex API Key 模式(本机转发)均完成;Claude 实测 CLAUDE_CODE_AUTO_COMPACT_WINDOW 与 Codex model_context_window 的上报大小随配置变化。
  • macOS 相关套件、Windows bun test src/features/agent(205)、tsc、i18n、Agent Note、服务边界、共享契约、功能矩阵、运行时包只读检查通过。
  • 新增测试:设置侧栏子分组、标签与会话绑定、分组缓存与整段重算逐项等价、上下文长度解析与封顶、启动配置传递、辅助请求计数、路径行。

未验证 / 已知限制(请评审注意)

  • 整套 macOS 测试有失败:两次完整运行分别 29 / 21 个失败,主要是文件监听、预览加载、窗口关闭与插件导入取消、真实鼠标拖拽这类带超时的测试;我在干净 preview 上整套跑出 11 个失败,且两次集合不一致(有明显时序抖动)。我没来得及逐个确认那 13 个“只在本分支失败”的测试是否与本 PR 无关(其中包含窗口关闭和 ⌘W 相关,本 PR 改了 ⌘W 关闭 Agent 标签的路径),请 CI 完整跑过后重点看这批。
  • 没有启动 app 看实际界面:多标签、ⓘ 位置、历史列表空白、新“上下文”卡片只有测试窗口渲染和单元测试,需要真机验收;功能矩阵相应记录均为 pending。
  • 展开/收起折叠时偶发的“先闪到前面的内容再弹回”没能在无界面测试里复现。
  • Claude 的上下文长度本身仍由模型决定,只能通过压缩窗口限制;Windows 设置界面暂无上下文配置入口(共享 Host 已支持)。
  • 展开状态缓存与分组缓存不是严格 O(1):仍需线性校验“已完成部分没变”,常数很小。

本轮审查修复与设置交互准则(2026-10-25)

提交:325a9b8cfdb7b173116f45650f991ab993345aa4。本轮从最新 preview 建修复分支并合入原 PR head;保留 preview 已合并的 #1492,统一推送,不 force-push。

修复点

  1. 上下文设置恢复默认后不再复活旧值:草稿记录所属 Agent、配置快照和重置标识;外部值变化时刷新,同一 Agent 的立即失焦/离页提交也先检查编辑基线。重置前没有任何已保存覆盖、只有未提交草稿时同样清空;更新其他 Agent 不丢当前草稿,正常后续编辑仍可保存。
  2. 补齐上一轮 Swift CI 的唯一失败项:Agent 可视化网页接入现有 WebMediaCaptureDenier.shared,明确拒绝摄像头与麦克风,不再依赖 WebKit 缺省提示或当前构建没有用途说明。登记源码覆盖检查,并用实际创建的 WKWebView 验证拒绝委托已安装;不访问真实设备,不修改隐私授权。
  3. AGENTS.md / develop-lithe 设置准则:非敏感工具配置默认发现真实来源,回显可编辑值和来源/范围,编辑仅产生草稿,明确保存/应用后写回所选原生来源,再重新读取结果。禁止无效影子偏好和打开页面自动写文件;保护秘密、其他字段、权限与外部并发修改,原生配置使用受保护的原子更新。Maven 用户级 ~/.m2/settings.xml 等作为来源发现示例。
  4. 同步决策与功能矩阵:更新上下文生命周期与可视化权限证据;新增原生配置编辑 Note,原 Maven 占位提示 Note 标明为既有实现而非目标。本轮是规则更新,不代表 Maven 或所有历史设置页已经迁移;Lithe 连接级上下文覆盖仍属于应用自身偏好,不冒充 CLI 原文件编辑。

验证

  • Swift 6.3.3:聚焦设置、启动解析、上下文文本、AppSettings、Desktop 卡片与 WebMedia 套件,70 tests / 12 suites 全通过。
  • 新设置生命周期三项参数化测试在聚焦运行中分别为 363 / 259 / 88 ms;实际网页拒绝委托回归 93 ms;均有 HTML/JUnit 单项计时,无新增测试稳定性豁免。
  • 完整本地 Swift:框架报告 3475 tests / 408 suites,6 个测试方法失败(25 个断言问题);计时报告收录 3455 个方法结果,其中 3449 通过、6 失败,另有一个磁盘镜像测试 23.249s 超过默认 15s 预算。不报告全套通过。
  • 完整运行中,本轮所有新回归、WebMedia 覆盖、Agent 多标签、⌘W、普通窗口关闭与保存失败/取消路径均通过。
  • 剩余失败:Agent activity 的恢复后面板、Agent selector 的详情位置及两项菜单选择、共享滚动条像素、插件图标像素;超预算是 fullSignedDiskImageStagesWithoutChangingInstalledApp。这些本地结果不能仅因旧 head 的 CI 通过就归为无关,本轮未修改这些路径,仍待当前 head CI / 目标系统复核。
  • 上一 head 276558afc 的完整 CI:Swift 3112 tests 中仅 WebMedia 入口登记一项失败(现已修复并本地通过);Rust Core、Windows Rust、Windows frontend、arm64 打包通过。新 head CI 需重新完成,旧结果不冒充新 head 结果。
  • 通过:git diff --check、测试稳定性、Agent Notes(154)、服务边界、runtime bundle 只读、共享契约、Skill 校验、功能矩阵(208)。提交后分别针对 PR 返回 base、最新 preview、上一 PR head 执行 matrix change gate,均通过。
  • 本轮原生测试窗口及子进程已退出。未执行整页真机视觉验收,功能矩阵继续保持 pending;未对用户真实 Maven/Agent 配置做读写。

测试命令:

SDKROOT=/Library/Developer/CommandLineTools/SDKs/MacOSX26.5.sdk \
PATH="$HOME/Library/Developer/Toolchains/swift-6.3.3-RELEASE.xctoolchain/usr/bin:$PATH" \
./.agents/skills/write-stable-tests/scripts/test-stability-macos.sh \
  --suite-timeout-seconds 1800 --stall-timeout-seconds 300 \
  --report .artifacts/test-stability/context-settings-and-widget.json \
  -- --filter 'AgentContextLimitsSettingsTests|AgentContextTokenTextTests|AgentLaunchConfigurationResolverTests|AppSettingsTests|AgentDesktopCardTests|WebMedia'

完整套件使用相同环境与超时参数,不传 --filter;仅延长构建无输出观察窗口,未放宽单测试 15s 预算。

本地报告:.artifacts/test-stability/context-settings-and-widget.html、.artifacts/test-stability/pr-1490-final-swift.html、汇总 .artifacts/test-stability/index.html(位于隔离工作树 .worktrees/pr-1490-review,未提交生成物)。

评审修复与 #1418(追加)

分支已重建为直接建在最新 preview 上的线性历史,移除了经 merge 带入的 #1492;文件内容与重建前一致。

评审修复:

  • Claude 订阅在用户配置了自定义 ANTHROPIC_BASE_URL 时,不再改走本地统计代理,避免绕过用户网关。
  • 附件路径行只在“单个 /word”才视为原生斜杠命令;/Users/... 开头的消息不再被误判。含控制字符的解码路径不再追加到提示。
  • Rust 端把自动压缩阈值限制在上下文长度以内(Codex、Claude 两条路径)。
  • 会话命名请求只检查 system 的第一个块,不再序列化整个 system,也不会被后续用户指令里的同名短语误判。
  • 上下文长度输入拒绝十六进制和指数写法(0x10k、2e5 等)。
  • 只设置压缩阈值时,仍然刷新 Agent 的默认上下文长度。
  • “新对话”遇到已绑定可复用空会话的标签时直接返回,不再解绑后被 reconcile 绑回。
  • 启动环境缺少 PATH 时以 /usr/bin:/bin 为基础追加已解析目录;去重改为区分大小写。对应测试预期同步更新。
  • 修正被新代码拆开的两处文档注释(AgentLaunchConfiguration、onAccountObserved)。

Fixes #1418:英文界面下设置页仍显示中文。String(localized:) 按系统语言取词,locale: 只影响格式,改为 AppLanguage.localizedString/localizedFormat(词条本来就在 shared/i18n 中,无需新增):

  • 设置窗口、软件更新窗口标题;
  • 工作台背景图占位文字(设置页与工作台);
  • 终端默认 Shell 的“系统默认 · …”和回滚行数的“N 行”;
  • AI 供应商用途文字、设置搜索词、欢迎窗口标题。

验证:lithe-agent-host 单测 254 通过;Swift 的 AppLocalization、RunLaunchEnvironmentTests、AgentContext* 共 37 通过;scripts/test-i18n.mjs 通过。未启动应用做“系统中文 + 应用英文”的界面复核。

@ghfind-review ghfind-review Bot added the review: medium ghfind author score; see https://ghfind.com label Oct 25, 2026
@xiaoyumuxi
xiaoyumuxi marked this pull request as ready for review October 25, 2026 09:15
@lithe-code-review

lithe-code-review Bot commented Oct 25, 2026 •

Copy link
Copy Markdown

Lithe Review

结论: ⛔ 有阻塞
范围: preview ← feat/settings-ai-resource-library · head: 7eac0d3

Findings

  1. [P1] 恢复标签时没有恢复会话所属 Agent
    macos/Sources/Lithe/Models/AppModel/AppModel+AgentConversation.swift:143

    • 实际影响:旧标签会通过当前 Agent 的连接恢复,导致会话加载失败;标签标题和图标也取自当前连接。
    • 触发条件与复现:配置 Codex 和 Claude,在编辑区打开 Codex 会话,再切换到 Claude 创建会话,最后点击原 Codex 标签。agentSessionByTab 只保存会话 ID,followAgentEditorTab 直接对 Claude 的 selectedConnection 调用 selectSession(Codex会话ID),继而发送错误的 loadSession 请求。
    • 来源:本次引入。新增标签绑定缺少 Agent 身份,直接破坏多 Agent 下恢复已有对话的路径。
  2. [P2] 已预创建的空白会话不会复用标签,并留下悬空绑定
    macos/Sources/Lithe/Models/AppModel/AppModel+AgentConversation.swift:101

    • 实际影响:连续点击“新对话”会堆积引用已丢弃会话的标签;重新选择这些标签会尝试加载旧会话,而不是显示可用的空白对话。
    • 触发条件与复现:连接就绪,等待空会话创建完成,不输入内容,再点击“新对话”。prepareConversation 已创建会话,选中变化又将其绑定到标签,因此这里的 session == nil 判断无法识别空白标签。随后 startNewConversation → discardUnpersistedEmptySessions 删除旧空会话,但编辑器绑定没有同步清理。现有 providerReconnectRecreatesUnpromptedSessionsAndKeepsHistoryTabs 测试明确覆盖了连接模型的这项删除行为。
    • 来源:本次引入。新增标签状态没有与既有空会话清理生命周期对齐。
  3. [P2] 辅助请求破坏了缺失用量的计数口径
    macos/Sources/LitheAgentConversationModule/Application/AgentModelCall.swift:123

    • 实际影响:不完整的 Token 合计会被显示为完整总量,丢失“≥”和缺失请求提示。
    • 触发条件与复现:记录一个带 usage 的标题请求,再记录一个不带 usage 的普通请求。新增分支只增加 callsWithUsage,不增加 callCount;二者均为 1。未修改的 AgentSessionStatistics.swift:59 仍以两者相减,得到缺失次数 0,尽管普通请求用量未知。全部请求都有 usage 时,该差值还会成为负数。
    • 来源:本次引入。辅助请求改变了计数语义,但直接消费者仍依赖原有不变量。
  4. [P2] 新增路径测试在 Windows 上无法满足断言
    rust/lithe-agent-host/src/prompt.rs:142

    • 实际影响:Windows SharedRust 的 Agent Host 测试会失败。
    • 触发条件与复现:在 Windows 执行 encoded_paths_are_repeated_in_readable_form_for_the_model。测试使用无盘符的 file:///example/...,Windows 的 Url::to_file_path() 无法转换它,因此生产代码不会追加路径文本,但测试要求最后一项为文本且长度为 4。src/tests.rs:3547 对同类共享 fixture 也仅检查百分号便要求多一项,存在相同问题。
    • 来源:本次引入。此前资源链接校验无需转换为宿主平台路径;新断言引入了平台相关前提。

Scope Check

  • 未找到可验证的关联 Issue;按所述功能范围审查。
  • 已覆盖设置分组、上下文配置透传与封顶、标签选择及关闭、转录缓存、订阅代理、辅助请求统计和相关测试。
  • 配置复用了上游 CLI 的原生开关,代理沿用共享 Host;未发现新增并行领域模型的问题。
  • 四项 Finding 均由本次变更引入,属于对应功能或直接受影响测试的职责范围。
  • Windows 上下文设置入口仍为 partial;实际界面及部分完整测试失败的归因尚未完成。

Suggestions

  1. 标签保存 Agent ID 与会话 ID,选择标签时先恢复所属 Agent,再选择会话;标题也使用所属连接。补充双 Agent 标签切换回归测试。
  2. 根据会话是否为空、是否已有草稿判断复用,并在会话被丢弃或替换时同步更新绑定;测试应包含真实的会话预创建过程。
  3. 分开记录对话步数与全部观测请求数,独立累计缺失 usage 的次数;补充标题请求与中断请求混合后的会话统计断言。
  4. 使用符合各平台规则的文件 URI 和路径预期,并修正共享 fixture 的转换成功条件。
  5. 补充设置页、多标签、上下文卡片及 ⓘ 改动的截图;已有界面提供前后对比。当前未提供截图,视觉效果尚未验证。

Summary

合并前需修复 Finding 1。其余三项为非阻塞建议。原生配置复用和缓存边界较清晰,但新增标签状态与连接生命周期、辅助调用与统计口径之间缺少完整链路覆盖。

Verification

  • 静态核对完整 72 文件清单及聚焦 diff,并追踪标签到 selectSession/beginLoad、空会话清理、配置启动、模型调用聚合和 Windows 测试入口。
  • 作者报告 Rust 单测 253 项通过、Codex HTTP 16/16、Claude HTTP 17/18,以及相关 macOS、Windows 前端和静态检查通过;这些结果未由本次审查复跑。
  • 提供的 head checks 中 Swift、Rust Core、Windows 实质测试均为 skipped;平台 gate success 不能证明这些测试已通过。
  • 作者报告完整 macOS 套件仍有失败,包含窗口关闭和 ⌘W 相关项,尚不能确认与本 PR 无关。
  • 本次未运行代码、测试、应用或验证脚本,也未访问网络。截图、实际 UI、Windows SharedRust 和升级后的 Codex 订阅路径仍缺验证。

xiaoyumuxi added a commit that referenced this pull request Oct 25, 2026
Bind editor tabs to Agent/session pairs and clean discarded prepared sessions while retaining drafts. Count all observed requests separately from conversation steps, preserve auxiliary-only usage, and retain legacy statistics compatibility.

Make attachment URI tests platform-aware, align CLI version fixtures, and add deterministic regressions, owning notes, and feature matrix updates.
@xiaoyumuxi

Copy link
Copy Markdown
Collaborator Author

@lithe review

@lithe-code-review

lithe-code-review Bot commented Oct 25, 2026 •

Copy link
Copy Markdown

Lithe Review

结论: ⚠️ 有建议
范围: preview ← feat/settings-ai-resource-library · head: 276558a

Findings

  1. [P2] 避免上下文表单将已恢复默认的配置写回
    macos/Sources/Lithe/Views/Agent/AgentContextLimitsSettings.swift:117

    • 实际影响:“恢复默认值”清空的上下文长度和压缩阈值,会在离开当前页面时重新持久化,导致重置失效。
    • 触发条件:当前 Agent 已保存自定义限制,且其上下文表单仍显示在设置页中。
    • 复现步骤:保存 Codex 上下文长度为 200K,停留在 Agents 页点击“Restore Defaults”,再切换设置分类并返回。AppSettings.restoreDefaults() 已清空 agentContextLimits,但表单草稿只在首次出现时加载,没有同步此次重置;onDisappear → commit() 随后将旧草稿 200K 写回。
    • 来源:本次引入。新增表单维护独立草稿并在失焦、离页时提交,但未处理外部配置重置。

Scope Check

  • 未找到可验证的关联 Issue;按 PR 声明的功能范围审查。
  • 覆盖设置资源库、上下文配置与启动透传、多 Agent 标签及关闭路径、转录缓存、代理观测、辅助请求统计和相关测试。
  • 前轮四项问题在当前 head 中已有对应修复和回归测试,静态检查未发现原问题仍然成立。
  • 上下文配置复用上游 CLI 原生开关,代理沿用共享 Host,未发现新增并行领域真源的问题。
  • Finding 属于本次新增设置表单的职责范围。Windows 上下文设置入口仍为部分支持,实际界面验收尚未完成。

Suggestions

  1. 外部限制值变化时同步表单草稿,并记录编辑基线或脏状态,防止失焦、离页提交覆盖刚完成的重置。补充“保存限制 → 恢复默认值 → 切页或关闭 → 重开”的回归测试。
  2. 补充设置资源库、上下文卡片、多标签和 ⓘ 改动的截图;已有界面提供前后对比。当前上下文未提供截图,视觉效果尚未验证。
  3. 逐项核对作者报告的 13 个仅本分支失败的 macOS 测试,尤其是窗口关闭及 ⌘W 路径,并补齐当前 head 的平台 CI 结果。

Summary

未发现需要阻塞合并的问题。原生配置复用和转录缓存边界较清晰;新增表单存在恢复默认值后旧草稿回写的问题,建议修复。完整 macOS 测试失败的归因及界面验收仍有缺口。

Verification

  • 静态检查给定的完整 74 文件范围及相关调用链,重点核对标签绑定与会话清理、模型调用统计、上下文配置持久化与启动透传、转录缓存失效和平台路径测试。
  • 作者报告 Rust Host 单测 253 项通过、Codex HTTP 16/16、Claude HTTP 17/18,以及相关 macOS 套件、Windows 前端 205 项测试和静态检查通过;本次未复跑。
  • 作者报告完整 macOS 套件仍有失败,其中部分与本次改动的关系尚未确认。当前提供的 head checks 仅显示 Agent Notes 成功,其余列出的检查仍在进行,不能据此确认完整 CI 通过。
  • 本次未运行代码、测试、应用或验证脚本,也未访问网络。截图与实际 UI、Windows 原生 SharedRust、升级后的 Codex 订阅路径仍缺验证结果。

设置
- 设置 › AI 下新增可折叠的“资源库”,收纳指令、技能、Hooks、MCP 配置;面包屑为 AI › 资源库 › 页面,搜索和跳转自动展开。
- 设置页内容区随窗口宽度伸缩,去掉各页 900/860/760 的宽度上限,调大窗口不再留右侧空白。
- Agent 对话详情栏与上下文面板的说明文字收进 ⓘ。

Agent 上下文
- 设置 › Agents 新增“上下文”卡片:上下文长度、自动压缩阈值(支持 200K / 1M / 200000,留空沿用 Agent 默认值,占位值为 Agent 自己上报的大小)。
- Codex 写入 model_context_window / model_auto_compact_token_limit;Claude Code 只有一个压缩窗口开关,阈值(否则上下文长度)作为 CLAUDE_CODE_AUTO_COMPACT_WINDOW 传入。
- 圆环分母按配置封顶(Claude 回合内会在配置值和模型值之间来回上报),阈值与圆环不同时在弹窗多一行“自动压缩阈值”。

ACP 适配器与观测
- codex-acp 1.13.1 → 2.2.2,claude-agent-acp 0.81.2 → 0.95.0,配套 CLI 最低版本随依赖提高。
- Codex 2.x 把 401 当作“需要登录”且不再发失败更新,中继在信封保留原始类别并对适配器改成通用类别,宿主仍按永久错误立即取消。
- Claude 订阅经本机透传代理观测(ANTHROPIC_BASE_URL,请求原样转发,不读取令牌),Claude Code 起标题请求标记为 auxiliary,只计 Token 不计步数(Windows 同步)。
- 附件路径含百分号编码时额外带一行 📎 真实路径,避免模型读 %20 失败;斜杠命令不追加。

Agent 对话
- 编辑区对话改为每个对话一个标签(EditorTabItem.agentConversation(UUID)),新对话在新标签打开,当前标签为空时复用。
- 点开/收起思考过程不再重算整条对话(展开状态移入引用存储),已完成轮次的分组与导航索引缓存,每次刷新只重算当前一轮。

文档与矩阵
- 更新 Agent Note、设置归属 Note、rust-core-api 契约、功能矩阵(新增 agent-context-limits)。
Bind editor tabs to Agent/session pairs and clean discarded prepared sessions while retaining drafts. Count all observed requests separately from conversation steps, preserve auxiliary-only usage, and retain legacy statistics compatibility.

Make attachment URI tests platform-aware, align CLI version fixtures, and add deterministic regressions, owning notes, and feature matrix updates.
Invalidate context-limit drafts on external changes and Restore Defaults, including empty overrides with unsaved input. Guard blur and page-exit commits against stale snapshots and cover the native lifecycle.

Deny camera and microphone requests in Agent visualization pages through the existing shared delegate and register the entry in media coverage tests. Document discover-edit-confirm-save-readback settings behavior, secret protection, and the scope of native configuration writes; keep feature evidence current.
- Claude 订阅在用户配置了自定义 ANTHROPIC_BASE_URL 时不再改走本地统计代理
- 斜杠命令只识别单个 /word,绝对路径开头的消息不再跳过附件路径行;含控制字符的路径不追加
- Rust 端把自动压缩阈值限制在上下文长度以内
- 会话命名请求只检查 system 的第一个块,不再序列化整个 system
- 上下文长度输入拒绝十六进制和指数写法
- 只设压缩阈值时仍刷新 Agent 默认上下文长度
- 修正被新代码拆开的两处文档注释
@xiaoyumuxi
xiaoyumuxi force-pushed the feat/settings-ai-resource-library branch from 325a9b8 to d83482c Compare October 25, 2026 12:17
- 聚焦标签已绑定可复用的空会话时直接返回,避免解绑后又被 reconcile 绑回
- 启动环境缺少 PATH 时以 /usr/bin:/bin 为基础追加已解析目录,env 类 shebang 启动器可用
- PATH 去重改为区分大小写,不再丢弃区分大小写卷上的不同目录
String(localized:) 按系统语言选语言包,locale 参数只影响格式,应用语言为英文而系统为中文时会漏出中文。
改为 AppLanguage.localizedString/localizedFormat,Text 字面量则交给环境 locale。

- 设置窗口和软件更新窗口标题
- 工作台背景图占位文字(设置页与工作台两处)
- 终端默认 Shell 的“系统默认 · …”
- 终端回滚行数的“N 行”
- AI 供应商用途文字、设置搜索词、欢迎窗口标题
@xiaoyumuxi
xiaoyumuxi merged commit e854cfd into preview Oct 25, 2026
13 of 16 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

review: medium ghfind author score; see https://ghfind.com

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant