news 2026/9/24 15:06:47

OpenChamber 1.2.0 更新解析:收藏模型、工具调用展开与可调字体间距

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
OpenChamber 1.2.0 更新解析:收藏模型、工具调用展开与可调字体间距

OpenChamber 1.2.0 更新解析:收藏模型、工具调用展开与可调字体间距

【免费下载链接】openchamberAgentic Development Environment based on OpenCode AI agent项目地址: https://gitcode.com/gh_mirrors/op/openchamber

OpenChamber 1.2.0(发布于 2025-12-15)聚焦于日常 AI 编码体验的细节打磨:模型选择器新增"收藏/最近"快捷入口,聊天工具调用支持折叠、活动与详细三种展开模式,外观设置加入 50%–200% 的字体与间距缩放,同时 VS Code 扩展内可直接打开设置页面。本文以该版本 changelog(changelog/1.2.0.md)为主线,结合仓库源码(packages/ui/src/lib/settings/registry.ts、packages/ui/src/stores/useUIStore.ts)逐项拆解这些功能的实现原理与使用方式,帮助你在升级后快速上手,也便于开发者理解 OpenChamber 的设置体系是如何组织的。

版本概览:App 与 VS Code 双端同步升级

1.2.0 的变更同时覆盖了 OpenChamber App 与 VS Code 扩展两个使用入口,且改进内容保持一致(其中工具调用展开、字体间距控制与设置页访问三项由社区开发者 @theblazehen 贡献):

改进项AppVS Code 扩展
模型选择器收藏与最近模型快捷访问
工具调用展开设置(折叠 / 活动 / 详细)
外观设置中的字体大小与间距控制(50%–200% 缩放)
扩展内直接访问设置页面

从实现角度看,App 与 VS Code 共享同一套 UI 前端(packages/ui),因此双端的改进本质上是同一套设置体系在不同宿主中的暴露方式不同,下文以 App 端源码为主要依据展开。

收藏与最近模型:模型选择器的快捷访问

功能体验

1.2.0 之前,在模型选择器中切换模型需要反复滚动查找;该版本引入两个快捷分区:

  • 收藏(Favorites):手动固定常用模型,长期稳定置顶;
  • 最近(Recent):自动记录最近使用过的模型,供快速回切。

在模型选择器中,收藏与最近分区(连同每个provider:<id>分组)都是可折叠的手风琴区块,折叠状态会被持久化。对应实现位于 packages/ui/src/stores/useModelPickerSectionsStore.ts:该 store 使用 zustand 的persist中间件,将折叠状态写入model-picker-collapsed-sections键(version 1),并且"Section keys 在所有选择器表面间共享",也就是说你在一个选择器里折叠某个 provider 分组,其它入口都会记住,刷新页面也不会丢失。

底层数据结构与容量上限

