CodeArts Agent 使用技巧与节约Token技巧

CodeArts Agent 使用技巧与节约Token技巧

CodeArts Agent是huawei cloud CodeArts服务提供的智能代码助手,基于大语言模型技术,为开发者提供代码生成、代码解释、代码优化、单元测试生成等AI辅助编程能力,可以极大的提升编码与调试效率。

本文将介绍CodeArts Agent的使用技巧,以及如何在使用CodeArts Agent时节约Token消耗。

CodeArts Agent两种模式的特点与适用场景

CodeArts Agent提供两种工作模式,适用于不同的开发场景:

快速探索模式

特点

  • 以自然语言对话形式交互,灵活自由
  • 快速响应,适合即时性问题解决
  • 不需要预先定义规范和流程
  • Agent自主理解需求并直接执行
  • 适合探索性、实验性开发

工作流程

复制代码
用户描述需求 → Agent理解并执行 → 返回结果 → 用户反馈 → 迭代优化

使用场景

  • 快速原型开发:验证想法、构建MVP

    复制代码
    快速实现一个待办事项列表的前端页面
  • 代码片段生成:生成工具函数、算法实现

    复制代码
    写一个JavaScript函数,实现数组去重并保持原顺序
  • 问题诊断与分析:分析错误、解释代码

    复制代码
    这段代码为什么会内存泄漏?如何修复?
  • 技术方案咨询:技术选型、架构建议

    复制代码
    微服务架构下如何实现分布式事务?
  • 代码审查与优化:发现潜在问题

    复制代码
    检查这个API接口是否存在安全漏洞
  • 学习与探索:理解新技术、框架特性

    复制代码
    解释Vue3 Composition API与Options API的区别

优势

  • 响应快速,交互简单
  • 无需准备文档,即问即答
  • 适合快速迭代和实验

局限

  • 复杂项目可能缺乏系统性规划
  • 需要用户具备一定的引导能力
  • 大型任务可能需要多次交互

规范驱动模式

