概述
Artifacts 是一种结构化的工具返回格式,用于在 Trajectory 区域渲染丰富的内容(HTML、代码、图表等),而不是显示原始文本。问题背景
当前工具返回的结果存在以下问题:- 格式不统一:不同工具返回格式各异
- 前端解析困难:依赖正则表达式检测内容类型
- 渲染受限:无法区分可渲染内容和普通文本
- 扩展性差:每新增一种类型都需要修改前端检测逻辑
数据结构设计
ToolResultContent
工具返回内容的结构化表示,包含以下字段:| 字段 | 类型 | 说明 |
|---|---|---|
type | string | 内容类型(见下表) |
data | string | 内容数据 |
language | string (可选) | 编程语言标识 |
title | string (可选) | 标题 |
meta | object (可选) | 额外元数据 |
ToolResult
标准工具返回格式:| 字段 | 类型 | 说明 |
|---|---|---|
success | boolean | 是否成功 |
message | string | 结果消息 |
content | ToolResultContent (可选) | 结构化内容 |
file_path | string (可选) | 关联文件路径 |
内容类型说明
| type | 说明 | 渲染方式 |
|---|---|---|
text | 纯文本 | <pre> 或 <p> |
html | HTML 内容 | <iframe> 沙盒渲染 |
markdown | Markdown | Markdown 渲染器 |
code | 代码 | 语法高亮 CodeBlock |
json | JSON 数据 | JSON Viewer |
image | 图片 | <img> |
error | 错误信息 | 红色错误样式 |
前端渲染
前端根据content.type 字段选择对应的渲染组件:HTML 内容使用沙盒 iframe 预览,Markdown 使用渲染器,代码使用语法高亮,JSON 使用树形查看器,图片直接显示,错误使用红色样式。
向后兼容
- 前端同时支持新旧格式
- 旧格式(纯文本)会被包装为
type: "text"的 content - 渐进式迁移,不影响现有功能