Dart 聊天应用示例
这篇示例聚焦 agentos-sdk-dart 与 chatkit_dart 的组合方式。
如果你在用 AI 编程工具,这一页更适合作为“ChatKit 集成参考真值”。
也就是说,当 AI 给出的 Flutter 聊天接入结构和文档不一致时,应优先回到这里核对最小骨架。
推荐提示词
text
请参考 AgentOS 文档里的 Dart 聊天应用示例,在我的 Flutter 项目里生成一个尽量贴近该结构的 ChatKit 集成实现。
要求:
- 使用 AgentOsConfig 保存连接信息
- 使用 ChatKitRuntime 管理共享会话和后台预连接
- 使用 AgentSidebar 作为聊天 UI 入口
- 保留宿主页面对配置保存、登出和 bridge 决策的控制
- 不要把 chatkit_dart 和 agentos_sdk 的职责混在一起推荐参考源
- chatkit_dart/example/lib/main.dart
- chatkit_dart/example/lib/ui/agent_sidebar_demo_page.dart
- chatkit_dart/README-zh_CN.md
典型结构
一个最小的 Flutter 聊天应用通常会包含:
AgentOsConfig:保存baseUrl、bundleId等连接信息ChatKitRuntime:管理共享会话和后台预连接AgentSidebar:聊天 UI 入口- 宿主页面:负责配置保存、登出和业务级 bridge 决策
最小集成骨架
dart
late final ChatKitRuntime runtime;
@override
void initState() {
super.initState();
runtime = ChatKitRuntime(config: config);
unawaited(runtime.start());
}
@override
Widget build(BuildContext context) {
return AgentSidebar(
runtime: runtime,
config: config,
onConfigSaved: (next) async {
runtime.updateConfig(next);
},
onLogout: () async {
await runtime.stop();
},
);
}后续建议
- 如果你要自定义文案,使用
AgentSidebarStrings - 如果你要接业务 Tool,给
AgentSidebar注入tool - 如果你要处理系统事件,优先在
onSystemCallApp中集中决策
AI 最容易写错的地方
- 直接把 ChatKit 当成能力层 SDK,用它替代
agentos_sdk - 没有保留宿主页面对配置保存和登出的控制
- 省略
ChatKitRuntime,导致共享消息流和后台预连接能力丢失 - 在 system call bridging 上默认全部执行,没有可信判断
人工验收清单
- 结构是否仍然是
AgentOsConfig -> ChatKitRuntime -> AgentSidebar -> 宿主决策点 - 是否保留了
onConfigSaved、onLogout这类宿主回调 - 是否为
tool注入和onSystemCallApp预留了明确位置
