5. 项目复盘:收获、遗憾与未来展望

87 阅读8分钟

项目复盘:收获、遗憾与未来展望

本文是“AI 编程实践:从想法到产品”系列的第五篇,也是终结篇。在这一篇里,我将全面复盘 Thinking-Map 项目从 0 到 1 的全过程,总结其中的关键收获、未能尽善尽美的遗憾,以及对未来的展望。

项目地址:github.com/PGshen/thin…

项目回顾:我们实现了什么?

从一个模糊的“可视化 AI 思考过程”的想法出发,我们最终落地了一个可用的 MVP(最小可行产品):

  1. 核心价值验证:成功将大模型抽象的、线性的思考过程,转化为一棵可交互、可追溯的“思维树”。用户可以清晰地看到问题是如何被拆解、执行和扩展的。
  2. 前后端架构搭建
    • 前端:基于 Next.js 15、ReactFlow 和 Zustand,构建了一个响应式、可扩展的可视化界面。实现了节点的动态渲染、状态更新和用户交互。
    • 后端:使用 Go、Gin、GORM 和 eino 框架,搭建了一个稳健的、支持链式思考和多 Agent 协作的后台服务。通过 SSE 实现了与前端的实时通信。
  3. AI 协同开发模式探索:全程与 AI 结对编程,探索出了一套从需求分析、技术选型、代码生成到调试审查的完整协作流程。这套流程本身,就是项目的重要产出之一。
  4. 文档驱动开发:通过编写和维护 PRD、架构设计、API 规范等一系列文档,成功地为 AI 提供了稳定的“上下文”,显著降低了在复杂任务上的沟通成本。

最终,Thinking-Map 不再仅仅是一个工具,更像是一个实验平台,验证了“人与 AI 深度协同,共同完成复杂创造性任务”的可能性。

技术收获与反思

在技术层面,这次实践带来了丰富的经验和教训。

前端:ReactFlow 与复杂状态管理

  • 收获
    • ReactFlow 的强大与灵活:ReactFlow 被证明是构建此类节点式应用的绝佳选择。其丰富的 API、可定制的节点/边以及稳定的布局算法,为实现“思维树”的核心交互提供了坚实基础。
    • Zustand 的轻量与高效:在全局状态管理上,Zustand 的简洁 API 和基于 Hook 的使用方式,让状态管理变得直观且易于维护,有效避免了不必要的组件重渲染。
  • 反思与遗憾
    • 性能优化不足:当思维树的节点和边数量增多时,前端的渲染性能开始面临挑战。虽然 ReactFlow 本身有优化,但在状态更新、布局计算等方面,我们还可以做得更精细,例如引入虚拟化渲染、更智能的局部更新策略等。
    • 交互细节打磨不够:受限于 MVP 周期,许多交互细节(如拖拽、缩放、节点编辑的流畅度)还有待打磨。一个体验优秀的可视化工具,需要在这些“微交互”上投入大量精力。

后端:Go、eino 与多 Agent 架构

  • 收获

    • Go 的工程效率:Go 语言在并发处理、部署便捷性上的优势再次得到验证。尤其是在处理 SSE 长连接和并发执行 AI 任务时,Go 的表现非常出色。
    • eino 框架的潜力:我们选择 eino 是因为它提供了“组件抽象 + 编排框架 + 类型安全 + 流式处理”等一系列能力,通过对其进行二次封装,我们确实快速搭建起了后端的链式思考引擎。
  • 反思与遗憾

    • 生态位错配的挑战:eino 基于 Go 语言,但当前 AI Agent 的主流生态(例如 LangChain、LlamaIndex)都以 Python 为中心。这意味着当我们遇到问题时,无法像 Python 社区那样轻松找到大量的解决方案和实践经验,很多时候需要“摸着石头过河”。
    • AI 编程工具的“知识盲区”:由于 eino 是一个较新且小众的开源项目,主流的 LLM 对其“知之甚少”。这直接导致 AI 编程工具在生成 eino 相关代码时,错误率极高,产出的代码往往无法直接运行,甚至逻辑上完全错误。这极大地增加了人工审查和修复的成本,削弱了 AI 带来的效率优势。
    • 对 ReAct 模式的实现过于理想化:在设计多 Agent 协作时,我们期望实现一个完美的 ReAct(Reason + Act)循环。但在实际开发中,状态同步、工具调用和错误恢复的复杂性远超预期。MVP 版本中的实现相对简化,未能完全展现 ReAct 模式的威力。

