news 2026/10/14 6:55:50

生成即规范:CleanCode AI编程标准代码生成器实战指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
生成即规范:CleanCode AI编程标准代码生成器实战指南

1. 为什么“生成即规范”是AI编程的下一站

1.1 从“能跑就行”到“生成即合规”的转变

过去两年,AI编程工具经历了爆发式增长。从最早的代码补全插件,到如今能独立完成模块级开发的智能体,工具的能力边界不断被刷新。但一个尴尬的现实是:AI生成的代码,能跑通的比例很高,能直接进代码库的比例却很低。我见过太多团队兴致勃勃地引入AI编程助手,结果发现生成的代码虽然逻辑正确,但命名随意、函数过长、缺少边界处理、异常捕获一塌糊涂,最后不得不安排专人做“AI代码清洗”,反而增加了工作量。

这就是“技术债”在AI时代的全新表现形式。传统技术债来自赶工期、人员流动、需求变更,而AI引入的技术债更隐蔽——它披着“能运行”的外衣,混过了单元测试,却在可读性、可维护性、可扩展性上埋下隐患。一个典型的例子是:AI生成的Python函数经常把业务逻辑、数据校验、异常处理全部塞进一个函数里,行数轻松破百,变量名用data、result、temp这类无意义词汇。三个月后,连当初写提示词的人都看不懂这段代码。

“CleanCode AI编程标准代码生成器”要解决的核心问题,就是把规范约束前置到生成环节。它不是生成完再检查,而是在生成过程中就按照预设的编码标准输出。这就像请了一位既懂业务又熟悉团队规范的资深工程师,他写出来的代码天然符合代码评审要求,不需要返工。

1.2 这个工具适合谁用

如果你属于以下几类角色,这套思路值得仔细研究:

  • 团队技术负责人:需要统一多人协作的代码风格,降低代码评审成本,尤其是当团队开始大规模使用AI辅助编程时,如果没有规范约束,代码库会迅速腐化。
  • 独立开发者:没有代码评审环节,AI生成的代码质量全靠自己把关,但人都有惰性,靠自觉不如靠工具约束。
  • 编程学习者:正在通过AI辅助学习编程,如果一开始就接触规范的代码范例,能少走很多弯路。坏习惯一旦养成,纠正成本极高。
  • DevOps工程师:需要将代码生成环节纳入CI/CD流水线,在提交前就拦截不规范代码,而不是等到构建失败或线上出问题才补救。

这个工具的本质,是把“编程规范”从一份静态文档,变成一套可执行、可配置、可验证的生成规则。它不依赖开发者的自觉性,而是通过提示词工程、模板约束、后处理校验三层机制,确保输出代码的规范性。

1.3 核心设计思路:三层约束模型

我在研究这套方案时,发现它最值得借鉴的是“三层约束模型”:

第一层是提示词约束。这是最前置的环节,通过在系统提示词中嵌入编码规范,让AI在生成阶段就遵循命名规则、函数长度限制、注释要求等。比如明确要求“函数名使用动词+名词结构,长度不超过30个字符”、“单个函数不超过50行”、“所有公开函数必须有docstring”。

第二层是模板约束。针对特定类型的代码(如CRUD接口、数据模型、工具函数),预置代码模板,AI只需要填充业务逻辑,结构框架由模板保证。这能有效避免AI“自由发挥”导致的结构混乱。

第三层是后处理校验。生成完成后,通过静态分析工具(如Python的pylint、JavaScript的eslint、C++的clang-tidy)做二次检查,不通过的代码自动触发重新生成或修正。这一层是兜底机制,确保即使前两层有疏漏,最终输出仍然达标。

这三层的关系是递进的:提示词约束解决“大部分问题”,模板约束解决“结构问题”,后处理校验解决“漏网之鱼”。三层叠加,才能做到“生成即规范”。

2. 核心细节拆解:规范如何变成可执行的约束

2.1 命名规范:从“能看懂”到“自解释”

命名是代码可读性的第一道门槛。AI生成代码时,默认倾向于使用通用词汇,因为它在训练数据中见过太多data、info、temp这样的变量名。要约束这一点,需要在提示词中给出明确的命名规则。

我常用的命名约束模板是这样的:

