继 E2404 这集,继续讲述 CURSOR 人工智能编程软件的特性。

1. 提高产品响应速度
- 采用推测编辑,从推测解码衍生而来,利用并行处理提高速度,可加速代码编辑并在数据传输时审查代码。
- 缓存预热可预判上下文信息,利用当前文件内容预热缓存,降低首次响应时间。
- Cursor Tab设计中结合缓存和预测,提前处理请求操作并缓存建议,提升用户感知速度;还可通过减小KV Cache等策略训练模型,使其输出更符合用户偏好的建议;采用高效注意力机制提升token生成速度,减少KV Cache大小,增加缓存容量和命中率,稳定模型推理速度。
2. 提示词工程(Priompt)
- 代码开发中筛选和组织prompt相关信息困难,不同模型对prompt反应不同,塞满窗口会影响模型。
- Priompt系统借鉴网页开发实践,用React库声明式编程方法,有渲染器合理排布页面内容,可根据光标位置等设定优先级,方便调试,还可自动设定优先级,目标是帮助模型理解用户提问,获取相关信息。
3. Coding Agent工作流设计(Shadow Workspace)
- Agent部分任务适用,如修复产品bug,但编程需迭代,用户需初始版本系统。
- Shadow Workspace尝试在后台处理任务,通过提供反馈信号、利用语言服务器协议等,在后台运行隐藏窗口,Agent可修改代码不保存,避免影响实际文件,最终预期Agent可在后台执行一切,设计了写入锁定限制,技术实现面临挑战。
4. 模型找bug的情况
- 模型找bug准确率低,即便如o1模型也表现不佳,因模型预训练数据分布影响,漏洞检测数据少,泛化能力不足,但可迁移通用代码理解能力改进。
- 模型虽能感知代码问题,但难以判断bug重要性,人类基于经验和文化积累判断,模型难以理解开发者对代码质量要求差异。长远期望模型解决简单错误并捕捉更难bug,找bug能力对AI完成更多coding任务必要,可通过多种训练思路实现,目前基准测试难以真实反映模型能力,许多团队采用定性评估。
5. 代码索引与上下文处理
- 代码库索引(Code base Indexing):为防Cursor对数据库误操作,开发相关API,数据库未来或支持分支功能供AI测试,用户增长带来挑战,构建索引系统计算代码库语义索引,通过分块、embedding并存储代码相关信息确保安全,利用哈希值(Merkle Tree结构)确保本地和服务器状态一致,采用缓存向量等技巧优化成本,索引系统可帮助查找代码位置,但扩展性面临诸多挑战。
- 解决上下文问题:Context问题复杂,给模型过多上下文会影响性能,需确保信息准确相关,产品已实现部分自动上下文功能,未来可探索让模型在weights层面学习信息,以及考虑将retrieval和底层模型独立,尚无定论。
6. Scaling law和o1模型相关探讨
- Scaling laws:Chinchilla之后,人们关注在给定推理预算下优化模型表现,scaling law维度更多,可权衡训练处理长上下文模型,蒸馏或可解决数据墙问题,应重视模型推理时间计算,避免过度训练小模型。
- 复现OpenAI o1:Test time compute提供新思路,可通过增加推理计算量提升性能,合理策略是用小模型处理多数查询,对高智能需求查询用更长推理时间,但难以判断任务所需智能水平和实现模型动态切换,OpenAI不展示思维链并监控后台,若能获取相关数据可能有助于复刻o1模型,类似数据或可帮助提取SOTA模型能力并蒸馏到自有模型中。
