上一篇 下一篇 分享链接 返回 返回顶部

把 AI 接进研发流水线:从代码生成到自动提交的一套完整工作流命令

发布人:慈云数据-客服中心 发布时间:24小时前 阅读量:4

AI编程 工作流自动化教程|附完整命令

在 AI 编程时代,真正拉开效率差距的并不只是“会不会使用 ChatGPT、Claude、Cursor、Copilot”,而是能否把 AI 能力嵌入到日常研发流程中,形成一套稳定、可复用、可自动执行的工作流。

很多开发者使用 AI 的方式仍然停留在“复制代码、粘贴问题、等待回答”的阶段。这种方式虽然能提升局部效率,但并不能真正改变软件开发流程。更高效的方式是:让 AI 参与需求拆解、代码生成、代码审查、测试生成、文档维护、提交信息生成、CI 检查、自动部署等环节,并通过脚本、命令行工具、Git Hooks、CI/CD 平台把这些动作串起来。

本文将以一个典型的 Web 项目为例,讲解如何搭建一套 AI 编程工作流自动化方案,并附上完整命令,帮助你把 AI 从“聊天工具”升级为“研发流水线助手”。


一、适用场景

这套工作流适合以下人群:

  • 独立开发者,希望提升项目开发效率;
  • 前端、后端、全栈工程师,希望把重复工作自动化;
  • 技术团队负责人,希望统一代码规范和提交流程;
  • 正在使用 Cursor、GitHub Copilot、Claude Code、OpenAI API 等 AI 工具的开发者;
  • 希望用 AI 辅助生成测试、文档、提交信息和代码审查的团队。

本文示例以 Node.js 项目为主,但思想同样适用于 Python、Go、Java、PHP、Rust 等技术栈。


二、整体工作流设计

一个完整的 AI 编程自动化工作流可以分为以下几个阶段:

需求输入
  ↓
AI 拆解任务
  ↓
生成开发计划
  ↓
自动创建分支
  ↓
AI 辅助编码
  ↓
格式化与静态检查
  ↓
自动生成测试
  ↓
运行测试
  ↓
AI 代码审查
  ↓
生成提交信息
  ↓
Git 提交
  ↓
CI/CD 自动构建与部署

在实际落地时,我们不一定一次性实现所有环节。建议先从以下几个最有价值的自动化点开始:

  1. 自动初始化项目;
  2. 自动格式化代码;
  3. 自动运行测试;
  4. 自动生成 Git Commit Message;
  5. 自动进行 AI Code Review;
  6. 自动生成接口文档或 README;
  7. 在 CI 中强制检查质量。

三、准备环境

本文默认你已经安装以下工具:

  • Git
  • Node.js 18+
  • npm / pnpm
  • VS Code 或 Cursor
  • 一个可用的 AI API Key,例如 OpenAI、Claude、DeepSeek、通义千问等

1. 检查基础环境

node -v
npm -v
git --version

如果你使用 pnpm,可以先安装:

npm install -g pnpm
pnpm -v

2. 创建示例项目

这里以 Vite + TypeScript 项目为例。

pnpm create vite ai-workflow-demo --template react-ts
cd ai-workflow-demo
pnpm install

启动项目:

pnpm dev

四、安装代码规范工具

自动化工作流的基础是统一代码规范。否则 AI 生成的代码风格不一致,项目很快会变得混乱。

我们安装 ESLint、Prettier、lint-staged 和 Husky。

pnpm add -D eslint prettier eslint-config-prettier eslint-plugin-react-hooks eslint-plugin-react-refresh
pnpm add -D husky lint-staged

初始化 ESLint:

pnpm create @eslint/config

如果你希望手动配置,也可以创建 eslint.config.js

示例配置如下:

import js from '@eslint/js'
import globals from 'globals'
import reactHooks from 'eslint-plugin-react-hooks'
import reactRefresh from 'eslint-plugin-react-refresh'
import tseslint from 'typescript-eslint'

export default tseslint.config(
  { ignores: ['dist'] },
  {
    extends: [js.configs.recommended, ...tseslint.configs.recommended],
    files: ['**/*.{ts,tsx}'],
    languageOptions: {
      ecmaVersion: 2020,
      globals: globals.browser,
    },
    plugins: {
      'react-hooks': reactHooks,
      'react-refresh': reactRefresh,
    },
    rules: {
      ...reactHooks.configs.recommended.rules,
      'react-refresh/only-export-components': [
        'warn',
        { allowConstantExport: true },
      ],
    },
  },
)