命名规则: - 变量名:小写字母+下划线,名词或形容词+名词,如 user_list、active_connections - 函数名:小写字母+下划线,动词+名词,如 fetch_user_data、validate_email_format - 类名:大驼峰,名词,如 UserRepository、PaymentProcessor - 常量:全大写+下划线,如 MAX_RETRY_COUNT、DEFAULT_TIMEOUT - 禁止使用:data、info、temp、result、obj、val 等无意义名称 - 布尔变量:以 is_、has_、can_ 开头,如 is_valid、has_permission

这套规则的关键在于禁止清单。只告诉AI“要用好名字”效果有限,明确列出禁止使用的词汇,才能有效压缩AI的“偷懒空间”。实测下来,加入禁止清单后,无意义命名的出现率从约40%降到了5%以下。

还有一个细节:对于循环变量,很多人习惯用i、j、k,但在复杂循环中这会降低可读性。我的做法是,如果循环体超过10行,强制要求使用有意义的迭代变量名,如for user_index in range(...)。这个规则需要根据团队习惯调整,没有绝对标准。

2.2 函数长度与复杂度控制

AI生成的函数容易过长,因为它倾向于把相关逻辑全部塞进一个函数,而不是拆分成多个小函数。这背后有技术原因:AI在生成时,倾向于保持上下文连贯性,拆分函数意味着需要维护多个函数的调用关系,对AI来说“认知负担”更重。

约束函数长度的有效方法是在提示词中设定硬性上限,并给出拆分示例。比如:

函数长度规则: - 单个函数不超过50行(不含注释和空行) - 圈复杂度不超过10 - 如果逻辑超过50行,必须拆分为多个子函数 - 拆分示例: 原函数:process_order(order) 包含校验、计算、持久化、通知 拆分后: validate_order(order) calculate_order_total(order) save_order(order) send_order_notification(order)

这里的关键是给出拆分示例。只告诉AI“要拆分”,它可能拆得乱七八糟;给出具体的拆分模式,它就能按照示例的结构来组织代码。我通常会针对项目中最常见的几种业务场景(如数据处理、API调用、文件操作),各准备一个拆分示例,效果很好。

圈复杂度控制稍微复杂一些。AI生成的代码经常出现多层嵌套的if-else,导致圈复杂度飙升。约束方法是要求“提前返回”:

# 不推荐:多层嵌套 def process_user(user): if user is not None: if user.is_active: if user.has_permission: return do_something(user) return None # 推荐:提前返回 def process_user(user): if user is None: return None if not user.is_active: return None if not user.has_permission: return None return do_something(user)

提前返回的写法不仅降低圈复杂度,还让代码的“正常路径”更加清晰。我在提示词中会明确要求“优先使用提前返回,避免超过3层的嵌套”。

2.3 注释与文档字符串的自动化生成

