【Agent从入门到实践】29 开发第一个Agent——需求定义

文章目录

目前国内还是很缺AI人才的,希望更多人能真正加入到AI行业,共同促进行业进步。想要系统学习AI知识的朋友可以看看我的教程http://blog.csdn.net/jiangjunshow,教程通俗易懂,风趣幽默,从深度学习基础原理到各领域实战应用都有讲解。

前言

各位小伙伴,环境搭建好了,现在咱们要正式开发第一个完整Agent------代码注释生成Agent!可能有小伙伴会问:"直接用IDE的注释插件不就行了?为啥要做Agent?" 其实不一样:普通插件只能生成"参数说明""返回值说明"这种机械注释,而Agent能理解代码逻辑,生成"为什么这么写""核心思路是什么"的智能注释,还能记住你的注释风格、项目规范,越用越顺手~

今天咱们不写代码,先把"需求定义"搞清楚------就像盖房子先画图纸,需求定明白了,后续开发才不会跑偏。咱们从"给谁用、做什么、怎么做、有啥限制"四个维度,把这个Agent的需求拆解得明明白白!


一、核心定位:这个Agent是给谁用的?

先明确目标用户和使用场景,避免做"无用功":

  • 目标用户:程序员(新手/中级)、学生、开源项目贡献者;
  • 核心场景
    1. 自己写代码后,快速生成规范注释(省时间);
    2. 看别人的无注释代码(比如开源项目、祖传代码),自动补全注释(帮理解);
    3. 团队协作时,按统一规范生成注释(保一致性);
  • 使用方式:本地Python脚本调用、IDE插件(后续扩展)、Web接口(后续部署);
  • 核心价值:节省注释编写时间、提升代码可读性、降低团队协作成本。

一句话定位:一个能理解代码逻辑、适配个人/团队规范、快速生成高质量注释的智能助手


二、核心功能:Agent必须能做什么?(MVP最小可行产品)

MVP(最小可行产品)就是"最核心、能解决主要问题"的功能,先实现这些,后续再扩展。咱们的Agent要满足3个核心功能:

1. 支持多语言代码注释生成(核心中的核心)

  • 支持主流编程语言:Python、Java、JavaScript、C++、Go(覆盖80%以上开发场景);
  • 生成两种注释:
    • 行内注释:在关键代码行后面加// 或 # 注释(比如复杂逻辑、特殊处理);
    • 块注释:函数/类/方法头部的注释(说明功能、参数、返回值、异常、作者、日期);
  • 智能识别代码结构:自动区分函数、类、循环、条件判断,注释精准对应(不会把循环逻辑的注释写到函数头部)。
示例:输入Python代码,生成注释

输入无注释代码

python 复制代码
def calculate_discount(price, discount_rate, min_price=100):
    if price < min_price:
        return price
    discounted = price * (1 - discount_rate)
    return round(discounted, 2)

Agent生成带注释代码

python 复制代码
def calculate_discount(price, discount_rate, min_price=100):
    """
    计算商品折扣后价格
    核心逻辑:当商品原价≥最低门槛价时,按折扣率计算折后价并保留2位小数;否则按原价返回
    参数:
        price: float - 商品原价
        discount_rate: float - 折扣率(如0.1代表9折)
        min_price: int - 享受折扣的最低门槛价(默认100元)
    返回值:
        float - 折扣后价格(未达门槛则返回原价)
    """
    # 未达最低折扣门槛,直接返回原价
    if price < min_price:
        return price
    # 计算折后价:原价×(1-折扣率)
    discounted = price * (1 - discount_rate)
    # 保留2位小数后返回
    return round(discounted, 2)

2. 记忆用户/团队的注释规范(个性化适配)

这就是Agent和普通插件的核心区别------能"记住"你的习惯,越用越顺手:

  • 支持自定义注释风格:
    • 比如Python注释用Google风格/NumPy风格/ReST风格;
    • Java注释用Javadoc风格;
    • 支持是否显示"作者""日期""版本号";
  • 记忆机制:
    • 短期记忆:记住当前会话的注释偏好(比如"这次不显示日期");
    • 长期记忆:记住用户的默认规范(比如"默认用Google风格,显示作者和日期"),下次启动自动生效;
  • 规范修改:支持用户随时调整注释规范(比如"以后注释里加个'修改日期'字段")。
