使用ROO CODE 与 Cursor 开发的心得

使用ROO CODE 与 Cursor 开发的心得

本文不提倡任何的投资建议, 单纯是记录自己的一些探索和心得!

本文不涉及使用ai进行编程的好坏, 只是讨论"如何利用AI编程", 请友好讨论!

前言

这段时间, 一直在使用Roo code与 Cursor(这里统称vibe coding工具), 使用Gemini 2.5 Pro 进行ai的项目

经验

  • 关于私有仓库的SOL_bot_auto项目(1)

    • 这个项目刚开始, 我是完全让AI进行构建的,

      • 后端

      • 前端

      • 然而, 这个项目却失败了

        • 对于前端而言, AI能够完整得完成任务, 实现界面的搭建

        • 但是对于后端, AI将我的代码完整跑出来了, 但是出现了两个问题

          • AI无法解决LF的行尾编辑器报错, 一直在循环回复, 就是为了解决这个
          • AI使用了一个as any的语法, 但是在后续的代码构建中, AI自己认为这是有问题的, 于是一直重复修改
          • 由于这两个问题, 我至今还不知道后端程序是否可运行
    • 这个项目的教训

      • 让AI进行编程, 一定得让ai从一个项目模板开始, 因为让ai从零开始编程一个功能复杂的项目, 可能有代码中的逻辑问题, 可能出现编辑器问题

      • 让AI进行编程, 必须给详细的需求, 从项目的需求出发, 按点列出想要的功能, 当然这里也有偷懒的方法, 就是用语音输入需求, 然后将需求给gemini 2.5 pro, 让它梳理出所有的需求

        • 之后, 为了保证ai生成内容的准确性, 需要对得到的需求进行详细的分析, 得到AI的代码结构, 得到完成代码功能需要的框架, 代码模块化, 模块与模块之间的关系, 需要使用的函数等等

          • 当然, 我个人对这些不懂, 所以都是提前让ai进行构建的
  • 关于私有仓库的SOL_bot_auto项目(2)

    • 参考了第一个项目的经验, 吸取经验从开源模板开始

      • 于是我下载了五个开源项目, 让AI进行开源项目分析, 得到参考项目使用的技术栈以及参考代码, ai在分析了这些项目的md文件之后, 立刻开始了项目的md构建, 构建的md如下

        • # React Solana Bot (Web + Telegram) - 项目计划
          ## 1. 目标
          创建一个功能全面的 Solana 交易机器人,整合分析得到的核心功能,并提供 Web (React) 和 Telegram Bot 两种交互界面。
          ## 2. 核心原则
          * **模块化:** 功能模块清晰分离,易于扩展和维护。
          * **用户友好:** 提供直观的 Web UI 和便捷的 Telegram 命令。
          * **安全性:** 用户私钥本地存储或通过安全方式管理,强调风险提示。
          * **可配置性:** 提供灵活的配置选项,满足不同用户需求。
          * **高性能:** 优化交易执行逻辑,利用高效 RPC 和可选的高级执行器。
          ## 3. 架构设计
              graph TD
                  subgraph 用户界面
                      UI_Web[React Web App]
                      UI_TG[Telegram Bot]
                  end
                  subgraph 后端 (Node.js/TypeScript)
                      API[API Service (Express/NestJS)]
                      TG_Bot[Telegram Bot Service]
                      Engine[Trading Engine]
                      Monitor[Monitoring Service]
                      Filter[Filtering Service]
                      Copy[Copy Trade Service]
                      Wallet[Wallet Service]
                      Solana[Solana Interaction]
                      DEX[DEX Interaction (Raydium, Pump.fun)]
                      DB[Database (PostgreSQL/TypeORM)]
                      Cache[Cache (Redis)]
                      Config[Config Service]
                  end
                  subgraph 外部服务
                      RPC[Solana RPC Nodes (HTTP/WS)]
                      ExtAPI[External APIs (Birdeye, Helius)]
                      Jito[Jito Bundles]
                      Warp[Warp Service]
                  end
                  UI_Web <--> API
                  UI_TG <--> TG_Bot
                  API --> Engine; API --> Monitor; API --> Filter; API --> Copy; API --> Config; API --> Wallet; API --> DB
                  TG_Bot --> Engine; TG_Bot --> Monitor; TG_Bot --> Config; TG_Bot --> Wallet; TG_Bot --> DB
                  Engine --> Solana; Engine --> DEX; Engine --> Wallet; Engine --> Filter; Engine --> DB; Engine --> Cache
                  Monitor --> Solana; Monitor --> DEX; Monitor --> ExtAPI; Monitor --> Cache
                  Filter --> ExtAPI
                  Copy --> Solana; Copy --> DB
                  Solana --> RPC; Solana --> Jito; Solana --> Warp
                  DEX --> Solana
                  Wallet --> DB
                  subgraph 数据存储
                      DB
                      Cache
                  end
          * **后端 (Node.js/TypeScript):** 负责核心交易逻辑、链交互、监控、过滤、跟单、数据存储、API 服务和 Telegram Bot 服务。
          * **前端 (React/TypeScript):** 提供用户界面,包括认证、仪表盘、配置、监控列表等。
          * **交互:** 前端通过 API 与后端通信,Telegram Bot 通过命令与后端交互。
          ## 4. 技术选型与参考实现
          * **后端:**
            * **框架:** Node.js, TypeScript, NestJS
            * **Solana 交互:** `@solana/web3.js`
              * *参考:* 所有 TS 项目 (`solana-trading-bot_o/helpers/`, `Sol-Sniper-Bot/utils/`),Python 项目 (`open-sol-bot-main/open-sol-bot-main/libs/common/`)
            * **DEX 交互 (Raydium, Pump.fun):**
              * Raydium: `@raydium-io/raydium-sdk` 或直接构建交易指令。
                * *参考:* `solana-trading-bot_o/helpers/liquidity.ts`, `market.ts`; `open-sol-bot-main` (README 提及参考 `raydium_py` 和 `pump.rs`)
              * Pump.fun: 分析合约交互或查找相关库/API。
                * *参考:* `solana-pumpfun-bot-main` (`buy.ts`, `market.ts`), `open-sol-bot-main` (README 提及参考 `pump.rs`)
            * **数据库:** PostgreSQL
              * *参考:* `open-sol-bot-main/open-sol-bot-main/libs/db/session.py` (SQLAlchemy), `mysql/init.sql` (表结构)
            * **缓存:** Redis
              * *参考:* `open-sol-bot-main/open-sol-bot-main/libs/db/redis.py`
            * **Telegram Bot:** `telegraf` (推荐) 或 `node-telegram-bot-api`
              * *参考:* `open-sol-bot-main` (功能设计)
            * **交易执行器 (可选):**
              * Jito: `jito-ts` SDK
                * *参考:* `solana-trading-bot_o/transactions/jito-rpc-transaction-executor.ts`
              * Warp: 调用 API
                * *参考:* `solana-trading-bot_o/transactions/warp-transaction-executor.ts`
            * **ORM:** TypeORM
          * **前端:**
            * **框架:** React, TypeScript, Vite
            * **状态管理:** Zustand
            * **UI 库:** Tailwind CSS
            * **数据请求:** TanStack Query (推荐) 或原生 `fetch`
          * **API:** RESTful API
          * **部署:** Docker, Vercel/Netlify (前端), AWS/GCP/VPS (后端)
          ## 5. 核心功能模块实现细节与参考
          * **后端:**
            * `AuthService`: (如果需要用户登录 Web UI) JWT 或 Session。
            * `WalletService`: 安全存储加密私钥。参考各项目 `.env` 处理方式。
            * `SolanaService`: 封装 `web3.js` 常用方法。参考 `solana-trading-bot_o/helpers/wallet.ts`, `token.ts`。
            * `DexInteractionService`: 获取池信息,构建 Swap 交易。参考 `solana-trading-bot_o/helpers/liquidity.ts`, `market.ts`; `Sol-Sniper-Bot/market/market.ts`。
            * `TradingEngine`: 核心买卖逻辑,结合监控和过滤。参考 `solana-trading-bot_o/bot.ts`, `helpers/promises.ts`。
            * `MonitoringService`: 监听新池 (RPC/Geyser),监控价格 (API/DEX)。参考 `solana-trading-bot_o/listeners/listeners.ts`; `open-sol-bot-main/libs/yellowstone_grpc/`。
            * `FilteringService`: 实现各种检查逻辑。参考 `solana-trading-bot_o/filters/`。
            * `CopyTradeService`: 监控目标钱包,解析并执行交易。参考 `open-sol-bot-main/.../copytrade.py`, `tests/wallet_tracker/`。
            * `TelegramBotService`: 定义命令处理程序。
            * `ApiService`: 定义 RESTful 端点。
            * `DatabaseService`: 使用 TypeORM 定义模型和交互。
            * `CacheService`: 封装 Redis 操作。
            * `ConfigService`: 使用 `@nestjs/config` 加载配置。
          * **前端:**
            * `Auth`: (如果需要) 处理登录逻辑。
            * `Dashboard`: API 获取汇总数据展示。
            * `TradingConfig`: 表单,API 保存配置。
            * `CopyTradeConfig`: 列表管理跟单地址。
            * `SnipeList`: 文本框/列表管理狙击地址。
            * `Holdings`: API 获取持仓信息。
            * `History`: API 获取交易历史,分页展示。
            * `Notifications`: WebSocket 或轮询获取通知。
          ## 6. 数据库 Schema (TypeORM)
          根据规划和参考项目分析,确定以下核心实体:
          ### 6.1 `Holding` Entity (`holdings` table)
              import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, Index, BaseEntity } from 'typeorm';
              @Entity('holdings') // Table name
              export class Holding extends BaseEntity {
                @PrimaryGeneratedColumn()
                id: number;
                // 从 open-sol-bot-main 借鉴的字段
                @Index() // 添加索引以提高查询效率
                @Column({ nullable: false, comment: '机器人钱包地址' })
                walletAddress: string; // 在我们的场景中,这通常是固定的后端钱包地址
                @Column({ nullable: false, comment: '代币地址' })
                mint: string;
                @Column({ nullable: false, comment: '关联代币账户 (ATA)' })
                associatedAccount: string;
                @Column({ nullable: false, comment: '代币符号' })
                symbol: string;
                @Column({ type: 'int', nullable: false, comment: '代币精度' })
                decimals: number;
                @Column({ type: 'bigint', nullable: false, comment: '余额 (Raw Amount, lamports)' })
                amountRaw: string; // 使用 string 存储 bigint 以避免精度问题
                // 通用字段
                @CreateDateColumn()
                createdAt: Date;
                @UpdateDateColumn()
                updatedAt: Date;
              }
          ### 6.2 `Trade` Entity (`trades` table)
              import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, Index, BaseEntity } from 'typeorm';
              export enum TradeType {
                BUY = 'buy',
                SELL = 'sell',
              }
              @Entity('trades') // Table name
              export class Trade extends BaseEntity {
                @PrimaryGeneratedColumn()
                id: number;
                @Column({
                  type: 'enum',
                  enum: TradeType,
                  nullable: false,
                  comment: '交易类型 (buy/sell)',
                })
                type: TradeType;
                @Column({ nullable: false, comment: '代币地址' })
                mintAddress: string;
                @Column({ type: 'decimal', precision: 18, scale: 9, nullable: false, comment: '交易涉及的 SOL 数量' })
                solAmount: number; // 使用 decimal 保证精度
                @Column({ type: 'varchar', length: 100, nullable: false, comment: '交易涉及的代币数量 (UI Amount)' })
                tokenAmount: string; // 存储 UI 数量字符串
                @Column({ type: 'bigint', nullable: false, comment: '交易涉及的代币数量 (Raw Amount, lamports)' })
                tokenAmountRaw: string; // 使用 string 存储 bigint
                @Column({ type: 'decimal', precision: 20, scale: 10, nullable: true, comment: '成交时的代币单价 (以 SOL 计)' })
                pricePerTokenSol?: number; // 可选
                @Index({ unique: true }) // 交易签名应该是唯一的
                @Column({ nullable: false, comment: 'Solana 交易签名/哈希' })
                transactionSignature: string;
                // 使用 CreateDateColumn 自动记录交易发生时间
                @CreateDateColumn({ comment: '交易发生时间戳' })
                timestamp: Date;
                // 可选: 添加更新时间戳,虽然交易记录通常不更新
                // @UpdateDateColumn()
                // updatedAt: Date;
              }
          ### 6.3 `BotSetting` Entity (`bot_settings` table)
              import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, Index, BaseEntity } from 'typeorm';
              @Entity('bot_settings') // Table name
              export class BotSetting extends BaseEntity {
                @PrimaryGeneratedColumn()
                id: number;
                @Index({ unique: true }) // 设置键应该是唯一的
                @Column({ nullable: false, comment: '设置键名' })
                key: string;
                @Column({ type: 'text', nullable: false, comment: '设置值 (存储为文本)' })
                value: string; // 存储为文本以获得最大灵活性
                @Column({ type: 'text', nullable: true, comment: '设置项描述' })
                description?: string;
                @CreateDateColumn()
                createdAt: Date;
                @UpdateDateColumn()
                updatedAt: Date;
              }
          ### 6.4 实体关系图 (Mermaid)
              erDiagram
                  holdings {
                      INT id PK
                      VARCHAR walletAddress IDX
                      VARCHAR mint
                      VARCHAR associatedAccount
                      VARCHAR symbol
                      INT decimals
                      BIGINT amountRaw
                      TIMESTAMP createdAt
                      TIMESTAMP updatedAt
                  }
                  trades {
                      INT id PK
                      ENUM type
                      VARCHAR mintAddress
                      DECIMAL solAmount
                      VARCHAR tokenAmount
                      BIGINT tokenAmountRaw
                      DECIMAL pricePerTokenSol
                      VARCHAR transactionSignature UK
                      TIMESTAMP timestamp
                  }
                  bot_settings {
                      INT id PK
                      VARCHAR key UK
                      TEXT value
                      TEXT description
                      TIMESTAMP createdAt
                      TIMESTAMP updatedAt
                  }
          ## 7. 开发路线 (细化)
          1. **阶段一 (基础架构与核心交易):**
            * 后端: 搭建项目 (NestJS), 配置 TypeORM, 实现 `ConfigService`, `SolanaService`, `WalletService`。 **(进行中)**
            * 前端: 搭建项目 (Vite + React + TS), 集成钱包适配器 (已移除), 实现连接和信息显示。 **(进行中)**
            * API: 定义基础 Wallet 和 Config 端点。 **(进行中)**
            * 数据库: 定义 `Holding`, `Trade`, `BotSetting` 实体。 **(已规划)**
          2. **阶段二 (Raydium 狙击与手动交易):**
            * 后端: 实现 `DexInteractionService` (Raydium), `MonitoringService` (Raydium 新池), `TradingEngine` (基础狙击), `DatabaseService` (交易记录)。
            * 前端: 实现手动 Swap 界面, 交易历史展示。
            * API: 添加 Swap、交易历史端点。
          3. **阶段三 (自动化卖出与过滤):**
            * 后端: 实现 `FilteringService`, 完善 `TradingEngine` (自动卖出、止盈止损), 实现 `CacheService`。
            * 前端: 实现交易配置界面, 仪表盘。
            * API: 添加配置、持仓、状态端点。
          4. **阶段四 (Telegram Bot 与跟单):**
            * 后端: 实现 `TelegramBotService`, `CopyTradeService`。
            * 前端: 实现跟单配置界面。
            * API: 添加跟单相关端点。
          5. **阶段五 (高级功能与 Pump.fun):**
            * 后端: 集成 Jito/Warp (可选), 添加 Pump.fun 支持。
            * 前端: 添加 Pump.fun 配置选项。
          6. **阶段六 (UI/UX 完善与部署):**
            * 前后端: 代码优化,增加日志,完善错误处理,美化 UI。
            * 部署: 编写 Dockerfile, 配置 CI/CD, 部署。
          ## 8. 免责声明
          本项目旨在学习和研究,不构成任何投资建议。所有交易决策和风险由用户自行承担。请务必在测试网或使用小额资金进行充分测试后再投入实际使用。
          
      • 得到的项目MD文件中, 里面有内容说构建什么函数, 参考"某某文件"

      • 然而, 生成的代码和(1)中一样, 一直在编辑器bug和as any的语法里面打转(于是我上网查询, 通过LF行尾格式和某个方法解决了这个问题), 但是生成之后的内容依旧是bug

        • 所以就总结出了教训

          • 参考的开源项目语法混杂, 有go语言的(应该是), 有python的, 有ts的, ai参考这么多内容, 可能 或出现问题吧
          • 以后还得让ai生成测试程序, 让ai一步一步生成, 而不是让ai一口气吃成个胖子, 得循序渐进
  • 关于私有仓库的SOL_bot_auto项目(3)

    • 参考上面的教训, 于是我这次特意挑选了一个项目warp-andy/solana-trading-bot: Solana Trading Bot - RC: For Solana token sniping and trading, the latest version has completed all optimizations

      • 然后只通过这个项目进行后续的代码构建
    • 在这个项目的基础上

      • 首先让ai将项目做成了前后端分离, 这算是渐进式代码构建了吧, 一个一个功能来

        • 对于这个功能, AI做的很不错

          • 能够得到有效的界面

            • 但是当时报错前后端没有进行通信, 所以我就转用cursor调bug了, 使用claude3.7一步就解决了bug, 很不错啊
      • 接着我开始让AI做量化的算法和功能

        • 这就让ai开始出现问题了

        • 首先是量化, 量化功能我参考了一本书

          • 量化炼金术_中低频量化交易策略研发_杨博理,_贾芳_Z_Library.pdf
          • 先让gemini根据这本书, 给出一个量化算法, 然后让roo code进行实现
          • 不负众望的是, ai立刻给出了量化算法的实现, 但是我没有任何办法对这个算法进行验证, 因为ai直接将算法从api调用到算法输出给写完了, 我根本无法得到算法的具体实现了, 所以这是以后ai编程需要注意的问题, 就是流出测试的代码
        • 然后是前端的实现

          • 前端我让它模仿trading view的图标, 于是它通过网页就去找到了trading view的网页, 找到了接口, 但是, 在这之前, 它一直使用了light chart的4.0接口, 然而4.0接口是不满足要求的, 但是它还是用了, 最后还是我的提醒, 才让它使用了5.0升级以后的接口, 当然, 这里我也犯了个错, 就是写之前没有让给出详细的需求档案给ai, 没有确定函数包的版本, 没有确定使用的技术路线

          • 而对于trading view的实现, ai烦的错误就是OHLC的数据录入, 对于OHLC的数据, 它没有做很好的筛选, 导致图像根本没有

            • 最后我将控制台报错发给它, 它才完成这个功能

              • 这也就说明了, 对于ai, 为了防止代码成为黑盒, 除了要留出测试的接口, 还需要让ai通过控制台返回大量信息用于debug
        • 然后是后端的实现

          • 别说了, 这里是坑中坑

            • 开源项目使用的是birdeye的接口, 然而, 这个接口是需要充值的, 所以我一直跑不通, 一直让它对接口进行修改, 之后我找到了接口文档, 将接口文档发送给ai, 让它改接口, 依然没有, 于是我发现!!!原来这个接口是需要充值的, 但是ai不知道啊, 它只会自己用, 所以对于后端api的调用, 必须要提前做好调查, 让ai知道用什么api, 用谁的api

            • 当然, 知道了后端api之后, 我就需要找到其他api了, 于是我使用了raydium进行代币的pool查询, 使用geckcoin实现了OHLC的图像查询, 使用helius实现了钱包查询

              • 在这里面, 遇到的问题就是: 如何让ai知道怎么调用api

                • 所以有两个办法

                  • 直接复制api发给ai, 我就是这样干的
                  • 让ai自己通过fetch的mcp查询, 然而, 我给网址要它查询了, 它根本没动!!!!!!所以, 以后要更加注重于让ai使用工具, 这需要调节调节提示词了
      • 最后就是呈现的效果了

        • 然而, 跑了九千万的gemini 2.5 pro token, 软件依旧没有实现其功能
        • 因为后来, ai把前端页面跑崩了
        • 同时后端的功能无法实现代币的查询, 当然, 为了实现这个, 我得重复之前的行为了, 但是我不想在浪费时间了, 所以就没搞, 之后有时间再搞了

