在 AI 应用中构建 Stack Trace 错误展示组件:ai-elements StackTrace 组件实战指南
后端前端CRM人工智能AI Agent【免费下载链接】crmComp AI CRM is an open source, CRM designed for AI agents. Agentic-first CRM.项目地址https://gitcode.com/gh_mirrors/crm48/crm点击查看免费下载本篇文章聚焦 Comp AI CRM 仓库中.agents/skills/ai-elements技能集提供的StackTrace组件讲解如何将 JavaScript/Node.js 错误堆栈格式化为带有语法高亮、可折叠帧、可点击文件路径的 React 展示组件并完整演示其在 AI SDK 工具调用场景下的接入方式。读完本文你将掌握该组件的安装、前后端集成、全部 Props 契约以及通过showInternalFrames、defaultOpen等参数定制错误展示体验的实战方法。组件概览为 AI 生成代码的错误可视化而生StackTrace组件是 ai-elements 组件库中专门用于错误展示的组件它的核心能力是接收一段原始的 JavaScript/Node.js 错误堆栈字符串将其解析并渲染为结构化的可视化界面。它通常与Sandbox、CodeBlock等组件配合使用——当 AI 生成代码执行失败时把Error.stack呈现给用户帮助开发者快速定位问题。从仓库的技能文档描述来看StackTrace具备以下关键能力见 .agents/skills/ai-elements/references/stack-trace.md解析标准 JavaScript/Node.js 堆栈跟踪格式以红色高亮错误类型error type淡化内部帧node_modules、node:路径可折叠内容并带有平滑动画一键复制完整堆栈到剪贴板可点击的文件路径并携带行号/列号。在 ai-elements 的组件体系中StackTrace是错误展示的标准件。仓库中的 Sandbox 组件文档 明确说明其设计意图是与CodeBlock配合展示代码、与StackTrace配合展示错误这印证了它在 AI 沙箱执行、代码生成工具等场景中的典型定位。安装StackTrace是 ai-elements 组件库的一部分通过 ai-elements CLI 一键安装。ai-elements 是基于 shadcn/ui 构建的组件库与自定义 registry安装命令会把组件源码直接集成到你的项目代码中默认路径为/components/ai-elements/而非封装为不可见的库依赖——这意味着你可以像阅读自己的代码一样查看它的实现细节。在项目根目录package.json所在目录执行npx ai-elementslatest add stack-trace根据 .agents/skills/ai-elements/SKILL.md 的说明如果你的项目使用 pnpm 或 bun 作为包管理器请使用对应的 runner# pnpm pnpm dlx ai-elementslatest add stack-trace # bun bunx --bun ai-elementslatest add stack-trace安装前提条件Node.js 18 或更高版本已安装 AI SDK 的 Next.js 项目已安装 shadcn/ui若未安装CLI 会自动安装项目中tsconfig.json配置了/*路径别名如/*: [./*]否则会出现 module not found 导入错误。安装完成后组件会出现在/components/ai-elements/stack-trace路径下Tailwind CSS 样式已自动集成无需额外配置即可使用。与 AI SDK 集成完整的前后端示例StackTrace组件的典型应用场景是AI 通过工具调用执行代码当代码执行失败时把捕获的Error.stack返回给前端由StackTrace组件格式化展示。下面展示 stack-trace.md 文档中的完整接入流程。前端通过 useChat 渲染工具错误在app/page.tsx中使用 AI SDK 的useChathook 获取消息流从message.parts中筛选tool-invocation类型的部分当工具名为runCode且结果中包含error时渲染StackTraceuse client; import { useChat } from ai-sdk/react; import { StackTrace, StackTraceHeader, StackTraceError, StackTraceErrorType, StackTraceErrorMessage, StackTraceActions, StackTraceCopyButton, StackTraceExpandButton, StackTraceContent, StackTraceFrames, } from /components/ai-elements/stack-trace; export default function Page() { const { messages } useChat({ api: /api/run-code, }); return ( div classNamemax-w-4xl mx-auto p-6 {messages.map((message) { const toolInvocations message.parts?.filter( (part) part.type tool-invocation ); return toolInvocations?.map((tool) { if (tool.toolName runCode tool.result?.error) { return ( StackTrace key{tool.toolCallId} trace{tool.result.error} defaultOpen StackTraceHeader StackTraceError StackTraceErrorType / StackTraceErrorMessage / /StackTraceError StackTraceActions StackTraceCopyButton / StackTraceExpandButton / /StackTraceActions /StackTraceHeader StackTraceContent StackTraceFrames / /StackTraceContent /StackTrace ); } return null; }); })} /div ); }这段代码展示了StackTrace的复合组件compound component设计外层StackTrace接收原始堆栈字符串内部由Header → ErrorErrorType ErrorMessage→ ActionsCopyButton ExpandButton→ Content → Frames逐层组合。这种结构与 ai-elements 其他组件如Message、Tool、Sandbox保持一致既保证了布局灵活性也便于按需增删子元素。后端工具执行并返回堆栈在api/run-code/route.ts中使用 Vercel AI SDK 定义runCode工具通过eval执行代码捕获异常后返回error.stackimport { streamText, tool } from ai; import { z } from zod; export async function POST(req: Request) { const { messages } await req.json(); const result streamText({ model: openai/gpt-4o, messages, tools: { runCode: tool({ description: Execute JavaScript code and return any errors, parameters: z.object({ code: z.string(), }), execute: async ({ code }) { try { // Execute code in sandbox eval(code); return { success: true }; } catch (error) { return { error: (error as Error).stack }; } }, }), }, }); return result.toDataStreamResponse(); }关键点在于execute函数中捕获异常后返回的是(error as Error).stack——这正是StackTrace组件的traceprop 期望的输入格式。前端通过tool.result?.error拿到这段堆栈字符串并交给组件解析渲染从而形成AI 写代码 → 沙箱执行 → 失败堆栈 → 格式化展示的完整闭环。说明示例中的eval仅为演示组件用法生产环境应将代码执行放入隔离沙箱可参考仓库中 Sandbox 组件文档 的设计思路它正是为AI 生成代码 执行输出场景准备的容器组件。三个实战示例从默认展开到隐藏内部帧仓库的scripts/目录提供了三个可直接运行的示例文件覆盖了StackTrace最常用的三种展示形态可作为接入时的参照模板。示例一默认展开 文件路径点击回调scripts/stack-trace.tsx 演示了defaultOpen与onFilePathClick的配合使用。示例中的样本堆栈是一个典型的 React 运行时错误TypeError: Cannot read properties of undefined (reading map) at UserList (/app/components/UserList.tsx:15:23) at renderWithHooks (node_modules/react-dom/cjs/react-dom.development.js:14985:18) ...实现要点onFilePathClick回调接收(path: string, line: number, col: number)三个参数可用于在 IDE 中打开对应文件示例中通过console.log打印定位信息onCopy回调在复制成功后触发可用于埋点或 Toast 提示const handleCopy () { console.log(Stack trace copied); };组件包裹结构为StackTrace(defaultOpen, onFilePathClick, trace) → Header → Error → Actions → Content → Frames与上文的工具调用示例完全一致。示例二默认折叠scripts/stack-trace-collapsed.tsx 演示了折叠态通过defaultOpen{false}让组件默认收起用户点击 Header 区域后再展开帧列表。这在错误信息较长、不想抢占页面主视觉时非常有用——Header 中仍然会显示错误类型与错误消息用户可以根据摘要决定是否展开完整堆栈。示例三隐藏内部帧scripts/stack-trace-no-internal.tsx 演示了StackTraceFrames的showInternalFrames{false}用法StackTraceContent StackTraceFrames showInternalFrames{false} / /StackTraceContent当设置为false时来自node_modules与node:路径的内部帧会被过滤掉只保留业务代码帧如/app/src/App.tsx:42:5帮助开发者快速聚焦到真正的问题代码避免被 React 运行时内部调用栈淹没。组件 Props 完整参考StackTrace采用复合组件结构每个子组件都有独立的 Props 契约。以下为 stack-trace.md 文档中完整的 Props 表格StackTrace /根组件Prop类型默认值说明tracestring-待解析和展示的原始堆栈字符串openboolean-受控展开状态defaultOpenbooleanfalse内容是否默认展开onOpenChange(open: boolean) void-展开状态变化时的回调onFilePathClick(path: string, line?: number, column?: number) void-点击文件路径时的回调接收文件路径、行号和列号childrenReact.ReactNode-子元素StackTraceHeader、StackTraceContent 等classNamestring-附加 CSS 类名...propsReact.HTMLAttributesHTMLDivElement-其余属性透传到根 divStackTraceHeader /Prop类型默认值说明childrenReact.ReactNode-头部内容通常为 StackTraceError 与 StackTraceActionsclassNamestring-附加 CSS 类名...propsReact.ComponentPropstypeof CollapsibleTrigger-其余属性透传到 CollapsibleTriggerStackTraceError /Prop类型默认值说明childrenReact.ReactNode-错误内容通常为 StackTraceErrorType 与 StackTraceErrorMessageclassNamestring-附加 CSS 类名...propsReact.HTMLAttributesHTMLDivElement-其余属性透传到容器 divStackTraceErrorType /Prop类型默认值说明childrenReact.ReactNode-自定义内容默认显示解析出的错误类型如TypeErrorclassNamestring-附加 CSS 类名...propsReact.HTMLAttributesHTMLSpanElement-其余属性透传到 span 元素StackTraceErrorMessage /Prop类型默认值说明childrenReact.ReactNode-自定义内容默认显示解析出的错误消息classNamestring-附加 CSS 类名...propsReact.HTMLAttributesHTMLSpanElement-其余属性透传到 span 元素StackTraceActions /Prop类型默认值说明childrenReact.ReactNode-操作按钮通常为 StackTraceCopyButton 与 StackTraceExpandButtonclassNamestring-附加 CSS 类名...propsReact.HTMLAttributesHTMLDivElement-其余属性透传到容器 divStackTraceCopyButton /Prop类型默认值说明onCopy() void-复制成功后触发的回调onError(error: Error) void-复制失败时触发的回调timeoutnumber2000复制成功状态的展示时长毫秒childrenReact.ReactNode-按钮自定义内容默认为复制/勾选图标classNamestring-附加 CSS 类名...propsReact.ComponentPropstypeof Button-其余属性透传到底层 shadcn/ui Button 组件StackTraceExpandButton /Prop类型默认值说明classNamestring-附加 CSS 类名...propsReact.HTMLAttributesHTMLDivElement-其余属性透传到容器 divStackTraceContent /Prop类型默认值说明maxHeightnumber400内容区域最大高度px超出后启用滚动childrenReact.ReactNode-展示内容通常为 StackTraceFramesclassNamestring-附加 CSS 类名...propsReact.ComponentPropstypeof CollapsibleContent-其余属性透传到 CollapsibleContentStackTraceFrames /Prop类型默认值说明showInternalFramesbooleantrue是否显示内部帧node_modules、node:路径classNamestring-附加 CSS 类名...propsReact.HTMLAttributesHTMLDivElement-其余属性透传到容器 div设计要点与扩展建议从 Props 契约可以提炼出几个值得关注的设计特征完全可控的展开状态open/defaultOpen/onOpenChange三件套同时支持受控与非受控两种用法默认折叠defaultOpenfalse符合错误摘要优先的交互直觉而在工具执行失败的场景如示例一则常配合defaultOpen直接展开让用户第一时间看到错误详情。基于 Radix Collapsible 的可访问性StackTraceHeader透传CollapsibleTrigger属性、StackTraceContent透传CollapsibleContent属性这意味着折叠交互天然继承 Radix 的键盘导航与屏幕阅读器支持无需额外实现。组件代码即源码由于 ai-elements 采用代码复制进项目的分发模式安装后的components/ai-elements/stack-trace.tsx是可以直接打开阅读和修改的。如果想调整内部帧的判定规则例如额外过滤webpack帧、更换复制成功图标或改变红色高亮的样式直接修改该文件即可这正是 shadcn 生态以源码为组件理念的体现参见 SKILL.md 中关于组件作为代码库一部分、可打开查看或自定义修改的说明。与错误生态的衔接trace输入的是标准 Node.jsError.stack字符串因此不仅适用于 AI 工具调用场景任何前端捕获的异常堆栈如 React 错误边界、异步请求错误都可以直接传入复用让全站错误展示风格统一。小结StackTrace是 ai-elements 面向AI 生成代码场景的标准错误展示组件与Sandbox代码与输出容器、CodeBlock语法高亮代码块形成完整配套。通过本文的安装命令、前后端完整示例、三个示例脚本以及全部 Props 契约你可以快速在 AI 应用中落地一个具备语法高亮、帧折叠、一键复制、路径跳转能力的错误堆栈展示模块并依据项目需要自由定制其行为与样式。更详细的组件清单与安装指引可继续查阅 .agents/skills/ai-elements/SKILL.md 及其references/目录下的各组件文档。赞分享后端前端CRM人工智能AI Agent【免费下载链接】crmComp AI CRM is an open source, CRM designed for AI agents. Agentic-first CRM.项目地址https://gitcode.com/gh_mirrors/crm48/crm点击查看免费下载相关推荐在 ZCode 的 ai-elements 技能中构建 StackTrace 错误堆栈展示组件基于 AI SDK 的完整集成指南在 ZCode 的 ai elements 技能中构建 StackTrace 错误堆栈展示组件基于 AI SDK 的完整集成指南 导读 本文围绕 ZCodeZCode 集成 AI Elements Agent 组件在 React 应用中构建可组合的 AI Agent 配置展示界面ZCode 集成 AI Elements Agent 组件在 React 应用中构建可组合的 AI Agent 配置展示界面 导读 本指南以 ZCode 仓库Beekeeper Studio 完全指南基于 Electron 与 Vue.js 的开源跨平台 SQL 编辑器与数据库管理工具Beekeeper Studio 完全指南基于 Electron 与 Vue.js 的开源跨平台 SQL 编辑器与数据库管理工具 Beekeeper Stud后端前端CRM人工智能AI Agent上一篇掌握WinUI 3与C/WinRT构建现代化硬盘监测工具DiskInfo的实战指南下一篇Rhino.Inside® Revit颠覆BIM参数化设计的终极解决方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

