首页/新闻资讯/正文详情

ZCode 中的 AI 上下文使用可视化:Context 复合组件体系实战解析

发布时间:2026/9/23 9:56:09 来源:云帆数科 栏目:资讯中心
ZCode 中的 AI 上下文使用可视化:Context 复合组件体系实战解析
ZCode 中的 AI 上下文使用可视化Context 复合组件体系实战解析【免费下载链接】ZCodeZ.ais coding agent harness. Powerful, intelligent, extensible.项目地址: https://gitcode.com/gh_mirrors/zco/ZCode导读本文围绕 ZCode 开源仓库中 AI Elements 技能体系的核心组件Context展开系统讲解如何在一个基于 AI SDK 的 React 应用中展示模型上下文窗口占用率、token 消耗明细输入 / 输出 / 推理 / 缓存与实时成本估算。通过阅读本文你将掌握 Context 复合组件compound component的完整 API、React Context 数据流设计、基于Intl.NumberFormat的 token 智能格式化以及基于tokenlens的成本计算原理并看到该组件在 ZCode 产品界面中的真实集成方式。Context是一个用于展示 AI 模型上下文窗口使用情况的复合组件系统它通过交互式悬停卡片hover card呈现上下文窗口占用、token 消耗拆分与成本估算。组件源自 Vercel 的 ai-elements配套的可运行示例见 .agents/skills/ai-elements/scripts/context.tsx。安装与前置条件在项目中使用 Context 组件前请确认满足 AI Elements 技能体系的环境要求Node.js 18 及以上一个安装了AI SDK的 React / Next.js 项目已安装shadcn/ui若未安装执行安装命令时会自动引入。安装 Context 组件最直接的方式是使用 AI Elements 专用 CLI请根据项目的packageManager选择npx、pnpm dlx或bunx --bun作为包执行器npx ai-elementslatest add contextCLI 会把组件源码直接集成到项目的/components/ai-elements/目录或你在 shadcn 配置中指定的组件目录组件以源码形式存在于项目代码库中而非隐藏在第三方库内部因此你可以像使用普通 React 组件一样导入使用甚至直接打开文件查看实现或做定制修改。在 ZCode 仓库中该组件的本地实现已落地于 packages/ui/src/components/ai-elements/context.tsx其依赖的tokenlens版本为^1.3.1见 packages/ui/package.json。核心特性一览从参考文档与源码实现可以归纳出 Context 组件的以下能力复合组件架构Compound Component由根组件与多个子组件灵活组合按需拼装展示元素可视化进度指示SVG 圆形进度环直观显示上下文使用百分比Token 明细拆分输入、输出、推理、缓存四类 token 分别展示实时成本估算借助tokenlens库按模型定价实时计算费用智能格式化token 数量自动按 K / M / B 缩写交互式悬停卡片悬停触发详细信息的 HoverCard 弹层Context Provider 模式通过 React Context API 完成干净的数据流传递TypeScript 支持所有组件均带完整类型定义无障碍设计正确使用 ARIA 属性与语义化 HTML主题自适应进度指示使用currentColor随宿主主题自动适配。Props 全表以下完整继承自参考文档的 Props 定义并结合源码 packages/ui/src/components/ai-elements/context.tsx 补充了说明。Context /— 根 ProviderProp类型默认值说明maxTokensnumber-上下文窗口总大小token 数用于计算占用百分比源码中formatUsagePercent会在maxTokens 0时返回 0避免除零异常usedTokensnumber-当前已使用的 token 数usageLanguageModelUsage-来自 AI SDK 的详细 token 用量拆分input、output、reasoning、cached input tokens对应ContextSchema中的usage字段modelIdModelId即string-模型标识符用于成本计算例如openai:gpt-5...propsComponentPropsHoverCard-其余属性透传给底层 HoverCard 组件根组件在源码中通过useMemo缓存{ maxTokens, modelId, usage, usedTokens }形成 context 值并包裹HoverCardcloseDelay{0}、openDelay{0}即悬停零延迟开合。任何子组件在Context之外使用时都会抛出Context components must be used within Context错误见useContextValue的实现。ContextTrigger /— 触发按钮Prop类型默认值说明childrenReact.ReactNode-自定义触发元素未提供时渲染默认按钮带百分比进度环图标loadingbooleanfalseZCode 扩展属性为true时进度环图标替换为旋转的Loader2加载图标对应额度自动重置进行中状态源码注释注明为「正在重置」状态...propsComponentPropsButton-透传给默认按钮元素默认触发按钮使用variantghost、sizeicon-md样式内部通过HoverCardTrigger asChild包装以保证无障碍与聚焦行为。ContextContent /— 悬停卡片容器Prop类型默认值说明classNamestring-附加 CSS 类通过cn合并...propsComponentPropsHoverCardContent-透传给 HoverCardContent 组件源码中该容器固定宽度!w-64采用rounded-lg、bg-tooltip背景与text-tooltip-foreground前景色关闭默认阴影、圆环与外框shadow-none ring-0 outline-0。ContextContentHeader /— 头部Prop类型默认值说明childrenReact.ReactNode-自定义头部内容未提供时渲染百分比、token 数与进度条actionReact.ReactNode-ZCode 扩展属性头部右上角可选的行动作区域progressSegmentsreadonly { className?: string; id: string; percent: number }[]-ZCode 扩展属性分段进度条配置与 progress.tsx 的分段渲染能力配合...propsComponentPropsdiv-透传给头部 div 元素默认头部渲染 Context 标题、分隔线、百分比保留 1 位小数如40.0%、已用 / 总量的完整数字如40,000 / 128,000以及一个基于Progress组件的横向进度条value{usedPercent * 100}。ContextContentBody /— 主体Prop类型默认值说明childrenReact.ReactNode-主体内容通常放置各 Usage 拆分组件...propsComponentPropsdiv-透传给 body div 元素主体默认使用bg-menu背景与p-3内边距与头部、底部形成视觉分区。ContextContentFooter /— 底部Prop类型默认值说明childrenReact.ReactNode-自定义底部内容未提供且传入modelId时渲染总成本...propsComponentPropsdiv-透传给 footer div 元素底部通过border-t border-popover-border与bg-surface形成次级背景。默认渲染 Total cost 与格式化后的总费用未提供modelId时成本为$0.00。Usage 组件ContextInputUsage/ContextOutputUsage/ContextReasoningUsage/ContextCacheUsage四个用量组件共享相同的 Props 约定Prop类型默认值说明childrenReact.ReactNode-自定义内容未提供时渲染对应类型的 token 数与成本classNamestring-附加 CSS 类...propsComponentPropsdiv-透传给 div 元素源码中的行为细节值得注意输入Input读取usage.inputTokens成本按{ input: inputTokens, output: 0 }计算输出Output读取usage.outputTokens成本按{ input: 0, output: outputTokens }计算推理Reasoning读取usage.reasoningTokens成本以{ reasoningTokens }独立计算推理 token 通常有特殊定价缓存Cache读取usage.cachedInputTokens成本以{ cacheReads: cacheTokens, input: 0, output: 0 }计算缓存读取通常价格更低。每个组件在对应 token 数为 0 时返回null不渲染token 数未定义时显示占位符—成本文本通过• $X.XX形式附在 token 数之后。组件架构复合组件 React ContextContext 组件采用复合组件compound component模式配合 React Context 在多个展示组件间共享数据结构分层如下Context—— 根 Provider持有全部上下文数据usedTokens、maxTokens、usage、modelIdContextTrigger—— 交互式触发元素默认带百分比进度环的按钮ContextContent—— 悬停卡片内容容器ContextContentHeader—— 头部含进度可视化ContextContentBody—— 主体承载用量拆分ContextContentFooter—— 底部展示总成本Usage 组件—— Input / Output / Reasoning / Cache 四类独立用量展示。数据流方面根组件Context用useMemo构造 context 值并通过ContextContext.Provider下发所有子组件通过useContextValue()取用若脱离根组件使用则抛出运行时错误参见 packages/ui/src/components/ai-elements/context.tsx 中createContext与useContextValue的实现。底层交互依赖 shadcn/ui 风格的 hover-card.tsx基于 Radix UI 的HoverCard含 Portal、对齐与动画与 progress.tsx支持分段segments渲染。圆形进度环的实现细节默认触发按钮中的图标是一个纯 SVG 环形进度条源码ContextIcon常量定义ICON_RADIUS 10、ICON_VIEWBOX 24、ICON_CENTER 12、ICON_STROKE_WIDTH 4、PERCENT_MAX 100周长circumference 2π × 10根据使用比例usedPercent计算dashOffset circumference × (1 - usedPercent)底环opacity0.25表示空余容量进度弧opacity0.7且transform: rotate(-90deg)使进度从 12 点钟方向起始strokeLinecapround提供圆角端点颜色直接使用currentColor因此自动适配按钮前景色与宿主主题。Token 智能格式化组件对 token 数值的格式化遵循Intl.NumberFormat的 compact紧凑记法按数量级自动缩写 1,000显示精确数值如8421,000追加 K 后缀如32K1,000,000追加 M 后缀如1.5M1,000,000,000追加 B 后缀如2.1B。在 ZCode 实现中该逻辑被封装为独立的formatCompactTokenNumber工具函数位于 packages/ui/src/lib/tokenNumberFormat.ts。源码注释明确记录了本地化决策token 数值应走当前 locale 的 compact 记法中文环境显示万/亿英文环境显示 K/M/B避免此前「为修英文长单位而把所有 locale 强制成 K/M/B」的回归问题而模型列表的容量 badgeformatModelContextWindowLabel作为技术规格则固定使用en-US的 K/M/B 展示。数值非有限数!Number.isFinite时返回空字符串兜底。成本计算原理当传入modelId时组件通过tokenlens库自动完成成本估算packages/ui/src/components/ai-elements/context.tsx 中getUsage(...).costUSD?.totalUSD。成本构成如下输入 token按模型的输入定价计算输出 token按模型的输出定价计算推理 token针对支持推理reasoning的模型使用特殊定价缓存 token按缓存输入读取cache read的优惠价计算总成本各类 token 成本之和。成本最终使用Intl.NumberFormat以USD 货币格式输出如$0.42。值得说明的是页脚总成本仅以inputTokens与outputTokens两项调用getUsage而各 Usage 组件的单项成本分别独立计算推理与缓存成本在单项明细中体现。完整可运行示例参考文档指向的示例脚本 .agents/skills/ai-elements/scripts/context.tsx 演示了完整组合方式——以一个128,000token 的上下文窗口、已用40,000token、openai:gpt-5模型为数据组合全部 7 类子组件use client; import { Context, ContextCacheUsage, ContextContent, ContextContentBody, ContextContentFooter, ContextContentHeader, ContextInputUsage, ContextOutputUsage, ContextReasoningUsage, ContextTrigger, } from /components/ai-elements/context; const Example () ( div classNameflex items-center justify-center p-8 Context maxTokens{128_000} modelIdopenai:gpt-5 usage{{ cachedInputTokens: 0, inputTokens: 32_000, outputTokens: 8000, reasoningTokens: 0, totalTokens: 40_000, }} usedTokens{40_000} ContextTrigger / ContextContent ContextContentHeader / ContextContentBody ContextInputUsage / ContextOutputUsage / ContextReasoningUsage / ContextCacheUsage / /ContextContentBody ContextContentFooter / /ContextContent /Context /div ); export default Example;注意usage的字段名必须与 AI SDK 的LanguageModelUsage类型一致inputTokens、outputTokens、reasoningTokens、cachedInputTokens、totalTokens其中推理与缓存 token 为 0 时对应 Usage 组件会自动隐藏不会产生空行。在 ZCode 产品中的真实应用Context 组件并非仅供示例使用它在 ZCode 桌面端聊天输入工具栏中被实际集成packages/ui/src/chat-input-toolbar/contextUsage.tsx导入了Context、ContextContentBody、ContextContent、ContextTrigger等组件将 Context 窗口占用、Coding Plan 与 Start Plan 额度三段信息聚合在同一个上下文面板中展示源码头注说明该文件是「context 面板聚合 Context windows、Coding Plan 和 Start Plan 三段紧耦合展示」。该集成还展示了两个扩展点通过loading属性在额度自动重置期间替换进度环图标以及通过progressSegments传入多段进度条配置配合 progress.tsx 的分段能力。这说明 Context 复合组件通过...props透传与可选子节点约定可以低成本嵌入真实业务面板。样式与主题集成组件基于 Tailwind CSS 并遵循宿主设计系统shadcn/ui 语义 token进度指示使用currentColor自动适配主题与前景色悬停卡片宽度与内边距可定制默认!w-64p-3页脚使用次级背景bg-surface 顶部边框形成视觉分隔主体文本统一使用text-ui-base字号保持一致性次级信息使用 muted 前景色text-foreground-subtle/text-muted-foreground。由于组件代码以源码形式进入你的项目你可以直接修改 Tailwind 类名来调整外观例如去掉圆角、更换背景 token 等无需额外配置。延伸阅读组件完整实现packages/ui/src/components/ai-elements/context.tsx可运行示例.agents/skills/ai-elements/scripts/context.tsxToken 格式化工具packages/ui/src/lib/tokenNumberFormat.ts底层 UI 基元hover-card.tsx、progress.tsx产品内集成案例packages/ui/src/chat-input-toolbar/contextUsage.tsx技能体系总览与安装说明.agents/skills/ai-elements/SKILL.md【免费下载链接】ZCodeZ.ais coding agent harness. Powerful, intelligent, extensible.项目地址: https://gitcode.com/gh_mirrors/zco/ZCode创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

