一、背景:当AI接手软件开发,会发生什么?

想象这样一个场景:你有一个软件开发的好点子,比如“做一个待办事项的API(应用程序接口)”。你只需要把这个想法告诉AI,剩下的所有事情——创建代码仓库、搭建项目框架、编写代码、写测试、配置自动化流水线、生成安装包,甚至把安装包发布到指定服务器——都由AI自动完成。最终,你只需要等着收“安装包”就行。

这篇文章就是想通过一个真实的例子,展示如何用AI(这里用的是Claude Code)实现这个“一句话需求,自动出软件”的流程。为了让大家看得更明白,我们会简化一些配置,比如没有用复杂的配置文件来管理GitLab(一个代码托管平台)的登录信息,但核心思路完全保留。

为什么要这么做?
传统软件开发中,程序员需要手动完成大量重复工作:搭框架、配CI/CD(持续集成/持续交付)、写测试……这些工作不仅耗时,还容易出错。如果AI能自动完成,开发者就能把精力集中在更有创造性的需求分析和代码逻辑上,大大提升效率。


二、效果图:看看AI都干了哪些活

为了让结果更直观,我们先来看看AI自动生成的成果。下面这些截图和文件列表,展示了整个自动化流程的输出。

1. 生成的项目文件结构

运行 tree 命令,可以看到AI创建了一个标准的Python项目目录,包含源代码、测试、构建包、文档等:

root@demo:/app/autodevops# tree
.
├── build               # 构建过程中生成的临时文件夹
├── dist                # 生成的wheel安装包存放处
├── docs                # 项目文档,这里放了设计文档和实现计划
│   └── plans
│       ├── 2026-03-17-todo-api-design.md
│       └── 2026-03-17-todo-api-implementation.md
├── pyproject.toml      # Python项目的配置文件(相当于项目的“身份证”)
├── README.md           # 项目说明文件
├── release             # 最终要发布的安装包(从dist复制过来)
│   └── todo_api-0.1.0-py3-none-any.whl
├── src                 # 源代码目录
│   └── todo_api        # 我们的待办事项API主模块
│       ├── __init__.py
│       └── main.py     # 核心代码
├── tests               # 单元测试目录
│   ├── __pycache__     # Python编译的缓存文件
│   └── test_main.py    # 测试代码
└── todos.db            # 测试用的SQLite数据库文件

简单解释:

  • src 里放的是你写的API代码。
  • tests 里是自动生成的测试代码,用来确保API正确运行。
  • distrelease 里是生成的安装包(wheel文件),你可以直接把它发给别人安装。
  • docs 里是AI写的设计文档,记录需求分析和实现思路。

2. CI/CD流水线截图

CI/CD(持续集成/持续交付)是一条自动化流水线。每次你提交代码,GitLab Runner(一个执行任务的小工具)就会自动运行测试、构建包、发布。下图是流水线的两个阶段:

  • 第一个截图展示了流水线执行成功,每个步骤都打了绿色对勾。
  • 第二个截图是流水线的详细日志,可以看到它执行了哪些命令,比如安装依赖、运行测试、打包等。

请添加图片描述
请添加图片描述

3. GitLab上的仓库

AI自动把代码推送到了GitLab仓库,并配置好了CI/CD:

  • 仓库主页显示项目文件,并且CI/CD状态是“passed”(通过)。
  • Issues(问题)页面显示AI自动创建和关闭了两个issue(问题),用来跟踪任务进度。

请添加图片描述

请添加图片描述

4. 版本发布到指定服务器

最后一步,AI通过curl命令把生成的安装包上传到了一个指定的服务器上。下图是服务器接收文件的日志:

请添加图片描述


三、准备工作:在GitLab上搭好舞台

在AI开始工作之前,我们需要先在GitLab上创建空白仓库,并配置好GitLab Runner(相当于给流水线配一个“工人”)。这些操作只需要做一次,后续AI就可以重复使用。

1. 创建空的GitLab仓库

在GitLab上新建一个项目,比如 todo-api,保持为空。记录下项目ID和仓库地址,后面会用到。

2. 安装并注册GitLab Runner

GitLab Runner是一个轻量级服务,负责执行CI/CD任务。我们需要在一台机器(或容器)上安装它,并让它和GitLab建立联系。

