First Experience With Windsurf: Surpassing Cursor

This article was originally published at the end of November 2024, for everyone’s understanding. Many features have been upgraded in the latest version, and I will update the new experience when I have time.

Windsurf has been released for several days now, and personally, I have been using Cursor and Bolt quite a bit. This popular application is something I had to experience to see if it is as good as advertised.

This article mainly discusses the user experience based on actual scenarios and provides a simple comparison with my limited experience of using Cursor, hoping to give everyone a reference.

At the time of writing this article, I have not yet experienced Cursor version 0.43, after all, Cursor was only upgraded after Windsurf was released, so there is a sequence of events.

Preparation

Download and Installation

You can download it directly from the official website, there’s nothing special about it, and the installation can be done as you like.

First Experience With Windsurf: Surpassing Cursor

Registration and Login

At the end of the installation, it requires logging in, so you need to go through the registration and login process.

Registration and login may require attention to network issues, as it is not very stable.

The following are screenshots from daily use, which are not much different from Cursor and are basically consistent with VS Code.

First Experience With Windsurf: Surpassing Cursor

Practical Attempt

I am currently learning Streamlit, so I simplified an application scenario to try it out.

The scenario is as follows:

Using Streamlit to implement an application similar to the ChatGPT page, replacing the large model with a domestic large model API.

Create a New Project

Start

After opening the interface post-installation, directly use <span>Generate a Project with Cascade</span>.

My Experience:

This entry design experience is slightly better than Cursor, as Cascade is the CHAT chat box of Cursor, including the shortcut keys, which are consistent. This is well-prepared for migration.

First Experience With Windsurf: Surpassing Cursor

Generate (New Project)

Using the following prompt, for the sake of experience, I did not specifically optimize the prompt.

帮我使用streamlit构建一个类似chatgpt网站,后台对接智谱清glm-4-flash 大模型api,使用中文

The screenshot of the generation process is as follows:

First Experience With Windsurf: Surpassing Cursor

My Experience:

  1. The dependency versions in requirements.txt are outdated and cannot be used directly. I deleted the version restrictions and used the latest version.

    This should be because I did not set the Python environment in advance, later I used Cascade to help me set up a virtual environment.

  2. The domestic Zhiyu interface call code is incorrect. If a private knowledge base is not added to the large model, almost all editors are like this, including Cursor. The only one that has an intuitive experience is Bolt (which I have not yet explored).

    I manually adjusted this part of the code.

  3. The generation process provides its understanding or implementation steps, which facilitates precise modifications to the prompt when the generated results are unsatisfactory. Of course, this may also be due to Claude 3.5 Sonnet putting in great effort later.

    First Experience With Windsurf: Surpassing Cursor

  4. After generation, a summary explanation is added, indicating which files need review, including which are new and which are updated. I feel this is very necessary, as generating a project requires too many interactions. Having this review at least provides some assurance.

    First Experience With Windsurf: Surpassing Cursor

Setting Up Python Virtual Environment

The code I generated directly has not set up the virtual environment, here I directly tell <span>Cascade</span> to help me install.

帮我设置python虚拟环境

The execution effect is quite good, confirming step by step, and can be executed directly in the Cascade tab without switching.

First Experience With Windsurf: Surpassing Cursor

My Experience:

  1. When it comes to executing terminal commands, the effect is better than I expected, and the understanding of the overall project, including the computer environment, is more advanced than Cursor.

Running

Through <span>Cascade</span>, I tell Windsurf to help me run the application.

运行该应用
点击Accept后自动执行相应运行命令,给出执行结果,并打开浏览器预览。
First Experience With Windsurf: Surpassing Cursor

My Experience:

  1. Executing directly in <span>Cascade</span> is indeed more unified, but I personally still prefer executing commands in the <span>Terminal</span> due to my professional habits over the years.

Initial Running Effect

This is the result after running; overall it’s acceptable. Excluding the record-keeping for writing this article, it probably took less than 10 minutes to reach this point.

First Experience With Windsurf: Surpassing Cursor

Modify Requirements

Interface

Through <span>Cascade</span>, I tell Windsurf to help me optimize the interface.

请将右侧主区域背景改为浅灰色,对话消息背景设置为白色,这样美观一点。

The modified effect is as follows:

First Experience With Windsurf: Surpassing Cursor

My Experience:

  1. Generally speaking, it’s average. It captured the core of my feedback and made beautifications; the direction and thinking are correct, but there are some issues with the positioning of interface elements, and my requirements were not perfectly implemented.

    This also reminds us that while telling Windsurf what to do, if we can explain the purpose, it might be able to do more than you expect.

Functionality

Through <span>Cascade</span>, I tell Windsurf to help me optimize functionality.

现在调用大模型的返回是同步的,请帮我改为流式返回

I have tested the result; the flow return modification is very accurate, and the key is that the modification of the code’s location and amount is still relatively large.

My Experience:

  1. This modification was very satisfactory, perfectly realizing my expectations, especially the flow parameter modification of Zhiyu Qingyan was also correct. According to my understanding, this should only be possible after being familiar with the interface documentation of Zhiyu Qingyan, so it seems that further verification of calling proprietary APIs is needed in the future.

Summary

Overall, after trying it out, it feels good and indeed surpasses the current version of Cursor I am using, mainly reflected in the following points:

  1. <span>One-Line Project Creation</span>, similar to Bolt. Although this point is small, it proves that Windsurf is indeed considering how to optimize user experience. Moreover, after each command initiation, Cascade automatically <span>pins</span> the command, making it easier to see more returns.
  2. After each interaction, the <span>file addition and modification</span> reminders are quite useful. If historical modifications can be viewed in the future, that would be even better.
  3. The <span>accept and reject buttons</span> for each return are quite prominent; Cursor’s are smaller. I personally prefer Windsurf, but this is subjective.
  4. Intuitively, the understanding of the codebase is deeper, and there is no distinction between <span>chat</span> and <span>codebase</span><code><span> in Cursor, which, while reducing usage difficulty, also sacrifices universality. After all, some projects may not want the large model to scan everything.</span>

In the future, I’ll have time to experience Cursor version 0.43, and I will further use Windsurf. If I discover anything new, I will share it with everyone.

Finally, I hope that <span>Cursor</span> and <span>Windsurf</span> can compete, so that we can use higher quality and cost-effective tools.

Leave a Comment