- Published on
AI自我迭代
- Authors
- Name
- 大聪明
- @wooluoo
我想要使用github上面的action然后自动自我编译,自行进行改善代码,通过调用硅基流动的模型api来完成自我迭代完善,需求和功能就来自github的仓库中的issue
openai回答的
这是一个非常有趣的需求!你希望通过 GitHub Actions 实现一个自动化的流程,能够完成以下任务:
- 自动编译和测试代码:每次代码更新时,GitHub Actions 自动运行编译和测试任务。
- 调用硅基流动(例如 Ollama 或类似的 AI 模型 API):通过 AI 模型对代码进行分析和改进建议。
- 根据 GitHub 仓库中的 Issues 提取需求:自动从 Issues 中解析需求,并将其作为开发目标。
- 自我迭代:根据 AI 模型的建议,自动更新代码并提交到仓库。
- 使用 Markdown 输出:生成改进报告或日志,并以 Markdown 格式记录到仓库中(例如 README 或 CHANGELOG 文件)。
以下是一个实现此流程的思路和示例代码:
1. GitHub Actions 工作流程文件
创建一个 GitHub Actions 配置文件,放在 .github/workflows/self_improve.yml
中:
name: Self-Improving Code Workflow
on:
push:
branches:
- main
workflow_dispatch:
jobs:
self-improve:
runs-on: ubuntu-latest
steps:
# Step 1: 检出代码
- name: Checkout code
uses: actions/checkout@v3
# Step 2: 安装依赖(根据你的项目语言调整)
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.9'
- name: Install dependencies
run: |
pip install -r requirements.txt
# Step 3: 提取 GitHub Issues 中的需求
- name: Extract Issues
id: extract_issues
run: |
python scripts/extract_issues.py
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# Step 4: 调用 AI 模型 API 进行代码分析和改进建议
- name: Analyze and improve code
id: ai_analysis
run: |
python scripts/ai_improve_code.py
env:
MODEL_API_KEY: ${{ secrets.MODEL_API_KEY }}
# Step 5: 生成 Markdown 报告
- name: Generate Markdown Report
run: |
python scripts/generate_report.py
# Step 6: 提交改进后的代码和报告
- name: Commit changes
run: |
git config --local user.email "action@github.com"
git config --local user.name "GitHub Action"
git add .
git commit -m "Auto-improved code and updated report"
git push
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
2. 提取 GitHub Issues 的脚本
创建一个脚本 scripts/extract_issues.py
,用于从 GitHub Issues 中提取需求:
import requests
import os
GITHUB_API_URL = "https://api.github.com"
REPO = "your_username/your_repo" # 替换为你的仓库名
TOKEN = os.getenv("GITHUB_TOKEN")
def get_issues():
url = f"{GITHUB_API_URL}/repos/{REPO}/issues"
headers = {"Authorization": f"token {TOKEN}"}
response = requests.get(url, headers=headers)
response.raise_for_status()
return response.json()
def extract_requirements(issues):
requirements = []
for issue in issues:
if not issue.get("pull_request"): # 排除 PR
requirements.append(f"- {issue['title']}: {issue['body']}")
return requirements
if __name__ == "__main__":
issues = get_issues()
requirements = extract_requirements(issues)
with open("requirements.md", "w") as f:
f.write("# Extracted Requirements\n\n")
f.write("\n".join(requirements))
3. 调用 AI 模型 API 的脚本
创建一个脚本 scripts/ai_improve_code.py
,用于调用硅基流动模型 API 对代码进行分析和改进:
import requests
import os
API_URL = "https://api.siliconbasedflow.com/v1/improve" # 替换为实际的 API 地址
API_KEY = os.getenv("MODEL_API_KEY")
def improve_code():
with open("main.py", "r") as f: # 替换为你的主代码文件
code = f.read()
payload = {
"code": code,
"instructions": "Analyze the code and suggest improvements based on the extracted requirements."
}
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
response = requests.post(API_URL, json=payload, headers=headers)
response.raise_for_status()
return response.json()
if __name__ == "__main__":
suggestions = improve_code()
with open("improved_code.py", "w") as f:
f.write(suggestions["improved_code"]) # 假设返回 JSON 包含改进后的代码
with open("suggestions.md", "w") as f:
f.write("# AI Suggestions\n\n")
f.write(suggestions["suggestions"]) # 假设返回 JSON 包含改进建议
4. 生成 Markdown 报告的脚本
创建一个脚本 scripts/generate_report.py
,用于生成 Markdown 格式的改进报告:
import os
def generate_report():
with open("requirements.md", "r") as req_file:
requirements = req_file.read()
with open("suggestions.md", "r") as sug_file:
suggestions = sug_file.read()
report = f"""
# Self-Improvement Report
## Extracted Requirements
{requirements}
## AI Suggestions
{suggestions}
"""
with open("REPORT.md", "w") as report_file:
report_file.write(report)
if __name__ == "__main__":
generate_report()
5. 项目结构
确保你的项目结构如下:
your_repo/
├── .github/
│ └── workflows/
│ └── self_improve.yml
├── scripts/
│ ├── extract_issues.py
│ ├── ai_improve_code.py
│ └── generate_report.py
├── main.py # 主代码文件
├── requirements.txt
6. 配置 Secrets
在 GitHub 仓库的设置中添加以下 Secrets:
GITHUB_TOKEN
: 用于访问 GitHub API。MODEL_API_KEY
: 用于访问硅基流动模型 API。
7. 效果
- 每次推送代码到主分支,GitHub Actions 会自动运行。
- 它会提取 Issues 中的需求,调用 AI 模型改进代码,生成 Markdown 报告,并将改进后的代码和报告推送回仓库。
如果有其他需求或细节需要调整,请随时告诉我! 😊
我想要使用github上面的action然后自动自我编译,自行进行改善代码,通过调用硅基流动的模型api来完成自我迭代完善,需求和功能就来自github的仓库中的issue
下面是DeepSeek回答的
要实现通过 GitHub Actions 自动调用硅基流动(或其他 AI 模型 API)来改进代码并自我迭代,这是一个非常前沿且具有挑战性的想法。下面是一个完整的实现方案框架:
系统设计架构
- 触发机制:监听仓库的 Issue 创建/评论事件
- AI 处理核心:调用硅基流动 API 分析问题并生成代码
- 安全验证:代码审核和测试流程
- 自动提交:通过分支或直接提交改进
具体实现步骤
1. 准备阶段
# .github/workflows/ai_self_improvement.yml
name: AI Self-Improvement System
on:
issues:
types: [opened, edited]
pull_request:
types: [opened, synchronize]
2. 配置 API 密钥
在仓库 Settings → Secrets 添加:
SILICONFLOW_API_KEY
GH_TOKEN
(用于自动提交代码的权限)
3. 核心 Action 实现
jobs:
analyze_and_improve:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Analyze Issue
id: analyze
run: |
# 使用curl调用硅基流动API
RESPONSE=$(curl -X POST "https://api.siliconflow.ai/v1/chat" \
-H "Authorization: Bearer ${{ secrets.SILICONFLOW_API_KEY }}" \
-d '{
"issue": "${{ github.event.issue.title }}",
"code": "$(find . -type f -name '*.py' | xargs head -c 1000)"
}')
# 提取AI生成的代码建议
SUGGESTION=$(echo $RESPONSE | jq -r '.suggestion')
echo "suggestion=$SUGGESTION" >> $GITHUB_OUTPUT
4. 自动提交改进
- name: Create Improvement Branch
if: steps.analyze.outputs.suggestion != ''
run: |
git config --global user.name "AI Improver"
git config --global user.email "ai@example.com"
git checkout -b "ai-improvement-${{ github.run_id }}"
# 应用AI建议
echo "${{ steps.analyze.outputs.suggestion }}" >> improved_code.py
git add .
git commit -m "AI improvement for #${{ github.event.issue.number }}"
git push origin HEAD
5. 创建PR(可选)
- name: Create Pull Request
uses: peter-evans/create-pull-request@v5
with:
token: ${{ secrets.GH_TOKEN }}
title: "AI Improvement: ${{ github.event.issue.title }}"
body: "Automated improvement for #${{ github.event.issue.number }}"
branch: "ai-improvement-${{ github.run_id }}"
关键增强功能
- 代码验证层(重要安全措施):
- name: Run Tests
run: |
pytest # 确保AI修改不破坏现有功能
continue-on-error: true
- name: Verify Changes
if: failure()
run: |
echo "AI suggestion caused test failures" >> $GITHUB_STEP_SUMMARY
exit 1
- 多轮对话系统:
# 在分析步骤中使用对话历史
conversation = [
{"role": "system", "content": "你是一个资深代码优化AI"},
{"role": "user", "content": f"Issue内容: {issue_text}"},
{"role": "assistant", "content": "我已分析问题,建议..."}
]
- 版本控制策略:
- 为每个AI修改创建独立分支
- 保留原始git blame信息
- 使用
[skip ci]
避免循环触发
安全注意事项
- 代码审核机制:
# 要求至少一个人类审核者
- name: Require Review
if: github.actor == 'ai-improver-bot'
run: |
echo "REVIEWERS=team-lead" >> $GITHUB_ENV
- 执行限制:
# 只允许在特定文件上操作
paths:
- 'src/**'
- '!src/core/security/**'
- API调用限制:
# 实现速率限制
import time
last_call = 0
def safe_call_api():
global last_call
if time.time() - last_call < 5:
time.sleep(5 - (time.time() - last_call))
last_call = time.time()
# 调用API...
扩展可能性
- 知识库集成:
- name: Retrieve Context
run: |
# 从项目文档中提取上下文
DOCS_CONTEXT=$(find docs -type f -exec grep -l "相关关键词" {} \; | xargs cat)
echo "docs_context=$DOCS_CONTEXT" >> $GITHUB_OUTPUT
- 多模型投票系统:
# 调用多个API进行比较
models = ['siliconflow', 'openai', 'claude']
results = [query_model(m) for m in models]
best_code = vote_best_solution(results)
- 性能监控:
- name: Benchmark
run: |
hyperfine --export-json benchmark.json 'python original.py' 'python improved.py'
# 上传结果到监控系统
完整示例工作流
参见:AI Self-Improvement Template
这个方案需要根据实际API接口和项目需求进行调整,特别是:
- 硅基流动API的实际请求/响应格式
- 项目的测试框架要求
- 团队的代码审查流程
建议先从少量文件开始试点,逐步扩大范围。同时建议设置人工审核环节,避免不可控的自动修改。