使用ROO CODE 与 Cursor 开发的心得
本文不提倡任何的投资建议, 单纯是记录自己的一些探索和心得!
本文不涉及使用ai进行编程的好坏, 只是讨论"如何利用AI编程", 请友好讨论!
前言
这段时间, 一直在使用Roo code与 Cursor(这里统称vibe coding工具), 使用Gemini 2.5 Pro 进行ai的项目
-
这是我用ai写的一些东西
-
公有仓库
-
TangQi001/novel_by_you: a novel program by you
- 使用Bolt 与 Cursor进行开发, 有基本的功能, 但是缺少很多功能
-
TangQi001/News_tel_bot: 自动总结新闻并且上传电报
- 使用Python框架写的, 很好用
-
TangQi001/OCR_mistral_and_formatting: using mistral to ocr pdf and using ai
- 使用Python框架写的, 功能还行
-
-
私有仓库
-
- SOL的自动量化交易工具
-
-
-
个人的背景
- 只知道C++和Python的代码知识, 毫无TS和React的编程经验
经验
-
关于私有仓库的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 编程项目构建核心要点 (综合版)
一、 精心准备阶段:奠定成功基石
-
寻找并筛选参考项目 (模板优于从零):
- 目标: 为 AI 提供一个结构良好、技术栈相关的起点。
- 行动: 在 GitHub 等平台寻找与你目标类似的项目。关键在于按编程语言(如 TypeScript/JavaScript)进行分类筛选,优先选择技术栈一致、代码质量高、结构清晰的项目作为主要参考。避免直接混合多种语言(如 Python, Go)的项目作为直接代码参考,以免干扰 AI。
- 收益: 避免 AI 在基础环境配置(如编辑器设置)、基本项目结构上耗费过多精力或出错。
-
制定详尽的需求与技术方案文档:
-
目标: 给 AI 提供清晰无歧义的“导航图”。
-
行动:
- 需求梳理: 明确项目目标、核心功能点。可以采用口述需求 -> AI 整理成文 的方式初步生成,再人工细化。
- 技术选型与路线: 基于参考项目和自身需求,明确指定核心框架、库(及其确切版本号)、数据库、主要模块划分、模块间交互方式、预期架构。
- 利用 AI 辅助: 可以让 AI 分析筛选好的参考项目,初步提出技术架构、核心函数/模块建议、可复用的 API 调用模式,然后人工审核、修订并纳入最终方案文档。
-
收益: 指导 AI 生成符合预期的代码结构和功能实现,减少方向性错误。
-
-
准备关键“外部知识” - API/库文档与专业资料:
-
目标: 弥补 AI 知识库的滞后性、不准确性(幻觉)以及特定领域知识的不足。
-
行动:
- 本地化文档: 对于项目依赖的关键外部 API(如 Raydium, Helius, Birdeye)或重要库(如 lightweight-charts),务必找到官方文档,最好将其下载或整理成文本文件,放置在项目目录或直接提供给 AI。明确告知 AI 使用这些文档作为权威参考。
- AI 辅助分析: 可以让 AI 读取这些本地文档,分析确认所需的具体接口、参数、认证方式(尤其注意是否付费!) ,并让它据此优化技术路线文档中的相关部分。
- 引入专业书籍/文献: 对于特定复杂功能(如你的量化算法),如果超出常规编码范畴,提供相关的书籍章节、核心概念解释或伪代码作为参考文献,指导 AI 实现。
-
收益: 确保 AI 使用正确、最新的 API 和库用法,实现特定领域的专业功能,减少因信息错误导致的返工。
-
二、 科学开发过程:保障代码质量与可控性
-
采用渐进式开发与验证:
- 目标: 化整为零,小步快跑,及时发现并修复问题。
- 行动: 将项目分解为小的、可独立验证的功能模块或步骤。一次只让 AI 完成一个明确的小任务。在 AI 完成后,立即进行测试和代码审查,确认无误后再进行下一步。
- 收益: 降低单次任务的复杂度,便于调试和控制项目方向。
-
强调可测试性与透明度:
-
目标: 避免“黑盒”代码,确保核心逻辑可验证,方便调试。
-
行动:
- 预留测试接口: 明确要求 AI 为核心服务、算法或复杂逻辑生成测试用例或提供易于调用的测试接口/桩函数 (stub) 。
- 增加日志输出: 要求 AI 在关键执行点、数据处理流程、API 调用前后添加详细的控制台日志(console.log)输出。
-
收益: 使得开发者(即使不直接编写代码)能够验证功能正确性,并在出错时快速定位问题(无论是自己调试还是将日志反馈给 AI 进行修复)。
-
三、 有效人机协作:发挥 AI 优势,规避其短板
-
精准反馈与人类监督:
-
目标: 及时纠正 AI 偏差,解决其无法独立处理的问题。
-
行动:
- 持续 Code Review: 人类开发者需审查 AI 生成的代码,检查逻辑、效率、安全性和最佳实践。
- 提供精确错误信息: 当出现 Bug 时,将完整的错误日志、控制台输出、相关的代码片段清晰地反馈给 AI,引导其修复。
-
主动干预: 对于环境配置问题(如 LF/CRLF)、特定语法陷阱(如
as any的滥用)或需要外部决策(如 API 付费确认)的情况,需要人工介入解决或提供明确指令。
-
收益: 确保项目质量,突破 AI 自身局限。
-
-
优化提示词(Prompt Engineering):
-
目标: 提升 AI 理解力,引导其更有效地使用工具和信息。
-
行动:
- 清晰指令: 任务描述要具体、无歧义。
- 上下文注入: 在 Prompt 中有效引入之前准备的需求文档、技术方案、本地 API 文档等关键信息。
- 尝试引导工具使用: 设计提示词鼓励 AI 尝试使用其内置工具(如网页浏览分析)来查询信息,但要做好其可能失败或效果不佳的准备,此时仍需人工提供信息。
-
收益: 提高 AI 生成内容的准确性和相关性,探索提升 AI 自主性的可能性。
-
四、 心态与预期管理:
- 接受 AI 的角色定位: 将 AI 视为一个能力很强但需要精确指导和监督的“(初)中级开发者”或“编码助手” ,而非全自动解决方案。人类需要承担架构师、项目经理和资深开发者的角色。
- 认识迭代本质与成本: AI 编程,尤其是复杂项目,是一个需要耐心、多次迭代和调试的过程。






