背景

大概两年前,gpt 刚出来不久,在听播客的时候,听到一个 ai 客服系统的构建过程

安装软件之后,用户和之前一样,正常的和客户沟通、聊天,Ai 会在这个过程中持续学习。在收集一定语料之后,客服人员在沟通时候,会出现选项,5s 倒计时结束,最佳选项会被发送出去。如果觉得不满意,可以取消,客服自己重写。基于反馈的自动优化,这个系统越来越先进,人工的介入越来越少。


cursor 在今年推出了 Bugbot,研究发现,他使用了 max mode 模式,token 消耗很高,上下文达到了 200k。收费 40$/月。

系统设计

sequenceDiagram
    participant User as 用户
    participant System as 审查系统 (CI/CD)
    participant AI_Model as AI 模型
    participant Vector_DB as 向量数据库

    %% --- 首次 Review 流程 ---
    Note over User, Vector_DB: 场景一:首次或无相似代码的 Review
    User->>+System: 提交代码 (触发 Review)
    System->>AI_Model: 1. 请求代码审查 (含上下文)
    System->>Vector_DB: 2. 存储代码片段 (用于未来匹配)
    AI_Model-->>System: 3. 返回 Review 建议
    System-->>-User: 4. 显示 Review 建议
    User->>+System: 5. 提交反馈 (有效/无效)
    System->>Vector_DB: 6. 将反馈与代码片段关联存储
    deactivate System

    %% --- 基于反馈的下一次 Review 流程 ---
    Note over User, Vector_DB: 场景二:利用历史反馈的增强 Review
    User->>+System: 提交新代码 (触发 Review)
    System->>Vector_DB: 1. 检索相似代码片段和历史反馈
    Vector_DB-->>System: 2. 返回匹配结果
    System->>AI_Model: 3. 请求增强审查 (含新代码、相似代码、历史反馈)
    AI_Model-->>System: 4. 返回更精准的建议
    System-->>-User: 5. 显示增强后的 Review 建议

在 cursor 和 github 的绑定中,是能够获取完整代码的。本身我们也是冲着完整代码去提交的,但是遇到问题比较多:

1. 上下文限制
2. 网络不通,我不能方便的获取代码。

webhook?

不太行,webhook 只有代码片段,不能提供足够的上下文,注定不会有好的结果。最终我们的业务形态变成了 chrome 插件。不管什么网络条件,总需要提交代码,web 操作。那通过 chrome 插件就能够无障碍的访问并获取相关的上下文。

通过 chrome 插件,也能方便的去操作用户的界面,和用户产生交互行为。

向量化

向量存储 mysql 肯定是不行的,pg 有一些插件能实现,资源有一定要求,最终我们选择了 Chroma 去实现。

Embeddings 选择的是 Gemini, 可能后续也会考虑国内的模型,还需要测试效果。

总结

这个过程中遇到挺多的问题的,网络访问都搞了好几套方案。

实现比完美更重要,去做比等待更实际。
不要犹豫,有想法就去做,问题是可以解决的,我们注定就是要实现别人没有做过的产品,去实现别人没有实现的想法。