避坑指南:让AI写出高质量可维护脚本的思路 流程和模板 - AI使用系列文章
本文探讨了如何规范使用AI工具编写Shell和Python脚本,提出了一套完整的提问模板和注意事项。文章指出AI虽能提高效率,但不了解具体环境和规范,因此需要明确脚本的系统环境、编码规范、功能模块等核心信息。针对Shell脚本,强调了错误处理、函数注释等必备要素;对Python脚本则要求包含日志配置、参数验证等规范化内容。最后对比分析了Cursor、VSCode等AI编程工具的优缺点,为开发者提供
引言:
为了 搬砖,我们只能做的更快,更好,更多。。。
所以,脑力劳动牛马的你我他,不得比学会如何使用AI。
书面语:使用AI写脚本的规范化提问,是当下IT民工必知必会的工具。
Ai不是万能的
如今的AI,顶多也就像一个无性别,无表情,随叫随到可以和你对话的私人助理跟你互动一下,
其实历史上也有很多,例如:
10年前的百度给你答案却要你筛选,
20年前的Excel能算数但不懂业务,
50年前的百科全书有知识没智慧,
100年前的算盘只听指令不问对错。
一句话总结,你问,它就很自信,它说自己什么都能做,但做什么都得你想清楚。
(多说几句,看似很矛盾,上升到哲学层面,其实很多人想要什么,自己未必清楚。。。
另外,到具体现实实践和社会层面,亦如此,不然何来各种售前售后经理和各种需求分析,何来各种对接服务业社会对接岗位呢?)
不过资本正在努力在做很多标准化对接,用于代替人工的工作,好事。。好事。。标准化哪有这么容易 哈哈~
但是:
AI不了解我们的环境,不了解上下文,不了解具体要应用的场景,也不了解规范。
所以在使用AI辅助编写各种文章和代码的时候,经常会遇到这样那样的问题。
本文主要针对 编写Shell和Python脚本:
以下或会简称 脚本 举例我们经常会遇到以下问题 :
- 不同脚本在不同操作系统(Linux/Windows)上编码混乱
- 缺少必要的帮助文档和日志功能
- 错误处理不友好,调试困难
- 代码风格不一致,可维护性差
本文旨在提供一套完整的提问模板和注意事项,让AI生成更符合生产要求的脚本代码。
第一部分:给AI写脚本的核心信息模板
基础信息必填项(每次提问都应包含)
## 脚本基础信息
1. **目标系统**: [Linux/macOS/Windows/WSL/多平台兼容]
2. **编程语言**: [Python 3.x / Bash Shell]
3. **核心功能**: [50字内清晰描述]
4. **预期运行方式**: [命令行参数/配置文件/交互式]
5. **安全要求**: [是否需要处理敏感数据]
## 编码规范要求
- 字符编码: UTF-8 with BOM (Windows) / UTF-8 without BOM (Linux)
- 换行符: LF (Linux) / CRLF (Windows) - 请注明
- Python缩进: 4个空格
- Shell解释器: 明确指定 (#!/bin/bash 或 #!/usr/bin/env bash)
## 必须包含的功能模块
- [ ] 帮助文档 (-h/--help)
- [ ] 日志记录 (INFO/WARNING/ERROR级别)
- [ ] 错误处理 (try-catch/错误码返回)
- [ ] 参数验证
- [ ] 进度提示 (长时间任务)
- [ ] 版本信息 (-v/--version)
完整提问模板示例
请编写一个Python脚本,用于批量重命名指定目录下的图片文件。
## 脚本要求
**基础信息**:
- 目标系统: Linux (Ubuntu 20.04+) 和 Windows 10/11 双平台兼容
- Python版本: 3.8+
- 字符编码: UTF-8 (Linux用无BOM,Windows用UTF-8-BOM)
- 换行符: 根据平台自动适配
**功能要求**:
1. 支持按日期、序列号重命名
2. 支持文件格式过滤 (.jpg, .png, .gif)
3. 支持预览模式(不实际重命名)
**代码质量**:
1. 必须包含完整的argparse参数解析
2. 实现多级日志记录 (DEBUG, INFO, WARNING, ERROR)
3. 所有文件操作需要异常捕获和友好错误提示
4. 添加类型注解 (Type Hints)
5. 包含main()函数和if __name__ == "__main__"
**输出要求**:
1. 执行时显示进度条
2. 生成操作日志文件
3. 提供详细的帮助文档
请先提供脚本的整体结构,确认后再实现完整代码。
第二部分:Shell脚本特殊注意事项
Shell脚本必备要素提示
#!/usr/bin/env bash
# 脚本必须包含以下部分:
# 1. 严格的错误处理
set -euo pipefail
# 2. 函数注释规范
# 函数名: 描述
# 参数: $1 - 参数说明
# 返回值: 0成功, 非0失败
# 3. 颜色输出定义 (如需)
RED='\033[0;31m'
GREEN='\033[0;32m'
NC='\033[0m' # No Color
# 4. 日志函数
log_info() { echo -e "${GREEN}[INFO]${NC} $*"; }
log_error() { echo -e "${RED}[ERROR]${NC} $*" >&2; }
# 5. 帮助函数
show_help() {
cat << EOF
Usage: $(basename "$0") [OPTIONS]
Description: 脚本描述
Options:
-h, --help 显示此帮助信息
-v, --version 显示版本信息
-d, --debug 调试模式
EOF
}
# 6. 参数解析使用getopt或手动解析
跨平台Shell脚本提示要点
请编写一个跨平台的Shell脚本,特别注意:
1. 使用#!/usr/bin/env bash而不是#!/bin/bash
2. 避免使用Linux特有的命令(如realpath),或提供替代方案
3. 处理Windows路径分隔符与Linux的区别
4. 使用${VAR:-default}语法提供默认值
5. 检查命令是否存在: command -v cmd_name >/dev/null 2>&1
6. 临时文件使用mktemp,避免硬编码路径
第三部分:Python脚本规范化要求
Python脚本模板要求AI
"""
模块说明:清晰描述脚本功能
作者:AI生成 + 人工校验
版本:1.0.0
兼容性:Python 3.8+, 跨平台
"""
import sys
import os
import argparse
import logging
from typing import Optional, List
from pathlib import Path
# 日志配置
def setup_logging(log_level: str = "INFO") -> logging.Logger:
"""配置多级日志记录"""
logger = logging.getLogger(__name__)
# ... 详细实现
# 错误处理基类
class ScriptError(Exception):
"""自定义脚本异常"""
pass
def validate_args(args) -> bool:
"""参数验证"""
pass
def main() -> int:
"""主函数,返回退出码"""
parser = argparse.ArgumentParser(
description="脚本描述",
formatter_class=argparse.RawDescriptionHelpFormatter,
epilog="示例用法:\n python script.py --input /path"
)
# 参数定义
parser.add_argument("-i", "--input", required=True, help="输入文件")
try:
args = parser.parse_args()
if not validate_args(args):
return 1
# 主逻辑
return 0
except KeyboardInterrupt:
print("\n用户中断操作")
return 130
except Exception as e:
logging.error(f"执行失败: {str(e)}", exc_info=True)
return 1
if __name__ == "__main__":
sys.exit(main())
第四部分:扩展阅读 - AI编程工具对比分析
我目前了解 目前AI写代码的工具很多,目前了解基本都是收费的,如果由开源好用的,欢迎留言~
Cursor vs VSCode+AI插件 vs 自定义索引(我觉得目前这个最好)
| 特性维度 | Cursor | VSCode + AI插件 | 自定义索引+AI |
|---|---|---|---|
| 代码理解深度 | ⭐⭐⭐⭐ 完整项目理解 | ⭐⭐⭐ 文件级理解 | ⭐⭐⭐⭐⭐ 定制化理解 |
| 响应速度 | ⭐⭐⭐⭐ 快速 | ⭐⭐⭐ 中等 | ⭐⭐ 较慢(首次) |
| 准确率 | ⭐⭐⭐ 中等 | ⭐⭐ 依赖提示质量 | ⭐⭐⭐⭐ 高(针对训练数据) |
| 大型工程支持 | ⭐⭐⭐ 较好 | ⭐⭐ 一般 | ⭐⭐⭐⭐⭐ 优秀 |
| 学习成本 | ⭐ 低 | ⭐⭐ 中等 | ⭐⭐⭐⭐ 高 |
| 定制化程度 | ⭐⭐ 有限 | ⭐⭐⭐ 中等 | ⭐⭐⭐⭐⭐ 完全可控 |
各工具使用心得与最佳实践
1. Cursor 使用技巧
优点:开箱即用,代码补全智能
缺点:对大型项目理解有限
最佳实践:
- 开启"Cursor: Chat with files"功能
- 使用`.cursor/rules`目录定义项目规则
- 对于关键函数,先让AI阅读相关文件再编写
2. VSCode + GitHub Copilot/Claude
配置建议:
- 创建`.vscode/settings.json`定义项目规范
- 使用代码片段(Snippets)提高效率
- 配合GitLens理解代码历史
提示词技巧:
# 使用特定格式提问
// 要求:添加错误处理,包含日志记录
// 上下文:此函数用于文件上传
// 约束:必须兼容Python 3.8
3. 自定义索引 + OpenAI API/本地模型
实施步骤:
1. 创建项目知识库(Markdown文档)
2. 使用LlamaIndex或LangChain建立索引
3. 定义提示词模板
4. 设置RAG(检索增强生成)流程
索引文件结构:
/project_context/
├── api_docs.md # API文档
├── coding_standards.md # 编码规范
├── examples/ # 示例代码
└── architecture.md # 架构说明
大型工程中AI的局限性及应对策略
目前主流的免费的貌似都是128K左右。
常见问题:
-
上下文长度限制
- 解决方案:分模块提问,使用索引检索
-
理解复杂架构困难
- 解决方案:提供架构图文字描述,分层次解释
-
生成的代码与现有风格不符
- 解决方案:提供项目代码示例作为参考
-
第三方库版本兼容问题
- 解决方案:明确指定版本号,提供requirements.txt
高级使用模式 类似CICD文件 :
# AI编程工作流配置
workflow:
- phase: "需求澄清"
prompt_template: "基于以下需求编写{component}组件..."
context_files: ["docs/requirements.md"]
- phase: "代码生成"
temperature: 0.2 # 低随机性
constraints: ["遵循PEP8", "添加类型注解"]
- phase: "测试生成"
focus: "边界条件和异常处理"
第五部分:高效协作检查清单(可以再第一次生成后,直接复制给AI)
提交给AI前的自查项
- 是否明确指定了目标操作系统和版本?
- 是否说明了编码和换行符要求?
- 是否包含了错误处理需求?
- 是否要求了日志记录功能?
- 是否指定了帮助文档格式?
- 是否提供了示例输入输出?
- 是否说明了性能要求?
- 是否明确了第三方依赖?
AI生成代码后的验证项
- 在目标系统上测试编码问题
- 验证帮助文档完整性
- 测试边界情况和错误处理
- 检查日志输出是否合理
- 验证跨平台兼容性
- 检查安全敏感操作的处理
结论:建立可持续的AI协作流程
通过与AI的高效协作,我们可以将重复性编码工作自动化,但必须建立规范化流程:
- 创建团队共享的提示词库,积累最佳实践
- 建立代码审查清单,重点关注AI易错点
- 定期更新上下文文档,保持AI对项目的理解
- 混合使用多种AI工具,发挥各自优势
- 保持批判性思维,AI生成代码必须人工审核
记住:AI是强大的助手,但不是替代者。
清晰的规范、具体的需求、迭代的反馈,才是提升AI编程效率的关键。
扩展阅读
其实现在很多大厂已经走在了前面。
AI编程工作流行业应用现状全景报告
AI使用成熟度 层级表
类似汽车自动驾驶的使用水平。
| 应用层级 | 代表公司/团队 | 具体实践 | 成熟度 | 效果评估 |
|---|---|---|---|---|
| L1:片段级辅助 | 广大中小团队、传统企业IT部门、入门开发者 | 1. 问答式代码生成:在ChatGPT等平台提问获取代码片段。 2. 错误解释与调试:粘贴报错信息请求AI分析。 3. 代码翻译与转换:如将Python脚本转为Shell命令。 |
🟢 广泛普及 | 解决具体问题:能快速解决孤立的编码难题,降低学习门槛。 局限性:未形成方法论,代码与项目脱节,存在安全与质量隐患。 |
| L2:任务级辅助 | 大多数互联网公司(阿里、腾讯、美团等业务团队) | 1. IDE集成补全:使用GitHub Copilot等完成单行/函数补全。 2. 注释转代码:在IDE中编写注释,由AI生成对应代码块。 3. 单文件生成/重构:在编辑器内对话,生成完整工具类或重命名变量。 |
🟢 标配工具 | 成为开发者标配:显著提升日常编码效率,被视为“更强的IntelliSense”。 局限性:缺乏系统性,对项目架构、多文件上下文理解弱。 |
| L3:结构化工作流 | 前沿科技公司、中大型互联网企业核心团队(如Airbnb、字节跳动部分业务线) | 1. 分阶段评审流程:将AI生成代码纳入代码评审(CR)环节,强制人工审核。 2. 自定义提示词模板库:为常见任务(如生成API、DTO)建立标准提示词。 3. AI生成+人工测试:要求AI生成代码时必须同步生成单元测试,或由人工补充。 |
🟡 内部试点与推广 | 效率与质量并重:提升30-50% 功能开发效率,同时降低代码Review成本。 关键价值:将AI输出工程化,确保其可控、可审计,并与团队流程集成。 |
| L4:全流程自动化 | AI原生工具厂商、积极探索的极客团队(如使用GitHub Copilot Workspace) | 1. 需求→代码→部署链路:输入产品描述,AI自动拆解任务、编写代码、运行测试并提交。 2. 项目级多轮迭代:AI能理解整个代码库,根据新需求修改多处关联代码。 3. 自主智能体(Agent):AI可自主规划、执行如“修复漏洞”、“重构模块”等高级指令。 |
🟠 前沿探索/早期产品化 | 颠覆工作模式:适合绿地项目或独立功能模块,能快速产出原型。 当前局限:处理复杂业务逻辑和遗留系统时仍需大量人工干预,可靠性待验证。 |
不同行业 使用深度和场景 角度不同
不同行业因监管、技术基础差异,应用深度与场景角度显著不同。
| 行业领域 | AI工作流应用深度 | 典型应用场景 | 使用挑战 |
|---|---|---|---|
| 互联网/软件 | 🔵 深度应用,引领创新 | 1. 微服务模块生成:根据API定义快速生成CRUD代码。 2. 测试用例批量生成:为现有代码补充单元测试和边界Case。 3. 数据处理与运维脚本:编写部署、监控、日志分析脚本。 |
1. 代码质量一致性:生成的代码风格、设计模式需与项目统一。 2. 架构理解深度不足:AI难以把握复杂系统的深层设计意图。 |
| 金融科技 | 🟢 中度应用,安全优先 | 1. 数据分析与可视化脚本:用于内部报表、风险模型验证。 2. 合规与审计工具:自动化检查代码安全漏洞、敏感信息泄露。 3. 监控告警自动化:生成运维监控脚本。 |
1. 强安全合规限制:生成的代码需通过严格安全扫描,核心交易逻辑禁用。 2. 数据隐私要求:必须使用本地化部署的AI编码工具。 |
| 传统制造/能源 | 🟡 初步应用,场景驱动 | 1. 工业数据报表自动化:从数据库生成固定格式报告。 2. 设备监控脚本:解析传感器数据流,进行异常检测。 3. 数据清洗与预处理工具:处理实验和生产数据。 |
1. 领域知识壁垒高:需要将行业术语和流程转化为AI可理解的提示。 2. 定制化需求多:通用AI难以直接适应特定硬件、协议和遗留系统。 |
| 科研教育 | 🟢 中度应用,效率工具 | 1. 实验模拟代码生成:根据数学公式或流程描述生成Python/MATLAB代码。 2. 论文数据处理与绘图:自动化数据分析和图表绘制。 3. 教学案例创建:快速生成编程练习题或示例代码。 |
1. 领域知识缺乏:AI可能生成语法正确但科学原理错误的代码。 2. 验证成本高:生成的算法或模型需要研究者花费大量精力验证。 |
AI工具最佳实践表-这个也是本文的目的
决定AI编程工作流成败的,往往是非技术因素。
这句话在人类社会很耳熟: 决定XX某件事成败的,往往是非技术因素。
| 关键因素 | 影响程度 | 成功团队做法 | 失败团队教训 |
|---|---|---|---|
| 上下文管理 | ⭐⭐⭐⭐⭐ | 建立项目知识库:为AI提供架构图、API文档、业务术语表,让其理解项目全貌。 | 让AI“凭空想象”:仅给出模糊需求,导致生成代码完全脱离项目现有技术栈和架构。 |
| 分阶段控制 | ⭐⭐⭐⭐⭐ | 拆解任务,分步审核:将大需求拆为小步骤,每步生成后立即审核,确保方向正确。 | 追求“一键生成”:一次性要求AI生成整个模块,结果混乱不堪,修改成本高于重写。 |
| 质量标准前置 | ⭐⭐⭐⭐ | 明确定义规范:在提示词中强制要求代码风格、测试覆盖率、错误处理方式。 | 只关注功能实现:验收时只看“能不能跑”,忽视可读性、可维护性,积累大量技术债。 |
| 设置人工检查点 | ⭐⭐⭐⭐⭐ | 关键节点强制人工评审:架构设计、核心算法、数据库变更等必须由资深工程师把关。 | 完全信任AI输出:将未经审核的AI代码直接部署上线,导致线上事故或安全漏洞。 |
| 持续反馈优化 | ⭐⭐⭐⭐ | 建设提示词模板库:将生成效果好的提示词沉淀、共享、迭代,形成团队知识资产。 | 每次从零开始:每个开发者都用自己的话术提问,质量不稳定,团队无法积累有效经验。 |
团队实施路线图
这部分是AI生成的,复制粘贴,没有做修改;
值得商榷,AI关于落地部分永远考虑的比较简单。
不同规模的团队,应从适合自身复杂度的起点开始。
| 团队规模 | 推荐起点 | 预期效果 | 实施周期 |
|---|---|---|---|
| 1-3人小团队/个人 | 1. 脚本生成模板化:为常用运维、部署脚本建立标准提示词。 2. 搭建个人代码片段库:将AI生成的优质代码片段分类保存,以便复用。 |
减少重复劳动,将精力集中于核心业务逻辑。个人效率提升30% 左右。 | 1-2周:快速上手,立即见效。 |
| 5-10人项目组 | 1. 集成代码规范检查:在AI生成后自动运行Lint工具,确保风格统一。 2. 自动化测试生成:将“为这段代码生成单元测试”作为标准流程。 3. 代码审查辅助:使用AI初步分析CR中的代码,发现潜在问题。 |
统一代码风格,提升测试覆盖率,降低Review负担。形成初步协作规范。 | 1个月:需要制定简单的团队规范并进行短时间培训。 |
| 20人以上研发部门 | 1. 设计分层工作流:定义L2/L3不同场景的使用规范和审批流程。 2. 建设团队项目知识库:统一管理架构文档、领域模型,供AI调用。 3. 集成质量门禁:将AI生成代码的检查点接入CI/CD流水线。 |
标准化开发流程,确保AI输出的规模化质量可控。整体研发效率提升40%+。 | 2-3个月:涉及流程制定、工具链改造和人员培训。 |
| 企业级推广 | 1. 平台化工具建设:选型或自研统一AI编程平台,集成安全、合规控件。 2. 建立培训与认证体系:培养一批精通“AI编程协作”的种子工程师。 3. 沉淀最佳实践库:跨部门收集和推广成功用例与高效提示词模板。 |
形成企业级技术资产与安全标准,培养AI优先的工程师文化,构筑长期竞争力。 | 6个月以上:这是一项涉及技术、管理和文化的系统性工程。 |
常见风险与应对策略表
这个很重要:从专业角度综合识别并管理好风险,是成功引入AI工作流的前提。
| 风险类型 | 发生概率 | 影响程度 | 应对策略 |
|---|---|---|---|
| 代码质量与一致性下降 | 高 | 中高 | 1. 设置质量门禁:在CI中强制进行代码风格、复杂度、安全扫描。 2. 关键模块人工复审:核心业务代码、算法、数据库操作必须人工审核。 |
| 技术债隐形积累 | 中高 | 高 | 1. 将“可维护性”纳入需求:提示词中明确要求模块化、注释和文档。 2. 定期架构复审:周期性地由架构师检查AI生成代码的整体结构,防止腐化。 |
| 知识产权与信息安全泄露 | 中 | 极高 | 1. 使用本地化部署工具:选择支持私有化部署的商业产品或开源方案。 2. 建立代码审查制度:禁止将核心业务代码、密钥、算法上传至公有云AI服务。 |
| 团队技能依赖与退化 | 中 | 中高 | 1. 倡导“AI辅助,而非AI替代”:鼓励工程师深入理解AI生成的代码。 2. 开展针对性培训:培训重点从“怎么写代码”转向“怎么设计、评审和提示AI”。 |
欢迎大家留言,共勉~
既然不得不,那就跟上时代,学会向AI请教,学会如何管理自己的AI,学会如何用AI提高工作效率。
更多推荐


所有评论(0)