forked from Gitlink/gitlink-cli
580 lines
14 KiB
Markdown
580 lines
14 KiB
Markdown
# AI Agent 自动化工作流完整示例
|
||
|
||
本文档展示如何组合使用多个 gitlink-cli 工作流,实现完整的 AI Agent 自动化项目管理。
|
||
|
||
## 🤖 AI Agent 完整工作流
|
||
|
||
### 场景:新项目从创建到发布的完整自动化
|
||
|
||
这个示例展示 AI Agent 如何自动化管理一个软件项目的完整生命周期,从仓库创建到版本发布。
|
||
|
||
## 工作流组合
|
||
|
||
### 1. 项目初始化阶段
|
||
|
||
```python
|
||
# 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. 开发阶段自动化
|
||
|
||
```python
|
||
# 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 自动化
|
||
|
||
```python
|
||
# 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 流程
|
||
|
||
```bash
|
||
#!/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 中使用工作流
|
||
|
||
```markdown
|
||
# 用户指令
|
||
|
||
帮助我创建一个新的项目并完成首个版本的发布。
|
||
|
||
# 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
|
||
|
||
让我开始执行...
|
||
```
|
||
|
||
### 技能组合使用
|
||
|
||
```python
|
||
# 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. 执行顺序
|
||
典型的执行顺序:
|
||
1. 项目初始化 → 2. Issue 管理 → 3. PR 审查 → 4. Release 发布 → 5. Sprint 报告
|
||
|
||
### 3. 错误处理
|
||
```python
|
||
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. 进度跟踪
|
||
```python
|
||
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
|
||
}
|
||
```
|
||
|
||
## 扩展工作流
|
||
|
||
### 自定义工作流
|
||
|
||
```python
|
||
# 创建自定义工作流
|
||
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](../references/workflow-issue-triage.md) — Issue 分类
|
||
- [workflow-pr-review](../references/workflow-pr-review.md) — PR 审查
|
||
- [workflow-release-notes](../references/workflow-release-notes.md) — Release Notes
|
||
- [workflow-repo-setup](../references/workflow-repo-setup.md) — 仓库初始化
|
||
- [workflow-sprint-report](../references/workflow-sprint-report.md) — Sprint 报告
|
||
- [gitlink-workflow](../SKILL.md) — 工作流总览
|