归属系统:对话交互式 AI 系统
版本:v0.9(已完成)
日期:2026-03-15
参考:Microsoft Semantic Kernel / AutoGen / Vercel AI SDK
实现位置:NewLife.AI核心库 +Web/src/hooks/
参考:Microsoft Semantic Kernel Filters / Memory / VectorStore / Planner
- 描述:对文本片段生成浮点向量嵌入,并支持相似度检索,为 RAG 场景提供统一记忆接口
- 用户故事:作为开发者,我希望调用
ISemanticMemory.SaveAsync存储文本、调用SearchAsync检索相似内容,以便构建知识库问答 Agent - 验收条件:
-
ISemanticMemory接口定义SaveAsync / GetAsync / SearchAsync / RemoveAsync -
MemoryEntry数据类型(Id、Text、Vector、Metadata) -
InMemorySemanticMemory内存实现,使用余弦相似度 - 单元测试:存入 3 条,检索返回正确 Top-N
-
- 优先级:Must
- 描述:独立的向量存储抽象,与 Memory 分离,可承载更大规模数据,将来可替换为 Redis/Qdrant 等后端
- 用户故事:作为开发者,我希望用
IVectorStore存取高维向量记录,以便独立于业务逻辑管理向量索引 - 验收条件:
-
IVectorStore接口定义UpsertAsync / GetAsync / SearchAsync / DeleteAsync -
VectorRecord(Id、Vector、Payload) -
InMemoryVectorStore实现,余弦距离 Top-K - 单元测试
-
- 优先级:Must
- 描述:在 IChatClient 调用链和函数调用链中插入横切关注点(审计、内容安全、限流),对标 SK 的
IFunctionInvocationFilter - 用户故事:作为开发者,我希望通过注册 Filter 在 Chat 调用前后注入自定义逻辑,而无需修改核心代码
- 验收条件:
-
IChatFilter接口(OnChatAsync,有 next delegate) -
IFunctionInvocationFilter接口(OnFunctionInvocationAsync,有 next delegate) -
FilteredChatClient : DelegatingChatClient,支持注册多个 IChatFilter 链式执行 - 单元测试:验证 Filter 执行顺序和 context 透传
-
- 优先级:Must
- 描述:给定自然语言目标,规划器利用模型的 Function Calling 能力自动生成并顺序/并行执行一组 Tool 调用步骤
- 用户故事:作为开发者,我希望调用
IPlanner.CreatePlanAsync(goal, tools)获得步骤列表,再调用ExecuteAsync逐步执行,以便实现复杂多步骤任务 - 验收条件:
-
IPlan接口(Steps、Status、ExecuteAsync) -
IPlanner接口(CreatePlanAsync) -
FunctionCallingPlanner:第一次调用模型生成工具调用序列,后续逐步执行 -
PlanStep(ToolName、Arguments、Result、Status) - 单元测试:Mock IChatClient 验证规划流程
-
- 优先级:Must
参考:Microsoft AutoGen AgentChat 协议 / ConversableAgent / GroupChat
实现位置:NewLife.AI 核心库 Agents/ 目录
- 描述:标准化 Agent 间消息格式,包含 TextMessage / ToolCallMessage / ToolCallResultMessage / SystemMessage,确保不同 Agent 间通信格式一致
- 验收条件:
-
AgentMessage抽象基类(Source、Type) -
TextMessage、SystemMessage、StopMessage -
ToolCallMessage(FunctionCallContent[])、ToolCallResultMessage(FunctionResultContent[]) - 消息到
ChatMessage的转换方法
-
- 优先级:Must
- 描述:具有系统提示词、工具集、终止条件的自主 Agent,能响应消息并返回 AgentMessage
- 验收条件:
-
IAgent接口(Name、Description、HandleAsync(messages, ct)) -
ConversableAgent(IChatClient、SystemPrompt、ToolInfos[]、MaxRounds) - 支持工具调用循环(调用工具后将结果反馈 → 继续生成)
- 单元测试:纯文本回复 + 工具调用两种场景
-
- 优先级:Must
- 描述:多 Agent 按策略轮流发言,管理全局对话历史,支持终止检测
- 验收条件:
-
IGroupChatSelector接口(SelectNextAsync(agents, history, ct)) -
RoundRobinSelector轮询选择器 -
GroupChat(Agents、Selector、MaxRounds、RunAsync(initialMessage, ct)) - 单元测试:2 个 Mock Agent 按 RoundRobin 轮流,StopMessage 终止
-
- 优先级:Must
参考:Vercel AI SDK useChat / useCompletion
实现位置:Web/src/hooks/(React + TypeScript)
- 描述:封装完整的多轮对话 SSE 流式状态管理,统一处理消息列表、加载状态、流式接收、错误处理和操作(append/reload/stop)
- 验收条件:
- 返回
{ messages, isLoading, error, append, reload, stop, setMessages } -
append(message)触发 SSE 流式请求,逐块拼接到最后一条消息 -
stop()中止当前流 -
reload()重新生成最后一条 AI 消息 -
onFinish(message)/onError(error)回调 - TypeScript 类型完整
- 返回
- 优先级:Must
- 描述:封装单次文本补全(非对话)的流式状态管理,适合纯文本续写、摘要生成等场景
- 验收条件:
- 返回
{ completion, isLoading, error, complete, stop } -
complete(prompt)触发流式请求,累积到completion字符串 -
stop()中止当前流 -
onFinish(completion)/onError(error)回调 - TypeScript 类型完整
- 返回
- 优先级:Should