Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 0 additions & 3 deletions .env.example

This file was deleted.

31 changes: 31 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
name: CI

on:
push:
branches: [main]
pull_request:

jobs:
backend:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
distribution: temurin
java-version: "21"
cache: maven
- name: Test Java backend
working-directory: backend
run: mvn --batch-mode --no-transfer-progress verify

extension:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: "20"
cache: npm
- run: npm ci
- run: npm run build
35 changes: 13 additions & 22 deletions .github/workflows/submit.yml
Original file line number Diff line number Diff line change
@@ -1,33 +1,24 @@
name: "Submit to Web Store"
name: Submit to Web Store

on:
workflow_dispatch:

jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Cache pnpm modules
uses: actions/cache@v3
with:
path: ~/.pnpm-store
key: ${{ runner.os }}-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-
- uses: pnpm/action-setup@v2.2.4
with:
version: latest
run_install: true
- name: Use Node.js 16.x
uses: actions/setup-node@v3.4.1
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 16.x
cache: "pnpm"
- name: Build the extension
run: pnpm build
- name: Package the extension into a zip artifact
run: pnpm package
- name: Browser Platform Publish
node-version: "20"
cache: npm
- name: Install dependencies
run: npm ci
- name: Build extension
run: npm run build
- name: Package extension
run: npm run package
- name: Publish to browser platforms
uses: PlasmoHQ/bpp@v3
with:
keys: ${{ secrets.SUBMIT_KEYS }}
Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,12 @@ yarn-error.log*
# local env files
.env
.env*.local
backend/.env

out/
build/
dist/
backend/target/

# plasmo
.plasmo
Expand Down
102 changes: 37 additions & 65 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,98 +1,70 @@
# Contributing

感谢你愿意参与 `AI PR Helper`。

这个项目目前还处在早期阶段,欢迎任何能让它更稳定、更好用、更适合开源协作的改进,包括功能开发、Bug 修复、文档完善、测试补充和体验优化。

## 适合贡献的方向

- 修复 GitHub 页面兼容性问题
- 优化 PR 描述生成的 Prompt
- 拆分和重构当前前端逻辑
- 增加设置页和更多可配置项
- 提升错误提示和空状态体验
- 补充测试、文档和示例
感谢你愿意参与 `AI PR Helper`。项目现在由浏览器扩展和 Java 后端两部分组成,欢迎功能开发、Bug 修复、文档完善、测试和安全改进。

## 本地开发

### 环境要求
### 环境

- Node.js 18+
- npm
- Node.js 18+ 和 npm
- Java 21 和 Maven 3.6.3+,或 Docker
- Chromium 浏览器
- 可用的 AI API Key
- 用于手动端到端测试的 AI API Key

### 安装依赖
### Java 后端

```bash
npm install
cd backend
export AI_API_KEY=your_api_key_here
mvn spring-boot:run
```

### 配置环境变量
也可以在仓库根目录复制 `backend/.env.example` 为 `backend/.env`,然后运行:

```bash
cp .env.example .env
docker compose up --build
```

填写:
不要提交真实的 `.env`、AI API Key、GitHub Token 或后端访问令牌。

### 浏览器扩展

```bash
PLASMO_PUBLIC_AI_API_KEY=your_api_key_here
PLASMO_PUBLIC_AI_BASE_URL=https://api.moonshot.cn/v1
PLASMO_PUBLIC_AI_MODEL=moonshot-v1-8k
npm install
npm run dev
```

默认值仍然兼容 Kimi;如果你接的是其他兼容 OpenAI Chat Completions 的服务,把地址和模型名替换掉即可
将 `build/chrome-mv3-dev` 作为未打包扩展加载,并在设置页填写 Java 后端地址

### 启动开发
## 架构边界

```bash
npm run dev
```
- `backend/` 负责 GitHub Diff 抓取、Prompt、模型请求、重试、安全和 API 错误响应。
- `lib/backend.ts` 负责扩展与 Java API 的通信。
- `popup.tsx` 负责浏览器交互、预览和 GitHub 页面回填。
- AI API Key 不应重新放回浏览器端。

然后到浏览器扩展页面加载开发目录,例如:
## 提交前检查

```bash
build/chrome-mv3-dev
npm run backend:test
npm run build
```

## 提交改动前建议
涉及真实模型调用时,还应手动验证:

- 先确认改动是否符合当前项目目标:帮助 GitHub PR 更快生成高质量描述
- 尽量保持改动聚焦,一个 PR 只解决一类问题
- 如果改动涉及交互行为,请在 PR 描述中说明操作路径和预期效果
- 如果改动涉及 prompt 或输出格式,请提供前后对比示例
- 如果改动依赖 GitHub 页面 DOM,请说明测试过的页面类型
1. `/api/health` 能正确反映 AI 是否已配置
2. `/api/ai/test` 能完成模型连接测试
3. PR 页面和 Compare 页面都能生成描述
4. GitHub 描述输入框可以正常回填
5. 错误 Token、无效 URL、GitHub 失败和模型失败都有可理解的提示

## Pull Request 建议

提交 PR 时,建议包含这些信息:

- 改动背景
- 解决的问题
- 实现方式
- 风险或兼容性影响
- 手动验证步骤

如果是 UI 或交互相关改动,最好补上截图或录屏。

## 代码风格

- 使用 TypeScript
- 保持实现直接、清晰,优先可读性
- 避免引入和当前项目规模不匹配的复杂抽象
- 在必要时补充简短注释,帮助后来者理解关键逻辑

## 沟通方式

如果你准备做较大的改动,建议先发一个 Issue 或先在 PR 中简单说明方案,避免和项目后续方向偏离太多。

小修复、小文档修改、拼写优化这类改动可以直接提交 PR。
PR 请说明:

## 目前特别欢迎的帮助
- 改了什么以及为什么
- 对扩展、Java API、配置或部署有何影响
- 验证命令与手动测试结果
- 兼容性、安全性或回滚注意事项

- 为不同类型的 PR 设计更稳的生成模板
- 增加对超长 Diff 的处理策略
- 补充自动化测试
- 降低前端直连模型 API 的安全风险
- 完善开源仓库基础设施,例如 `LICENSE`、Issue 模板、PR 模板
如果改动 GitHub DOM 选择器,请写明测试过的页面类型;如果改动 Prompt,请提供前后输出示例。
Loading
Loading