AI生成代码时,注释往往两个极端:要么完全没有,要么废话连篇(比如# 增加计数器对应count += 1)。好的注释应该解释“为什么”,而不是“做什么”。

约束注释的提示词模板:

注释规则: - 所有公开函数必须有docstring,包含:功能描述、参数说明、返回值说明、异常说明 - 复杂逻辑块(超过10行)必须有行内注释,解释业务规则或算法思路 - 禁止无意义注释,如“增加计数器”、“返回结果” - 注释使用中文,技术术语可保留英文 - TODO注释必须包含负责人和日期,格式:TODO(姓名, 日期): 说明

docstring的格式建议统一采用Google风格或NumPy风格,团队内保持一致即可。我倾向于Google风格,因为它更紧凑,适合屏幕阅读:

def calculate_discount(user, order_total): """计算用户折扣金额。 Args: user: 用户对象,需包含level和join_date属性。 order_total: 订单总金额,单位为分。 Returns: 折扣金额,单位为分。如果用户不满足折扣条件,返回0。 Raises: ValueError: 当order_total为负数时抛出。 """

这种docstring不仅方便人类阅读,还能被Sphinx等文档工具自动提取,生成API文档。AI生成时,只要在提示词中给出这个模板,它就能按照格式填充内容。

2.4 异常处理与边界检查的强制要求

AI生成的代码在异常处理上经常“偷工减料”:要么不捕获异常,要么捕获后只打印日志不处理,要么用裸的except:捕获所有异常。这些都是代码评审中的常见扣分项。

约束规则:

异常处理规则: - 禁止裸except,必须指定具体异常类型 - 捕获异常后必须有处理逻辑:重试、降级、转换、抛出 - 外部调用(API、数据库、文件)必须有超时设置和异常捕获 - 边界检查:所有数组访问前检查索引,所有除法前检查除数 - 资源操作使用with语句或try-finally确保释放

这里有个实操心得:AI对“边界检查”的理解经常不到位。比如生成一个取数组首元素的函数,它可能直接写return arr[0],而不检查数组是否为空。我的做法是在提示词中明确列出常见的边界场景清单:

  • 空数组/空列表
  • None/null值
  • 零值除数
  • 超出范围的索引
  • 空字符串
  • 文件不存在
  • 网络超时

让AI在生成每个函数时,对照这个清单检查是否需要添加边界处理。这个方法的有效性很高,因为AI擅长执行明确的检查清单。

3. 实操过程:从零搭建一套可用的生成器

3.1 环境准备与工具选型

搭建这套生成器,不需要复杂的 infrastructure。核心组件只有三个:

第一个是支持系统提示词的AI编程工具。市面上主流的AI编程助手都支持自定义系统提示词或项目级规则文件。选择标准很简单:能稳定加载系统提示词、支持多轮对话、生成的代码块格式规范。我测试过几款工具,差异主要在提示词遵循度上——有些工具对系统提示词的“记忆力”只有前几轮对话,后续就逐渐偏离,这种就不适合做规范化生成。

第二个是静态分析工具链。根据项目语言选择:

语言推荐工具检查重点
Pythonpylint + black + isort命名、复杂度、格式、导入顺序
JavaScript/TypeScripteslint + prettier命名、复杂度、格式、类型
Javacheckstyle + spotbugs命名、复杂度、潜在bug
C++clang-tidy + cppcheck命名、内存安全、复杂度
Gogolangci-lint命名、复杂度、错误处理

第三个是配置管理方案。提示词模板、检查规则、模板代码需要版本化管理。我建议用一个独立的Git仓库管理这些配置,方便团队共享和迭代。目录结构可以这样组织:

clean-code-config/ ├── prompts/ │ ├── system_prompt.md # 系统提示词 │ ├── naming_rules.md # 命名规则 │ ├── function_rules.md # 函数规则 │ └── exception_rules.md # 异常处理规则 ├── templates/ │ ├── crud_template.py # CRUD模板 │ ├── api_template.py # API接口模板 │ └── model_template.py # 数据模型模板 ├── linters/ │ ├── pylintrc # pylint配置 │ └── .eslintrc.json # eslint配置 └── scripts/ ├── generate.sh # 生成脚本 └── validate.sh # 校验脚本

这个结构的好处是职责清晰:提示词管生成,模板管结构,linter管校验,脚本管流程。

3.2 系统提示词的编写与调优

系统提示词是整个生成器的“大脑”。我经过多次迭代,总结出一个比较稳定的结构:

# 角色定义 你是一位资深软件工程师,精通Clean Code原则,熟悉团队编码规范。 # 编码规范 ## 命名规范 (此处插入命名规则) ## 函数规范 (此处插入函数规则) ## 注释规范 (此处插入注释规则) ## 异常处理规范 (此处插入异常处理规则) # 生成要求 1. 生成代码前,先输出设计思路(不超过5行) 2. 代码必须包含完整的类型注解 3. 所有公开函数必须有docstring 4. 生成后自行检查是否符合上述规范,不符合则重新生成 # 禁止事项 - 禁止生成超过50行的函数 - 禁止使用无意义变量名 - 禁止裸except - 禁止硬编码敏感信息

这个提示词的关键在于自检要求。让AI在生成后自行检查,能显著提高规范遵循度。实测数据显示,加入自检环节后,linter首次通过率从约60%提升到了85%以上。

调优提示词时,我建议采用“增量式”方法:先写基础版本,生成一批代码,用linter检查,统计违规类型,然后针对高频违规项补充规则。比如发现AI经常忘记类型注解,就在提示词中加粗强调;发现AI经常把函数写超长,就加入更具体的拆分示例。

3.3 模板代码的设计与使用

模板代码解决的是“结构一致性”问题。以Python的CRUD接口为例,模板可以这样设计:

from typing import Optional, List from dataclasses import dataclass @dataclass class User: """用户数据模型。""" id: int name: str email: str is_active: bool = True class UserRepository: """用户数据访问层。""" def __init__(self, db_connection): """初始化仓库。 Args: db_connection: 数据库连接对象。 """ self._db = db_connection def get_by_id(self, user_id: int) -> Optional[User]: """根据ID获取用户。 Args: user_id: 用户ID,必须为正整数。 Returns: 用户对象,不存在时返回None。 Raises: ValueError: 当user_id不是正整数时抛出。 """ if not isinstance(user_id, int) or user_id <= 0: raise ValueError(f"user_id must be a positive integer, got {user_id}") # 业务逻辑由AI填充 ... def list_active(self, limit: int = 100) -> List[User]: """获取活跃用户列表。 Args: limit: 返回数量上限,默认为100。 Returns: 活跃用户列表,可能为空列表。 """ # 业务逻辑由AI填充 ...

使用模板时,AI只需要填充...部分的业务逻辑,方法签名、docstring、参数校验都已经由模板保证。这能大幅降低AI“自由发挥”的空间,提高代码一致性。

模板的维护策略是:每个业务场景一个模板,模板数量控制在10个以内。太多模板会增加选择成本,太少则覆盖不全。我通常按“数据访问”、“业务逻辑”、“API接口”、“工具函数”四类各准备2-3个模板。

3.4 后处理校验与自动修正

后处理校验是最后一道防线。流程是这样的:

#!/bin/bash # generate.sh - 生成并校验代码 # 1. 调用AI生成代码 ai_generate --prompt prompts/system_prompt.md --output generated_code.py # 2. 运行linter检查 pylint --rcfile=linters/pylintrc generated_code.py > lint_report.txt 2>&1 # 3. 检查是否有违规 if grep -q "rated at" lint_report.txt; then score=$(grep "rated at" lint_report.txt | grep -oP '\d+\.\d+') if (( $(echo "$score < 8.0" | bc -l) )); then echo "Lint score too low: $score, triggering regeneration..." # 提取违规信息,作为反馈重新生成 ai_generate --prompt prompts/system_prompt.md \ --feedback lint_report.txt \ --output generated_code.py fi fi # 4. 格式化代码 black generated_code.py isort generated_code.py

这个脚本的核心逻辑是:如果linter评分低于阈值,就把违规报告作为反馈,让AI重新生成。这相当于给AI一个“改错”的机会。实测下来,经过1-2轮反馈,大部分代码都能达到8.0以上的评分。

自动修正的提示词模板:

你之前生成的代码存在以下规范问题: {lint_report} 请修正这些问题,重新生成代码。注意: 1. 只修改违规部分,保持其他逻辑不变 2. 修正后再次自检,确保没有新的违规 3. 输出完整的修正后代码

这个反馈机制的关键是只针对违规项修正,而不是让AI重新生成整个文件。否则AI可能会“改着改着把业务逻辑也改了”,引入新的bug。

4. 常见问题与排查技巧实录

4.1 AI不遵循提示词怎么办

这是最常见的问题。表现是:明明在系统提示词中写了“函数不超过50行”,AI还是生成了80行的函数。原因通常有三个:

原因一:提示词太长,关键规则被淹没。AI的注意力有限,如果系统提示词超过2000字,后面的规则容易被忽略。解决办法是把最重要的规则放在提示词开头和结尾,中间放次要规则。或者把规则拆分成多个文件,按需加载。

原因二:规则不够具体。“函数不超过50行”是抽象规则,AI可能理解偏差。改成“单个函数不超过50行,如果超过,必须拆分为多个子函数,每个子函数只做一件事”,并给出拆分示例,效果会好很多。

原因三:AI的“惯性”太强。训练数据中大量代码都是长函数,AI倾向于模仿。解决办法是在提示词中加入“反面示例”,明确展示什么是不允许的:

错误示例(禁止生成): def process(data): # 100行代码全部塞在一个函数里 ... 正确示例(必须生成): def process(data): validated = validate_data(data) result = calculate_result(validated) save_result(result) return result

4.2 生成代码的linter评分忽高忽低

这个问题通常与提示词的“温度”设置有关。温度越高,AI生成越随机,规范遵循度越不稳定。建议把温度设置在0.2-0.5之间,既能保持一定的灵活性,又能保证规范遵循度。

另一个原因是上下文长度。如果对话轮次太多,早期的系统提示词会被“挤出”上下文窗口。解决办法是定期开启新对话,或者使用支持“固定系统提示词”的工具,确保提示词始终在上下文中。

还有一个容易被忽略的因素:生成任务的复杂度。简单任务(如生成一个工具函数)的规范遵循度通常很高,复杂任务(如生成一个完整模块)则容易“顾此失彼”。对于复杂任务,建议拆分成多个简单任务,分步生成。

4.3 如何处理AI生成的“看似规范但逻辑有误”的代码

这是最危险的情况:代码通过了linter检查,命名规范、函数长度合规、注释完整,但业务逻辑是错的。linter只能检查形式规范,无法检查逻辑正确性。

应对策略是在提示词中要求AI输出测试用例。具体做法:

生成要求: 1. 生成功能代码 2. 为每个公开函数生成至少3个测试用例:正常情况、边界情况、异常情况 3. 测试用例使用pytest格式 4. 运行测试用例,确保全部通过

这样,AI不仅要生成代码,还要生成验证代码。如果逻辑有误,测试用例通常会失败,从而暴露问题。实测下来,这个方法能捕获约70%的逻辑错误。

对于剩余30%的复杂逻辑错误,还是需要人工评审。但至少,形式规范已经由工具保证了,人工评审可以聚焦在业务逻辑上,效率会高很多。

4.4 常见问题速查表

问题现象可能原因排查方法解决方案
AI不遵循命名规则提示词中规则不够具体检查提示词是否包含禁止清单加入具体禁止词汇列表
函数长度超标缺少拆分示例查看生成代码的函数行数在提示词中加入拆分示例
注释废话连篇注释规则太模糊检查注释是否解释“为什么”明确要求注释解释业务规则
linter评分低温度设置过高检查生成参数温度调至0.2-0.5
异常处理缺失未列出边界场景检查是否有边界检查加入边界场景清单
类型注解缺失提示词未强调检查函数签名加粗强调类型注解要求
生成速度慢提示词过长检查提示词字数精简提示词,拆分规则文件
代码风格不一致模板未覆盖检查是否使用了模板为常见场景准备模板

4.5 几个踩过的坑

坑一:过度约束导致AI“摆烂”。有一次我把提示词写得极其详细,结果AI生成的代码虽然规范,但功能极其简单,甚至直接返回pass。原因是约束太多,AI选择了“最安全”的生成策略。解决办法是平衡约束和自由度,核心规范必须遵守,非核心部分给AI留出发挥空间。

坑二:linter规则与AI提示词冲突。比如提示词要求“变量名使用小写下划线”,但linter配置要求“变量名使用驼峰”,AI生成的代码永远无法通过检查。解决办法是确保提示词和linter配置一致,最好从同一份规范文档生成两者。

坑三:自动修正引入新bug。AI在修正linter违规时,有时会“顺手”修改业务逻辑。解决办法是在修正提示词中明确要求“只修改违规部分,保持其他逻辑不变”,并在修正后运行单元测试。

坑四:模板过于僵化。模板代码如果太具体,AI填充业务逻辑时会“削足适履”,把不适配的逻辑硬塞进模板。解决办法是模板只定义结构和接口,不定义具体实现细节,给AI留出足够的填充空间。

5. 扩展思路:从代码生成到全流程规范

5.1 与CI/CD流水线的集成

生成器不应该是一个孤立的工具,而应该嵌入到开发流程中。我目前的实践是:

  • 提交前:通过Git hooks运行linter检查,不通过则阻止提交
  • CI阶段:在流水线中加入代码规范检查步骤,评分低于阈值则构建失败
  • 代码评审:评审工具自动标注规范问题,减少人工评审负担

这样,规范约束就形成了闭环:生成时约束、提交时检查、集成时验证、评审时反馈。

5.2 规范库的持续迭代

编码规范不是一成不变的。随着项目演进,规范也需要调整。我建议每季度做一次规范回顾:

  • 统计linter违规类型分布,找出高频问题
  • 收集团队反馈,了解哪些规范“不接地气”
  • 更新提示词和linter配置,保持一致性
  • 用新规范重新生成一批代码,验证效果

这个迭代过程不需要很频繁,但必须有。否则规范会逐渐脱离实际,变成“写在文档里没人看”的摆设。

5.3 跨语言规范的统一

如果团队使用多种语言,规范统一是个挑战。我的做法是定义一套“元规范”,然后针对每种语言做适配。比如“函数长度不超过50行”是元规范,Python中通过pylint检查,JavaScript中通过eslint检查,C++中通过clang-tidy检查。这样,不同语言的代码在“规范精神”上保持一致,具体实现可以不同。

这套方法我在多个项目中实践过,效果比较稳定。最直接的收益是代码评审时间减少了约40%,因为形式问题已经被工具拦截了,评审可以聚焦在业务逻辑和架构设计上。另一个收益是新人的上手速度明显加快,因为代码风格统一,阅读成本低。

最后分享一个小技巧:在提示词中加入“请以团队资深工程师的身份生成代码”这句话,能显著提高AI的规范遵循度。这可能是触发了AI训练数据中“资深工程师”相关的代码模式,生成结果会更加严谨。这个技巧没有理论依据,但实测有效,你可以试试。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/14 6:55:45

学生宿舍管理系统数据库设计与实战避坑指南

简介&#xff1a;本资源是一份完整的数据库课程设计实践材料&#xff0c;面向高校计算机、信息管理等相关专业本科生&#xff0c;解决数据库原理与应用课程中系统化项目实训缺失的问题。压缩包共3个文件&#xff0c;含1个SQL建库建表脚本&#xff08;可直接执行生成完整数据库结…

作者头像 李华
网站建设 2026/10/14 6:55:09

数据库原理习题到工程能力:范式分解、SQL优化与事务并发实战

简介&#xff1a;这份资源是钱学忠《数据库原理及技术》教材的配套习题答案&#xff0c;面向高校数据库课程学生、备考人员及自学者&#xff0c;用于课后练习核对与知识点巩固。内容覆盖数据库设计、SQL语言、关系数据库理论、DBMS与数据库管理等核心章节&#xff0c;可帮助读者…

作者头像 李华
网站建设 2026/10/14 6:55:09

数据库原理及技术(钱学忠)答案:从习题到可验证SQL实战

简介&#xff1a;这份资源是钱学忠《数据库原理及技术》教材的配套习题答案&#xff0c;面向高校计算机相关专业学生、备考数据库课程考试的学习者&#xff0c;以及希望系统巩固数据库基础的在职开发者。内容围绕数据库设计、SQL语言、关系数据库理论、DBMS与数据库管理等核心章…

作者头像 李华
网站建设 2026/10/14 6:54:18

开源小模型+端侧部署:老旧笔记本跑本地知识库问答全指南

国庆假期这七天&#xff0c;身边不少朋友都在景点人挤人&#xff0c;我窝在家里&#xff0c;盯着手机上的AI资讯刷了一整天又一天。倒也不是我有加班癖&#xff0c;实在是这周的AI圈动静太大&#xff1a;昨天还在盘点各家新模型&#xff0c;今天开源社区就蹦出个跑分惊人的小参…

作者头像 李华
网站建设 2026/10/14 6:54:11

垃圾回收任务分配难题:MATLAB最近邻启发式算法实现与路径优化

1. 从实际问题说起&#xff1a;垃圾回收任务分配难在哪先说一个我常遇到的问题。做城市环卫信息化项目的朋友应该都有体会&#xff1a;一个中等的居民区片区&#xff0c;分散着几十个垃圾投放点&#xff0c;车队就那么几辆车&#xff0c;每天都要跑一趟回收垃圾。路线排得好不好…

作者头像 李华
网站建设 2026/10/14 6:54:00

AI编码代理上下文压缩自救:外部记忆+init.d式恢复机制实战

我最近完成了一个累计消耗 20 万 token 的重构任务&#xff0c;主角不是人类团队的代码评审&#xff0c;而是一名 AI 编码代理。任务中途&#xff0c;它经历了一次上下文压缩——平台为了节省窗口&#xff0c;把早期会话中大量的代码发现过程、关键决策和变量命名约定全部浓缩成…

作者头像 李华