- 重构 DeepSeekAPI.js,实现稳健的 SSE 流式解析 - 将核心业务逻辑(生成、分析)移入 appStore.js - 优化 WriterPanel 和 AnalysisPanel 组件,移除冗余逻辑 - 更新文档,补充架构演进说明
166 lines
3.9 KiB
Markdown
166 lines
3.9 KiB
Markdown
# AI 写作工坊 - 模块化版本
|
||
|
||
一个基于 Vue 3 + Vite 的专业 AI 写作辅助工具,支持结构化内容生成和写作范式分析。
|
||
|
||
## 技术栈
|
||
|
||
- **框架**: Vue 3 (Composition API)
|
||
- **构建工具**: Vite
|
||
- **状态管理**: Pinia
|
||
- **HTTP 客户端**: Axios
|
||
- **Markdown 解析**: Marked
|
||
- **样式**: Tailwind CSS
|
||
|
||
## 项目结构
|
||
|
||
```
|
||
src/
|
||
├── components/ # Vue 组件
|
||
│ ├── WriterPanel.vue # 写作面板
|
||
│ ├── AnalysisPanel.vue # 范式分析面板
|
||
│ └── MainContent.vue # 主内容区
|
||
├── stores/ # Pinia 状态管理
|
||
│ └── app.js # 应用主状态
|
||
├── api/ # API 接口
|
||
│ └── deepseek.js # DeepSeek API 封装
|
||
├── utils/ # 工具函数
|
||
│ └── promptBuilder.js # Prompt 构建器
|
||
├── App.vue # 根组件
|
||
└── main.js # 入口文件
|
||
```
|
||
|
||
## 架构演进与优化
|
||
|
||
### 1. 流式输出增强 (Stream Optimization)
|
||
项目在 `DeepSeekAPI.js` 中实现了稳健的 SSE (Server-Sent Events) 解析器:
|
||
- **逐行扫描**:放弃简单的 `split` 分割,改用逐字符缓冲区扫描,确保处理被网络分包截断的 JSON 数据。
|
||
- **协议兼容**:完美支持标准 SSE 协议,兼容 data: 后有无空格的各种情况。
|
||
- **状态管理**:通过 `appStore` 统一管理生成状态,实现组件间的数据实时同步,保证 UI 渲染无延迟。
|
||
|
||
### 2. 状态管理重构
|
||
- **逻辑收拢**:将所有 API 调用和业务逻辑(生成、分析)移入 Pinia Store (`appStore.js`)。
|
||
- **组件纯粹化**:`WriterPanel` 和 `AnalysisPanel` 仅负责 UI 渲染和用户交互,不再包含核心业务逻辑。
|
||
|
||
### 3. 深度集成
|
||
- **应用到写作**:实现了从"范式分析"到"写作工坊"的深度数据迁移,包括原文引用、风格约束注入和范式模板自动匹配。
|
||
|
||
## 功能特性
|
||
|
||
### 1. AI 写作工坊
|
||
- 自定义写作任务输入
|
||
- 参考案例管理
|
||
- 输出规范标签系统
|
||
- 实时流式内容生成
|
||
- Prompt 调试预览
|
||
|
||
### 2. 写作范式分析
|
||
- 预设写作范式库
|
||
- 文章智能分析
|
||
- 结构化结果展示
|
||
|
||
### 3. 配置管理
|
||
- API 地址配置
|
||
- API Key 管理
|
||
- 支持多种中继平台
|
||
|
||
## 快速开始
|
||
|
||
### 安装依赖
|
||
|
||
```bash
|
||
npm install
|
||
```
|
||
|
||
### 开发模式
|
||
|
||
```bash
|
||
npm run dev
|
||
```
|
||
|
||
### 构建生产版本
|
||
|
||
```bash
|
||
npm run build
|
||
```
|
||
|
||
### 预览生产版本
|
||
|
||
```bash
|
||
npm run preview
|
||
```
|
||
|
||
## 配置说明
|
||
|
||
### 环境变量配置
|
||
1. 复制环境变量示例文件:
|
||
```bash
|
||
cp .env.example .env
|
||
```
|
||
|
||
2. 编辑 `.env` 文件,配置您的 API 信息:
|
||
```env
|
||
# DeepSeek API 配置
|
||
VITE_API_URL=https://api.deepseek.com/chat/completions
|
||
VITE_API_KEY=your_actual_api_key_here
|
||
```
|
||
|
||
### 支持的模型
|
||
- deepseek-chat(默认)
|
||
- 可扩展支持其他兼容 OpenAI 格式的模型
|
||
|
||
### 安全提示
|
||
- `.env` 文件已添加到 `.gitignore`,不会被提交到版本控制
|
||
- 生产环境请使用服务器环境变量或密钥管理服务
|
||
|
||
## 开发指南
|
||
|
||
### 添加新的写作范式
|
||
在 `src/components/AnalysisPanel.vue` 中的 `paradigms` 数组添加新范式:
|
||
|
||
```javascript
|
||
{
|
||
type: 'new-type',
|
||
name: '新范式名称',
|
||
icon: '🎯',
|
||
description: '描述信息',
|
||
tags: ['标签1', '标签2'],
|
||
tagClass: 'bg-color-900/30 text-color-300'
|
||
}
|
||
```
|
||
|
||
### 扩展 API 支持
|
||
在 `src/api/` 目录下创建新的 API 类,继承基础接口:
|
||
|
||
```javascript
|
||
import BaseAPI from './base.js'
|
||
|
||
export default class NewAPI extends BaseAPI {
|
||
// 实现具体方法
|
||
}
|
||
```
|
||
|
||
### 自定义 Prompt 模板
|
||
在 `src/utils/promptBuilder.js` 中修改 `buildPrompt` 函数:
|
||
|
||
```javascript
|
||
export const buildPrompt = (task, constraints, references) => {
|
||
// 自定义构建逻辑
|
||
}
|
||
```
|
||
|
||
## 部署建议
|
||
|
||
### 静态部署
|
||
- Vercel
|
||
- Netlify
|
||
- GitHub Pages
|
||
|
||
### 服务器部署
|
||
- Nginx + PM2
|
||
- Docker 容器化
|
||
- CDN 加速
|
||
|
||
## 许可证
|
||
|
||
MIT License
|