示例:用户自定义规范

用户说:"我的Python注释要NumPy风格,显示作者(张三)和版本号(v1.0),不显示日期";

Agent记住后,生成的注释会自动适配:

python 复制代码
def calculate_discount(price, discount_rate, min_price=100):
    """
    计算商品折扣后价格

    核心逻辑:当商品原价≥最低门槛价时,按折扣率计算折后价并保留2位小数;否则按原价返回

    Parameters
    ----------
    price : float
        商品原价
    discount_rate : float
        折扣率(如0.1代表9折)
    min_price : int, optional
        享受折扣的最低门槛价(默认100元)

    Returns
    -------
    float
        折扣后价格(未达门槛则返回原价)

    Author
    ------
    张三
    Version
    -------
    v1.0
    """
    # 未达最低折扣门槛,直接返回原价
    if price < min_price:
        return price
    # 计算折后价:原价×(1-折扣率)
    discounted = price * (1 - discount_rate)
    # 保留2位小数后返回
    return round(discounted, 2)

3. 支持批量注释和注释优化(提升效率)

  • 批量注释:支持输入多个函数/整个文件的代码,一次性生成完整注释(不用逐行处理);
  • 注释优化:支持输入已有注释的代码,Agent自动优化(比如补全缺失的参数说明、简化冗余注释、统一风格);
  • 注释翻译:支持将注释翻译成中文/英文(比如把中文注释翻译成英文,适配开源项目)。
示例:优化已有注释

输入带冗余注释的代码

python 复制代码
def add(a, b):
    # 这是一个加法函数
    # 用来计算两个数的和
    # 参数a是第一个数,参数b是第二个数
    # 返回a加b的结果
    return a + b

Agent优化后

python 复制代码
def add(a, b):
    """
    计算两个数的和(Google风格)
    参数:
        a: any - 第一个加数(支持数字/可相加类型)
        b: any - 第二个加数(支持数字/可相加类型)
    返回值:
        any - 两个数的和
    """
    return a + b

三、非核心功能:后续扩展(先实现MVP,再迭代)

这些功能不是必须的,等MVP跑通后再慢慢加,避免一开始复杂度太高:

  1. 支持框架专属注释(比如Django/Flask的视图函数注释、FastAPI的接口注释);
  2. 注释导出(把注释单独导出为文档,比如Markdown/HTML格式);
  3. 代码解释功能(除了生成注释,还能详细解释代码逻辑,适合新手学习);
  4. IDE插件集成(比如VS Code插件,直接在IDE里调用Agent);
  5. 团队共享注释规范(支持多人共用一套规范,适合团队协作)。

四、约束条件:Agent不能做什么?(明确边界)

需求不仅要定义"能做什么",还要明确"不能做什么",避免用户误解:

  1. 不支持小众编程语言(比如Rust、Ruby,后续可扩展,但MVP不包含);
  2. 不支持极端复杂的代码(比如几万行的大型函数、无逻辑的混乱代码,注释效果会变差);
  3. 不修改代码逻辑(只生成/优化注释,不会改动代码本身的功能);
  4. 不保证100%完美注释(复杂业务逻辑可能需要用户手动调整,Agent是"辅助工具",不是"替代人工");
  5. 依赖代码可读性(如果代码变量名/函数名完全无意义,比如a、b、c,注释效果会受影响)。

五、技术实现思路:把需求转化为技术方案

前面的需求最终要落地为代码,这里先明确核心技术思路(后续开发会详细实现):

  1. 代码解析 :用tree-sitter库解析代码结构(识别函数、类、参数、逻辑块),比正则表达式更精准;
  2. 注释生成:调用大模型(GPT-3.5/通义千问),结合代码结构+用户规范,生成注释;
  3. 记忆系统 :复用之前的"短期+长期记忆"方案:
    • 短期记忆:存储当前会话的临时规范(比如"这次不显示作者");
    • 长期记忆:用Chroma+SQLite存储用户默认规范(比如注释风格、作者名);
  4. 交互方式:先实现命令行交互(简单易开发),后续扩展Web接口/IDE插件;
  5. 核心流程
    用户输入代码 + 注释规范 → 代码解析 → 记忆检索(获取用户规范) → 大模型生成注释 → 输出带注释代码。