AI 协同开发的得与失

与 AI 结对编程是本次实践的核心,也是收获与挑战并存的领域。

  • 得:前所未有的效率提升

    • 编码加速器:在编写样板代码、实现标准算法、生成测试用例等方面,AI 的效率远超人工。
    • 知识的延伸:AI 成为一个“随时在线”的技术顾问,无论是前端的 CSS 难题,还是后端的并发模型,都能提供有价值的参考。
    • 设计的“陪练”:在产品设计和架构讨论阶段,通过与 AI 对话,可以快速地发散、收敛想法,并将其结构化为文档。
  • 失:新的认知负担与风险

    • “看起来正确”的陷阱:AI 生成的代码有时会存在隐蔽的逻辑错误或性能问题,需要开发者具备更强的审查能力来识别。
    • 上下文管理的挑战:对于复杂项目,如何让 AI 精准理解并记住所有的设计约束、代码规范,是一个持续的挑战。我们的“文档驱动”策略部分缓解了这个问题,但仍有优化空间。
    • 过度依赖的风险:当习惯了 AI 的辅助后,开发者可能会在不知不觉中削弱自己从零开始解决问题的能力。保持独立思考和对代码的最终掌控力,至关重要。

最大的遗憾:什么本可以做得更好?

  1. 用户反馈闭环的缺失:由于是个人项目,我们未能引入真实用户进行测试和反馈。产品的许多设计仍然停留在“我们认为用户会喜欢”的阶段,缺乏真实场景的检验。
  2. 测试覆盖率不足:为了快速推进,我们牺牲了大部分的单元测试和集成测试。这导致在后期重构和功能迭代时,信心不足,也埋下了一些难以发现的 Bug。
  3. 可观测性建设的滞后:项目缺少完善的日志、监控和告警体系。当线上出现问题时,我们难以快速定位和排查,这对于一个严肃的生产项目是不可接受的。
  4. 技术架构设计的不周到:为了快速落地 MVP,我们直接采用了 SSE 通信方案,却未能在早期充分评估其扩展性与边界场景,导致后续不断“打补丁”式修补,架构债持续累积。

未来展望:Thinking-Map 的下一步

尽管 MVP 已经完成,但 Thinking-Map 的故事才刚刚开始。未来,我们计划在以下几个方向上继续探索:

  1. 走向真正的多 Agent 协作:引入更丰富的 Agent 角色(如研究员、批评家、代码审查员),并让它们在一个共享的“思维树”上进行真正的协作与博弈。
  2. 开放与集成
    • 插件化与工具集:允许用户或开发者为节点添加自定义的工具(如代码执行、API 调用、数据库查询),让思维树成为一个强大的自动化工作流引擎。
    • 导入/导出:支持将思维过程导出为 Markdown、幻灯片或项目计划,或从外部导入文档进行分析,增强其作为生产力工具的价值。
  3. 智能化与个性化
    • AI 辅助优化:让 AI 分析已生成的思维树,提出优化建议,例如“这个分支可能走偏了”或“这里缺少关键的证据”。
    • 用户习惯学习:学习用户的思考模式和偏好,在问题拆解和分支生成上提供更个性化的建议。

结语

从一个痛点到一个产品,Thinking-Map 的旅程充满了挑战与惊喜。它不仅是一个软件,更是一次关于未来工作方式的实验。通过这个系列,我希望分享的不仅仅是代码和架构,更是一种与 AI 协作的思维方式。

感谢每一位阅读至此的读者。希望我们的探索,能为你带来启发。让我们在人与机器智能共创的时代,一起走得更远。