review-mark 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +249 -0
- package/dist/cli/review.cjs +710 -0
- package/dist/cli/review.cjs.map +1 -0
- package/dist/cli/review.d.cts +2 -0
- package/dist/cli/review.d.ts +2 -0
- package/dist/cli/review.js +687 -0
- package/dist/cli/review.js.map +1 -0
- package/dist/index.cjs +634 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +53 -0
- package/dist/index.d.ts +53 -0
- package/dist/index.js +597 -0
- package/dist/index.js.map +1 -0
- package/package.json +52 -0
- package/src/cli/review.ts +125 -0
- package/src/constants.ts +7 -0
- package/src/core/BeLinkReview.ts +274 -0
- package/src/core/feishu.ts +271 -0
- package/src/core/git.ts +63 -0
- package/src/core/prompt.ts +12 -0
- package/src/index.ts +2 -0
- package/src/types.ts +18 -0
- package/src/utils/checkCli.ts +127 -0
- package/tsconfig.json +26 -0
- package/tsup.config.ts +30 -0
package/README.md
ADDED
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
# be-link-review
|
|
2
|
+
|
|
3
|
+
A powerful CLI tool for AI-powered code review using Git diffs.
|
|
4
|
+
|
|
5
|
+
## 目标
|
|
6
|
+
|
|
7
|
+
`be-link-review` 旨在提供一个自动化 AI 代码审查解决方案。用户可以在自己的项目中初始化该工具后,通过简单的 CLI 命令自动获取 `git diff`,并将其发送给 AI 进行代码审查,从而帮助开发者发现潜在的 bug、逻辑问题、性能问题和代码风格问题,并获得优化建议。
|
|
8
|
+
|
|
9
|
+
## 特性
|
|
10
|
+
|
|
11
|
+
- **TypeScript 支持**: 整个项目使用 TypeScript 编写,提供强大的类型安全和开发体验。
|
|
12
|
+
- **ESM + CommonJS**: 支持现代 Node.js 环境下的 ESM 和 CommonJS 模块系统。
|
|
13
|
+
- **CLI 工具**: 基于 `commander` 构建,提供友好的命令行接口。
|
|
14
|
+
- **自动化 Git Diff**: 自动检测并获取 Git 仓库中的代码变更(包括暂存区和工作区)。
|
|
15
|
+
- **AI 代码审查**: 将 Git diff 发送给 Cursor CLI 进行 AI 驱动的代码审查。
|
|
16
|
+
- **Cursor CLI 自动检测与安装**: 自动检测 `agent` 命令是否存在,如果不存在则提示并提供安装指引。
|
|
17
|
+
- **易于集成**: 通过简单的 `init` 方法即可在用户项目中配置 `review` 脚本。
|
|
18
|
+
- **可发布到 npm**: 完整的项目结构和打包配置,方便发布到 npm。
|
|
19
|
+
|
|
20
|
+
## 项目结构
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
be-link-review
|
|
24
|
+
│
|
|
25
|
+
├─ src
|
|
26
|
+
│ ├─ core
|
|
27
|
+
│ │ ├─ BeLinkReview.ts
|
|
28
|
+
│ │ ├─ git.ts
|
|
29
|
+
│ │ └─ prompt.ts
|
|
30
|
+
│ │
|
|
31
|
+
│ ├─ cli
|
|
32
|
+
│ │ └─ review.ts
|
|
33
|
+
│ │
|
|
34
|
+
│ ├─ utils
|
|
35
|
+
│ │ └─ checkCli.ts
|
|
36
|
+
│ │
|
|
37
|
+
│ └─ index.ts
|
|
38
|
+
│
|
|
39
|
+
├─ package.json
|
|
40
|
+
├─ tsconfig.json
|
|
41
|
+
├─ tsup.config.ts
|
|
42
|
+
└─ README.md
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## 技术栈
|
|
46
|
+
|
|
47
|
+
- **语言**: TypeScript
|
|
48
|
+
- **运行时**: Node.js 18+
|
|
49
|
+
- **CLI 框架**: [commander](https://www.npmjs.com/package/commander)
|
|
50
|
+
- **打包工具**: [tsup](https://www.npmjs.com/package/tsup)
|
|
51
|
+
- **AI 引擎**: [Cursor CLI](https://cursor.com/cn/docs/cli/headless)
|
|
52
|
+
|
|
53
|
+
## 安装
|
|
54
|
+
|
|
55
|
+
首先,在你的项目根目录安装 `be-link-review` 作为开发依赖:
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
pnpm add -D be-link-review
|
|
59
|
+
# 或者
|
|
60
|
+
yarn add -D be-link-review
|
|
61
|
+
# 或者
|
|
62
|
+
npm install -D be-link-review
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## 使用
|
|
66
|
+
|
|
67
|
+
### 1. 初始化
|
|
68
|
+
|
|
69
|
+
在你的项目入口文件(例如 `src/main.ts` 或 `app.ts`)中,调用 `BeLinkReview.init()` 方法进行初始化。你需要提供一个 `apiKey`,这将用于 Cursor CLI 的认证。
|
|
70
|
+
|
|
71
|
+
```typescript
|
|
72
|
+
// src/main.ts (或你的项目入口文件)
|
|
73
|
+
import { BeLinkReview } from "be-link-review";
|
|
74
|
+
|
|
75
|
+
BeLinkReview.init({
|
|
76
|
+
apiKey: process.env.CURSOR_API_KEY || "YOUR_CURSOR_API_KEY", // 建议从环境变量获取
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
// 你可以在这里继续你的应用逻辑
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
`BeLinkReview.init()` 会自动检测并向你的 `package.json` 文件中添加一个 `review` 脚本:
|
|
83
|
+
|
|
84
|
+
```json
|
|
85
|
+
// package.json
|
|
86
|
+
{
|
|
87
|
+
"scripts": {
|
|
88
|
+
"review": "belink-review"
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
如果 `review` 脚本已存在,则会跳过添加。
|
|
94
|
+
|
|
95
|
+
### 2. 执行代码审查
|
|
96
|
+
|
|
97
|
+
初始化完成后,你可以在项目根目录执行以下命令来运行 AI 代码审查:
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
pnpm run review
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
CLI 将会执行以下步骤:
|
|
104
|
+
|
|
105
|
+
1. **获取 Git Diff**: 优先获取 `git diff --cached`(暂存区改动),如果为空则获取 `git diff HEAD`(工作区改动)。
|
|
106
|
+
2. **检测 Cursor CLI**: 检查 `agent` 命令是否存在。如果不存在,将提示你安装 Cursor CLI。
|
|
107
|
+
3. **生成 AI Prompt**: 根据获取到的 Git diff 生成 AI 审查提示。
|
|
108
|
+
4. **发送给 AI**: 调用 Cursor CLI (`agent -p prompt`) 并设置 `CURSOR_API_KEY` 环境变量。
|
|
109
|
+
5. **输出结果**: 捕获 AI 的返回结果并格式化输出。
|
|
110
|
+
|
|
111
|
+
#### CLI 输出示例
|
|
112
|
+
|
|
113
|
+
```
|
|
114
|
+
[be-link-review] Getting git diff...
|
|
115
|
+
[be-link-review] Sending to AI...
|
|
116
|
+
===== AI Review =====
|
|
117
|
+
(这里是 AI 返回结果)
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
如果检测到没有代码变更,则会输出:
|
|
121
|
+
|
|
122
|
+
```
|
|
123
|
+
[be-link-review] No code changes detected
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
## 配置
|
|
127
|
+
|
|
128
|
+
### 基础配置
|
|
129
|
+
|
|
130
|
+
`BeLinkReview.init()` 接受一个配置对象:
|
|
131
|
+
|
|
132
|
+
```typescript
|
|
133
|
+
interface BeLinkReviewOptions {
|
|
134
|
+
apiKey?: string; // 你的 Cursor API Key
|
|
135
|
+
agentPath?: string; // Cursor CLI agent 可执行文件路径
|
|
136
|
+
ignore?: string[]; // 需要忽略的文件模式
|
|
137
|
+
feishu?: FeiShuConfig; // 飞书机器人配置
|
|
138
|
+
}
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
建议将 `apiKey` 作为环境变量 `CURSOR_API_KEY` 进行管理,以避免将其硬编码到代码中。
|
|
142
|
+
|
|
143
|
+
### 飞书机器人集成
|
|
144
|
+
|
|
145
|
+
`be-link-review` 已**完全内置**飞书机器人功能,所有飞书配置已写死在代码中,**无需任何配置即可使用**!
|
|
146
|
+
|
|
147
|
+
#### 1. 开箱即用
|
|
148
|
+
|
|
149
|
+
✅ 飞书配置已完全内置,包括:
|
|
150
|
+
- App ID 和 App Secret
|
|
151
|
+
- 接收者 ID (群聊/用户)
|
|
152
|
+
- 消息类型和标题
|
|
153
|
+
|
|
154
|
+
**直接使用,无需配置:**
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
# 只需配置 Cursor API Key
|
|
158
|
+
CURSOR_API_KEY=your_api_key pnpm run review
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
代码审查结果会自动发送到预配置的飞书群聊!
|
|
162
|
+
|
|
163
|
+
#### 2. 禁用飞书通知(可选)
|
|
164
|
+
|
|
165
|
+
如果需要禁用飞书通知,可以通过以下方式:
|
|
166
|
+
|
|
167
|
+
**方式一:环境变量**
|
|
168
|
+
|
|
169
|
+
```bash
|
|
170
|
+
FEISHU_ENABLED=false pnpm run review
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
**方式二:CLI 参数**
|
|
174
|
+
|
|
175
|
+
```bash
|
|
176
|
+
pnpm run review --no-feishu
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
**方式三:代码配置**
|
|
180
|
+
|
|
181
|
+
```typescript
|
|
182
|
+
BeLinkReview.init({
|
|
183
|
+
apiKey: process.env.CURSOR_API_KEY,
|
|
184
|
+
enableFeishu: false,
|
|
185
|
+
});
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
#### 3. 修改内置配置
|
|
189
|
+
|
|
190
|
+
如果需要修改飞书配置(如更换群聊、修改消息格式等),可以直接编辑 `src/constants.ts` 文件:
|
|
191
|
+
|
|
192
|
+
```typescript
|
|
193
|
+
// src/constants.ts
|
|
194
|
+
export const appId = "cli_a93822da7238dbb5";
|
|
195
|
+
export const appSecret = "ZQdcpLUHFb4gFa8cGfrlJfVfSSyGtyzF";
|
|
196
|
+
export const receiveId = "oc_482b6a04f95f4206c4fa9bc61829fd17"; // 修改为你的群聊 ID
|
|
197
|
+
export const receiveIdType = "chat_id";
|
|
198
|
+
export const messageType = "interactive"; // text | post | interactive
|
|
199
|
+
export const messageTitle = "🔍 Code Review 结果";
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
#### 4. 常见问题
|
|
203
|
+
|
|
204
|
+
**Q: 飞书通知会发送到哪里?**
|
|
205
|
+
A: 发送到 `constants.ts` 中配置的 `receiveId` 对应的群聊或用户。
|
|
206
|
+
|
|
207
|
+
**Q: 如何更换接收群聊?**
|
|
208
|
+
A: 修改 `src/constants.ts` 中的 `receiveId` 为新的群聊 chat_id,然后重新构建项目。
|
|
209
|
+
|
|
210
|
+
**Q: 支持哪些消息格式?**
|
|
211
|
+
A: 支持三种格式:
|
|
212
|
+
- `interactive` (默认): 美观的消息卡片,支持 Markdown
|
|
213
|
+
- `post`: 富文本格式
|
|
214
|
+
- `text`: 纯文本格式
|
|
215
|
+
|
|
216
|
+
**Q: 如何完全禁用飞书功能?**
|
|
217
|
+
A: 使用 `--no-feishu` 参数或设置 `FEISHU_ENABLED=false` 环境变量。
|
|
218
|
+
|
|
219
|
+
## 开发
|
|
220
|
+
|
|
221
|
+
### 构建项目
|
|
222
|
+
|
|
223
|
+
```bash
|
|
224
|
+
cd be-link-review
|
|
225
|
+
pnpm install
|
|
226
|
+
pnpm run build
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
这将使用 `tsup` 将 TypeScript 代码编译为 `dist/index.js` (ESM) 和 `dist/index.cjs` (CommonJS)。
|
|
230
|
+
|
|
231
|
+
### 运行 CLI (开发模式)
|
|
232
|
+
|
|
233
|
+
```bash
|
|
234
|
+
pnpm run start
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
这将直接运行 `dist/cli/review.js`。
|
|
238
|
+
|
|
239
|
+
## 贡献
|
|
240
|
+
|
|
241
|
+
欢迎提交 Issue 或 Pull Request。
|
|
242
|
+
|
|
243
|
+
## 许可证
|
|
244
|
+
|
|
245
|
+
ISC License
|
|
246
|
+
|
|
247
|
+
---
|
|
248
|
+
|
|
249
|
+
**Manus AI** 生成
|