PromptIde 组件
概述
PromptIde 是一个功能完整的 Prompt IDE 组件,基于 Monaco 编辑器提供代码编辑、实时预览和错误调试功能。支持使用 prompts.chat 库编写和测试提示生成代码。
文件路径
src/components/ide/prompt-ide.tsx
功能特性
- 三栏布局: API 文档 | 代码编辑器 | 预览面板
- Monaco 编辑器: TypeScript 语法高亮和智能提示
- 实时执行: 代码自动执行,500ms 防抖
- 错误捕获: 控制台显示类型错误和运行时错误
- 跨编辑器高亮: 点击代码中的字符串可在预览中高亮
- 多种输出格式: Markdown / JSON / YAML
- 示例加载: Image / Video / Audio / Chat 预设示例
- 随机示例生成: AI 生成随机代码示例
- 代码转 Prompt: 一键创建新 Prompt
输出格式
type OutputFormat = "json" | "yaml" | "markdown";
支持的库导入
import {
builder, fromPrompt, templates,
video, audio, image, chat, chatPresets,
variables, similarity, quality, parser,
} from "prompts.chat";
使用示例
import { PromptIde } from "@/components/ide/prompt-ide";
export default function IdePage() {
return (
<div className="h-screen">
<PromptIde />
</div>
);
}
组件结构
┌─────────────────┬──────────────────┬─────────────────┐
│ API 文档栏 │ 代码编辑器 │ 预览面板 │
│ (ApiDocsSidebar)│ (Monaco Editor) │ (Monaco Editor)│
│ │ ├─────────────────┤
│ │ │ 操作按钮区 │
│ │ ├─────────────────┤
│ │ │ 控制台 │
│ │ │ (可折叠/调整大小)│
└─────────────────┴──────────────────┴─────────────────┘
主要功能
1. 代码执行
- 自动执行(500ms 防抖)
- 手动运行按钮
- 类型检查实时反馈
- 运行时错误捕获
2. 错误处理
- TypeScript 类型错误显示
- 运行时错误捕获
- 行号定位
- 一键添加
@ts-ignore
3. 输出格式化
- JSON: 格式化 JSON 输出
- YAML: 转换为 YAML 格式
- Markdown: 提取内容或格式化
4. 编辑器特性
- 语法高亮
- 自动补全
- 参数提示
- 快捷键:
Alt+Space触发建议
依赖
next-intl- 国际化next-themes- 主题管理next-auth/react- 认证next/navigation- 路由@monaco-editor/react- Monaco 编辑器lucide-react- 图标sonner- toast 通知prompts.chat- Prompt 构建库@/components/ui/*- UI 组件@/data/*- API 文档和类型定义
本地存储
- Key:
"promptBuilderCode" - 自动保存用户代码
安全限制
- 仅支持
prompts.chat库的导入 - 外部导入会导致 "Cannot evaluate" 提示
- 需要用户登录才能执行代码
- 代码在沙箱函数中执行
代码转换
组件会自动转换用户代码以便执行:
- 移除 import 语句
- 转换
export default为return - 自动为最后表达式添加
return - 注入库函数和 mock console
注意事项
- 首次加载使用默认示例代码
- 输出格式切换会自动重新格式化结果
- 控制台支持拖拽调整高度
- 执行错误时保持上次有效输出