收藏、最近、隐藏等模型列表在设置注册表中统一定义(packages/ui/src/lib/settings/registry.ts#L445-L448):

favoriteModels: field<ModelRef[]>({ scope: 'profile', parse: parseModelRefs(64), ui: uiStore('favoriteModels', setUi('favoriteModels'), { autoSave: false }) }), hiddenModels: field<ModelRef[]>({ scope: 'profile', parse: parseModelRefs(1024), ... }), recentModels: field<ModelRef[]>({ scope: 'profile', parse: parseModelRefs(16), ui: uiStore('recentModels', setUi('recentModels'), { autoSave: false }) }),

几个值得注意的实现事实:

  • 每个模型引用由providerID + modelID组成(见 packages/ui/src/stores/useUIStore.ts#L911 的类型定义Array<{ providerID: string; modelID: string }>);
  • 收藏上限64 个、最近上限16 个、隐藏模型上限1024 个,均通过parseModelRefs(n)解析并做数量约束;
  • 这些字段scope: 'profile',即按用户配置(profile)维度存储,属于 UI 层配置,写入通过useUIStore完成。

收藏与最近列表的增删逻辑

在 packages/ui/src/stores/useUIStore.ts#L2374-L2413 中可以清楚看到收藏的切换逻辑:若目标模型已存在则从favoriteModels中移除(取消收藏),否则按"最新收藏在前"的顺序插入头部。而最近列表的更新逻辑(同文件 #L2516-L2531)为:使用过的模型会去重后插入列表头部,并截断保留前 5 条作为"最近"展示。

此外,收藏模型还提供了一组快捷键:在 packages/ui/src/lib/i18n/messages/zh-CN.settings.ts#L1202-L1203 中存在cycle_favorite_model_forward(向前轮换收藏模型)与cycle_favorite_model_backward(向后轮换收藏模型)两个动作的本地化文案,说明 1.2.0 还允许你通过键盘在收藏列表中快速轮换切换模型,适合多模型对比场景。

工具调用展开设置:折叠 / 活动 / 详细三种模式

聊天流中,Agent 的工具调用信息是信息密度最高的区域:既需要快速了解"发生了什么",也需要在排查时看到完整细节。1.2.0 将工具调用的展示方式改为可配置,提供三种模式:

  • 折叠(collapsed):默认仅显示摘要行,聊天界面最干净,适合日常高频对话;
  • 活动(activity):突出显示当前正在执行的活动状态,便于观察 Agent 的实时动作;
  • 详细(detailed):完整展开工具参数与返回内容,适合调试与审查。

这一设置项的搜索关键词定义在 packages/ui/src/lib/settings/search.ts#L39:

keywords: ['activity', 'collapsed', 'expanded', 'live', 'tools', 'history'],

同时,设置搜索体系中"工具与文件"(chat.tools-and-files)分区(search.ts#L347-L350)也服务于该区域的相关展示配置。三种模式对应了collapsedexpandedactivity等语义,用户可以在设置中按需切换,而不必在消息流中手动逐个展开。

注意:该设置位于外观/聊天展示相关分组,属于scope: 'profile'的用户级偏好;具体字段注册可结合 packages/ui/src/lib/settings/registry.ts 中聊天展示相关分区查看,升级到 1.2.0 后首次进入设置即可看到新的下拉选项。

字体大小与间距控制:50%–200% 缩放

使用方式

在"外观设置(Appearance Settings)"中,1.2.0 新增了字体大小与间距(padding)的百分比控制,范围为50%–200%:100% 为默认值,50% 为一半大小,200% 为双倍大小。这对高分辨率屏幕、远程演示或视力适配都非常实用。

实现原理:以 root rem 为基准的全局缩放

字体与间距不是逐条改 CSS 属性,而是通过缩放根元素的font-size让整套界面响应式联动。核心实现在 packages/ui/src/stores/useUIStore.ts#L2178-L2183:

setFontSize: (size) => { // Clamp between 50% and 200% const clampedSize = Math.max(50, Math.min(200, size)); set({ fontSize: clampedSize }); get().applyTypography(); },

applyTypography(同文件 #L2232-L2249)执行真正的应用逻辑:

const scale = fontSize / 100; // 100 = 1.0x, 50 = 0.5x, 200 = 2.0x
  • scale === 1时移除根元素上的font-size与语义排版变量,恢复默认;
  • 否则将根元素的font-size设置为scale * 100%,同时通过SEMANTIC_TYPOGRAPHY语义排版映射表(getTypographyVariable)同步缩放各语义级字号变量;
  • 注释明确指出:缩放根 rem 单元后,"常规工具类、图标、间距与语义排版全部响应同一个界面设置",因此字体与间距控制是联动生效的。

间距(padding)的处理方式一致:setPadding 同样在 50–200 之间做钳制,并调用applyPadding()应用。

细分的字体设置

值得注意的是,fontSize并非唯一字体控制项。packages/ui/src/lib/settings/registry.ts#L422-L429 展示了完整的排版字段组:

fontSize: field({ scope: 'profile', perSurface: true, parse: parseFiniteNumber, ... }), terminalFontSize: field({ scope: 'profile', perSurface: true, ... }), editorFontSize: field({ scope: 'profile', perSurface: true, ... }), uiFont: field({ scope: 'profile', parse: parseUiFont, ... }), monoFont: field({ scope: 'profile', parse: parseMonoFont, ... }), padding: field({ scope: 'profile', perSurface: true, ... }), cornerRadius: field({ scope: 'profile', perSurface: true, ... }),
  • fontSize(界面整体百分比)钳制在 50–200(Math.max(50, Math.min(200, size)));
  • terminalFontSize钳制在9–52px(useUIStore.ts#L2193-L2197);
  • editorFontSize钳制在9–32px(useUIStore.ts#L2207-L2211);
  • 这些字段均标记perSurface: true,表示不同界面(surface)可分别记忆自己的字体设置,例如主界面与代码编辑器的字体可独立调整,互不干扰。

VS Code 扩展内直接访问设置页面

1.2.0 之前,使用 VS Code 扩展的用户修改界面设置需要回到 App 端;该版本让扩展内可以直接打开设置页。从源码看,VS Code 端的多个宿主面板——Agent 管理面板(AgentManagerPanelProvider.ts#L134-L135)、聊天视图(ChatViewProvider.ts#L211-L212)、会话编辑器(SessionEditorPanelProvider.ts#L263-L264)——都会监听来自 webview 的api:config/settings:save消息,保存成功后通过vscode.commands.executeCommand('openchamber.internal.settingsSynced', response.data)触发内部命令openchamber.internal.settingsSynced,将最新设置同步给各面板,并调用对应的notifySettingsSynced通知 webview 侧刷新(如 AgentManagerPanelProvider.ts#L168-L176)。

这意味着在扩展内修改收藏模型、字体大小、工具调用展开模式等设置后,改动会通过设置保存通道回写并广播到所有打开的 OpenChamber 面板,App 与扩展之间的配置保持同步。

小结与升级建议

OpenChamber 1.2.0 虽然是一个以"改进(Improvements)"为主的版本,没有新增模块,但这四项改进恰好覆盖了高频交互痛点:

  1. 收藏/最近模型让多模型工作流(如主模型与快速模型切换)的启动成本大幅降低;
  2. 工具调用三种展开模式让聊天区在"简洁"与"详细"之间可平滑调节;
  3. 50%–200% 字体与间距缩放配合perSurface的独立记忆,适配不同显示环境;
  4. 扩展内设置页闭环了 VS Code 场景下的配置体验。

升级到 1.2.0 后,建议依次完成:在模型选择器中收藏常用模型并尝试收藏轮换快捷键、将工具调用展开切到"活动"模式观察 Agent 实时动作、在外观设置中将字体调至舒适比例。相关源码入口(packages/ui/src/lib/settings/registry.ts、packages/ui/src/stores/useUIStore.ts、packages/vscode/src/AgentManagerPanelProvider.ts)可作为后续深入了解设置体系与双端同步机制的起点。

【免费下载链接】openchamberAgentic Development Environment based on OpenCode AI agent项目地址: https://gitcode.com/gh_mirrors/op/openchamber

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/24 15:01:43

Flowable 监听器使用指南

Flowable 监听器使用指南 在 Flowable 流程引擎中&#xff0c;监听器&#xff08;Listener&#xff09;是扩展流程行为的核心机制之一。它允许开发者在流程执行的特定时刻插入自定义逻辑&#xff0c;而无需修改 BPMN 流程图本身。Flowable 主要提供两种监听器&#xff1a;执行监…

作者头像 李华
网站建设 2026/9/24 14:56:54

QEMU模拟STM32实战:从LED闪烁到工业级嵌入式验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华