Logo
热心市民王先生

可落地的优化建议

AI 工作流 最佳实践 优化建议

基于 Anthropic 长时 Agent 最佳实践,提出 6 大可落地的 AI 团队工作流优化建议,包括 Initializer 模式引入、Feature List 驱动开发、会话状态管理、测试验证机制强化等具体实施方案

一、Initializer 模式引入策略

1.1 核心理念

Initializer 模式的核心价值:将”环境首次搭建”与”日常增量开发”解耦,让首次会话专注于创建一个所有后续会话都能高效工作的基础环境。

flowchart TD
    subgraph Before["当前模式"]
        B1[每次会话都重新理解环境]
        B2[重复发现项目结构]
        B3[重复配置开发环境]
    end
    
    subgraph After["Initializer 模式"]
        I1[首次:Initializer 创建完整环境]
        I2[后续:直接基于准备好的环境工作]
        I3[环境自描述,快速进入状态]
    end
    
    B1 --> B2 --> B3
    I1 --> I2 --> I3
    
    style I2 fill:#4CAF50

1.2 Initializer Agent 的职责边界

明确 Initializer 应该做什么

职责说明示例
项目结构初始化创建标准目录结构src/, tests/, docs/
依赖管理初始化包管理器和基础依赖package.json, requirements.txt
配置文件创建开发、测试、部署配置tsconfig.json, jest.config.js
Feature List基于需求生成结构化任务清单features.json
Progress File创建进展记录文件模板progress.md
init.sh创建环境启动脚本一键启动开发环境
Git 初始化初始化仓库并做首次提交git init + initial commit

明确 Initializer 不应该做什么

不做的内容原因
实现具体功能这是 Coding Agent 的工作
过度设计架构应该为增量开发留有余地
编写完整文档提供框架即可,细节在开发中补充
一次性生成大量代码避免在首次会话耗尽上下文

1.3 实施步骤

Phase 1:试点项目(Week 1-2)

  1. 选择一个中等复杂度的项目(3-5 个核心功能)
  2. 使用 Initializer Prompt 启动项目
  3. 记录 Initializer 耗时和产出质量
  4. 收集团队反馈

Phase 2:模板化(Week 3-4)

  1. 根据试点经验优化 Prompt
  2. 为不同项目类型创建 Initializer 模板(Web App、API、CLI 等)
  3. 建立 Initializer 输出质量检查清单

Phase 3:标准化(Week 5+)

  1. 将 Initializer 纳入标准工作流程
  2. 在项目管理工具中标记”需要 Initializer”的任务
  3. 建立 Initializer 产出的审查机制

二、Feature List 驱动开发实施

2.1 Feature List 的设计原则

为什么使用 Feature List

  • 防止过早宣布胜利:明确的完成标准
  • 避免一次性尝试:强制一次处理一个功能
  • 进度可视化:清晰看到已完成和待办
  • 责任清晰:每个功能有明确的验收标准

JSON vs Markdown 的选择

维度JSONMarkdown建议
结构化强,机器可读弱,主要人类可读JSON 更适合 Agent 处理
误修改风险低,格式严格高,自由度高JSON 更稳定
可读性需要工具支持原生可读Markdown 适合展示,JSON 适合处理

结论:推荐 JSON 作为 Feature List 的格式,同时提供 Markdown 版本的只读视图。

2.2 Feature List 的 Schema 设计

{
  "version": "1.0.0",
  "project": {
    "name": "Project Name",
    "description": "Brief project description"
  },
  "categories": [
    {
      "id": "core",
      "name": "核心功能",
      "priority": "high"
    }
  ],
  "features": [
    {
      "id": "F001",
      "category": "core",
      "title": "用户登录功能",
      "description": "用户可以通过邮箱和密码登录系统",
      "acceptance_criteria": [
        "用户可以在登录页面输入邮箱和密码",
        "系统验证邮箱和密码的正确性",
        "登录成功后跳转到首页"
      ],
      "test_steps": [
        "导航到 /login",
        "输入有效的邮箱和密码",
        "点击登录按钮",
        "验证跳转到 /dashboard"
      ],
      "dependencies": [],
      "estimated_effort": "medium",
      "status": "failing"
    }
  ],
  "metadata": {
    "total_features": 10,
    "completed_features": 0,
    "last_updated": "2026-03-25T10:00:00Z"
  }
}

2.3 Feature List 的工作流程

