一次发布改了 2000+ 个文件:Avalonia 原生做出 3D 地球、AI 聊天和会动的 AI 原理动画(TKCode.Arc 0.3.0-preview.2)

一次发布改了 2000+ 个文件:Avalonia 原生做出 3D 地球、AI 聊天和会动的 AI 原理动画(TKCode.Arc 0.3.0-preview.2)

大家好,我是 token。TKCode.Arc 发布了 0.3.0-preview.2。

这一版是到目前为止最大的一次更新:一次发布合并了 2000+ 个文件的改动 (2,163 个文件,分 9 个提交合入),新增三类共 18 个 页面级区块,一个全新的 TKCode.Arc.Special 包,以及一批底层动效和性能改进。同时,TKCode.Arc.Blocks、TKCode.Arc.AdvancedCharts 和 TKCode.Arc.Special 三个包从这一版开始正式发布到 NuGet,不用再从仓库自己编译。

下面的效果图都是用真实的 Gallery 示例在 Avalonia 里渲染出来的,原生控件,没有 WebView。


这一版有什么

类别 内容
改动规模 2000+ 个文件,9 个提交
新包 TKCode.Arc.Special(AI 动画讲解)
新区块 AI 区块(7)、项目区块(5)、展示区块(6),共 18 个
新发布到 NuGet Blocks、AdvancedCharts、Special
底层 动效调度、文本缓存、ArcRing、WordDiff 等
文档 三语言文档、示例和测试同步补齐,并提供给 AI 助手的 llms.txt

展示区块(Showpieces):完全自绘

这一组区块不依赖任何图表库,数据、相机、投影和命中测试都是自己写的。

RevenueGlobe:实时支付地球

一个点阵地球,显示全球各城市的实时支付。可以拖动旋转、点城市飞过去,底部的时间轴可以回放一整天。陆地来自 0.5° 的 Natural Earth 掩码。

ActivityTerrain:一周活动的 3D 地形

一周 24 小时的活动量画成可旋转、可缩放的 3D 地形,指到柱子上有详情卡片;点 "Heat map" 地形会被压平成热力图,再点回来又立起来。

LayoutMorph:同一组卡片,六种看法

网格、瀑布流、列表、堆叠、轮播、螺旋。每一张卡片都用自己的弹簧飞到新位置,不是整体淡入淡出。

这一组还有 CustomerGalaxy(2,400 个客户组成的旋转星系,可以重新聚成簇)、SemanticZoom(从团队缩放到项目再到单个任务,带面包屑、小地图和引导游览)和 ExplodedView(滚动时一个界面拆成带标签的图层)。


项目区块(Projects)

五个面向项目协作的区块:

  • WeekCalendar:周、工作周、日、三日、议程五种视图,拖拽创建、移动、调整事件,15 分钟一格,支持撤销
  • AvailabilityPicker:多人会议时间选择
  • ProjectBoard:紧凑的迭代看板
  • ReleaseReadiness:检查清单解锁一个异步发布动作
  • KanbanBoard:物理拖拽(抬起、倾斜、落下弹簧),键盘和触摸也能拖,泳道、实时 WIP 限制、快速添加

AI 区块

这一版开始补齐 AI 应用最常用的那一组界面,全部是原创设计和实现:

  • Model picker:模型选择,带推理强度和按厂商分组的菜单
  • Agent memory:智能体记忆卡片,容量条、搜索高亮、就地编辑、"忘记"带撤销
  • AI composer :AI 输入框,/ 命令、@ 提及变成令牌,附件、工具开关、发送变停止
  • AI chat:完整聊天,Markdown 流式输出,按词释放,推理折叠、工具调用、引用预览,重试与版本切换
  • AI answer:文章式回答页,引用、句子和来源卡片三方联动高亮
  • AI side panel 和 Prompt studio

下面是 AiChat:输入问题,回答按词流出,带推理折叠和工具调用,滚动跟随到底部。

AiChat 通过 IAiChatResponder(一个事件流)驱动,也可以自己往 AiChatReply 里填内容;你只需要接自己的模型,界面和动效都是现成的。


Special:AI 动画讲解

