- 版本: V4.5.0
- 更新日期: 2025-09-05
- 基础路径:
http://localhost:8083(开发环境)
- 认证相关 API
- 终端相关 API
- 卡片生成 API
- 素材管理 API
- 工作空间 API
- SSE 实时通信 API
- 预览相关 API
- 转录相关 API
- Claude 执行 API
- 命令相关 API
- 文件上传 API
用户登录
请求体:
{
"username": "string",
"password": "string"
}响应:
{
"code": 200,
"success": true,
"message": "登录成功",
"data": {
"token": "jwt_token",
"username": "username",
"isDefault": false
}
}验证 Token 有效性
请求头:
Authorization: Bearer <token>
响应:
{
"code": 200,
"success": true,
"message": "Token有效",
"data": {
"username": "username",
"isDefault": false
}
}获取所有用户列表
响应:
{
"code": 200,
"success": true,
"data": ["user1", "user2", "default"]
}执行终端命令
请求体:
{
"prompt": "命令内容",
"sessionId": "会话ID(可选)"
}响应:
{
"success": true,
"sessionId": "session_id",
"output": "命令输出结果"
}获取所有终端会话
响应:
{
"success": true,
"sessions": [
{
"id": "session_id",
"createdAt": "2025-09-05T10:00:00Z",
"isActive": true
}
]
}获取特定会话信息
销毁终端会话
获取用户文件夹结构
响应:
{
"code": 200,
"success": true,
"data": {
"rootFiles": [],
"folders": [
{
"name": "folder_name",
"path": "/path/to/folder",
"type": "folder",
"children": []
}
]
}
}获取卡片目录结构
获取文件夹中的卡片
获取卡片模板列表
获取特定模板信息
重命名文件夹
请求体:
{
"oldPath": "/old/path",
"newName": "new_folder_name"
}重命名卡片文件
删除卡片文件
请求体:
{
"path": "/path/to/card.json"
}获取卡片内容
保存卡片
获取卡片HTML内容
获取并保存HTML
保存HTML内容
终端服务健康检查
清理终端资源
同步生成卡片
请求体:
{
"topic": "主题",
"templateName": "模板名称(可选)",
"style": "风格(可选)",
"language": "语言(可选)",
"reference": "参考内容(可选)"
}异步生成卡片
请求体:
{
"topic": "主题",
"templateName": "模板名称(可选)",
"mode": "custom/normal(可选)",
"references": ["素材引用数组(可选)"],
"style": "风格(可选)",
"language": "语言(可选)",
"reference": "参考内容(可选)",
"token": "用户token(可选)"
}响应:
{
"code": 200,
"success": true,
"data": {
"taskId": "task_xxx",
"folderName": "sanitized_topic_name",
"folderPath": "/path/to/folder",
"topic": "原始主题",
"templateName": "使用的模板",
"status": "submitted"
}
}刷新检测异步生成的文件(自定义模式)
响应:
{
"code": 200,
"success": true,
"data": {
"files": [
{
"fileName": "file.md",
"fileType": "markdown",
"size": 1024,
"createdAt": "2025-09-05T10:00:00Z",
"preview": "文件内容预览..."
}
],
"totalFiles": 1,
"status": "partial/completed",
"mayHaveMore": true,
"folderName": "folder_name",
"lastChecked": "2025-09-05T10:00:00Z"
}
}流式生成卡片(SSE)
查询生成的文件内容(支持所有文件类型)
响应:
{
"code": 200,
"success": true,
"data": {
"topic": "主题",
"sanitizedTopic": "清理后的主题",
"templateName": "模板名称",
"fileName": "主文件名",
"filePath": "主文件路径",
"content": "文件内容或JSON对象",
"fileType": "html/json/markdown/text等",
"allFiles": [
{
"fileName": "file.json",
"path": "/path/to/file",
"content": "内容",
"fileType": "json"
}
]
}
}获取格式化的卡片内容
获取生成状态
通过任务ID获取状态
获取可用模板列表
响应:
{
"code": 200,
"success": true,
"templates": [
{
"fileName": "template.md",
"displayName": "模板名称",
"description": "模板描述",
"type": "file/folder",
"outputType": "json/html/*",
"outputCount": 1
}
]
}获取快捷按钮配置
获取单个模板信息
直接执行 Claude 命令
分享到小红书
生成服务健康检查
异步自定义生成
获取自定义任务状态
OSS异步自定义生成
获取OSS任务状态
获取OSS文件映射
获取素材列表
查询参数:
category: 分类名称page: 页码(默认1)pageSize: 每页数量(默认20)
响应:
{
"code": 200,
"success": true,
"data": {
"files": [
{
"id": "file_id",
"filename": "file.jpg",
"category": "images",
"size": 102400,
"type": "image/jpeg",
"createdAt": "2025-09-05T10:00:00Z"
}
],
"pagination": {
"page": 1,
"pageSize": 20,
"total": 100
}
}
}上传素材文件
请求体: FormData
files: 文件数组(最多10个)category: 分类名称
响应:
{
"code": 200,
"success": true,
"data": {
"uploaded": [
{
"filename": "file.jpg",
"category": "images",
"size": 102400
}
],
"failed": []
}
}获取素材分类列表
响应:
{
"code": 200,
"success": true,
"data": [
{
"name": "images",
"count": 10,
"size": 1024000,
"lastModified": "2025-09-05T10:00:00Z"
}
]
}创建素材分类
请求体:
{
"category": "新分类名称"
}重命名分类
请求体:
{
"newName": "新分类名称"
}删除分类(包含所有文件)
删除素材文件
请求体:
{
"category": "分类名称",
"filename": "文件名"
}重命名素材文件
请求体:
{
"category": "分类名称",
"oldFilename": "旧文件名",
"newFilename": "新文件名"
}移动素材文件
请求体:
{
"filename": "文件名",
"fromCategory": "原分类",
"toCategory": "目标分类"
}批量移动素材
获取素材文件
获取素材缩略图
搜索素材
查询参数:
keyword: 关键词category: 分类(可选)
通过ID删除素材
通过ID更新素材
获取用户工作空间信息
获取用户文件列表
在工作空间创建文件
请求体:
{
"path": "文件路径",
"content": "文件内容",
"type": "file/folder"
}读取文件内容
更新文件内容
请求体:
{
"content": "新内容"
}删除文件
迁移工作空间
SSE 事件流连接
事件类型:
connected: 连接成功heartbeat: 心跳file-update: 文件更新task-progress: 任务进度generation-complete: 生成完成
强制刷新 SSE 连接
获取 SSE 连接状态
响应:
{
"code": 200,
"success": true,
"data": {
"connected": true,
"clients": 1,
"uptime": 3600
}
}获取网页元数据
请求体:
{
"url": "https://example.com"
}响应:
{
"success": true,
"data": {
"title": "页面标题",
"description": "页面描述",
"image": "预览图URL",
"favicon": "图标URL"
}
}获取网页内容
获取网页截图
代理请求
转录音频文件
请求体: FormData
file: 音频文件format: 输出格式(可选)
转录音频 URL
请求体:
{
"url": "音频URL",
"format": "输出格式(可选)"
}批量转录
请求体: FormData
files: 文件数组(最多10个)
获取支持的格式
响应:
{
"formats": ["txt", "srt", "vtt", "json"]
}获取任务状态
获取任务结果
获取所有任务
删除任务
重试任务
获取统计信息
流式转录
执行 Claude 命令
请求体:
{
"prompt": "提示词",
"sessionId": "会话ID(可选)"
}响应:
{
"success": true,
"sessionId": "session_id",
"output": "Claude响应内容"
}获取 Claude 生成的文件夹
健康检查
清理 Claude 会话
获取可用命令列表
响应:
{
"commands": [
{
"name": "help",
"description": "显示帮助信息",
"usage": "help [command]"
}
]
}验证命令
请求体:
{
"command": "命令内容"
}获取命令历史
保存命令到历史
请求体:
{
"command": "命令内容",
"timestamp": "2025-09-05T10:00:00Z"
}批量上传文件
请求体: FormData
files: 文件数组
响应:
{
"success": true,
"uploaded": [
{
"filename": "file.txt",
"size": 1024,
"path": "/uploads/file.txt"
}
]
}上传单个文件
上传文件夹
获取上传结构
删除上传的文件或文件夹
健康检查
响应:
{
"status": "ok",
"timestamp": "2025-09-05T10:00:00Z"
}API 信息
响应:
{
"service": "AI Terminal Backend",
"version": "V3.5",
"status": "running",
"timestamp": "2025-09-05T10:00:00Z",
"endpoints": {
"health": "/health",
"api": {
"auth": "/api/auth",
"terminal": "/api/terminal",
"commands": "/api/commands",
"claude": "/api/claude",
"generate": "/api/generate",
"sse": "/api/sse",
"preview": "/api/preview",
"workspace": "/api/workspace",
"transcription": "/api/transcription",
"assets": "/api/assets"
}
}
}大部分 API 需要认证,请在请求头中包含:
Authorization: Bearer <your_token>
对于支持默认用户的接口(标注有 authenticateUserOrDefault),如果未提供 token,将使用默认用户权限。
通过 /api/auth/login 接口登录获取 token。
所有 API 错误响应格式统一:
{
"code": 400,
"success": false,
"message": "错误信息",
"error": "详细错误(仅开发模式)"
}200: 成功400: 请求参数错误401: 未认证403: 无权限404: 资源不存在409: 资源冲突500: 服务器内部错误
终端实时交互使用 WebSocket 连接:
const socket = io('http://localhost:8083', {
auth: {
token: 'your_token'
}
});
// 事件监听
socket.on('output', (data) => {
console.log('终端输出:', data);
});
// 发送命令
socket.emit('command', { cmd: 'ls -la' });- 文件上传:最大 10MB/文件,10 个文件/请求
- API 调用:100 次/分钟(认证用户)
- SSE 连接:最多 5 个并发连接/用户
- 新增自定义模式文件生成 API
- 新增文件刷新检测接口
/api/generate/card/async/refresh - 扩展
/api/generate/card/query支持所有文件类型 - 完善素材管理 API
- 优化异步生成流程
- 修复 daily 模板四文件生成
- 重构 API 路由结构
- 新增异步卡片生成
- 新增 SSE 实时通信
- 优化认证机制
- 新增素材管理系统
- 新增工作空间 API
- 优化文件上传功能
# 安装依赖
npm install
# 启动开发服务器
npm run dev
# 生产环境
npm run start# 构建镜像
docker build -t ai-terminal-backend .
# 运行容器
docker run -d \
-p 8083:8083 \
-v ./data:/app/data \
--name ai-terminal \
ai-terminal-backendMIT License