- 人工智能
- AI Agent
- 自主智能体
- 桌面应用
- MCP Clients
【免费下载链接】Kun
Local-first AI agent workspace for coding, writing, design, research, and automation — one runtime for desktop GUI and TUI.
导读
本文基于 Kun 仓库的 v0.3.7 发布说明,系统梳理该版本在运行时稳定性与会话体验两大方向上的全部改动:从 OpenCore Free 免密钥模型提供方、基于 models.dev 的用量费用估算、深色主题自定义,到线程执行租约续期、Fast Context 正式化与长会话上下文压缩(squash)等关键能力。阅读本文后,你将掌握这些新功能的配置方式、底层实现原理,以及该版本在启动恢复、SSE 事件流、线程切换与更新通道等关键路径上修复了哪些隐患。文中所有实现细节均可在当前仓库源码中验证。
一、新功能总览
v0.3.7 的核心主题是运行时稳定性与会话体验修复,新增功能集中在四个方向:
- 免费模型接入:OpenCore Free 免密钥提供方;
- 成本可视化:基于 models.dev 目录价格的用量费用估算;
- 界面个性化:深色主题 UI 颜色自定义、吉祥物加载动画、浮动面板;
- 会话能力升级:Fast Context 正式化、长会话上下文压缩、线程执行租约续期、boot 启动状态机。
下文逐一展开,并结合仓库源码给出实现证据。
二、OpenCore Free:无需 API Key 的免费模型提供方
2.1 功能定位
v0.3.7 新增了OpenCore Free提供方,让用户无需任何 API Key即可接入免费模型。其请求以匿名方式发送,在免费分组(Free)中展示,且不再弹出密钥提示;同时同步清理了种子数据中的遗留凭证(对应提交 #61b3306、#de714f5、#bcd9123、#b7fbdce、#3f7075f、#2f94726)。
2.2 源码级验证
在 TUI 的连接目录实现中,opencode-free预设被明确归类为 Free 分组,且凭证要求为optional(可选),connectionRequiresCredential判定为false。测试用例 connect-common.test.ts 验证了这一点:
const preset = connectionPresets.find((entry) => entry.id === 'opencode-free') expect(preset).toMatchObject({ category: 'Free', kind: 'http', authType: 'api-key', credentialRequirement: 'optional', endpointFormat: 'chat_completions', models: [ 'big-pickle', 'mimo-v2.5-free', 'ling-3.0-flash-fin-free', 'nemotron-3-ultra-free', 'nemotron-3.5-lightning-free' ] }) expect(connectionRequiresCredential(preset!)).toBe(false)同一测试还对照验证了普通 API 提供方(如zenmux)仍要求credentialRequirement: 'required',确保免密能力只作用于 Free 分组,不会放宽对常规提供方的凭证约束。
2.3 使用方式
- 在提供方列表中选择OpenCore Free分组下的模型即可直接使用,无需填写密钥;
- 请求将以匿名方式发送,适合体验、测试与低风险场景;
- 该提供方不会触发密钥缺失告警,交互上与其他提供方完全解耦。
三、用量费用估算:让成本可见
3.1 功能概述
v0.3.7 引入用量费用估算(对应 #45a1ed7、#7e92d35、#14584af、#7ebd75c),核心能力包括:
- 基于models.dev 目录价格估算各提供方及订阅制模型的使用成本;
- 历史 GLM Coding Plan 用量按零成本计价(订阅已含费用,不重复计费);
- 历史用量按每轮实际使用的提供方归属(而非当前配置),修复了 legacy 用量记录归属不准的问题。
3.2 源码级验证
在用量聚合服务 usage-service-aggregation.ts 中可以看到完整的成本字段体系:
target.value_estimate_usd += codexEstimate?.valueEstimateUsd ?? catalogEstimateUsd ?? 0 target.value_estimate_cny += codexEstimate?.valueEstimateCny ?? catalogEstimateCny ?? 0 if (referenceValue) { const requests = usage.turns > 0 ? usage.turns : hasRequestUsage(usage) ? 1 : 0 if (codexEstimate || catalogEstimateUsd != null) target.value_estimate_priced_requests += requests else target.value_estimate_unpriced_requests += requests target.value_estimate_coverage = referenceCoverage(target) } target.cache_savings_usd += usage.cacheSavingsUsd ?? 0 target.cache_savings_cny += usage.cacheSavingsCny ?? 0 target.token_economy_savings_tokens += usage.tokenEconomySavingsTokens ?? 0其中isCatalogZeroPriceSubscriptionModel明确将智谱/智谱 AI 的 Coding Plan 下的 GLM-4/GLM-5 系列模型识别为零价格订阅条目,并通过 turn 级提供方归属修复历史记录的计费归属:
const codingPlan = normalizedProvider === 'zhipu-coding-plan' || normalizedProvider === 'zai-coding-plan' // models.dev 与 kun-agent 将 Coding Plan 模型发布为显式零价订阅条目 return codingPlan && /^glm-(?:4|5)(?:[.-]|$)/u.test(normalizedModel)此外,该版本还:
- 补充了DeepSeek V4 按时计费费率(#1db761b);
- 用量成本指标体现订阅参考价估算(#ef5e62a);
- 用量索引按字节偏移分段、每线程增量索引,范围查询不再回放全量历史(#6730bd5、#11fc28e),损坏的用量索引自动重建(#a29a2ab、#e6787a8)。
3.3 侧边栏体验
侧边栏用量历史在负载下保持可读:延长聚合超时、缓存线程记录、失败时降级展示(#fd26f4c),确保即使部分提供方探测超时也不会阻塞整体视图。
四、深色主题 UI 颜色自定义
v0.3.7 支持自定义深色主题 UI 颜色(#6ff0762),提供默认值、归一化与合并逻辑,并改进了 live projection 处理。
从应用设置模型 settings-model.ts 可以看到主题枚举定义:
export const themeSchema = z.enum(['system', 'light', 'dark'])深色主题支持用户自定义 UI 颜色,系统会:
- 提供默认值:未自定义时使用内置配色;
- 归一化:对用户输入的颜色值做规范化处理,避免非法值破坏渲染;
- 合并逻辑:将自定义颜色与默认主题安全合并,保证界面一致性。
同时该版本将整个应用生命周期改为单一 React root 渲染(#e2f95c2),消除了挂载竞态,为深色主题这类全局样式的一致应用提供了稳定的渲染基础。
五、Fast Context 正式化与实时助手能力
5.1 Fast Context 从 Lab 升级为正式能力
Fast Context(快速上下文工具)在 v0.3.7 中从实验室(Lab)能力升级为正式能力,支持运行时配置并配套测试(#fa911c4、#198f667)。配置结构定义在 kun-config-application.ts:
export const FastContextConfigSchema = z .object({ enabled: z.boolean().default(true), model: z.string().min(1).optional(), providerId: z.string().min(1).optional(), reasoningEffort: ModelReasoningEffort.optional(), fast: z.boolean().default(false) }) .strict() .superRefine((config, ctx) => { const hasModel = Boolean(config.model?.trim()) const hasProvider = Boolean(config.providerId?.trim()) if (hasModel === hasProvider) return ctx.addIssue({ code: z.ZodIssueCode.custom, path: hasModel ? ['providerId'] : ['model'], message: 'fastContext model and providerId must be configured together' }) })关键约束:model与providerId必须成对配置,不能只配其一。同时提供migrateLegacyFastContextConfig(kun-config-application.ts)将旧的lab.fastContext配置自动迁移到顶层fastContext,实现平滑升级。相关实现位于 fast-context-tool-provider.ts,并有配套测试 fast-context-tool.test.ts。
5.2 Fast Context 稳定性修复
- Fast Context 卡片不再错误渲染为失败状态,收紧误报守卫(#71a73a1、#8a610e7);
- Fast Context 队列按会话隔离,避免会话间串扰(#5d4c272);
- 限制 Fast Context 队列等待时长(#6aa5511);
- 启动时保留 Fast Context 模型配置(#075f3c1),热应用请求体正确处理 Fast Context 与本地模型网关(#bc3c8d9)。
5.3 实时助手流式上下文
新增实时助手流式上下文,并增强消息时间线动画(#c0a740d);线程详情支持水合加载与回放处理,live projection 与水合加载增强(#ad6d1e2、#77ac3bf)。
六、线程执行租约续期:防卡死的核心机制
6.1 新组件 ManagerThreadExecutionLeaseClient
v0.3.7 新增ManagerThreadExecutionLeaseClient(#237d0ad),为线程执行租约提供续期(renewal)能力,防止长时间运行的 turn 因租约到期而被 Manager 误判为失活。
核心实现在 manager-thread-execution-lease-client.ts,其关键设计如下:
- 周期性续期:每 5 秒向 Manager 的
/v1/leases/threads/{threadId}/renew端点发送续期请求(L252-L266); - 本地硬截止时间(deadline):Manager 会在
expiresAt无条件删除租约,因此客户端在本地设置 deadline 定时器,续期必须赶在到期前完成(L348-L361); - grace 宽限期:本地 deadline 先于续期完成触发时,运行时进入
grace状态——暂停新的副作用工具派发,等待续期结果落定(L370-L382); - 指数退避重试:瞬时失败按
500 * 2^min(failures-1, 3)退避,封顶 5 秒(L391-L403); - fencing token 防串写:续期、释放都携带
fencingToken,即使租约已权威丢失,迟到的持久化写入也会被 Manager 拒绝(L47-L51)。
该组件实现了ThreadExecutionLeasePort,并配套测试 manager-client-lease-renewal.test.ts。同时本版本增强了数据互斥与线程续租机制,补充租约过期处理及配套测试(#c394abd、#fbb5ba1),并将资源租约心跳串行化,保留最早互斥截止期限(#05eab27、#3e02ae5)。
6.2 与其他稳定性改动的关系
租约续期与启动恢复、更新交接等能力共同构成"防卡死"体系:例如更新通道交接需要运行时优雅/强制替换(#b8e56c2),替换窗口内租约必须可靠续期或释放,避免新旧运行时同时操作同一线程。
七、长会话上下文弹性:squash 压缩与会话守护
7.1 问题背景
长会话在历史累积后,上下文胶囊(context capsule)会持续占用请求 token,甚至导致会话中途截断。v0.3.7 恢复长会话上下文弹性(#eb08f25),支持上下文压缩(squash)、快照裁剪与会话守护。
7.2 压缩实现
核心逻辑在 model-context-squash.ts:squashModelContextHistory将 append-only 的model_context增量(delta)折叠为单一 canonical baseline:
- 遍历历史中的
model_context条目,收集活动 turn 边界之前的增量; - 按"最旧 → 最新"顺序应用每个 key 的状态转换,
inactive块会被删除,活动块内联 canonical 内容; - 无法结构重建的 legacy delta 保留原样(
unresolvableIds),绝不丢弃模型可见字节; - 返回的 baseline 替换被折叠的增量条目,压缩后请求 token 显著降低。
配套实现还包括 history-compaction-service.ts 的HistoryCompactionService、session-guardian.ts 的会话守护,以及测试 model-context-squash.test.ts。本版本同时新增历史记录压缩测试,优化消息时间线与内存查找组件(#b3723af)。
7.3 配套保留策略
保留策略(prune)不再覆盖既有 turns(#0d0a65d);暂存快照强制执行磁盘配额(#758f7e8);限制快照体积并保留水合状态(#7403e9c)。
八、启动与运行时恢复加固
v0.3.7 对启动路径进行了系统性加固,新增工作台 boot 状态机(#7288bae),启动失败时提供明确的错误提示与重试机制:
- 运行时交接门禁:启动时增加运行时交接门禁,加固恢复窗口(#e0616e3);支持多目录场景下的强制交接恢复(#15fff3f);
- fail-closed 策略:恢复路径保持可重试,运行时升级时 fail-closed,避免半初始化状态(#65b6806);
- 窗口先行:启动时先显示窗口,再启动运行时服务,避免窗口空白等待(#8852045);
- 服务管理器替换:实现管理器优雅/强制替换能力,启动失败窗口支持恢复操作与详细的交接错误展示(#b8e56c2);
- SSE 事件流修复:修复大线程日志导致的 SSE 404 死胡同与事件循环停滞(#c47208f);
- 竞态加固:加固状态游标与用户输入竞态(#2b40a19);修复 channel 与线程维护流程(#ba8d089);
- 工具发现并行化:缩短启动耗时(#1d707f9);
- 端口属主校验:校验失效端口属主身份,安全替换无端口陈旧运行时(#d9cbf37、#65591fc);
- 首次启动恢复:修复首次启动失败后的恢复路径(#34368de)。
九、更新通道与发布流水线
9.1 更新通道可靠性
- 更新通道切换操作串行化,避免并发变更互相冲突(#66bed86);加固更新通道交接逻辑(#12c90b1);
- 更新健康探测隔离,后台检查失败后退避重试(#8b5ebf2、#abf1da7);
- 更新源发现限界,并与预发布版本比较(#c633238);
- 更新范围不明确时中止安装(#a6113cf)。
9.2 Windows 与 Linux 专项
- Windows 更新恢复状态收敛,安装与首次启动失败可恢复(#f0645ad、#6ebb432、#31969cb);
- 安装后恢复备份路径校验,恢复备份限界(#52ddbf9、#492e680);
- Windows 更新事务将空快捷方式快照稳定序列化为空数组,兼容旧空对象快照;
- 为运行时关闭增加进程级截止时间,避免 Linux 更新交接被未落定的清理步骤无限阻塞;
- 解除 Windows 事务测试、Linux 沙箱冒烟与 0.3.7 产物的流水线阻塞(#2766fae);加固安装器与 Linux 交接门禁(#16c5d93);Chromium 沙箱回退增加门禁(#3806242)。
十、会话体验修复与界面改进
10.1 聊天与会话
- 按线程恢复输入框(composer)状态(#655387b);切换线程时保留用户选择的模型(#c7a6c26);
- 修复引导中的排队消息在切换线程后"复活"的问题(#c11bc64);
- 媒体瓦片按图片宽高比自适应,不再裁剪(#54e86fb);
- 修复 rehype-harden 的
[blocked]标记泄漏到文件链接(#b7d33ba); - 重新打开已结束线程时不再重放 live-progress UI(#3e08fb1);
- 用户直接提问时不再被误判为重复内容而强制延续目标,目标保持激活等待用户回复(#b427054);
- 运行中也可加载更早的历史消息,长会话回溯更平滑(#e0f5f37)。
10.2 待处理输入可见性
user_input支持超时后由模型自主决策(#d847a5c、#ea91214);侧边栏新增 awaiting-input 提示,并在聊天 UI 中完整呈现等待输入状态——当模型等待用户输入时,界面明确呈现等待状态而非静默卡住。
10.3 侧边栏与线程管理
- 运行中的会话行在侧边栏中保持位置冻结,不再跳动(#f634a98);
- 侧边栏线程列表强制分页加载,避免一次拉取全量(#5a90e81);
- 线程状态经批量运行时端点协调一致(#6f63524),支持批量拉取线程状态并增强错误处理与诊断信息(#f72d5e0、#2186721);
- 线程详情支持prewarm,切换更流畅(#8000b03);
selectThread中 promise 落定后重新校验 prewarm 句柄(#bfd5964); - 已查看的已完成线程在侧边栏排序中降级,不再长时间占据顶部(#e3aa2f6);
- 展开的项目线程自动加载全部会话,并支持常驻折叠按钮(#8999e7d、#2e4bdfd)。
10.4 其他界面改进
- 计划面板复制路径:活动计划的路径可一键复制,并更新多语言文案(#a04a7d4);
- 任务档案摘要组件:新增设计档案摘要组件与布局解析器,档案水合失败时降级为摘要展示(#530cac4);
- 创建计划工具增强:改进计划标题处理,会话 ID 缺失时使用回退值(#9a81597);
- 背景 Shell 浮动面板:后台 shell 会话支持浮动面板查看(#161fdef);
- 受治理的图表可视化:聊天中支持结构化数据的可信图表渲染(#cb294c2);HTML 优先图表设计,复杂流程图与架构图优先以 HTML 呈现(#d380deb);
- 语音听写与提示词优化内联错误:内联错误提示可关闭并自动过期,不再持续占用输入区域(#a5e2803);
- 吉祥物加载动画:新增 Kun 吉祥物加载动画,启动等待更友好(#9676323);
- TUI 新会话立即可用:自动生成会话标题(#318350f、#89b93ca)。
十一、提供方、本地网关与安全
11.1 提供方与配置
- 编辑后的凭证与端点正确应用,异步凭证排空在 rebase 后保留(#164da0c、#8b7a74a);
- 关闭提供方变更屏障竞态(#40652a8);提供方变更落定后再探测(#3e89b0d);
- 待处理凭证同步失败后自动重试(#0a9ec7b);
- 统一 antigravity CLI 目录与安装逻辑(#f2b9f74);
- antigravity-cli 模型解析兼容空白格式(#fd62146);智谱 Coding Plan 新增GLM-5.3-Flash(#6787099),可在 model-context-profile.ts 等处看到相关模型引用。
11.2 本地网关与安全
- 本地模型网关要求独立 API 凭证(#e352e96);
- 及时关闭网关流式资源,避免句柄泄漏(#1e1d4d3);
- 渲染进程桥不可用时优雅降级(#5bc2665);
- 保护媒体 API 凭证,避免敏感信息泄露(#b9fd913);
- 修复安装器兼容性回归(#7ba9547)。
十二、存储与保留、委托与检索
12.1 存储与保留
- 线程列表可从异常中恢复,历史查询增加限界,避免无界扫描(#3865074);
- 保留策略(prune)不再覆盖既有 turns(#0d0a65d);
- 用量索引分段与增量索引、追加哈希限界(#6730bd5、#11fc28e、#ae82e1f、#df06b30);
- JSONL 读取与用量回填不再隐藏 I/O 失败(#c38e276)。
12.2 委托与检索
- 委托子 turn 纳入画布流程(#53afeae);
- 恢复子代理权威状态(#3d06de4);线程时间线覆盖已落定的分离子代理状态(#d0fa8b9);
- agent-sdk 下载校验与原子激活(#ff1c656)。
十三、其他修复与收尾
- macOS 下会话面板位置为窗口控制按钮留出空间(#42c58b5);
- 终端新标签页菜单改为 portal 渲染,并新增剪贴板快捷键(#227d393);
- 活动技能上下文令牌正确分类,上下文估算更准确(#5c9fc72);
- 强化 i18n 资源契约,避免多语言文案缺失(#dfc5df9);
- 目标已用时间跨线程切换锚定到运行中的 turn,不再错乱(#b82c615);
- 提供方配额超时隔离测试与请求超时时间调整(#6fcfa92);
- 分页前先展开已加载线程,避免状态丢失(#4f92a84);稳定线程分页与刷新时序(#73716ee)。
十四、版本定位与升级建议
v0.3.7 是一个典型的稳定性主导版本:功能增量克制的背后,是启动恢复、租约续期、SSE 事件流、更新交接、用量索引等关键路径的大规模加固。对于使用场景的实践建议:
- 长会话重度用户:升级后可显著受益于上下文 squash 压缩与运行中回溯历史,建议观察长会话是否不再中途截断;
- 免费模型体验用户:可直接通过 OpenCore Free 匿名接入免费模型,无需配置密钥;
- 成本敏感用户:用量费用估算(含 DeepSeek V4 计费、GLM Coding Plan 零价处理)可在侧边栏直观查看各提供方成本,历史归属已按实际使用提供方修正;
- 升级注意:Fast Context 配置从
lab.fastContext自动迁移到顶层fastContext,若你在旧版本中手动配置过lab.fastContext,升级后无需改动即可继续生效;注意model与providerId仍需成对配置。
结语
Kun v0.3.7 以"运行时稳定性 + 会话体验修复"为核心,既带来了 OpenCore Free、用量费用估算、深色主题自定义等可直接感知的新能力,也在启动恢复、线程租约、SSE 流、更新通道、存储索引等底层路径上完成了大规模加固。通过 manager-thread-execution-lease-client.ts、model-context-squash.ts、usage-service-aggregation.ts、kun-config-application.ts 等源码,可以清晰看到这些改动的实现逻辑与防御边界——这也是本版本作为稳定性里程碑的底气所在。
- 人工智能
- AI Agent
- 自主智能体
- 桌面应用
- MCP Clients
【免费下载链接】Kun
Local-first AI agent workspace for coding, writing, design, research, and automation — one runtime for desktop GUI and TUI.
相关推荐
Kun v0.2.37 版本实战解析:explore_agent 只读探索子代理与 Agent 运行时稳定性加固
Kun v0.2.37 版本实战解析:explore_agent 只读探索子代理与 Agent 运行时稳定性加固 本篇技术指南围绕 Kun v0.2.37 的发
人工智能AI Agent自主智能体桌面应用MCP ClientsKun v0.3.0 深度解读:Code/Design/Work 统一工作台、PPT 完整工作流与运行时稳定性加固
Kun v0.3.0 深度解读:Code/Design/Work 统一工作台、PPT 完整工作流与运行时稳定性加固 Kun v0.3.0 是该项目的一个大功能版
人工智能AI Agent自主智能体桌面应用MCP ClientsKun v0.2.29 深度解读:项目级 MCP 与 Skills 配置、会话导出与 Runtime 稳定性加固
Kun v0.2.29 深度解读:项目级 MCP 与 Skills 配置、会话导出与 Runtime 稳定性加固 本篇围绕 Kun v0.2.29 发布说明展开
人工智能AI Agent自主智能体桌面应用MCP Clients
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考