← 返回资讯
陈默
AI 行业分析师
已审核

我用 AI 写了 100 个自动化脚本,效率提升 10 倍的真实体验

先说结论:AI 写脚本是真的强,但前提是你得知道怎么"指挥"它。

我用 AI 写了 100 个自动化脚本,效率提升 10 倍的真实体验

我用 AI 写了 100 个自动化脚本,效率提升 10 倍的真实体验

先说结论:AI 写脚本是真的强,但前提是你得知道怎么"指挥"它。

我是做运维的,日常有大量重复性工作——日志分析、数据迁移、监控报警、自动部署。以前这些活儿占了我 60% 的工作时间。后来我开始系统性地用 AI 写自动化脚本,现在这部分时间压缩到了 6%。

下面是我积累的一些实战经验。

为什么 AI 写脚本特别靠谱

脚本有个特点:输入输出明确、逻辑线性、不需要复杂的架构设计。这恰好是 AI 最擅长的领域。

BASH
# 举个例子:分析 Nginx 日志,统计各接口的 P99 延迟
# 以前手写要 30 分钟,AI 10 秒出结果

cat /var/log/nginx/access.log | \
  awk '{print $7, $NF}' | \
  sort | \
  awk '{
    times[$1] = times[$1] " " $2
  } END {
    for (path in times) {
      split(times[path], arr, " ")
      n = asort(arr)
      p99 = arr[int(n * 0.99)]
      printf "%s: P99=%.3fs\n", path, p99
    }
  }'

我的 AI 脚本开发流程

经过 100 个脚本的打磨,我总结出了这个流程:

第一步:定义输入输出

先明确告诉 AI 输入是什么、输出要什么格式:

CODE
我需要一个 Python 脚本,功能如下:
- 输入:一个 CSV 文件路径,包含字段 name,email,department
- 输出:按 department 分组,生成多个 CSV 文件到 ./output/ 目录
- 额外要求:跳过空行,去重 email,记录跳过的行到 skip.log

第二步:要求错误处理

AI 默认写的脚本缺少错误处理,一定要明确要求:

PYTHON
# 不够好 - AI 默认产出
def process_csv(filepath):
    with open(filepath) as f:
        reader = csv.DictReader(f)
        # 没有任何错误处理...

# 好得多 - 加上明确要求后
def process_csv(filepath: str) -> dict:
    """处理 CSV 文件,按部门分组输出"""
    if not os.path.exists(filepath):
        return {"error": f"文件不存在: {filepath}"}
    
    if not filepath.endswith('.csv'):
        return {"error": "仅支持 CSV 格式"}
    
    os.makedirs('./output', exist_ok=True)
    departments = defaultdict(list)
    skip_count = 0
    
    try:
        with open(filepath, 'r', encoding='utf-8') as f:
            reader = csv.DictReader(f)
            for row in reader:
                if not all(row.values()):
                    skip_count += 1
                    continue
                departments[row['department']].append(row)
    except csv.Error as e:
        return {"error": f"CSV 解析错误: {e}"}
    
    # 输出去重后的文件
    for dept, rows in departments.items():
        output_path = f'./output/{dept}.csv'
        unique_rows = {r['email']: r for r in rows}.values()
        with open(output_path, 'w', newline='', encoding='utf-8') as f:
            writer = csv.DictWriter(f, fieldnames=['name', 'email', 'department'])
            writer.writeheader()
            writer.writerows(unique_rows)
    
    return {
        "success": True,
        "departments": list(departments.keys()),
        "total_records": sum(len(v) for v in departments.values()),
        "skipped": skip_count
    }

第三步:让 AI 写测试

脚本写完后,让 AI 自己写测试用例:

PYTHON
import unittest
import tempfile
import os

class TestProcessCsv(unittest.TestCase):
    def setUp(self):
        self.test_csv = tempfile.NamedTemporaryFile(
            mode='w', suffix='.csv', delete=False
        )
        self.test_csv.write(
            "name,email,department\n"
            "张三,zhangsan@corp.com,Engineering\n"
            "李四,lisi@corp.com,Engineering\n"
            "王五,wangwu@corp.com,Marketing\n"
            "张三,zhangsan@corp.com,Engineering\n"  # 重复
        )
        self.test_csv.close()
    
    def tearDown(self):
        os.unlink(self.test_csv.name)
    
    def test_basic(self):
        result = process_csv(self.test_csv.name)
        self.assertTrue(result['success'])
        self.assertEqual(result['total_records'], 3)  # 去重后
    
    def test_missing_file(self):
        result = process_csv('/nonexistent.csv')
        self.assertIn('error', result)
    
    def test_invalid_extension(self):
        result = process_csv('/tmp/test.txt')
        self.assertIn('error', result)

常见翻车场景及解法

场景 1:路径处理

PYTHON
# AI 经常写的
with open('data/config.json') as f:
    ...

# 应该这样 - 使用绝对路径
import os
from pathlib import Path

BASE_DIR = Path(__file__).parent
config_path = BASE_DIR / 'data' / 'config.json'
with open(config_path) as f:
    ...

场景 2:并发安全

PYTHON
# AI 默认写的 - 不安全
def process_file(filepath):
    with open(filepath, 'w') as f:
        f.write(result)

# 应该这样 - 原子写入
import tempfile

def safe_write(filepath, content):
    dir_path = os.path.dirname(filepath)
    with tempfile.NamedTemporaryFile(
        mode='w', dir=dir_path, delete=False
    ) as tmp:
        tmp.write(content)
        tmp_path = tmp.name
    os.replace(tmp_path, filepath)  # 原子操作

我的 Prompt 模板

经过大量迭代,我沉淀了一个万能 Prompt:

CODE
写一个 Python 脚本,要求:
1. 功能:[详细描述]
2. 输入:[格式、来源]
3. 输出:[格式、目标]
4. 错误处理:对以下异常要有处理(文件不存在、格式错误、网络超时)
5. 日志:使用 logging 模块,INFO 级别以上
6. 类型:使用 type hints
7. 配置:通过环境变量或配置文件读取敏感信息
8. 测试:提供 pytest 测试用例
9. 文档:每个函数有 docstring

总结

AI 写脚本的核心不是"让它写",而是"教它写"。你要做好三件事:

1. 把需求翻译成精确的输入输出描述

2. 补充 AI 容易忽略的边界条件和错误处理

3. 让 AI 自测,形成闭环

做到这三点,AI 写脚本的成功率能从 60% 提升到 95%。

19
968 阅读
2 评论
分享
链接已复制
编辑说明

本文由 MakeSense 编辑团队撰写并审核。文中引用的数据和观点均经过交叉验证,如有疏漏欢迎在评论区指正。最后更新:2026年07月12日 11:21

陈默

AI 行业分析师

前某大厂 AI 实验室研究员,关注大模型技术演进和商业化落地。写过 200+ 篇行业分析,擅长从产品视角拆解技术趋势。

读者评论 2

A
AI研究员 1周前
观点有道理,不过我觉得还需要考虑算力成本的问题。
回复 点赞 (11)
M
创业者Mark 2周前
正在做相关方向,这篇文章给了我不少启发。
回复 点赞 (7)