PR Pilot
通过将日常工作委托给AI,提高效率并保持工作流的稳定性和可预测性。PR Pilot在您的日常工作流中提供帮助,与您信赖和喜爱的开发工具无缝衔接 - 无论何时何地。
立即使用我们的用户指南开始。
随时随地交给PR Pilot
您可以通过多种方式与PR Pilot交互:
使用**命令行界面**
pilot edit main.py "为所有函数和类添加docstrings"
通过提示模板,您可以创建强大的、可重复使用的命令:
我做了一些修改并提交了一个新的PR: #{{ env('PR_NUMBER') }}。
我需要一个PR标题和一个简短、简洁的描述,概述这些更改。
PR描述也将用作合并提交信息,因此应清晰且信息丰富。
使用以下指南:
- 标题以动词命令式开头(例如,“添加”,“修复”,“更新”)。
- 在最顶部,提供一句话总结这些更改及其影响。
- 在下面,以项目符号列出所做的更改。
# 你的任务
编辑PR #{{ env('PR_NUMBER') }}的标题和描述,以反映该PR中的更改。
发送PR Pilot,根据您的指南,为任何PR提供标题和描述:
PR_NUMBER=153 pilot task -f generate-pr-description.md.jinja2
使用**Python SDK**:
from pr_pilot.util import create_task, wait_for_result
prompt = """
1. 找出昨天在Slack和Linear上创建的所有“bug”问题。
2. 总结并将它们发布到Slack上的#bugs-daily频道
3. 将总结保存到`reports/<date>.md`
"""
github_repo = "PR-Pilot-AI/pr-pilot"
task = create_task(github_repo, prompt)
result = wait_for_result(task)
print(result)
使用**REST API**:
curl -X POST 'https://app.pr-pilot.ai/api/tasks/' \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: YOUR_API_KEY_HERE' \
-d '{
"prompt": "正确格式化README.md并添加表情符号",
"github_repo": "owner/repo"
}'
使用**智能工作流**:
# .github/workflows/chat_bot.yaml`
name: "🤖 我的项目定制聊天机器人"
on:
issues:
types: [labeled, commented]
issue_comment:
types: [created]
jobs:
handle-chat:
if: >
(github.event.label.name == 'chat' || contains(github.event.issue.labels.*.name, 'chat')) &&
github.event.sender.login != 'pr-pilot-ai[bot]'
runs-on: ubuntu-latest
steps:
- name: AI聊天响应
uses: PR-Pilot-AI/smart-actions/quick-task@v1
with:
api-key: ${{ secrets.PR_PILOT_API_KEY }}
agent-instructions: |
@${{ github.event.sender.login }} 在issue #${{ github.event.issue.number }}上评论。
阅读issue #${{ github.event.issue.number }}的内容。
如果还没有评论,请添加一个在此issue上下文中有意义的评论。
如果已有评论,请对最新的评论提供回答。
或直接在**Github issues和PRs**上与PR Pilot交流:
🛠️ 安装
要开始使用,请按照我们的用户指南。
🚀 本地运行
设置以下环境变量:
变量 | 描述 |
---|---|
GITHUB_APP_CLIENT_ID | GitHub App客户端ID |
GITHUB_APP_SECRET | GitHub App密钥 |
GITHUB_WEBHOOK_SECRET | 用于保护webhooks的密钥 |
GITHUB_APP_ID | GitHub App ID |
OPENAI_API_KEY | OpenAI服务的API密钥 |
REPO_DIR | 用于存储仓库数据的目录 |
TAVILY_API_KEY | Tavily搜索引擎的API密钥 |
STRIPE_API_KEY | 用于处理付款的Stripe API密钥 |
STRIPE_WEBHOOK_SECRET | 用于保护Stripe webhook端点的密钥 |
DJANGO_SECRET_KEY | Django的密钥 |
SENTRY_DSN | (可选)Sentry DSN,用于错误监控 |
JOB_STRATEGY | (可选)运行任务的策略('thread','redis','log') |
REDIS_HOST | (可选)用于任务调度的Redis主机 |
REDIS_PORT | (可选)用于任务调度的Redis端口 |
REPO_CACHE_DIR | (可选)用于存储仓库缓存的目录 |
REPO_DIR | (可选)在工作器中存储repo的工作区 |
SLACK_APP_ID | Slack App ID |
SLACK_CLIENT_ID | Slack客户端ID |
SLACK_CLIENT_SECRET | Slack客户端密钥 |
SLACK_SIGNING_SECRET | Slack签名密钥 |
要在您的本地机器上运行PR Pilot,请按以下步骤操作:
# 克隆代码库
git clone https://github.com/PR-Pilot-AI/pr-pilot.git
# 更改目录
cd pr-pilot
# 安装依赖
pip install -r requirements.txt
# 应用迁移
python manage.py migrate
# 创建超级用户
python manage.py createsuperuser
# 启动开发服务器
python manage.py runserver
要将本地服务器暴露到互联网,可以使用 ngrok
:
ngrok http 8000
🧪 单元测试
PR Pilot使用 tox
来管理单元测试。测试设置在 tox.ini
文件中配置,测试使用 pytest
编写。
要运行测试,请执行:
tox
这将运行项目中定义的所有测试,确保您的更改不会破坏现有功能。
📚 代码文档
有关代码结构和文档的更多信息,请访问docs/code。
🤝 贡献
我们欢迎对PR Pilot的贡献!有关如何参与的更多信息,请查看我们的贡献指南。
📄 许可证
PR Pilot是开源的,遵循GPL-3许可协议。有关更多信息,请参阅LICENSE文件。