将原有基于Anthropic/OpenAI SDK的直播聊天代理重构为使用`@earendil-works/pi-agent-core`和`@earendil-works/pi-ai`库的统一API。 新增pi-bridge、pi-model、pi-persist、pi-tools四个模块,封装Agent路由、模型配置、消息持久化和工具适配逻辑。移除`chat.ts`中大量死代码,简化WebSocket处理流程。 BREAKING CHANGE: 移除`VideoAgent`类的`getAnthropicClient`、`getOpenAIClient`、`executeTool`等方法,外部调用需迁移至新pi-bridge API。`PROJECT_ROOT`路径计算方式变更,从`../../..`变为`../../`。
60 lines
2.3 KiB
TypeScript
60 lines
2.3 KiB
TypeScript
import fs from 'fs';
|
||
import path from 'path';
|
||
import { fileURLToPath } from 'url';
|
||
|
||
const __filename = fileURLToPath(import.meta.url);
|
||
const __dirname = path.dirname(__filename);
|
||
const PROJECT_ROOT = path.resolve(__dirname, '..', '..', '..');
|
||
|
||
export class VideoAgent {
|
||
|
||
getSystemPrompt(): string {
|
||
const accountsDir = path.join(PROJECT_ROOT, 'accounts');
|
||
let accountList = '暂无账号';
|
||
if (fs.existsSync(accountsDir)) {
|
||
const dirs = fs.readdirSync(accountsDir, { withFileTypes: true })
|
||
.filter((d) => d.isDirectory() && !d.name.startsWith('_') && !d.name.startsWith('.'));
|
||
if (dirs.length > 0) {
|
||
accountList = dirs.map((d) => {
|
||
const configPath = path.join(accountsDir, d.name, 'account.json');
|
||
if (fs.existsSync(configPath)) {
|
||
const cfg = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
|
||
return `- ${d.name}: ${cfg.description || '无描述'} (生图:${cfg.imageModel}, 视频:${cfg.videoModel}, 画幅:${cfg.defaultFormat})`;
|
||
}
|
||
return `- ${d.name}`;
|
||
}).join('\n');
|
||
}
|
||
}
|
||
|
||
return `你是专业的短视频创作助手。你可以帮助用户完成从创意到成片的完整流程。
|
||
|
||
## 当前可用账号
|
||
${accountList}
|
||
|
||
## 你的能力
|
||
1. **查看账号** - 使用 list_accounts 列出所有可用账号及其配置
|
||
2. **创建账号** - 使用 create_account 创建新的短视频账号,配置生图/视频模型、画幅等
|
||
3. **查看账号配置** - 使用 get_account_config 获取账号详细配置
|
||
4. **查看 Pipeline 进度** - 使用 pipeline_status 检查创作进度
|
||
5. **执行创作阶段** - 使用 run_pipeline_phase 执行 pipeline 阶段
|
||
|
||
## 视频创作流程
|
||
1. 确认用户意图(A.幻灯片视频 / B.AI视频)
|
||
2. 选择/创建账号
|
||
3. 规划分镜脚本
|
||
4. 生成图片(images 阶段)
|
||
5. 生成视频片段(videos 阶段,仅 B 模式)
|
||
6. 配音(tts 阶段)
|
||
7. 成片组装(assemble 阶段)
|
||
|
||
## 行为准则
|
||
- 用中文回复,友好、专业
|
||
- 在用户不清楚时主动询问:成片类型、账号选择、素材来源、画幅等
|
||
- 执行 pipeline 前确认 manifest 路径
|
||
- 如果用户只是闲聊,就闲聊。如果用户想做视频,引导完成流程
|
||
- 不要编造账号或文件路径,使用工具获取真实信息`;
|
||
}
|
||
}
|
||
|
||
export const videoAgent = new VideoAgent();
|