想法

  • 让ai进行一个项目的构建, 需要注意以下几点

    • 找到一个可以参考的项目, 对这些项目进行语言的分类, 找到"能够参考的项目与程序"

      • 这里直接在github上面查找即可
    • 对自己的项目需求写详细的分析档案和技术路线档案

      • 这里可以使用的方法有

        • 口述需求给ai, 让ai自行梳理
        • 通过上一个"想法", 让ai根据参考代码, 构建当前项目的技术框架和参考函数以及参考api
    • 做详细的文档准备

      • 除了让程序给ai参考之外, 由于ai的知识库和幻觉, 其可能会写出一些奇奇怪怪不符合版本的代码, 所以需要将详细的api档案down下来放到项目目录中

        • 这一步也可以让ai帮你准备, 当然, 你要找到这些代码在哪里, 然后让ai帮你分析哪些能用到自己的项目中, 然后让ai优化第二个"想法"中的技术路线
    • 留出测试接口, 尽可能多得让ai生成控制台信息

      • 这里是为了防止ai跑出一个"黑盒程序", 在自己能力无法编程的情况下, 让ai留出测试接口符合渐进的思想, 同时生成控制台信息也方便ai进行代码修改
    • 给出参考文献

      • 这里的参考文献是指"书籍", 就如同我上面做的那样, 你想要得到某些功能, 当自己的能力无法达到的情况下, 就要借助专业书籍了
    • 增强提示词

      • 这里的增强提示词指的是通过提示词增强ai的调用工具能力, 让ai自己查询资料总比自己查好吧