第一步:获取注册token
在GitLab仓库的 Settings > CI/CD > Runners 里找到注册token。这个token是Runner和GitLab之间的“密码”。

第二步:安装Runner
在Ubuntu机器上执行以下命令:

# 下载GitLab Runner的安装包
curl -LJO "https://gitlab-runner-downloads.s3.amazonaws.com/latest/deb/gitlab-runner_amd64.deb"
# 安装
dpkg -ivh gitlab-runner_amd64.deb

第三步:注册Runner
使用刚才获取的token,将Runner注册到GitLab:

gitlab-runner register \
  --url "http://<你的GitLab服务器地址>:3080/" \
  --registration-token "GR1348941pikmZyPJ9Fnysb1tc6z_"   # 替换成你的token

注册过程中会要求选择执行器(executor),我们选择 docker,并指定默认镜像为 python:3.12。这样每次运行流水线时,都会在一个全新的Python 3.12容器中执行。

第四步:修改配置解决克隆问题
由于网络原因,有时Runner从GitLab克隆代码会失败。需要修改Runner配置文件 /etc/gitlab-runner/config.toml,增加 clone_url 字段,指向GitLab的访问地址:

[[runners]]
  name = "my-runner"
  url = "http://<GitLab服务器地址>:3080/"
  clone_url = "http://<GitLab服务器地址>:3080/"   # 加上这一行
  token = "glrtr-PwMctDNIbgVBf4T9qM9-JG86MQpwOmcKdDozCw"
  executor = "docker"
  [runners.docker]
    image = "python:3.12"
    ...

第五步:启动Runner并验证

gitlab-runner start
gitlab-runner status   # 应该显示 running

回到GitLab的Runner页面,你会看到刚刚注册的Runner状态变为绿色(可用)。


四、给AI的提示词:清晰的需求说明书

现在舞台已经搭好,轮到AI登场了。我们需要给它一份详细的“任务说明书”,告诉它要做什么。下面就是给Claude Code的提示词原文,我会在每段旁边加上“为什么这么写”的解释。

(一)需求描述

为什么需要这节?
AI必须清楚你要开发什么,用什么技术。所以先定义清楚。

### 1、环境
- 开发语言:python
- 运行环境:Ubuntu 24.04 LTS、Python 3.12
- 技术选型:FastAPI
  • 开发语言:Python是AI需要使用的编程语言。
  • 运行环境:最终代码会在Ubuntu 24.04 + Python 3.12上运行,所以AI要保证兼容性。
  • 技术选型:FastAPI是一个现代Python Web框架,用来快速构建API。
### 2、功能介绍
- 待办事项REST API: 创建、读取、更新、删除 (CRUD)。
- 本项目旨在验证自动化端到端全流程,功能上不需要复杂的设计。
  • 功能:CRUD是最经典的API示例,简单但完整。用来演示流程足够了。
  • 目的:再次强调,这不是一个复杂项目,重点是演示自动化流程。

(二)代码管理

为什么需要这节?
AI需要知道代码存放到哪里,以及如何与GitLab交互。

### 1、gitlab配置
GITLAB_URL=http://<GitLab服务器地址>:3080
GITLAB_TOKEN=glpat-d1825zPNKKHWxhajtNGu
代码仓库: http://<GitLab服务器地址>:3080/autodevops/todo-api.git
gitlab用户名:XXX
gitlab密码: XXX
  • GITLAB_URL:GitLab的访问地址。
  • GITLAB_TOKEN:私有访问令牌,相当于AI的“密码”,用来调用GitLab API。
  • 代码仓库:要操作的仓库地址。
  • 用户名/密码:备用登录方式(实际项目中更推荐用token)。
### 2、gitlab issues管理
* 创建issues
curl --request POST --header "PRIVATE-TOKEN: glpat-d1825zPNKKHWxhajtNGu" \
	--data "title=测试&description=测试issue" \
	"http://<GitLab服务器地址>:3080/api/v4/projects/<仓库ID>/issues"

* 查询打开的issues
curl --header "PRIVATE-TOKEN: glpat-d1825zPNKKHWxhajtNGu" \
		 --url "http://<GitLab服务器地址>:3080/api/v4/projects/<仓库ID>/issues?state=opened"