用 Infinite-Canvas 把散落的 Prompt 和素材收进一张无限画布

用 Infinite-Canvas 把散落的 Prompt 和素材收进一张无限画布

做 AI 绘图或者多模态创作的人,大概都经历过这种状态:Prompt 写在某个聊天窗口里,参考图存在下载文件夹,生成结果又丢在另一个目录,改了几版之后自己都记不清哪张图对应哪段提示词。想对比两个版本的差异,得…

2026/9/24 16:20:25 阅读更多 →
【Dv2Admin】修正页面列数据接口同时多次请求

【Dv2Admin】修正页面列数据接口同时多次请求

在企业级应用的开发中,提升用户界面的性能和交互体验一直是开发者关注的重点。尤其在数据请求与反显过程中,大量的请求会给服务器带来不必要的负担,同时可能影响用户的体验。 本文通过一个典型的业务场景,探讨如何优化列表数据请求,以一次请求的方式实现高效的数据反显,…

2026/9/24 16:20:25 阅读更多 →
openFrameworks ofEasyCam 交互相机完全指南:从 easyCamExample 入门到源码级原理

openFrameworks ofEasyCam 交互相机完全指南:从 easyCamExample 入门到源码级原理

图形学音视频 【免费下载链接】openFrameworks openFrameworks is a community-developed cross platform toolkit for creative coding in C. 项目地址: https://gitcode.com/gh_mirrors/op/openFrameworks 点击查看 免费下载 在 openFrameworks 的 3D 创作中&…