AutoKeras长时实验实用技巧:中断恢复、搜索预算控制与常见问题FAQ清单
AutoKeras长时实验实用技巧:中断恢复、搜索预算控制与常见问题FAQ清单

AutoKeras长时实验实用技巧:中断恢复、搜索预算控制与常见问题FAQ清单 【免费下载链接】autokeras AutoML library for deep learning 项目地址: https://gitcode.com/gh_mirrors/au/autokeras AutoKeras 是基于 Keras 的 AutoML 深度学习库,支持… · 2026/9/23 9:56:03

广州爱彼售后服务中心丨门店地址、营业时间及客服电话全览(2026年9月最新)
广州爱彼售后服务中心丨门店地址、营业时间及客服电话全览(2026年9月最新)

日常佩戴爱彼时,不少广州表主会遇到表带松动、表壳划痕、机芯走时偏差、日常进水起雾等常见问题,出现这类故障无需盲目寻找零散维修渠道,广州本地即可对接正规品牌维保网点,广州爱彼售后服务中心丨门店地址、营业时间及客服电话全… · 2026/9/23 9:55:49

ps头发边缘处理避坑指南:从入门到精通的实战拆解
ps头发边缘处理避坑指南:从入门到精通的实战拆解

ps头发边缘处理避坑指南:从入门到精通的实战拆解 官方文档里那些关于“选择并遮住”的复杂参数,读起来像天书,让人抓不住重点。很多刚入行的设计师对着发丝发呆,以为PS没招了,其实是方法没用对。想从入门到精通,别死磕滤镜,得搞懂边缘算法的逻辑。… · 2026/9/23 9:55:43