* 关闭issues
curl --request PUT --header "PRIVATE-TOKEN: glpat-d1825zPNKKHWxhajtNGu" --data "state_event=close" \
	--url "http://<GitLab服务器地址>:3080/api/v4/projects/<仓库ID>/issues/1"
  • 这些curl命令演示了如何通过GitLab API操作issues。AI可以用它们自动创建任务、跟踪进度、最后关闭完成的任务。这样整个开发过程都记录在GitLab里,便于追溯。

(三)项目管理要求

为什么需要这节?
这是整个自动化的核心,告诉AI要完成哪些具体任务,每个任务怎么做。

根据功能需求,构建一个从零开始的软件项目,涵盖版本控制、框架搭建、测试驱动开发、CI/CD集成及发布包生成的全流程。具体要求如下:
  • 1. Git仓库管理
    • 使用gitlab配置信息里的todo-api仓库(目前为空)
    • 整个开发过程使用Git进行版本控制,提交信息清晰规范。

解释:AI要像一个负责任的开发者,把每一步改动都提交到Git,并写清楚提交信息,方便以后查看历史。

  • 2. 测试用例与单元测试
    • 编写核心功能的测试用例(单元测试),使用pytest测试框架。
    • 确保测试覆盖关键业务逻辑,并包含边界情况。

解释:测试是为了保证代码正确性。AI要自动生成测试代码,比如测试创建待办事项时,传入非法数据API能不能正确处理。这样后续修改代码时,一跑测试就知道有没有破坏原有功能。

  • 3. GitLab Issue集成
    • 在GitLab中为项目创建Issue模板,用于记录和跟踪bug。
    • 配置流程,使得代码提交可以关联Issue(例如在提交信息中引用Issue ID)。

解释:在GitLab里创建issue(问题),可以像待办事项一样管理任务。AI创建issue后,后续的代码提交可以关联这些issue(比如提交信息里写“Closes #1”),这样issue会自动关闭,开发进度一目了然。

  • 4. CI/CD自动化测试
    • 配置CI/CD流水线(如GitLab CI),在每次推送时自动运行所有单元测试。
    • 流水线应包含测试阶段,并生成测试报告(可选)。

解释:配置 .gitlab-ci.yml 文件,告诉GitLab Runner每次代码推送后做什么。比如先安装依赖,再运行 pytest。如果测试失败,流水线会红掉,提醒你代码有问题。

  • 5. 发布包生成与归档
    • 当所有测试通过后,流水线自动构建发布包(Python的wheel包)。
    • 将生成的发布包上传到服务器:curl -F "file=@release/<文件名>" http://<发布包服务器>:8000/<当前日期>/<文件名>

解释:测试通过后,AI会自动用 python -m build 生成wheel包(一种Python安装包格式)。然后通过curl命令上传到指定的发布服务器,这样其他人就可以直接下载安装了。

  • 6. 任务完成确认
    • 所有步骤完成后,输出一条明确的消息

解释:这是给用户的最终反馈,告诉你一切都搞定,可以去拿安装包了。

请以清晰、可执行的步骤输出整个过程的详细说明,包括所需的命令、代码片段、配置文件示例(如 `.gitlab-ci.yml`、测试文件、主程序文件等),并确保符合现代软件开发最佳实践。

(四)注意事项

  • 如果使用gitlab SDK,请将SDK返回URL中的IP修改为<GitLab服务器地址>(内外网不一样)
  • CI/CD使用python:3.12镜像

解释:因为内外网IP可能不同,直接使用SDK返回的IP可能导致访问失败,需要替换为可访问的地址。另外明确流水线容器镜像,保证环境一致。


五、结语:让AI成为你的开发助手

通过这个例子,我们看到AI不仅能写代码,还能自动完成整个软件开发流程:从初始化项目、写测试、配CI/CD,到最终生成安装包并发布。你只需要清晰地描述需求,剩下的交给AI。

当然,这只是一个开端。随着AI能力的增强,未来我们可能只需要说一句话,AI就能自动拆解需求、设计架构、编写代码、测试、部署……整个软件工程将进入“自动驾驶”时代。

如果你也想尝试,可以按照上面的步骤准备环境,然后给AI一份类似的提示词,看看它能不能为你自动构建一个项目。欢迎在评论区分享你的实践成果!


:本文中的所有IP地址、token等均为示例,实际操作时请替换为你自己的真实信息。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