forked from Gitlink/gitlink-cli
14 KiB
14 KiB
AI Agent 自动化工作流完整示例
本文档展示如何组合使用多个 gitlink-cli 工作流,实现完整的 AI Agent 自动化项目管理。
🤖 AI Agent 完整工作流
场景:新项目从创建到发布的完整自动化
这个示例展示 AI Agent 如何自动化管理一个软件项目的完整生命周期,从仓库创建到版本发布。
工作流组合
1. 项目初始化阶段
# AI Agent 项目初始化
def initialize_new_project(project_name, description):
"""完整的项目初始化工作流"""
# 1. 创建仓库
repo = create_repository(project_name, description)
# 2. 初始化项目结构
setup_project_structure(repo)
# 3. 配置 CI/CD
configure_ci_cd(repo)
# 4. 创建初始 Issue
create_initial_issues(repo)
return repo
# 执行
project = initialize_new_project(
"my-awesome-project",
"一个很棒的项目,用于演示自动化工作流"
)
2. 开发阶段自动化
# AI Agent 开发管理
def manage_development_workflow(repo):
"""开发阶段的自动化管理"""
while development_in_progress:
# 1. 自动分类新 Issue
triage_new_issues(repo)
# 2. 审查新的 PR
review_pull_requests(repo)
# 3. 更新项目进度
update_project_status(repo)
# 4. 检查是否需要发布
if should_release(repo):
generate_release_notes(repo)
create_release(repo)
sleep(cycle_interval)
3. Sprint 自动化
# AI Agent Sprint 管理
def automate_sprint_management(repo):
"""完整的 Sprint 自动化管理"""
# Sprint 开始
sprint_number = start_new_sprint(repo)
# Sprint 监控
monitor_sprint_progress(repo, sprint_number)
# Sprint 结束
end_sprint(repo, sprint_number)
generate_sprint_report(repo, sprint_number)
# 执行 Sprint 工作流
sprint_result = automate_sprint_management(project)
完整的端到端示例
示例:自动化 Issue 到 Release 流程
#!/bin/bash
# 完整的自动化工作流脚本
OWNER="ai-agent"
REPO="demo-project"
PROJECT_NAME="AI Agent Demo"
echo "🤖 启动 AI Agent 自动化工作流..."
# 阶段 1: 项目创建
echo "📦 阶段 1: 创建项目"
gitlink-cli repo +create \
--name "$REPO" \
--description "$PROJECT_NAME" \
--private false
# 初始化本地仓库
cd "$REPO"
git init
git remote add gitlink "https://www.gitlink.org.cn/$OWNER/$REPO.git"
# 创建基础文件
echo "# $PROJECT_NAME" > README.md
echo "MIT License" > LICENSE
git add .
git commit -m "Initial commit"
git push -u gitlink master:master
# 设置分支保护
gitlink-cli branch +protect --owner "$OWNER" --repo "$REPO" --name master
# 阶段 2: 创建开发 Issue
echo "🎯 阶段 2: 创建开发 Issue"
FEATURES=(
"用户认证系统"
"数据管理模块"
"API 接口开发"
"前端界面设计"
"测试框架搭建"
)
for feature in "${FEATURES[@]}"; do
gitlink-cli issue +create \
--owner "$OWNER" \
--repo "$REPO" \
--title "开发 $feature" \
--body "## 任务描述
实现 $feature 功能
## 技术要求
- 代码规范
- 单元测试
- 文档完整
## 验收标准
- 功能正常工作
- 测试通过
- 代码审查通过"
done
# 阶段 3: 模拟开发和 PR 创建
echo "🔧 阶段 3: 模拟开发工作"
# 创建功能分支
for feature in "${FEATURES[@]}"; do
# 模拟分支名(将中文转为拼音)
branch_name="feature-$(echo $feature | md5sum | cut -c1-8)"
git checkout -b "$branch_name"
# 模拟开发工作
echo "// $feature 实现" > "${feature}.js"
git add .
git commit -m "Implement $feature"
git push gitlink "$branch_name"
# 创建 PR
gitlink-cli pr +create \
--owner "$OWNER" \
--repo "$REPO" \
--title "Feature: $feature" \
--head "$branch_name" \
--base master \
--body "## 功能说明
实现 $feature 功能
## 变更内容
- 添加核心功能
- 实现相关测试
- 更新文档
## 测试情况
- 单元测试通过
- 集成测试通过
- 手工测试完成"
git checkout master
done
# 阶段 4: 自动 Issue 分类
echo "🏷️ 阶段 4: 自动分类 Issue"
# 获取所有开放 Issue
ISSUES=$(gitlink-cli issue +list --owner "$OWNER" --repo "$REPO" --state open --format json)
# 为 Issue 添加标签
echo "$ISSUES" | jq -r '.data.issues[].id' | while read issue_id; do
echo "处理 Issue #$issue_id"
# 获取 Issue 详情
ISSUE_DETAIL=$(gitlink-cli issue +view --owner "$OWNER" --repo "$REPO" --id "$issue_id" --format json)
TITLE=$(echo "$ISSUE_DETAIL" | jq -r '.data.subject')
# 基于标题分类
if echo "$TITLE" | grep -iq "认证"; then
echo " → 分类为: feature + security"
# 实际执行时取消注释
# gitlink-cli api POST "/$OWNER/$REPO/issues/$issue_id" --body '{"issue_tag_ids":[1,5]}'
else
echo " → 分类为: feature"
# gitlink-cli api POST "/$OWNER/$REPO/issues/$issue_id" --body '{"issue_tag_ids":[1]}'
fi
done
# 阶段 5: PR 审查
echo "🔍 阶段 5: 自动 PR 审查"
# 获取开放 PR
PRS=$(gitlink-cli pr +list --owner "$OWNER" --repo "$REPO" --state open --format json)
echo "$PRS" | jq -r '.data.prs[].id' | while read pr_id; do
echo "审查 PR #$pr_id"
# 获取 PR 详情
PR_DETAIL=$(gitlink-cli pr +view --owner "$OWNER" --repo "$REPO" --id "$pr_id" --format json)
PR_AUTHOR=$(echo "$PR_DETAIL" | jq -r '.data.author.login')
PR_TITLE=$(echo "$PR_DETAIL" | jq -r '.data.title')
# 简单的代码检查(这里只是模拟)
REVIEW_COMMENTS="# 🔍 自动审查结果
## PR 信息
- **标题**: $PR_TITLE
- **作者**: $PR_AUTHOR
- **状态**: 待审查
## ✅ 自动检查
- 代码提交正常
- 变更描述清晰
- 符合项目规范
## 💡 建议
- 添加单元测试
- 更新相关文档
- 确认向后兼容性
## 📋 审查结论
代码质量良好,建议合并。"
echo " → 添加审查评论"
# 实际执行时取消注释
# gitlink-cli api POST "/$OWNER/$REPO/pulls/$pr_id/reviews" --body "{\"body\":\"$REVIEW_COMMENTS\",\"event\":\"APPROVE\"}"
done
# 阶段 6: 生成 Release Notes
echo "📝 阶段 6: 生成 Release Notes"
# 合并所有 PR(模拟)
echo "合并所有功能 PR..."
MERGED_PRS=$(gitlink-cli pr +list --owner "$OWNER" --repo "$REPO" --state merged --format json)
# 生成 Release Notes
RELEASE_NOTES="# 🎉 v1.0.0 首个版本发布
## 📊 版本概述
这是 $PROJECT_NAME 的首个稳定版本,包含了核心功能的完整实现。
## ✨ 新功能
- 用户认证系统:完整的登录注册功能
- 数据管理模块:高效的数据存储和检索
- API 接口:RESTful API 设计
- 前端界面:现代化的用户界面
- 测试框架:完整的自动化测试
## 🐛 Bug 修复
- 修复认证过程中的边界问题
- 解决数据一致性问题
- 优化 API 响应性能
## 🔧 技术改进
- 代码结构优化
- 性能提升 30%
- 安全性增强
## 📚 文档更新
- 用户手册完善
- API 文档更新
- 开发指南补充
## 🙏 贡献者
感谢所有参与开发的贡献者!
## 📥 安装方法
\`\`\`bash
# 使用 npm 安装
npm install $OWNER/$REPO@v1.0.0
# 或使用 yarn
yarn add $OWNER/$REPO@v1.0.0
\`\`\`
## 🔄 升级指南
从之前的版本升级,请参考迁移指南。
## 📚 完整文档
- 用户指南: https://www.gitlink.org.cn/$OWNER/$REPO/wiki
- API 文档: https://www.gitlink.org.cn/$OWNER/$REPO/api-docs
---
**发布日期**: $(date +%Y-%m-%d)
**下一版本**: v1.1.0 (计划于 $(date -d "1 month" +%Y-%m-%d) 发布)"
# 创建 Release
echo "创建 Release v1.0.0..."
gitlink-cli release +create \
--owner "$OWNER" \
--repo "$REPO" \
--tag "v1.0.0" \
--name "v1.0.0" \
--body "$RELEASE_NOTES"
# 阶段 7: Sprint 报告
echo "📊 阶段 7: 生成 Sprint 报告"
SPRINT_START=$(date -d "14 days ago" +%Y-%m-%d)
SPRINT_END=$(date +%Y-%m-%d)
SPRINT_REPORT="# 📊 Sprint 1 完成报告
## 📅 时间信息
- **Sprint 周期**: $SPRINT_START 至 $SPRINT_END
- **团队规模**: AI Agent x 1
- **工作模式**: 自动化开发
## 🎯 目标达成
### 计划完成度
- **计划 Issue**: 5 个
- **实际完成**: 5 个
- **完成率**: 100%
### 质量指标
- **代码质量**: 优秀
- **测试覆盖率**: 95%
- **文档完整度**: 100%
## 💻 工作统计
### 代码提交
- **总提交数**: 42 次
- **日均提交**: 3 次/天
- **代码行数**: +2,450 -180 行
### Issue 处理
- **关闭 Issue**: 5 个
- **新建 Issue**: 0 个
- **平均处理时间**: 2.5 天
### PR 合并
- **合并 PR**: 5 个
- **平均审查时间**: 1 小时
- **平均合并时间**: 2 小时
## 🎉 主要成就
1. ✅ 完成用户认证系统开发
2. ✅ 实现数据管理模块
3. ✅ 构建 RESTful API
4. ✅ 设计现代化前端界面
5. ✅ 建立完整测试体系
## 📈 性能指标
- **开发效率**: 高
- **代码质量**: 优秀
- **自动化程度**: 95%
- **文档完整度**: 100%
## 🔮 下期规划
- 性能优化和改进
- 新功能模块开发
- 国际化支持
- 移动端适配
---
**AI Agent 自动化工作流演示**
**报告生成**: $(date +%Y-%m-%d %H:%M:%S)"
# 保存 Sprint 报告
REPORT_FILE="sprint_reports/sprint_1_$(date +%Y%m%d).md"
mkdir -p sprint_reports
echo "$SPRINT_REPORT" > "$REPORT_FILE"
echo "🎉 AI Agent 自动化工作流完成!"
echo ""
echo "📊 项目统计:"
echo " 仓库: https://www.gitlink.org.cn/$OWNER/$REPO"
echo " Issue: 5 个全部完成"
echo " PR: 5 个全部合并"
echo " Release: v1.0.0 已发布"
echo ""
echo "📄 生成的文档:"
echo " - Release Notes: https://www.gitlink.org.cn/$OWNER/$REPO/releases/v1.0.0"
echo " - Sprint 报告: $REPORT_FILE"
Claude Code 集成示例
在 Claude Code 中使用工作流
# 用户指令
帮助我创建一个新的项目并完成首个版本的发布。
# Claude Code 执行
我会使用 gitlink-cli 的自动化工作流来完成这个任务:
1. **创建仓库** - 使用 workflow-repo-setup
2. **管理 Issue** - 使用 workflow-issue-triage
3. **审查 PR** - 使用 workflow-pr-review
4. **生成 Release** - 使用 workflow-release-notes
5. **总结报告** - 使用 workflow-sprint-report
让我开始执行...
技能组合使用
# AI Agent 多技能组合
class GitLinkAgent:
def __init__(self, owner, repo):
self.owner = owner
self.repo = repo
self.cli = "gitlink-cli"
def complete_project_workflow(self):
"""完整的项目工作流"""
# 阶段 1: 初始化
self.setup_repository()
# 阶段 2: 开发管理
self.manage_development()
# 阶段 3: 质量控制
self.automated_review()
# 阶段 4: 发布管理
self.create_release()
# 阶段 5: 报告总结
self.generate_reports()
def setup_repository(self):
"""仓库初始化"""
# 使用 workflow-repo-setup
create_repo_cmd = f"{self.cli} repo +create --name {self.repo}"
subprocess.run(create_repo_cmd.split())
protect_branch_cmd = f"{self.cli} branch +protect --name master"
subprocess.run(protect_branch_cmd.split())
def manage_development(self):
"""开发管理"""
# 监控新 Issue 并自动分类
issues = self.get_new_issues()
for issue in issues:
self.classify_issue(issue)
# 监控新 PR 并审查
prs = self.get_new_prs()
for pr in prs:
self.review_pr(pr)
def automated_review(self):
"""自动化审查"""
# 获取待审查的 PR
pending_prs = self.get_pending_prs()
for pr in pending_prs:
review_result = self.analyze_pr(pr)
self.submit_review(pr, review_result)
最佳实践
1. 工作流选择
- 项目创建: 使用 workflow-repo-setup
- 日常维护: 使用 workflow-issue-triage 和 workflow-pr-review
- 版本发布: 使用 workflow-release-notes
- 团队管理: 使用 workflow-sprint-report
2. 执行顺序
典型的执行顺序:
- 项目初始化 → 2. Issue 管理 → 3. PR 审查 → 4. Release 发布 → 5. Sprint 报告
3. 错误处理
def safe_workflow_execution(workflow_func, *args, **kwargs):
"""安全执行工作流"""
try:
return workflow_func(*args, **kwargs)
except Exception as e:
# 记录错误
log_error(e)
# 尝试恢复
return handle_workflow_error(e, workflow_func, *args, **kwargs)
4. 进度跟踪
class WorkflowProgress:
def __init__(self):
self.current_step = 0
self.total_steps = 5
self.completed_steps = []
self.failed_steps = []
def update_progress(self, step_name, success=True):
if success:
self.completed_steps.append(step_name)
else:
self.failed_steps.append(step_name)
self.current_step += 1
def get_progress_report(self):
progress = self.current_step / self.total_steps * 100
return {
'progress': f'{progress:.1f}%',
'completed': self.completed_steps,
'failed': self.failed_steps
}
扩展工作流
自定义工作流
# 创建自定义工作流
def custom_workflow(owner, repo, custom_config):
"""自定义工作流模板"""
# 1. 预检查
if not validate_environment():
return False
# 2. 执行自定义步骤
for step in custom_config['steps']:
execute_step(step)
# 3. 后处理
cleanup_environment()
return True
故障排除
常见问题
| 问题 | 解决方案 |
|---|---|
| 权限不足 | 检查 Token 权限 |
| API 限制 | 添加重试机制 |
| 数据格式错误 | 验证输入数据 |
| 执行超时 | 增加超时时间 |
References
- workflow-issue-triage — Issue 分类
- workflow-pr-review — PR 审查
- workflow-release-notes — Release Notes
- workflow-repo-setup — 仓库初始化
- workflow-sprint-report — Sprint 报告
- gitlink-workflow — 工作流总览