六、用户交互流程:怎么用这个Agent?(场景化演示)

咱们模拟一个完整的用户使用流程,让需求更直观:

场景:程序员小李用Agent生成Python代码注释

  1. 小李启动Agent,第一次使用,Agent提问:
    🤖 Agent:"你好!我是代码注释生成Agent,请告诉我你的注释偏好:
    *
    1. 常用编程语言(比如Python、Java);
      1. 注释风格(比如Python的Google/NumPy风格);
      1. 是否显示作者、日期、版本号;
      1. 作者名(可选)。"
  2. 小李回答:"Python,Google风格,显示作者(小李)和日期,版本号不用。"
  3. Agent回应:"好的!已记住你的默认规范,下次启动自动生效~ 请输入你要生成注释的代码(输入'结束'完成)。"
  4. 小李输入无注释的Python函数(比如前面的calculate_discount);
  5. Agent快速返回带注释的代码,同时问:"注释是否符合你的预期?可以告诉我需要调整的地方(比如'参数说明更详细')。"
  6. 小李说:"把参数说明里的'折扣率(如0.1代表9折)'改成'折扣率(小数形式,0.1=9折)'。"
  7. Agent更新注释并回应:"已调整!这次的临时修改会存在短期记忆,下次默认还是按你的原始规范生成~"
  8. 小李满意,结束使用;下次启动Agent时,自动加载"Python+Google风格+显示小李+日期"的规范,不用再重复设置。

七、需求总结:明确开发目标

这篇需求定义的核心目标是:开发一个"能理解代码、记住习惯、快速生成高质量注释"的Python Agent,具体要实现:

  • 核心功能:多语言注释生成、个性化规范记忆、批量注释/优化;
  • 技术方案:代码解析(tree-sitter)+ 大模型生成 + 双记忆系统;
  • 交互方式:命令行交互(MVP);
  • 约束边界:不修改代码逻辑、不支持小众语言、辅助工具定位。

有了这个清晰的需求定义,后续开发就有了明确的方向------每写一行代码,都要对应到具体的需求点,确保开发不跑偏、功能不冗余。


下一节预告

下一篇咱们正式动手开发:代码注释生成Agent的核心模块实现

  • 第一步:用tree-sitter解析代码结构,识别函数、类、参数;
  • 第二步:实现记忆系统,存储用户的注释规范;
  • 第三步:调用大模型,结合代码结构+记忆规范,生成注释;
  • 第四步:实现命令行交互,让用户能输入代码、调整规范。

如果你觉得这个需求定义够清晰、能落地,欢迎点赞,咱们下一节直接上代码,把这个Agent开发出来!

目前国内还是很缺AI人才的,希望更多人能真正加入到AI行业,共同促进行业进步。想要系统学习AI知识的朋友可以看看我的教程http://blog.csdn.net/jiangjunshow,教程通俗易懂,风趣幽默,从深度学习基础原理到各领域实战应用都有讲解。

相关推荐
爱喝可乐的老王2 小时前
深度学习初认识
人工智能·深度学习
前端达人2 小时前
为什么聪明的工程师都在用TypeScript写AI辅助代码?
前端·javascript·人工智能·typescript·ecmascript
AI科技星2 小时前
张祥前统一场论的数学表述与概念梳理:从几何公设到统一场方程
人工智能·线性代数·算法·机器学习·矩阵·数据挖掘
丝斯20112 小时前
AI学习笔记整理(55)——大模型训练流程
人工智能·笔记·学习
GatiArt雷2 小时前
生成式AI重构开发流程:从工具到生产力的质变之路
人工智能
迎仔2 小时前
算力中心设备指南 (1):计算单元——从“全能经理”到“暴力施工队”
人工智能
程序员泠零澪回家种桔子2 小时前
MCP架构核心组件
人工智能·ai·架构
来两个炸鸡腿2 小时前
【Datawhale组队学习202601】Base-NLP task04 参数高效微调
人工智能·学习·自然语言处理
YH12312359h2 小时前
YOLO11-LSKNet钢材表面缺陷检测与分类系统详解
人工智能·分类·数据挖掘