想法(agent)

AI 编程项目构建核心要点 (综合版)
一、 精心准备阶段:奠定成功基石

  1. 寻找并筛选参考项目 (模板优于从零):

    • 目标: 为 AI 提供一个结构良好、技术栈相关的起点。
    • 行动: 在 GitHub 等平台寻找与你目标类似的项目。关键在于按编程语言(如 TypeScript/JavaScript)进行分类筛选,优先选择技术栈一致、代码质量高、结构清晰的项目作为主要参考。避免直接混合多种语言(如 Python, Go)的项目作为直接代码参考,以免干扰 AI。
    • 收益: 避免 AI 在基础环境配置(如编辑器设置)、基本项目结构上耗费过多精力或出错。
  2. 制定详尽的需求与技术方案文档:

    • 目标: 给 AI 提供清晰无歧义的“导航图”。

    • 行动:

      • 需求梳理: 明确项目目标、核心功能点。可以采用口述需求 -> AI 整理成文 的方式初步生成,再人工细化。
      • 技术选型与路线: 基于参考项目和自身需求,明确指定核心框架、库(及其确切版本号)、数据库、主要模块划分、模块间交互方式、预期架构
      • 利用 AI 辅助: 可以让 AI 分析筛选好的参考项目,初步提出技术架构、核心函数/模块建议、可复用的 API 调用模式,然后人工审核、修订并纳入最终方案文档。
    • 收益: 指导 AI 生成符合预期的代码结构和功能实现,减少方向性错误。

  3. 准备关键“外部知识” - API/库文档与专业资料:

    • 目标: 弥补 AI 知识库的滞后性、不准确性(幻觉)以及特定领域知识的不足。

    • 行动:

      • 本地化文档: 对于项目依赖的关键外部 API(如 Raydium, Helius, Birdeye)或重要库(如 lightweight-charts),务必找到官方文档,最好将其下载或整理成文本文件,放置在项目目录或直接提供给 AI。明确告知 AI 使用这些文档作为权威参考。
      • AI 辅助分析: 可以让 AI 读取这些本地文档,分析确认所需的具体接口、参数、认证方式(尤其注意是否付费!) ,并让它据此优化技术路线文档中的相关部分。
      • 引入专业书籍/文献: 对于特定复杂功能(如你的量化算法),如果超出常规编码范畴,提供相关的书籍章节、核心概念解释或伪代码作为参考文献,指导 AI 实现。
    • 收益: 确保 AI 使用正确、最新的 API 和库用法,实现特定领域的专业功能,减少因信息错误导致的返工。