创建 .prettierrc

{
  "semi": false,
  "singleQuote": true,
  "printWidth": 100,
  "trailingComma": "all"
}

创建 .prettierignore

dist
node_modules
coverage
pnpm-lock.yaml

package.json 中添加脚本:

{
  "scripts": {
    "dev": "vite",
    "build": "tsc -b && vite build",
    "preview": "vite preview",
    "lint": "eslint .",
    "format": "prettier --write .",
    "format:check": "prettier --check ."
  }
}

执行检查:

pnpm lint
pnpm format

五、配置 Git Hooks:提交前自动检查

Git Hooks 可以在代码提交前自动执行命令,例如格式化、Lint、测试等。

初始化 Husky:

pnpm exec husky init

配置 lint-staged

package.json 中添加:

{
  "lint-staged": {
    "*.{js,jsx,ts,tsx}": [
      "eslint --fix",
      "prettier --write"
    ],
    "*.{json,md,css,scss}": [
      "prettier --write"
    ]
  }
}

修改 .husky/pre-commit

pnpm exec lint-staged

如果还希望提交前执行测试,可以写成:

pnpm exec lint-staged
pnpm test

此时,每次执行:

git add .
git commit -m "feat: init project"

都会自动触发格式化和静态检查。


六、接入 AI 命令行能力

接下来我们封装一个简单的 AI 命令行脚本,用于生成提交信息、解释代码变更、生成测试建议等。

这里以 OpenAI API 为例,你也可以替换成其他模型服务。

1. 安装依赖

pnpm add -D dotenv
pnpm add openai

创建 .env 文件:

touch .env

写入:

OPENAI_API_KEY=你的_API_Key
OPENAI_MODEL=gpt-4o-mini

注意:不要把 .env 提交到 Git 仓库。

创建 .gitignore

node_modules
dist
coverage
.env

七、编写 AI Commit Message 生成脚本

创建目录:

mkdir -p scripts
touch scripts/ai-commit.mjs

写入以下代码:

import 'dotenv/config'
import OpenAI from 'openai'
import { execSync } from 'node:child_process'

const client = new OpenAI({
  apiKey: process.env.OPENAI_API_KEY,
})

const model = process.env.OPENAI_MODEL || 'gpt-4o-mini'

function getGitDiff() {
  try {
    return execSync('git diff --cached', { encoding: 'utf-8' })
  } catch (error) {
    console.error('读取 git diff 失败:', error.message)
    process.exit(1)
  }
}

const diff = getGitDiff()

if (!diff.trim()) {
  console.log('没有检测到暂存区变更,请先执行 git add .')
  process.exit(0)
}

const prompt = `
你是一名资深软件工程师,请根据以下 Git 暂存区 diff 生成一个符合 Conventional Commits 规范的中文提交信息。

要求:
1. 格式必须为:type(scope): subject
2. type 可选:feat、fix、docs、style、refactor、test、chore、perf、build、ci
3. subject 使用简洁中文,不超过 50 个字
4. 如果有必要,可以在下一行补充 1-3 条说明
5. 不要输出多余解释

以下是 diff:

${diff}
`

const response = await client.chat.completions.create({
  model,
  messages: [
    {
      role: 'user',
      content: prompt,
    },
  ],
  temperature: 0.2,
})

console.log(response.choices[0].message.content.trim())

package.json 中添加脚本:

{
  "scripts": {
    "commit:ai": "node scripts/ai-commit.mjs"
  }
}

使用方式:

git add .
pnpm commit:ai

如果输出如下:

feat(app): 初始化 React TypeScript 项目结构

就可以直接提交:

git commit -m "feat(app): 初始化 React TypeScript 项目结构"

八、自动提交脚本:生成信息并提交

如果你希望进一步自动化,可以编写一个脚本:自动读取 AI 生成的提交信息并执行 git commit

创建文件:

touch scripts/auto-commit.mjs

写入:

import 'dotenv/config'
import OpenAI from 'openai'
import { execSync } from 'node:child_process'