2026/9/24 16:19:25 阅读更多 →

最新新闻

PHPStan 错误标识 requireExtends.deprecatedClass 全解析:当 @phpstan-require-extends 引用了已废弃的类

PHPStan 错误标识 requireExtends.deprecatedClass 全解析:当 @phpstan-require-extends 引用了已废弃的类

开发工具代码质量静态分析 【免费下载链接】phpstan PHP Static Analysis Tool - discover bugs in your code without running it! 项目地址: https://gitcode.com/gh_mirrors/ph/phpstan 点击查看 免费下载 requireExtends.deprecatedClass 是 PHPStan 在 phpsta…

2026/9/24 16:56:04 阅读更多 →
loop-action:在 GitHub Actions 中安全执行自治 Agent 的 Composite Action 实战指南

loop-action:在 GitHub Actions 中安全执行自治 Agent 的 Composite Action 实战指南

人工智能AI AgentAgent 工作流CLI研发协作AI 技能MCP 服务 【免费下载链接】loop-engineering Practical patterns, starters & CLI tools for loop engineering with AI coding agents. Design systems that prompt and orchestrate agents (inspired by Addy Osmani and …

2026/9/24 16:56:04 阅读更多 →
Comp AI CRM 图标设计工程指南:让图标在界面中自然安放的细节法则

Comp AI CRM 图标设计工程指南:让图标在界面中自然安放的细节法则

后端前端CRM人工智能AI Agent 【免费下载链接】crm Comp AI CRM is an open source, CRM designed for AI agents. Agentic-first CRM. 项目地址: https://gitcode.com/gh_mirrors/crm48/crm 点击查看 免费下载 本文以仓库内 .agents/skills/better-ui/icons.md 设…

2026/9/24 16:56:04 阅读更多 →
深入解析 Go 语言 YAML 处理库 gopkg.in/yaml.v3:在 wandb 中的实际应用与 API 全指南

深入解析 Go 语言 YAML 处理库 gopkg.in/yaml.v3:在 wandb 中的实际应用与 API 全指南

机器学习深度学习数据可视化可观测性 【免费下载链接】wandb The AI developer platform. Use Weights & Biases to train and fine-tune models, and manage models from experimentation to production. 项目地址: https://gitcode.com/gh_mirrors/wa/wandb 点…

2026/9/24 16:56:04 阅读更多 →
RookieAI_yolov8是什么:基于YOLOv8的FPS游戏AI自瞄工具完整入门指南

RookieAI_yolov8是什么:基于YOLOv8的FPS游戏AI自瞄工具完整入门指南

RookieAI_yolov8是什么:基于YOLOv8的FPS游戏AI自瞄工具完整入门指南 【免费下载链接】RookieAI_yolov8 基于yolov8实现的AI自瞄项目 AI self-aiming project based on yolov8 项目地址: https://gitcode.com/gh_mirrors/ro/RookieAI_yolov8 RookieAI_yolov8 …

2026/9/24 16:56:04 阅读更多 →
Hermes 语义分析:基于 hermes_estree 的 JavaScript 名称解析与作用域分析模块深度解析

Hermes 语义分析:基于 hermes_estree 的 JavaScript 名称解析与作用域分析模块深度解析

语言运行时编译器移动开发 【免费下载链接】hermes A JavaScript engine optimized for running React Native. 项目地址: https://gitcode.com/gh_mirrors/hermes/hermes 点击查看 免费下载 导读 hermes_semantic_analysis 是 Hermes 项目中用 Rust 实现的 JavaS…

2026/9/24 16:55:04 阅读更多 →

日新闻

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为…

2026/9/24 0:00:19 阅读更多 →
单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

简介:一份基于单细胞RNA测序数据的细胞类型注释算法研究Python毕业设计源码,针对计算机相关专业正在做毕设或需要项目实战的学习者,可用于课程设计与期末大作业。项目代码完整、经导师指导评审通过,可直接运行,覆盖数据…

2026/9/24 0:00:19 阅读更多 →
C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

第一次在项目里被反射卡住,是在一个老旧的WinForms模块里:几十个类依赖PropertyChanged通知,运行时反射读属性、发通知,每次启动慢半拍不说,一上.NET Native/AOT裁剪模式几乎全面崩盘。后来我把这段逻辑全部改成C#源生…

2026/9/24 0:00:19 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/24 14:34:13 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/24 9:10:42 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/24 14:33:56 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/24 12:50:34 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/24 14:33:48 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/24 12:49:17 阅读更多 →