新包 TKCode.Arc.Special,五个会动的 AI 讲解卡片,每一个都是可复用、数据驱动的控件,所有数字都由数据算出来,而不是写死的动画:

  • AgentLoop:智能体循环,收集上下文、执行动作、验证,不通过就再转一圈
  • MixtureOfExperts:路由器给每个专家打分,token 飞向 top-k 专家,带负载均衡条
  • SpeculativeDecoding:小模型猜、大模型一次验证,被接受的 token 飞进答案
  • PromptCache:多个请求共享同一段缓存前缀,成本和首 token 节省
  • ReasoningTree:对思路做束搜索,剪枝,留下得分最高的路径

它们共用 Explainer 基类:播放、暂停、单步、重来、倍速、进入视野自动播放、循环,以及减弱动效下的行为都是现成的。


底层改进

  • ArcSurface.Elevation:对话框、抽屉、气泡卡片和菜单的内容知道自己放在抬升的界面上。鼠标悬停在这类界面上的幽灵按钮,现在有清楚可见的悬停填充,不再几乎看不出来
  • ArcRing 、WordDiff 、WordPacer 、DecoratedTextBlock,以及新增的 23 个 Lucide 图标
  • TokenTextEditor :令牌作为整体处理的多行编辑器,MentionInput 在此基础上重建,行为不变
  • 性能:动效调度器每帧只推进每个驱动一次;隐藏的循环不再产生开销;模糊效果和文本排版有缓存;ActivityTerrain 的单帧 GPU 时间降到原来的约五分之一,轨道旋转时每帧 UI 线程分配从 410 KB 降到 34 KB
  • Gallery :WebAssembly 站点首帧前少下载约 1.5 MB(12.0 MB → 10.5 MB);站点还提供 llms.txt、llms-full.txt 和每个页面的 Markdown 版本,方便 AI 助手直接读文档

修复

  • Tabs、PageHeader、Breadcrumb、ArcContentSwap 和 DataGrid 里的模板不再以 null 数据上下文构建,之前读取数据的模板会抛 NullReferenceException
  • 从 Transparent 渐入渐出填充时不再闪一下灰色
  • 侧栏从轨道展开后,内容不再保留第一帧的宽度
  • 输入框的聚焦环不再是粗重的深色,与 Arc 原版一致

升级前请注意

仓库迁移,XAML 命名空间变了。 仓库现在是 AIDotNet/TKCode.Arc,命名空间随之改变,旧地址不再解析到任何类型:

xml 复制代码
<!-- 之前 -->
xmlns:arc="https://github.com/AtomUICommunity/TKCode.Arc"
<!-- 现在 -->
xmlns:arc="https://github.com/AIDotNet/TKCode.Arc"

Lucide 图标命名空间同样从 .../AtomUICommunity/TKCode.Arc/lucide 改为 .../AIDotNet/TKCode.Arc/lucide。

另外:Sidebar.ResizeMode 默认值改为 Overlay,需要原来的行为请设 ResizeMode="Push";FieldFrameToken 的 FocusRing* 值已移除。


安装

bash 复制代码
dotnet add package TKCode.Arc --version 0.3.0-preview.2
dotnet add package TKCode.Arc.Blocks --version 0.3.0-preview.2          # 页面级区块(AI、项目、展示)
dotnet add package TKCode.Arc.AdvancedCharts --version 0.3.0-preview.2  # DataGrid
dotnet add package TKCode.Arc.Special --version 0.3.0-preview.2         # AI 动画讲解
dotnet add package TKCode.Arc.Fonts --version 0.3.0-preview.2           # 可选:Geist 字体
dotnet add package TKCode.Arc.Icons.Lucide --version 0.3.0-preview.2    # 可选:完整 Lucide 图标

在应用启动时注册:

csharp 复制代码
builder.UseDesktopControls();
builder.UseArc();
builder.UseArcBlocks();
builder.UseArcAdvancedCharts();
builder.UseArcSpecial();

版本带 -preview 后缀,API 在版本之间仍可能变化,建议固定版本号。AtomUI 固定为 6.2.8,Avalonia 为 12.1.4。

完整更新日志在仓库的 CHANGELOG.md,在线文档在 https://docs.tkcode.si/。欢迎试用、提 Issue,也欢迎点个 Star。