Published on

AI自我迭代

Authors
我想要使用github上面的action然后自动自我编译,自行进行改善代码,通过调用硅基流动的模型api来完成自我迭代完善,需求和功能就来自github的仓库中的issue

openai回答的

这是一个非常有趣的需求!你希望通过 GitHub Actions 实现一个自动化的流程,能够完成以下任务:

  1. 自动编译和测试代码:每次代码更新时,GitHub Actions 自动运行编译和测试任务。
  2. 调用硅基流动(例如 Ollama 或类似的 AI 模型 API):通过 AI 模型对代码进行分析和改进建议。
  3. 根据 GitHub 仓库中的 Issues 提取需求:自动从 Issues 中解析需求,并将其作为开发目标。
  4. 自我迭代:根据 AI 模型的建议,自动更新代码并提交到仓库。
  5. 使用 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)来改进代码并自我迭代,这是一个非常前沿且具有挑战性的想法。下面是一个完整的实现方案框架:


系统设计架构

  1. 触发机制:监听仓库的 Issue 创建/评论事件
  2. AI 处理核心:调用硅基流动 API 分析问题并生成代码
  3. 安全验证:代码审核和测试流程
  4. 自动提交:通过分支或直接提交改进

具体实现步骤

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 }}"

关键增强功能

  1. 代码验证层(重要安全措施):
    - 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
  1. 多轮对话系统
# 在分析步骤中使用对话历史
conversation = [
    {"role": "system", "content": "你是一个资深代码优化AI"},
    {"role": "user", "content": f"Issue内容: {issue_text}"},
    {"role": "assistant", "content": "我已分析问题,建议..."}
]
  1. 版本控制策略
  • 为每个AI修改创建独立分支
  • 保留原始git blame信息
  • 使用[skip ci]避免循环触发

安全注意事项

  1. 代码审核机制
# 要求至少一个人类审核者
- name: Require Review
  if: github.actor == 'ai-improver-bot'
  run: |
    echo "REVIEWERS=team-lead" >> $GITHUB_ENV
  1. 执行限制
# 只允许在特定文件上操作
paths:
  - 'src/**'
  - '!src/core/security/**'
  1. 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...

扩展可能性

  1. 知识库集成
- name: Retrieve Context
  run: |
    # 从项目文档中提取上下文
    DOCS_CONTEXT=$(find docs -type f -exec grep -l "相关关键词" {} \; | xargs cat)
    echo "docs_context=$DOCS_CONTEXT" >> $GITHUB_OUTPUT
  1. 多模型投票系统
# 调用多个API进行比较
models = ['siliconflow', 'openai', 'claude']
results = [query_model(m) for m in models]
best_code = vote_best_solution(results)
  1. 性能监控
- name: Benchmark
  run: |
    hyperfine --export-json benchmark.json 'python original.py' 'python improved.py'
    # 上传结果到监控系统

完整示例工作流

参见:AI Self-Improvement Template

这个方案需要根据实际API接口和项目需求进行调整,特别是:

  1. 硅基流动API的实际请求/响应格式
  2. 项目的测试框架要求
  3. 团队的代码审查流程

建议先从少量文件开始试点,逐步扩大范围。同时建议设置人工审核环节,避免不可控的自动修改。