看妈妈,单手操作!
目标
我计划创建一个最小化的无头DBOS(https://www.dbos.dev/)应用程序作为入门示例,以便开始使用Codeium(https://codeium.com/)提供的AI IDE Windsurf(https://codeium.com/windsurf)。
序言以下准备工作已经完成:
- 我创建了一个叫做
minimal-dbos
的目录 - 我的笔记本电脑上正在运行一个本地的 PostgreSQL 数据库系统,并使用了默认的连接参数;否则,启动 DBOS 时会抛出异常(https://github.com/dbos-inc/dbos-transact-py/issues/150)
- 我从 Codeium 安装了 Windsurf 的默认设置,目前还没有订阅,因为我刚开始使用 Windsurf
请参见下方我与Windsurf的所有操作和互动记录——虽然内容较长,但其中充满了有趣的细节,我保证,绝对值得一读。
这里是我一路上的一些发现
- 可以完全通过 Windsurf 的聊天/代理类似的功能与之互动,而无需直接操作代码。
- 可以使用一个复杂的指令,带有相当详细的说明,这在开始阶段就能完成很多工作。
- Windsurf 会解释它正在做什么,并在过程中进行总结;这是一个很好的功能,有助于你跟踪交互。
- 它明确要求用户确认终端命令的执行。下面的日志中不再包含明确的执行命令请求(现在提供按钮供用户接受或拒绝命令),只显示在按下其中一个按钮后命令执行的结果,而不再显示确认请求。
- Windsurf 能检测到环境中的问题,例如新的
pip
版本是否可用 - 识别并修复错误。更关键的是,它不会因为遇到第一个错误就放弃,而是会继续修复自己的错误,这真的挺令人印象深刻!
- 它还能运行外部脚本,比如
mypy
为了达到这个更复杂的初始提示的要求,我不得不提供一些特定的信息,这些是Windsurf无法自行推断的,例如,需要在应用启动时调用DBOS.launch()
和DBOS.destroy()
。我必须在提示中提供这些关键信息,因为Windsurf自己无法确定这些内容。
提供包的请注意,尽量提供更多的文档,以便学习能掌握尽可能多的细节。
而且这里就是挑战或风险:我不得不帮助Windsurf处理提示中的具体需求。这需要我知道这些细节,而这些细节是我几周前通过手动搭建一个DBOS应用程序才学到的。我想知道如果没有之前的了解,我怎么才能完成一个运行的应用程序。
以下是我在使用Windsurf时的第一个完整日志。真是太有趣了,我愉快地承认。正如你可能想到的,你可以不停地要求更多的改进和新功能,等等,这既好玩又有动力。
一个小观察:Windsurf 使用 “我”,“你”,“我们”,“我们的” 进行交流,它想加入明星团队。
创建最简单的 DBOS 应用程序及其测试用例的完整日志开始:一个详细的指令提示
我的图标,红色指南针(真北,就像笑脸符号一样 :-)),显示我输入的提示内容,其余内容都是 Windsurf 的输出。
自动生成的代码(完全没有手动干预过) 目录 main.py dbos配置文件 下一步:叫 Windsurf 做些改进。 改进:用 DBOS.logger 替换 print()改进:在代码中尽可能地添加 Python 类型注解
优化:运行 mypy 做类型检查 改进:优化命名注意:下面的改动不仅改变了步骤名,还修改了日志信息和返回字符串,显示了巧妙的改动。
改进:编写广泛的代码覆盖测试注意:为了创建一个有效的测试用例,我在提供具体输入后发现这个问题。Windsurf 没有识别到仍然存在的错误,DBOS()
是 main.py
文件的一部分,并且需要实际调用 DBOS.launch()
。
首先给出的命令是升级整个系统的 pip
,而不是虚拟环境中的。所以我拒绝了这个升级——结果很好,因为它自己判断出我只想更新虚拟环境。
这是我第一次使用AI IDE编辑器,但从方法论的角度来看,最好还是明确后续内容。
- 先从一个小的应用程序或一段逻辑开始,然后通过不断的重构和改进来迭代它。
这听起来不算什么了不起的见解,然而,他们说:经常小步前进,这似乎是一个不错的开始,从细微处做起。
总结第一次使用 Windsurf 的感觉真棒。我喜欢这种实时互动的方式,以及通过展示代码差异来观察提议的修改的方法。
还有很多可以尝试的,比如与 Git 的集成,或者 IntelliJ 插件的支持。看看能有什么限制。
共同学习,写下你的评论
评论加载中...
作者其他优质文章