const client = new OpenAI({
  apiKey: process.env.OPENAI_API_KEY,
})

const model = process.env.OPENAI_MODEL || 'gpt-4o-mini'

function run(command) {
  return execSync(command, { encoding: 'utf-8' }).trim()
}

const diff = run('git diff --cached')

if (!diff) {
  console.log('没有暂存区变更,请先执行:git add .')
  process.exit(0)
}

const prompt = `
请根据下面的 git diff 生成一个 Conventional Commits 风格的提交信息。

规则:
- 只输出一行
- 中文
- 格式:type(scope): subject
- 不超过 50 字
- 不要 Markdown

diff:
${diff}
`

const response = await client.chat.completions.create({
  model,
  messages: [{ role: 'user', content: prompt }],
  temperature: 0.2,
})

const message = response.choices[0].message.content.trim().replaceAll('"', '\\"')

console.log(`AI 生成提交信息:${message}`)

run(`git commit -m "${message}"`)
console.log('提交完成')

添加脚本:

{
  "scripts": {
    "commit:auto": "node scripts/auto-commit.mjs"
  }
}

完整使用流程:

git status
git add .
pnpm commit:auto

九、AI Code Review 自动化

除了生成提交信息,AI 更适合用于代码审查。我们可以让 AI 基于当前变更输出潜在问题、重构建议、安全风险和测试建议。

创建文件:

touch scripts/ai-review.mjs

写入:

import 'dotenv/config'
import OpenAI from 'openai'
import { execSync } from 'node:child_process'

const client = new OpenAI({
  apiKey: process.env.OPENAI_API_KEY,
})

const model = process.env.OPENAI_MODEL || 'gpt-4o-mini'

function getDiff() {
  return execSync('git diff --cached', { encoding: 'utf-8' })
}

const diff = getDiff()

if (!diff.trim()) {
  console.log('没有暂存区变更,请先执行 git add .')
  process.exit(0)
}

const prompt = `
你是一名严格的高级代码审查工程师,请对以下 git diff 做 Code Review。

请从以下角度审查:
1. 是否存在明显 Bug
2. 是否存在类型问题或边界条件问题
3. 是否存在性能问题
4. 是否存在安全风险
5. 是否需要补充测试
6. 是否有更清晰的重构建议

输出格式:
## 总体评价
## 主要问题
## 优化建议
## 测试建议

如果没有明显问题,也请说明“未发现严重问题”。

diff:
${diff}
`

const response = await client.chat.completions.create({
  model,
  messages: [{ role: 'user', content: prompt }],
  temperature: 0.3,
})

console.log(response.choices[0].message.content)

添加脚本:

{
  "scripts": {
    "review:ai": "node scripts/ai-review.mjs"
  }
}

使用方式:

git add .
pnpm review:ai

建议你在提交前执行:

pnpm lint
pnpm build
pnpm review:ai
pnpm commit:auto

十、自动生成测试建议

AI 编程中,一个非常重要的实践是:不要只让 AI 写业务代码,也要让 AI 生成测试用例。测试能有效约束 AI 代码质量,减少“看起来能跑、实际上有坑”的问题。

安装测试框架 Vitest:

pnpm add -D vitest jsdom @testing-library/react @testing-library/jest-dom @testing-library/user-event

修改 package.json

{
  "scripts": {
    "test": "vitest",
    "test:run": "vitest run",
    "test:coverage": "vitest run --coverage"
  }
}

创建 src/setupTests.ts

import '@testing-library/jest-dom'

修改 vite.config.ts

import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'

export default defineConfig({
  plugins: [react()],
  test: {
    environment: 'jsdom',
    setupFiles: './src/setupTests.ts',
  },
})

运行测试:

pnpm test

如果要让 AI 基于当前变更给出测试建议,可以复用前面的 ai-review.mjs,也可以创建单独脚本。

touch scripts/ai-test-plan.mjs

代码如下:

import 'dotenv/config'
import OpenAI from 'openai'
import { execSync } from 'node:child_process'

const client = new OpenAI({
  apiKey: process.env.OPENAI_API_KEY,
})

const diff = execSync('git diff --cached', { encoding: 'utf-8' })

