Agentic Coding + ClickHouse:1人1栈1应用,AI全栈几天搞定

2026-05-28 1 阅读 ClickHouse
摘要我在几天内用智能体编程 (Agentic Coding) 构建了一个完整的 AI 应用。关键的经验是:当数据平台能够原生处理复杂部分时,智能体编程才能真正发挥作用。开源组件、统一的 SQL 接口以及对 AI 友好的工具,是让你能够高效地在现有技术栈上进行构建,而不是与其“搏斗”的关键。 作为 ClickHouse 的解决方案架构师,我一直希望构建一个超越幻灯片和截图的演示,一个能让零售客户立刻代入自身场景的方案:一个名为 ClickShop 的全栈零售分析平台。该应用集实时分析(仪表盘能够在亚秒级查询数十亿行数据)、事务性工作流(订单管理、合同摄取、客户更新)、18 个针对不同业务角色(如 CEO、销售、数据分析师)定制的专业 AI 智能体,以及一个完整的可观测性堆栈于一体。该可观测性堆栈既涵盖了 LLM 追踪(通过 Langfuse 实现提示管理、成本跟踪和评估),也包括了基础设施监控(通过 ClickStack 实现指标、日志和分布式追踪)。我的目标是构建一个足够真实的系统,能够展示给客户并自信地说:“您的生产环境可以就是这个样子。” 然而,挑战在于:我既不是前端也不是后端开发人员,而且我只有几天的时间。这篇博客将详细介绍我是如何构建这个平台的,我做出了哪些架构决策,以及 ClickHouse 数据栈为何能让这一切成为可能。 以下是该应用在实际运行中的界面:一个 CEO 工作区,其中包含实时关键绩效指标 (KPI)、按地理区域划分的营收明细,以及一个能够查询实时 ClickHouse 数据并回答业务问题的 AI 智能体。 ClickShop 智能界面:高管仪表盘与 AI 智能体接口 待解决的问题 作为一名解决方案架构师,我的大部分时间都用于帮助客户设计数据架构:绘制图表、审查数据模式并解释查询优化。然而,当需要在真实应用场景中展示 ClickHouse 的实际能力时,单纯的幻灯片演示效果有限。我希望构建一个能够让零售客户一目了然,并立即理解该平台如何融入他们现有技术栈的系统。这不是一个简单的“玩具”演示,而是一个能够展现他们日常所需复杂性的真实应用:涵盖分析、事务处理、AI 和监控。 挑战在于,构建这类应用通常需要一个完整的团队耗费数月时间。我两者皆无。于是问题随之而来:一个人,借助 AI 驱动的 IDE 和合适的平台,能否构建出值得信赖的产品? 其架构概览如下: 该应用的核心由三个层面构成: 前端层 (Next.js) 为不同业务角色提供定制化工作区。CEO、销售经理、数据分析师等,他们各自拥有专属的仪表板、数据范围和 AI 代理。数据层 融合了 ClickHouse 和 PostgreSQL 。ClickHouse 负责分析型工作负载,能够实现仪表板和报告所需的数十亿行数据亚秒级查询。PostgreSQL 则处理事务性操作,包括订单管理、客户更新和合同录入。 ClickPipes CDC (Change Data Capture) 负责将 PostgreSQL 的数据变更实时同步到 ClickHouse,确保分析结果始终反映最新状态。对于偏好使用 Python 的数据科学家, chDB (一个进程内 (in-process) ClickHouse 引擎)允许他们运行熟悉的 Pandas 工作流,而实际执行则在底层下推 (push down) 到 ClickHouse。代理层 ( LibreChat + LLMs) 赋能 18 个专业化的 AI 代理。LibreChat 负责管理对话和路由,每个代理都拥有独立的系统提示 (system prompt)、上下文 (context) 和数据范围 (data scope)。例如,CEO 代理能解释上周收入下降的原因;销售代理可识别当前热门产品;数据代理则协助编写和优化 SQL 查询。 在此基础上,该应用还配备了两个独立的可观察性 (observability) 层。这一区别至关重要,因为对 AI 应用的监控涉及两个截然不同的方面: 基础设施可观测性 ( ClickStack ):这属于经典的应用程序监控范畴。它通过 OpenTelemetry 收集指标(如 CPU、内存、请求延迟)、日志和分布式追踪,旨在回答以下问题:应用程序是否健康?API 调用是否缓慢?瓶颈究竟位于何处?LLM 可观测性 ( Langfuse ):这专为 AI 智能体设计。它追踪发送给 LLM 的每个提示 (prompt)、接收到的每个响应、每次调用的成本和延迟,并支持质量评估(包括自动化评分和人工审核)。它旨在回答不同的问题:这些智能体是否提供了高质量的答案?哪些提示需要调优 (tuning)?每次对话的成本是多少? Langfuse 和 ClickStack 均基于 ClickHouse 运行。结合 ClickHouse Cloud 进行数据分析、由 ClickHouse 管理的 PostgreSQL 处理事务、以及 ClickPipes 负责数据移动,整个技术栈得以在单一平台上运行。 为什么选择智能体编程,又为何是当下? AI 辅助编程已从最初的好奇心演变为工作流程中的标准组成部分。作为一名解决方案架构师,我注意到相关工具已足够成熟,足以实现我长久以来的一个想法:独立构建一个完整的演示应用,无需依赖工程团队。 此举的动机非常实际。当我与零售客户会面时,交流往往遵循相同的模式:他们希望了解 ClickHouse 如何处理他们的具体用例,这不仅仅是通过基准测试,而是通过一个模拟其真实环境的场景来展现。他们希望看到:具备真实数据的仪表盘、能解答业务问题的智能体,以及能展示底层运行情况的可观测性。幻灯片无法做到这一点,但一个真实运行的应用程序可以。 于是,我决定一试。我选择了 Cursor,这是一款能根据自然语言生成代码的 AI 驱动集成开发环境 (IDE),并为自己设定了一个简单目标:构建一个用于客户会议的零售分析平台,且整个技术栈都运行在 ClickHouse 数据栈之上。 Cursor:AI 驱动的 IDE 本项目中使用的工具是 Cursor,一款能够根据自然语言提示 (prompt) 生成代码的集成开发环境 (IDE)。实际操作中,工作流程如下:您描述需求,Cursor 随即生成代码;您进行审阅,必要时进行调整,随后便可着手下一项功能。 对于本项目,开发循环过程十分直接: 1. 我用自然语言描述一个功能(例如:“创建一个仪表盘,显示过去 30 天按国家划分的收入,查询 ClickHouse”) 2. Cursor 生成前端组件、API 路由和 SQL 查询。 3. 我审查输出,在本地进行测试,并根据需要进行迭代。 4. 功能实现后,我将其推送到 GitHub ,Vercel 便会自动部署。 一个显著的优势在于 ClickHouse 是开源的,并且拥有广泛的文档。大型语言模型(LLMs)已经掌握 ClickHouse SQL、MergeTree 引擎系列等知识。同样,堆栈中的其他开源组件,如 PostgreSQL、LibreChat 和 Langfuse,也具备这一特点。由于这些项目拥有庞大的公共代码库和完善的文档,AI 能够从一开始就生成相关代码,从而减少了