二、 科学开发过程:保障代码质量与可控性

  1. 采用渐进式开发与验证:

    • 目标: 化整为零,小步快跑,及时发现并修复问题。
    • 行动: 将项目分解为小的、可独立验证的功能模块或步骤。一次只让 AI 完成一个明确的小任务。在 AI 完成后,立即进行测试和代码审查,确认无误后再进行下一步。
    • 收益: 降低单次任务的复杂度,便于调试和控制项目方向。
  2. 强调可测试性与透明度:

    • 目标: 避免“黑盒”代码,确保核心逻辑可验证,方便调试。

    • 行动:

      • 预留测试接口: 明确要求 AI 为核心服务、算法或复杂逻辑生成测试用例或提供易于调用的测试接口/桩函数 (stub)
      • 增加日志输出: 要求 AI 在关键执行点、数据处理流程、API 调用前后添加详细的控制台日志(console.log)输出
    • 收益: 使得开发者(即使不直接编写代码)能够验证功能正确性,并在出错时快速定位问题(无论是自己调试还是将日志反馈给 AI 进行修复)。

三、 有效人机协作:发挥 AI 优势,规避其短板

  1. 精准反馈与人类监督:

    • 目标: 及时纠正 AI 偏差,解决其无法独立处理的问题。

    • 行动:

      • 持续 Code Review: 人类开发者需审查 AI 生成的代码,检查逻辑、效率、安全性和最佳实践。
      • 提供精确错误信息: 当出现 Bug 时,将完整的错误日志、控制台输出、相关的代码片段清晰地反馈给 AI,引导其修复。
      • 主动干预: 对于环境配置问题(如 LF/CRLF)、特定语法陷阱(如 as any 的滥用)或需要外部决策(如 API 付费确认)的情况,需要人工介入解决或提供明确指令。
    • 收益: 确保项目质量,突破 AI 自身局限。

  2. 优化提示词(Prompt Engineering):

    • 目标: 提升 AI 理解力,引导其更有效地使用工具和信息。

    • 行动:

      • 清晰指令: 任务描述要具体、无歧义。
      • 上下文注入: 在 Prompt 中有效引入之前准备的需求文档、技术方案、本地 API 文档等关键信息。
      • 尝试引导工具使用: 设计提示词鼓励 AI 尝试使用其内置工具(如网页浏览分析)来查询信息,但要做好其可能失败或效果不佳的准备,此时仍需人工提供信息。
    • 收益: 提高 AI 生成内容的准确性和相关性,探索提升 AI 自主性的可能性。

四、 心态与预期管理:

  1. 接受 AI 的角色定位: 将 AI 视为一个能力很强但需要精确指导和监督的“(初)中级开发者”或“编码助手” ,而非全自动解决方案。人类需要承担架构师、项目经理和资深开发者的角色。
  2. 认识迭代本质与成本: AI 编程,尤其是复杂项目,是一个需要耐心、多次迭代和调试的过程
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容