特点

  • 基于规格文档(spec.md)驱动开发
  • 强调"先规划、后实现"的开发流程
  • 自动生成设计文档(design.md)和任务清单(tasks.md
  • 确保需求、设计、实现的一致性
  • 适合正式项目、团队协作

工作流程

复制代码
需求分析 → 生成spec.md → 生成design.md → 生成tasks.md → 逐步实现 → 验证交付

核心文档

  1. spec.md(需求规格文档)

    • 描述"做什么"(What)
    • 包含功能需求、非功能需求、约束条件
    • 不包含技术实现细节
  2. design.md(技术设计文档)

    • 描述"怎么做"(How)
    • 包含架构设计、技术选型、接口设计
    • 数据模型、关键算法等
  3. tasks.md(任务清单)

    • 将设计分解为可执行的开发任务
    • 包含任务优先级、依赖关系
    • 支持任务状态跟踪

使用场景

  • 正式项目开发:企业级应用、产品开发

    复制代码
    开发一个电商平台的订单管理系统
    需求:订单创建、支付、发货、退款等完整流程
  • 复杂功能实现:多模块、多文件协作

    复制代码
    实现用户权限管理系统
    包含:角色管理、权限分配、访问控制、审计日志
  • 团队协作项目:需要文档沉淀

    复制代码
    重构遗留系统,需要详细的设计文档供团队评审
  • 需求明确的项目:已有清晰需求文档

    复制代码
    根据产品需求文档实现用户中心模块
  • 可追溯性要求:需要记录设计决策

    复制代码
    金融系统开发,需要完整的设计文档和实现记录

使用示例

复制代码
用户:开发一个博客系统的评论模块

Agent执行流程:
1. 创建spec.md
   - 功能需求:发表评论、回复评论、删除评论、评论审核
   - 非功能需求:支持表情、防XSS、分页加载
   - 约束条件:用户需登录、评论长度限制

2. 创建design.md
   - 数据模型:Comment表设计
   - 接口设计:RESTful API
   - 技术选型:数据库、缓存策略
   - 安全设计:内容过滤、权限控制

3. 创建tasks.md
   - [ ] 创建Comment实体类和数据库表
   - [ ] 实现评论DAO层
   - [ ] 实现评论Service层
   - [ ] 实现评论Controller层
   - [ ] 添加评论审核功能
   - [ ] 编写单元测试
   - [ ] 集成测试

4. 逐步实现每个任务

优势

  • 需求、设计、实现高度一致
  • 自动生成完整文档
  • 适合团队协作和代码评审
  • 便于后续维护和迭代

局限

  • 前期需要时间编写规格文档
  • 不适合快速原型和实验性开发
  • 对需求明确性要求较高

模式选择建议

场景 推荐模式 原因
快速验证想法 快速探索 无需文档,快速迭代
学习新技术 快速探索 对话式学习更高效
代码片段生成 快速探索 简单任务无需文档
Bug分析修复 快速探索 问题导向,快速响应
企业级项目开发 规范驱动 需要完整文档和设计
多人协作项目 规范驱动 文档便于团队协作
复杂功能模块 规范驱动 需要系统性规划
需求评审项目 规范驱动 spec.md便于评审
重构遗留系统 规范驱动 需要设计文档记录

混合使用建议

  1. 项目初期用规范驱动模式建立整体架构和核心模块
  2. 具体细节实现用快速探索模式快速迭代
  3. 遇到问题时切换到快速探索模式诊断解决
  4. 解决后回到规范驱动模式继续系统开发

切换时机

  • 快速探索 → 规范驱动:当任务变复杂、需要文档沉淀时
  • 规范驱动 → 快速探索:当遇到具体问题需要快速解决时

一、高效编码技巧

1.1 提供清晰明确的任务描述

好的示例

复制代码
请实现一个用户注册功能,包含以下要求:
1. 用户名:6-20字符,仅允许字母、数字、下划线
2. 密码:至少8位,包含大小写字母和数字
3. 邮箱:验证格式正确性
4. 返回详细的错误提示信息

避免模糊描述

复制代码
帮我写个注册功能

1.2 分步骤处理复杂任务

对于复杂功能,建议拆分为多个小任务:

  1. 先实现核心数据结构和模型
  2. 再实现业务逻辑层
  3. 最后实现接口层和错误处理

示例

复制代码
第一步:请创建用户数据模型,包含用户名、密码、邮箱字段
第二步:基于模型实现注册验证逻辑
第三步:添加数据库存储功能

1.3 充分利用上下文

  • 在同一会话中完成相关任务,Agent会记住之前的代码
  • 引用已生成的代码:基于上面的User类,添加登录方法
  • 避免重复描述相同需求

1.4 提供必要的上下文信息

复制代码
项目使用Spring Boot 3.0 + MyBatis
数据库是MySQL 8.0
请实现用户注册接口

1.5 善用代码审查

完成编码后,让Agent审查代码:

复制代码
请检查上面的代码是否存在:
1. 安全漏洞
2. 性能问题
3. 边界条件处理

二、调试技巧

2.1 提供完整的错误信息

推荐做法

复制代码
运行时报错:
TypeError: Cannot read property 'id' of undefined
at UserController.update (src/controllers/user.ts:45)
at processTicksAndRejections (internal/process/task_queues.js:95)

相关代码:
async update(req: Request, res: Response) {
  const user = await User.findById(req.params.id);
  user.id = req.body.id;  // 第45行
}

2.2 描述预期行为与实际行为

复制代码
预期:用户不存在时应返回404
实际:返回500内部错误
代码:[粘贴相关代码]

2.3 逐步缩小问题范围

  1. 先让Agent分析错误原因
  2. 根据建议修改代码
  3. 再次测试并反馈结果
  4. 循环直到问题解决

2.4 利用Agent的代码解释能力

复制代码
请解释这段代码的执行流程,特别是异步处理部分:
[粘贴代码]

2.5 单元测试辅助调试

复制代码
为这个函数生成单元测试,覆盖以下场景:
1. 正常输入
2. 空值输入
3. 边界值输入
4. 异常输入

三、节约Token技巧

3.1 避免重复粘贴大段代码

不推荐

复制代码
请帮我优化这段代码:
[粘贴500行代码]

推荐

复制代码
请帮我优化 src/services/UserService.ts 中的 validatePassword 方法

Agent可以直接读取项目文件,无需手动粘贴。

3.2 精简问题描述

冗余描述

复制代码
你好,我遇到了一个问题,想请你帮忙看看。
是这样的,我在做一个项目,然后有个功能不太对,
具体来说是用户登录功能,登录的时候总是报错,
错误信息是...,你能帮我看看吗?

精简描述

复制代码
用户登录报错:Invalid credentials
代码位置:src/auth/login.ts:32
请分析原因

3.3 合并相关请求

不推荐(多次请求):

复制代码
1. 创建User类
2. 添加name属性
3. 添加email属性
4. 添加validate方法

推荐(一次请求):

复制代码
创建User类,包含name、email属性和validate方法

3.4 使用引用而非重复

复制代码
基于刚才生成的UserService,添加日志记录功能

而非重新描述UserService的所有细节。

3.5 明确指定文件范围

复制代码
在 src/controllers 目录下查找处理用户认证的代码

而非让Agent搜索整个项目。

3.6 利用Agent的主动探索能力

让Agent自己查找相关代码:

复制代码
分析项目中的数据库连接配置,找出可能导致连接失败的原因

3.7 适当使用代码片段

只需粘贴关键代码片段:

复制代码
报错位置:
const result = data.items.map(item => item.value);
data结构:{ items: null }

而非整个文件。

四、最佳实践总结

4.1 编码阶段

技巧 说明 Token节省
明确需求 提供详细的功能描述和约束条件 减少30%
分步实现 复杂任务拆分为小任务 减少20%
利用上下文 在同一会话完成相关任务 减少40%
引用文件 让Agent直接读取文件 减少50%

4.2 调试阶段

技巧 说明 Token节省
完整错误信息 提供错误堆栈和相关代码 减少25%
描述差异 说明预期vs实际行为 减少20%
逐步调试 一次解决一个问题 减少30%

4.3 通用原则

  1. 精准:一次只问一个问题
  2. 简洁:删除无关的客套话
  3. 结构化:使用列表、代码块组织信息
  4. 引用:优先引用已有上下文而非重复描述
  5. 文件路径:提供文件路径让Agent自己读取

五、常见场景示例

场景1:新功能开发

复制代码
需求:实现商品搜索功能
技术栈:Spring Boot + Elasticsearch
要求:
1. 支持关键词搜索
2. 支持分类筛选
3. 支持价格区间过滤
4. 分页返回结果

场景2:Bug修复

复制代码
问题:订单支付后状态未更新
错误日志:[粘贴关键日志]
相关代码:src/services/OrderService.java:pay方法
数据库:订单表status字段
请分析原因并修复

场景3:代码重构

复制代码
重构目标:src/utils/validator.ts
问题:
1. 函数过长(300行)
2. 重复代码多
3. 缺少类型定义
要求:拆分为多个小函数,提取公共逻辑

场景4:性能优化

复制代码
性能问题:API响应时间超过3秒
接口:GET /api/users/search
数据量:用户表100万条
已索引:username, email
请分析瓶颈并优化

六、Token消耗对比示例

示例1:创建CRUD接口

高消耗方式(约2000 tokens):

复制代码
请帮我创建一个完整的用户管理CRUD接口,
包括创建用户、读取用户、更新用户、删除用户,
每个操作都要有参数验证、错误处理、日志记录,
使用Express框架,TypeScript编写,
需要连接MySQL数据库,使用TypeORM,
用户表有id、username、password、email、createdAt、updatedAt字段,
密码需要加密存储,邮箱需要格式验证,
返回JSON格式,遵循RESTful规范...

低消耗方式(约500 tokens):

复制代码
创建用户CRUD接口(Express + TypeScript + TypeORM)
字段:id, username, password(加密), email(验证), createdAt, updatedAt
RESTful风格,包含验证和错误处理

节省:75%

示例2:调试空指针异常

高消耗方式(约1500 tokens):

复制代码
你好,我遇到了一个问题,程序运行的时候报错了,
错误信息是NullPointerException,我查了一下,
好像是某个对象是null,但是我不确定是哪个对象,
我把整个文件都贴给你看看,你帮我分析一下:

[粘贴整个300行文件]

你能告诉我哪里出了问题吗?应该怎么修改呢?

低消耗方式(约300 tokens):

复制代码
NullPointerException at UserService.java:45
代码:user.getProfile().getAge()
user和profile都不应为null
请分析可能原因

节省:80%

七、高级技巧

7.1 使用模板请求

为常见任务准备模板:

创建Service模板

复制代码
创建[服务名]Service,负责[职责]
依赖:[依赖项]
方法:[方法列表]
异常处理:[异常类型]

7.2 批量操作

复制代码
为以下文件生成单元测试:
- src/services/UserService.ts
- src/services/OrderService.ts
- src/services/ProductService.ts

7.3 代码生成后立即验证

复制代码
生成代码后,请:
1. 检查类型安全
2. 验证边界条件
3. 确认错误处理完整

7.4 利用Agent的探索能力

复制代码
分析项目中所有使用了deprecated API的地方,列出文件和行号

总结 :高效使用CodeArts Agent的关键是精准、简洁、结构化。通过合理组织请求、充分利用上下文、避免重复信息,可以在保证开发效率的同时显著降低Token消耗。

相关推荐
formulahendry1 天前
王炸!VS Code 悄悄推出 Sessions App,全新的 Agentic 开发体验!
visual studio code·vs code·acp
计算机安禾1 天前
【数据结构与算法】第12篇:栈(二):链式栈与括号匹配问题
c语言·数据结构·c++·学习·算法·visual studio code·visual studio
wangjialelele2 天前
现代C++:C++17新特性整理
c语言·开发语言·c++·visual studio code
山川行3 天前
关于《项目C语言》专栏的总结
c语言·开发语言·数据结构·vscode·python·算法·visual studio code
计算机安禾4 天前
【数据结构与算法】第6篇:线性表(二):单链表的实现(头插法、尾插法)
c语言·数据结构·学习·算法·链表·visual studio code·visual studio
计算机安禾4 天前
【数据结构与算法】第5篇:线性表(一):顺序表(ArrayList)的实现与应用
c语言·开发语言·数据结构·c++·算法·visual studio code·visual studio
计算机安禾6 天前
【数据结构与算法】第1篇:为什么要学习数据结构与算法?专栏导学
c语言·开发语言·c++·学习·算法·visual studio code·visual studio
jinanwuhuaguo6 天前
OpenClaw v2026.3.22-beta.1 深度技术分析报告:从单智能体操作系统到多智能体协作平台的范式跃迁
运维·人工智能·语言模型·自然语言处理·visual studio code·openclaw
计算机安禾7 天前
【C语言程序设计】第39篇:预处理器与宏定义
c语言·开发语言·c++·vscode·算法·visual studio code·visual studio