flowchart TD
    A[Initializer 生成 Feature List] --> B[Coding Agent 选择功能]
    B --> C{功能依赖满足?}
    C -->|否| D[先完成依赖功能]
    C -->|是| E[实现功能]
    D --> B
    E --> F[端到端测试]
    F --> G{测试通过?}
    G -->|否| H[修复问题]
    G -->|是| I[更新 Feature List]
    H --> F
    I --> J[Git Commit]
    J --> B

三、会话状态管理设计

3.1 状态管理的核心挑战

需要管理的状态类型

状态类型说明示例
项目状态项目整体进展Feature 完成度、已知问题
会话状态单个会话的工作内容本次实现的功能、遇到的问题
代码状态代码库的当前状态Git commit、分支信息
环境状态开发环境的配置依赖版本、配置文件

3.2 三层状态管理架构

flowchart TB
    subgraph Layer1["Layer 1: 持久化存储"]
        L1A[feature_list.json]
        L1B[progress.md]
        L1C[Git History]
    end
    
    subgraph Layer2["Layer 2: 会话上下文"]
        L2A[Session Memory]
        L2B[Working Directory]
    end
    
    subgraph Layer3["Layer 3: Agent 工作记忆"]
        L3A[Current Context Window]
    end
    
    L1A --> L2A
    L1B --> L2A
    L1C --> L2A
    L2A --> L3A
    L3A --> L2B
    L2B --> L1A
    L2B --> L1B
    L2B --> L1C

3.3 Progress File 的内容规范

文件结构示例

# Project Progress Log

## 项目概览

- **项目名称**: [Project Name]
- **开始时间**: 2026-03-25
- **当前阶段**: Development
- **总体进度**: 3/10 功能已完成

## 会话记录

### Session 001 - 2026-03-25 10:00
**Agent**: Initializer
**持续时间**: 45 minutes

**完成工作**:
- 初始化 React + TypeScript 项目
- 配置 Tailwind CSS
- 创建基础目录结构
- 生成 feature_list.json(10 个功能)
- 创建 init.sh 脚本
- Git 初始提交

**遇到的问题**: 无

**下一步计划**: 实现 F001: 用户登录功能

**提交记录**: a1b2c3d - Initial commit: Project setup

---

### Session 002 - 2026-03-25 14:30
**Agent**: Coding
**持续时间**: 60 minutes

**选择的功能**: F001 - 用户登录功能

**完成工作**:
- 创建 Login 组件
- 实现表单验证
- 集成 Auth API
- 端到端测试通过
- 更新 feature_list.json(F001 标记为 passing)

**Known Issues**:
- 登录状态在页面刷新后丢失(需要实现持久化)

**提交记录**: e4f5g6h - feat: implement user login (F001)

3.4 状态恢复的标准流程

Coding Agent 启动时的标准流程

## 会话启动检查清单

### 1. 环境检查
- [ ] 运行 pwd 确认工作目录
- [ ] 检查 .git 存在(确认是 Git 仓库)
- [ ] 检查 init.sh 存在且可执行

### 2. 状态同步
- [ ] 读取 progress.md 了解项目历史
- [ ] 读取 feature_list.json 查看当前状态
- [ ] 运行 git log --oneline -10 查看近期提交
- [ ] 运行 git status 确认工作区干净

### 3. 环境启动
- [ ] 运行 ./init.sh 启动开发环境
- [ ] 等待服务就绪
- [ ] 运行基础健康检查(如访问首页)

### 4. 功能选择
- [ ] 查看 feature_list.json 中 status=failing 的功能
- [ ] 检查依赖关系,确保依赖已满足
- [ ] 选择一个功能开始实现

四、测试验证强化方案

4.1 测试金字塔的 Agent 适配

Agent 测试策略调整

测试层级传统权重Agent 优化权重原因
单元测试70%40%Agent 容易生成,但容易虚假自信
集成测试20%30%验证模块间协作
端到端测试10%30%验证真实用户体验,防止虚假完成

4.2 端到端测试实施

测试工具选择

工具适用场景优点缺点
PuppeteerChrome/Edge 测试Google 维护,功能丰富仅 Chromium
Playwright多浏览器测试跨浏览器,自动等待学习曲线较陡
Cypress前端开发开发体验好,调试方便浏览器支持有限

针对 Agent 的推荐Playwright(多浏览器支持 + 自动等待减少 flaky tests)

4.3 测试在 Feature List 中的集成

扩展 Feature List Schema

{
  "id": "F001",
  "title": "用户登录功能",
  "test_strategy": {
    "unit_tests": [
      "验证 email 格式检查函数",
      "验证密码强度检查函数"
    ],
    "integration_tests": [
      "验证登录 API 端点"
    ],
    "e2e_tests": [
      "用户可以使用正确的凭据登录",
      "登录失败时显示错误信息"
    ]
  },
  "test_coverage": {
    "unit": "required",
    "integration": "recommended",
    "e2e": "required"
  }
}

