Skip to content

Dart 聊天应用示例

这篇示例聚焦 agentos-sdk-dartchatkit_dart 的组合方式。

如果你在用 AI 编程工具,这一页更适合作为“ChatKit 集成参考真值”。
也就是说,当 AI 给出的 Flutter 聊天接入结构和文档不一致时,应优先回到这里核对最小骨架。

推荐提示词

text
请参考 AgentOS 文档里的 Dart 聊天应用示例,在我的 Flutter 项目里生成一个尽量贴近该结构的 ChatKit 集成实现。

要求:
- 使用 AgentOsConfig 保存连接信息
- 使用 ChatKitRuntime 管理共享会话和后台预连接
- 使用 AgentSidebar 作为聊天 UI 入口
- 保留宿主页面对配置保存、登出和 bridge 决策的控制
- 不要把 chatkit_dart 和 agentos_sdk 的职责混在一起

推荐参考源

典型结构

一个最小的 Flutter 聊天应用通常会包含:

  • AgentOsConfig:保存 baseUrlbundleId 等连接信息
  • 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 -> 宿主决策点
  • 是否保留了 onConfigSavedonLogout 这类宿主回调
  • 是否为 tool 注入和 onSystemCallApp 预留了明确位置