if (!diff.trim()) {
  console.log('没有暂存区变更,请先执行 git add .')
  process.exit(0)
}

const prompt = `
请根据以下代码变更生成测试计划。

要求:
1. 列出需要新增或修改的测试文件
2. 列出核心测试用例
3. 标明边界条件
4. 如果适合,请给出 Vitest + Testing Library 示例代码
5. 使用中文输出

diff:
${diff}
`

const response = await client.chat.completions.create({
  model: process.env.OPENAI_MODEL || 'gpt-4o-mini',
  messages: [{ role: 'user', content: prompt }],
  temperature: 0.2,
})

console.log(response.choices[0].message.content)

添加脚本:

{
  "scripts": {
    "test:ai-plan": "node scripts/ai-test-plan.mjs"
  }
}

执行:

git add .
pnpm test:ai-plan

十一、自动生成项目文档

开发过程中,README、接口说明、组件说明经常滞后。我们可以让 AI 根据项目结构和关键文件自动生成文档草稿。

创建文件:

touch scripts/ai-docs.mjs

写入:

import 'dotenv/config'
import OpenAI from 'openai'
import { execSync } from 'node:child_process'
import fs from 'node:fs'

const client = new OpenAI({
  apiKey: process.env.OPENAI_API_KEY,
})

function run(command) {
  return execSync(command, { encoding: 'utf-8' })
}

const tree = run('find src -maxdepth 3 -type f | sort')

let content = ''

for (const file of tree.split('\n').filter(Boolean)) {
  if (file.endsWith('.ts') || file.endsWith('.tsx')) {
    content += `\n\n--- FILE: ${file} ---\n`
    content += fs.readFileSync(file, 'utf-8').slice(0, 3000)
  }
}

const prompt = `
请根据以下项目文件结构和部分源码,生成一份中文 README 文档草稿。

要求包含:
1. 项目简介
2. 技术栈
3. 目录结构
4. 本地启动方式
5. 常用命令
6. 开发规范
7. 后续优化建议

项目内容:
${content}
`

const response = await client.chat.completions.create({
  model: process.env.OPENAI_MODEL || 'gpt-4o-mini',
  messages: [{ role: 'user', content: prompt }],
  temperature: 0.3,
})

fs.writeFileSync('README.ai.md', response.choices[0].message.content)
console.log('已生成 README.ai.md')

添加命令:

{
  "scripts": {
    "docs:ai": "node scripts/ai-docs.mjs"
  }
}

执行:

pnpm docs:ai

十二、封装一键工作流命令

当脚本逐渐增多后,我们需要把常用动作组合成一条命令。

package.json 中整理脚本:

{
  "scripts": {
    "dev": "vite",
    "build": "tsc -b && vite build",
    "preview": "vite preview",

    "lint": "eslint .",
    "format": "prettier --write .",
    "format:check": "prettier --check .",

    "test": "vitest",
    "test:run": "vitest run",
    "test:coverage": "vitest run --coverage",

    "commit:ai": "node scripts/ai-commit.mjs",
    "commit:auto": "node scripts/auto-commit.mjs",
    "review:ai": "node scripts/ai-review.mjs",
    "test:ai-plan": "node scripts/ai-test-plan.mjs",
    "docs:ai": "node scripts/ai-docs.mjs",

    "check": "pnpm format:check && pnpm lint && pnpm test:run && pnpm build",
    "ai:before-commit": "pnpm review:ai && pnpm test:ai-plan",
    "ship": "pnpm check && pnpm docs:ai"
  }
}

常用命令如下:

pnpm check

用于提交前质量检查。

pnpm ai:before-commit

用于提交前 AI 审查和测试计划生成。

pnpm ship

用于发布前完整检查和文档生成。

推荐的开发流程是:

git checkout -b feat/user-profile
pnpm dev

# 完成功能开发后
pnpm format
git add .
pnpm ai:before-commit
pnpm check
pnpm commit:auto

十三、配置 GitHub Actions 自动检查

本地检查不能完全依赖开发者自觉,因此还需要在远程仓库配置 CI。

创建目录:

mkdir -p .github/workflows
touch .github/workflows/ci.yml

写入:

name: CI

on:
  push:
    branches:
      - main
      - master
      - develop
  pull_request:

