1445043649
7dfc9968fe
feat(apps): 新增 DeerFlow 应用脚手架,并修复 store 的 database 回退
apps/:新增「基于 DeerFlow 的应用」目录,与 backend/、frontend/ 平级,
位于「app 消费 deerflow、不反向依赖」边界的正确侧。含两种集成示例:
- examples/http-chat —— HTTP Gateway (REST+SSE),含登录/CSRF/建线程/流式对话
- examples/embedded-chat —— 进程内直接调 DeerFlowClient
README 说明边界规则、两种模式、鉴权流程及新建应用约定。
runtime/store:修复 make_store 缺失的 database 段回退。原先 store 工厂只读
legacy 的 checkpointer 段,导致仅配 database:postgres 时,checkpointer 走了
Postgres、但 store 仍回退 InMemoryStore(并打出误导性的「线程列表会丢失」告警,
实际线程在 threads_meta 表里、本就持久)。现对齐 checkpointer 工厂的优先级:
checkpointer 段 → database 段 → InMemoryStore;postgres 分支同样剥掉 +asyncpg
方言前缀,使一个 DATABASE_URL 同时满足 SQLAlchemy 与 LangGraph 的 psycopg store。
告警文案也修正为「跨线程 store 数据会丢失」。
tests:新增 test_store_provider.py(3 例,TDD)覆盖 database→postgres 回退、
无配置时的内存回退、以及 checkpointer 段优先级。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-27 22:02:44 +08:00
..
2026-05-11 17:29:16 +08:00
2026-05-13 17:40:56 +08:00
2026-05-14 13:50:12 +08:00
2026-05-13 18:06:53 +08:00
2026-03-27 20:03:30 +08:00
2026-04-30 11:40:28 +08:00
2026-04-26 11:13:01 +08:00
2026-05-01 22:27:02 +08:00
2026-05-13 09:16:24 +08:00
2026-05-13 09:06:08 +08:00
2026-05-14 14:10:32 +08:00
2026-05-06 10:17:55 +08:00
2026-04-26 11:08:11 +08:00
2026-04-26 11:08:11 +08:00
2026-05-12 22:22:10 +08:00
2026-05-12 22:17:55 +08:00
2026-05-12 22:37:29 +08:00
2026-05-13 18:06:53 +08:00
2026-04-26 22:20:57 +08:00
2026-04-26 11:08:11 +08:00
2026-05-12 22:22:10 +08:00
2026-05-13 18:06:53 +08:00
2026-05-12 22:35:06 +08:00
2026-05-02 15:19:28 +08:00
2026-05-06 15:27:34 +08:00
2026-04-14 10:29:44 +08:00
2026-04-26 11:09:55 +08:00
2026-04-26 22:10:54 +08:00
2026-04-19 22:00:58 +08:00
2026-03-30 07:41:18 +08:00
2026-04-25 19:40:06 +08:00
2026-04-07 18:21:22 +08:00
2026-05-01 22:19:50 +08:00
2026-03-29 21:03:58 +08:00
2026-05-04 09:56:16 +08:00
2026-05-04 09:56:16 +08:00
2026-05-02 15:04:11 +08:00
2026-03-14 22:55:52 +08:00
2026-04-26 11:05:47 +08:00
2026-03-29 15:31:18 +08:00
2026-05-07 16:15:15 +08:00
2026-05-07 16:15:15 +08:00
2026-05-07 07:58:06 +08:00
2026-05-05 23:17:42 +08:00
2026-04-12 19:11:22 +08:00
2026-05-11 09:12:28 +08:00
2026-04-30 11:25:33 +08:00
2026-04-11 17:48:04 +08:00
2026-03-31 22:19:27 +08:00
2026-04-10 17:43:39 +08:00
2026-05-12 22:39:09 +08:00
2026-04-26 11:09:56 +08:00
2026-04-08 17:13:39 +08:00
2026-05-14 14:12:43 +08:00
2026-04-26 11:09:55 +08:00
2026-04-06 22:14:12 +08:00
2026-04-18 22:47:42 +08:00
2026-04-10 17:43:39 +08:00
2026-04-28 00:13:04 +08:00
2026-04-30 10:58:32 +08:00
2026-04-23 19:41:26 +08:00
2026-05-05 14:35:55 +08:00
2026-05-01 16:00:11 +08:00
2026-03-23 18:07:33 +08:00
2026-03-14 22:55:52 +08:00
2026-03-26 14:20:18 +08:00
2026-04-28 11:34:07 +08:00
2026-05-02 06:37:49 +08:00
2026-04-24 16:00:14 +08:00
2026-05-12 22:22:10 +08:00
2026-05-07 16:15:15 +08:00
2026-05-07 08:34:43 +08:00
2026-05-07 08:34:43 +08:00
2026-05-12 22:22:10 +08:00
2026-04-30 12:41:09 +08:00
2026-04-11 16:52:10 +08:00
2026-05-08 10:13:11 +08:00
2026-05-01 13:23:26 +08:00
2026-05-01 13:23:26 +08:00
2026-04-30 22:27:14 +08:00
2026-05-07 16:15:15 +08:00
2026-05-07 16:15:15 +08:00
2026-03-14 22:55:52 +08:00
2026-04-25 09:18:13 +08:00
2026-03-14 22:55:52 +08:00
2026-03-26 14:20:18 +08:00
2026-04-03 11:21:58 +08:00
2026-04-26 15:09:25 +08:00
2026-04-26 11:13:01 +08:00
2026-04-26 11:13:01 +08:00
2026-04-26 15:09:25 +08:00
2026-04-17 12:00:31 +08:00
2026-04-26 11:09:55 +08:00
2026-04-26 15:09:25 +08:00
2026-04-30 17:59:57 +08:00
2026-04-14 15:01:06 +08:00
2026-05-13 17:48:49 +08:00
2026-05-05 23:17:42 +08:00
2026-04-28 15:09:31 +08:00
2026-03-22 20:39:26 +08:00
2026-04-26 11:05:47 +08:00
2026-04-26 11:09:55 +08:00
2026-04-09 16:07:16 +08:00
2026-03-20 17:18:59 +08:00
2026-03-26 15:07:05 +08:00
2026-05-13 17:50:47 +08:00
2026-05-05 23:17:42 +08:00
2026-05-13 17:43:51 +08:00
2026-04-26 11:09:55 +08:00
2026-05-10 22:50:10 +08:00
2026-05-14 14:14:14 +08:00
2026-04-26 11:13:01 +08:00
2026-04-10 20:40:30 +08:00
2026-04-10 20:40:30 +08:00
2026-03-14 22:55:52 +08:00
2026-03-14 22:55:52 +08:00
2026-05-12 22:31:53 +08:00
2026-05-05 18:53:10 +08:00
2026-05-13 17:33:02 +08:00
2026-04-26 15:09:25 +08:00
2026-05-08 10:17:17 +08:00
2026-05-13 17:29:03 +08:00
2026-04-28 11:44:40 +08:00
2026-04-26 11:20:17 +08:00
2026-04-26 11:09:55 +08:00
2026-05-02 11:25:45 +08:00
2026-04-26 15:09:25 +08:00
2026-05-03 23:40:59 +08:00
2026-04-07 17:15:24 +08:00
2026-04-09 17:21:23 +08:00
2026-04-09 17:21:23 +08:00
2026-04-18 08:46:59 +08:00
2026-04-28 12:18:41 +08:00
2026-04-24 17:06:55 +08:00
2026-03-30 16:02:23 +08:00
2026-03-26 14:20:18 +08:00
2026-05-02 16:22:35 +08:00
2026-05-14 14:07:16 +08:00
2026-05-05 23:17:42 +08:00
2026-04-10 17:43:39 +08:00
2026-05-01 13:23:26 +08:00
2026-03-25 16:28:33 +08:00
2026-04-23 14:06:14 +08:00
2026-05-01 13:23:26 +08:00
2026-05-01 13:23:26 +08:00
2026-05-03 23:40:59 +08:00
2026-05-07 08:34:43 +08:00
2026-05-07 08:34:43 +08:00
2026-03-30 16:02:23 +08:00
2026-06-27 22:02:44 +08:00
2026-04-06 14:51:10 +08:00
2026-05-07 08:34:43 +08:00
2026-05-08 10:08:53 +08:00
2026-04-23 23:59:47 +08:00
2026-05-02 06:37:49 +08:00
2026-04-12 16:40:21 +08:00
2026-04-28 14:53:18 +08:00
2026-05-08 10:08:53 +08:00
2026-05-08 15:05:24 +08:00
2026-05-13 17:45:06 +08:00
2026-03-26 17:39:16 +08:00
2026-05-13 17:23:38 +08:00
2026-05-13 18:06:53 +08:00
2026-04-26 15:09:25 +08:00
2026-05-13 17:35:27 +08:00
2026-05-13 17:23:38 +08:00
2026-03-14 22:55:52 +08:00
2026-05-02 06:37:49 +08:00
2026-04-14 11:11:26 +08:00
2026-05-04 09:56:16 +08:00
2026-03-26 14:20:18 +08:00
2026-05-08 14:50:33 +08:00
2026-04-20 20:25:03 +08:00
2026-05-01 22:21:10 +08:00
2026-04-06 15:09:57 +08:00
2026-04-24 22:45:41 +08:00
2026-04-02 13:06:10 +08:00
2026-04-02 13:06:10 +08:00
2026-05-05 23:17:42 +08:00
2026-05-02 15:19:28 +08:00
2026-04-26 11:13:01 +08:00
2026-05-02 15:19:28 +08:00
2026-04-26 15:09:25 +08:00
2026-05-02 15:16:16 +08:00
2026-04-15 23:54:30 +08:00
2026-04-28 11:13:17 +08:00
2026-04-06 15:18:34 +08:00
2026-04-10 20:49:28 +08:00
2026-05-14 13:52:36 +08:00
2026-05-14 13:50:24 +08:00
2026-05-13 18:06:53 +08:00
2026-05-13 17:40:56 +08:00
2026-05-12 21:13:52 +08:00
2026-05-12 21:15:25 +08:00
2026-05-13 18:06:53 +08:00
2026-05-12 22:27:42 +08:00