refactor: 聊天室 Agent 重构 — ToolLoopAgent + 论坛式布局
后端: - 删除 agent-stream.ts,新建 alfred-agent.ts (ToolLoopAgent 工厂) - 新建 get-current-time.ts 工具 (zod schema) - 重构 send.ts: createAgentUIStreamResponse + onFinish 可靠持久化 前端: - 删除 MessageBubble.tsx,新建 ToolCallCard.tsx (四态) - 重构 ChatPanel.tsx: 论坛式 Card 布局 + PartRenderer 分派 - 移除 @ant-design/x 依赖,改用 antd 组件 + streamdown 依赖: + zod + streamdown - @ant-design/x - @ant-design/x-markdown 测试: 306 pass, typecheck/lint 0 errors
This commit is contained in:
20
src/server/ai/agents/alfred-agent.ts
Normal file
20
src/server/ai/agents/alfred-agent.ts
Normal file
@@ -0,0 +1,20 @@
|
||||
import { type LanguageModel, stepCountIs, ToolLoopAgent } from "ai";
|
||||
|
||||
import { getCurrentTime } from "../tools/get-current-time";
|
||||
|
||||
const SYSTEM_PROMPT = `你是 Alfred,一个 AI 助手。
|
||||
|
||||
## 输出规范
|
||||
- 使用中文回复
|
||||
- 代码块用 Markdown 围栏语法,标注语言
|
||||
- 给出结论时简洁直接,不要长篇铺垫
|
||||
- 不确定的事明确说"不确定"`;
|
||||
|
||||
export function createAlfredAgent(model: LanguageModel) {
|
||||
return new ToolLoopAgent({
|
||||
instructions: SYSTEM_PROMPT,
|
||||
model,
|
||||
stopWhen: stepCountIs(20),
|
||||
tools: { getCurrentTime },
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user