五、增量交付节奏控制

5.1 为什么需要节奏控制

无节奏控制的问题

  • Agent 倾向于”一次性”完成所有功能
  • 容易在实现中途耗尽上下文
  • 难以回溯到稳定状态
  • 代码审查困难(变更太大)

Anthropic 的解决方案:一次只处理一个功能。

5.2 节奏控制机制设计

时间盒机制

flowchart LR
    A[开始会话] --> B[选择功能]
    B --> C{预估时间}
    C -->|小于等于60分钟| D[直接实现]
    C -->|超过60分钟| E[拆解功能]
    E --> B
    D --> F[测试验证]
    F --> G{通过?}
    G -->|是| H[提交变更]
    G -->|否| I[修复]
    I --> F
    H --> J[结束会话]

5.3 会话长度控制

推荐的会话长度

任务类型推荐时长最大时长超过后策略
简单功能30-45分钟60分钟提交当前进展,下会话继续
中等功能60-90分钟120分钟拆解为更小的任务
复杂功能需要拆解N/A必须拆解为子任务

六、环境自描述能力建设

6.1 init.sh 脚本规范

init.sh 的核心职责

  • 一键启动开发环境
  • 验证环境健康状态
  • 提供清晰的错误提示

标准模板

#!/bin/bash

set -e  # 遇到错误立即退出

echo "========================================"
echo "Project Environment Setup"
echo "========================================"

# 1. 检查必要工具
echo "Checking prerequisites..."
command -v node >/dev/null 2>&1 || { echo "Error: Node.js is required but not installed."; exit 1; }
command -v npm >/dev/null 2>&1 || { echo "Error: npm is required but not installed."; exit 1; }

# 2. 安装依赖
echo "Installing dependencies..."
npm install

# 3. 环境变量检查
if [ ! -f .env.local ]; then
    echo "Warning: .env.local not found. Copying from .env.example..."
    cp .env.example .env.local
fi

# 4. 启动开发服务器
echo "Starting development server..."
npm run dev &
SERVER_PID=$!

# 5. 等待服务就绪
echo "Waiting for server to be ready..."
sleep 5

# 6. 健康检查
echo "Running health checks..."
if curl -s http://localhost:3000/health > /dev/null; then
    echo "Health check passed!"
else
    echo "Warning: Health check failed. Server may still be starting..."
fi

echo "========================================"
echo "Environment ready!"
echo "Server running at http://localhost:3000"
echo "Press Ctrl+C to stop"
echo "========================================"

# 保持脚本运行
wait $SERVER_PID

6.2 README 环境说明规范

必须包含的内容

## 快速开始

### 环境要求
- Node.js >= 18.0
- npm >= 9.0
- Git

### 一键启动
```bash
./init.sh

手动启动

如果 init.sh 无法工作:

  1. 安装依赖: npm install
  2. 复制环境变量: cp .env.example .env.local
  3. 启动开发服务器: npm run dev
  4. 访问 http://localhost:3000

常用命令

  • npm run dev - 启动开发服务器
  • npm test - 运行测试
  • npm run build - 构建生产版本

---

## 七、优化建议总结

### 7.1 实施优先级

```mermaid
flowchart LR
    subgraph P1["Phase 1: 快速收益"]
        P1A[Feature List<br/>任务清单]
        P1B[环境自描述<br/>init.sh]
    end
    
    subgraph P2["Phase 2: 能力建设"]
        P2A[Initializer<br/>模式试点]
        P2B[增量交付<br/>节奏]
    end
    
    subgraph P3["Phase 3: 深度优化"]
        P3A[端到端测试<br/>自动化]
        P3B[会话状态<br/>管理工具]
    end
    
    P1 --> P2 --> P3

7.2 各阶段投入产出比

优化项实施难度收益程度推荐阶段
Feature ListPhase 1
init.shPhase 1
Initializer 模式Phase 2
增量交付节奏Phase 2
端到端测试Phase 3
状态管理工具Phase 3

7.3 关键成功因素

  1. 渐进式引入:不要一次性改造整个工作流,从 Feature List 开始
  2. 工具支持:需要配套的进度追踪和状态管理工具
  3. 团队共识:明确”干净状态”的定义和验收标准
  4. 持续度量:建立 Agent 交付质量的可观测性
  5. 模板化:为不同类型项目创建标准模板

本建议基于 Anthropic 的工程实践提炼,建议结合实际团队情况进行调整和适配。