I2C物理层实战:开漏、上拉电阻与多主仲裁真相
I2C物理层实战:开漏、上拉电阻与多主仲裁真相

1. 这不是教科书,是我在产线修了三年I2C故障后写的“两根线生存指南”你手里的开发板上那两根标着SDA和SCL的细线,看起来平平无奇——可它们一旦出问题,轻则读不到EEPROM,重则整块板子在量产线上卡住,工程师蹲在示波器… · 2026/9/23 10:48:09

Apache TVM RPC 系统搭建实战指南:Tracker、Proxy 与 Server 的配置、部署与验证
Apache TVM RPC 系统搭建实战指南:Tracker、Proxy 与 Server 的配置、部署与验证

编译器深度学习模型优化 【免费下载链接】tvm Open deep learning compiler stack for cpu, gpu and specialized accelerators 项目地址: https://gitcode.com/gh_mirrors/tvm7/tvm 点击查看 免费下载 导读 本文以 Apache TVM 官方开发指南 docs/dev/how_to/setu… · 2026/9/23 10:48:09

用“物质的量”重新定义孤独:从孤能子到人本关系线
用“物质的量”重新定义孤独:从孤能子到人本关系线

周六晚上十一点,我窝在出租屋的沙发上,手机通讯录里躺着三百多个联系人,朋友圈小红点不断,却找不到一个能发“出来坐坐”的人。这种时刻我一般管它叫“孤独感的顶点”。也就在那晚,我翻到一本旧化学课本,看… · 2026/9/23 10:48:08

