- 多轮对话状态:自动在多轮对话中保留会话上下文。
- 流式响应:随着远程模型生成内容,逐 token 实时显示文本。
- 富文本支持:支持格式化输出,包括 Markdown、加粗、图片和项目符号列表。
- 语音输入:通过
record 包实现语音输入,需获取明确的设备权限。
- 多媒体附件:使用
file_selector 和 image_picker 协调文件上传(图片、视频、音频、PDF)。
- 自定义响应组件:允许开发者用专门的交互式 UI 组件替换大段纯文本。
- 可插拔的大语言模型:通过
LlmProvider 将 UI 与模型解耦,支持 Firebase 或自定义模型扩展。
- 安全的项目配置:需关联 Firebase 项目,以防止客户端 API 密钥泄露并管理计费。
- A2UI 协议:一种基于 JSON 的协议,使远程智能体能够流式传输动态组件组合而非代码。
- 会话门面(Conversation Facade):主要入口点,管理本地历史记录并编排动态循环。
- A2uiTransportAdapter:将来自 LLM 的原始文本流解析为结构化的
A2uiMessage 布局指令。
- Surface 控制器:编排 Surface 生命周期并管理活跃的渲染界面。
- DataModel(数据模型):一个中心化的、可观察的状态存储,可响应式地更新绑定到特定数据路径的组件。
- 组件目录(Widget Catalog):预定义的已注册组件列表(
CatalogItem),作为 AI 可组合内容的严格契约。
- 基础协议:Dart 的实验性
dart_mcp 支持 Ping 和 Progress 等握手协议,但缺少 Cancellation(取消)支持。
- CLI 工具集成:将 Dart SDK 核心命令(分析、编译、项目创建、格式化)暴露为经过 schema 校验的工具。
- 转换层:将结构化的 MCP 参数转换为标准的
List<String>,以委托给现有的 CommandRunner。
- Stdio 传输:使用
stdioChannel 通过标准输入和标准输出实现低延迟通信。
- 自我纠错错误处理:通过
CallToolResult.isError: true 传递失败信息而非抛出异常,使 AI 能够自我纠错。
Agent Skills
链接到标题
- 渐进式披露:在发现阶段加载元数据,仅在判定相关时才完整加载指令(
SKILL.md)。
- 工作区存储:将下载的或自定义的工作区指令统一存储在
.agents/skills 目录中。
- 官方目录:精选的仓库,如
flutter/agent-plugins 和 dart-lang/skills,覆盖常见任务。
- 包分发:使库作者能够将技能捆绑到 pub.dev 包中,可通过
dart run skills@ get 安装。
- 统一的技能 CLI:通过标准的
npx skills add CLI 设置,自动化完成多助手配置。