本文将分享我如何使用 Codeium 的 AI IDE Windsurf 构建一个最小化的无头 DBOS 应用程序。通过本次实测,我将详细记录每一步的操作和观察,帮助开发者更好地理解 Windsurf 的功能与潜力。
一、准备工作
在开始之前,我完成了以下准备工作:
- 创建了一个名为
minimal-dbos
的项目目录。 - 确保 PostgreSQL 数据库在本地运行,并使用默认连接参数(否则 DBOS 可能无法启动并抛出异常)。
- 安装 Codeium Windsurf,并选择默认配置(无需订阅即可开始使用)。
二、实测观察
以下是使用 Windsurf 进行开发时的一些关键观察:
- 交互性强:Windsurf 的聊天/代理功能非常灵活,不受代码本身的限制。
- 复杂提示支持:通过输入详细的提示,可以快速完成大量工作。
- 总结功能:Windsurf 会总结操作步骤,帮助用户更好地跟踪交互过程。
- 命令确认:在执行终端命令前,Windsurf 会明确要求用户确认,确保操作安全。
- 环境检测:Windsurf 能够识别环境问题,例如检测是否有新版 pip 可用。
- 错误修复:Windsurf 能够识别并修复错误,且不会因为一次失败就放弃,这一点非常令人印象深刻。
- 外部脚本支持:支持运行外部脚本,例如
mypy
。
三、初步想法
Windsurf 的强大功能让我印象深刻,但也存在一些挑战:
- 依赖提示的精确性:在构建 DBOS 应用时,我需要在提示中提供一些关键知识(如
DBOS.launch()
和DBOS.destroy()
的调用),因为 Windsurf 无法自行确定这些细节。 - 文档的重要性:软件包提供商应尽可能提供详细的文档,以便 AI 工具能够更好地理解和应用。
挑战:如果没有事先的知识,我可能需要花费更多时间才能构建一个可运行的应用程序。
四、创建最小 DBOS 应用的完整日志
以下是我使用 Windsurf 构建最小 DBOS 应用的完整日志。整个过程非常有趣且充满启发性。
五、生成的代码
以下是通过 Windsurf 生成的代码,无需任何手动修改即可使用。
目录结构
main.py
dbos-config.yaml
六、后续改进
在完成基础代码后,我继续要求 Windsurf 实施一些改进,包括:
- 使用 DBOS.logger 替代
print()
- 添加 Python 类型声明
- 运行 mypy 进行类型检查
- 重构命名
- 创建高覆盖率测试
- 安装最新 pip
七、方法论总结
这是我第一次使用 AI IDE 编辑器,但我总结出以下几点方法论:
- 从小型可运行应用程序开始:通过迭代和重构逐步改进。
- 频繁提交代码:保持小规模且经常地签入,能够更好地控制开发进程。
八、结束语
首次使用 Codeium Windsurf 的体验非常有趣。我喜欢它持续反馈的设计以及通过代码差异直观展示修改建议的功能。未来,我还计划尝试与 Git 集成或探索 IntelliJ 插件。相信 Windsurf 的潜力远不止于此。