用 Redwood 方式构建组件:以评论组件为例的 Storybook 与测试全流程
用 Redwood 方式构建组件:以评论组件为例的 Storybook 与测试全流程

后端前端Web框架开发工具 【免费下载链接】redwood RedwoodGraphQL 项目地址: https://gitcode.com/gh_mirrors/re/redwood 点击查看 免费下载 导读 本文基于 Redwood 官方教程第五章"用 Redwood 的方式构建组件"(Building a Component the … · 2026/9/23 10:48:08

Spring Cloud @RefreshScope原理与实战应用
Spring Cloud @RefreshScope原理与实战应用

1. 理解RefreshScope的核心价值在分布式配置中心盛行的今天,动态刷新配置已成为微服务架构的刚需。Spring Cloud提供的RefreshScope注解,本质上是对标准Spring Scope机制的扩展实现。与传统的singleton和prototype不同,refresh scope允许Bean… · 2026/9/23 10:48:08

C语言杨辉三角:二维数组实现与空间优化详解
C语言杨辉三角:二维数组实现与空间优化详解

1. 杨辉三角到底在练什么:从数学规律到C语言落地杨辉三角这个题目,几乎出现在每一本C语言教材的数组章节里。很多人第一次看到它,觉得不过就是打印一堆数字排成三角形,能有多难?但真正动手写的时候,问题就来… · 2026/9/23 10:48:02

3招搞定手机怎么下载微信面试难题实战项目解析
3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A… · 2026/9/23 0:00:03

你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型
你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型

你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 面试被问“高并发下如何保证消息不丢失”,你张口就是“用Redis”,结果面试官追问“如果Redis宕机了怎么办”,你瞬间卡壳。这种场景太常见了,很多新手在背八股文时,只记住了技术名词… · 2026/9/23 0:00:29

Win7无线热点配置工具源码解析:解决API失效的3个实战技巧
Win7无线热点配置工具源码解析:解决API失效的3个实战技巧

Win7无线热点配置工具源码解析:解决API失效的3个实战技巧 Win7无线热点配置工具在Win10/11上跑不动?不是你的问题,是版本升级后 API 全变了。很多老项目里的 netsh wlan… · 2026/9/23 0:00:36

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码