jobs:
  quality-check:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Setup pnpm
        uses: pnpm/action-setup@v4
        with:
          version: 9

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: 20
          cache: pnpm

      - name: Install dependencies
        run: pnpm install --frozen-lockfile

      - name: Format check
        run: pnpm format:check

      - name: Lint
        run: pnpm lint

      - name: Test
        run: pnpm test:run

      - name: Build
        run: pnpm build

提交配置:

git add .
git commit -m "ci: 添加 GitHub Actions 质量检查流程"
git push origin main

以后每次提交或发起 Pull Request,GitHub Actions 都会自动执行格式检查、Lint、测试和构建。


十四、推荐的 AI 编程协作方式

AI 编程不是简单地“让 AI 写代码”,而是要建立清晰的协作边界。

1. 让 AI 先写计划,再写代码

不要直接说:

帮我实现登录功能。

更好的方式是:

请先分析当前项目结构,然后给出实现登录功能的任务拆解。
要求包含:
1. 需要新增的文件
2. 需要修改的文件
3. 状态管理方案
4. 接口调用方案
5. 测试用例设计
在我确认前不要写代码。

2. 小步提交,避免大规模不可控变更

AI 一次性修改太多文件时,出错概率会显著增加。建议每次只让 AI 完成一个明确任务,例如:

  • 新增一个组件;
  • 修复一个 Bug;
  • 添加一个测试文件;
  • 重构一个函数;
  • 补充一段文档。

3. 用测试约束 AI

AI 生成代码后,一定要运行:

pnpm lint
pnpm test:run
pnpm build

如果失败,不要直接手动乱改,可以把报错交给 AI:

以下是测试失败日志,请分析原因并给出最小修改方案:

4. 保留人工 Code Review

AI Review 可以发现一部分问题,但不能完全替代人工审查。尤其是以下内容必须人工确认:

  • 权限逻辑;
  • 支付逻辑;
  • 数据删除逻辑;
  • 隐私与安全相关代码;
  • 数据库迁移;
  • 线上配置;
  • 第三方 API 调用限制。

十五、完整命令汇总

下面是本文涉及的核心命令,方便复制使用。

项目初始化

pnpm create vite ai-workflow-demo --template react-ts
cd ai-workflow-demo
pnpm install
pnpm dev

安装规范工具

pnpm add -D eslint prettier eslint-config-prettier eslint-plugin-react-hooks eslint-plugin-react-refresh
pnpm add -D husky lint-staged
pnpm exec husky init

安装 AI 依赖

pnpm add openai
pnpm add -D dotenv

安装测试工具

pnpm add -D vitest jsdom @testing-library/react @testing-library/jest-dom @testing-library/user-event

常用开发命令

pnpm dev
pnpm format
pnpm lint
pnpm test
pnpm test:run
pnpm build

AI 自动化命令

git add .
pnpm commit:ai
pnpm review:ai
pnpm test:ai-plan
pnpm docs:ai
pnpm commit:auto

一键检查命令

pnpm check
pnpm ai:before-commit
pnpm ship

Git 提交流程

git checkout -b feat/example
git status
git add .
pnpm ai:before-commit
pnpm check
pnpm commit:auto
git push origin feat/example

十六、总结

AI 编程真正有价值的地方,不只是“帮你写一段代码”,而是把研发流程中重复、低价值、容易遗漏的环节自动化。通过本文这套方案,你可以逐步完成以下能力建设:

  • 用 ESLint 和 Prettier 统一代码风格;
  • 用 Husky 和 lint-staged 在提交前自动检查;
  • 用 AI 生成规范化 Commit Message;
  • 用 AI 进行代码审查;
  • 用 AI 生成测试计划;
  • 用 AI 自动生成项目文档;
  • 用 GitHub Actions 在远程仓库执行质量检查;
  • 用一键命令把开发、检查、审查、提交串成完整流水线。

建议你不要一开始就追求复杂的“全自动 AI Agent”。更稳妥的路径是:先把确定性强的流程自动化,再把 AI 放在需要理解、总结和建议的位置上。这样既能提高效率,又能保持工程质量和可控性。

最终目标不是让 AI 完全替代开发者,而是让开发者从重复劳动中解放出来,把更多精力放在架构设计、业务理解、质量把控和产品创新上。

目录结构
全文