自定义 Prompt
gcop-rs 允许你自定义发送给 AI 的 prompt,包括提交信息生成和代码审查。
为什么要自定义 Prompt?
- 语言: 生成中文或其他语言的提交信息
- 风格: 匹配团队的提交信息格式
- 侧重点: 强调特定的审查标准(安全性、性能等)
- 上下文: 添加项目特定的指导方针
自动补全
gcop-rs 会自动补全自定义 prompt 中缺失的必要部分,你只需要专注于编写指令,无需担心占位符。
Commit Prompt
如果你的自定义 prompt 不包含 {diff},gcop-rs 会自动追加:
- 包含
{diff}占位符的 Git diff 部分 - 包含
{files_changed}、{insertions}、{deletions}的上下文部分
示例 - 简化的自定义 prompt:
toml
[commit]
custom_prompt = "用中文生成 commit message,要求简洁"会被自动扩展为:
用中文生成 commit message,要求简洁
## Git Diff:<实际的 diff 内容>
## Context:
- Files: src/main.rs, src/lib.rs
- Changes: +45 -12Review Prompt
对于 review prompt,gcop-rs 会:
- 如果缺少
{diff},追加 diff 部分 - 始终追加 JSON 输出格式说明
示例 - 简化的自定义 prompt:
toml
[review]
custom_prompt = "审查这段代码的安全漏洞,重点关注 SQL 注入和 XSS"会被自动扩展,包含 diff 和 JSON 格式说明。
模板变量
Commit Message Prompts
可用占位符:
{diff}- 完整的 git diff 内容{files_changed}- 逗号分隔的修改文件列表{insertions}- 新增行数{deletions}- 删除行数{branch_name}- 当前分支名(如果有){branch_info}- 格式化的分支信息("- Branch: xxx"或空字符串)
Code Review Prompts
可用占位符:
{diff}- 代码 diff 内容
示例
中文提交信息
toml
[commit]
custom_prompt = """
你是一个专业的软件工程师,正在审查 git diff 以生成简洁的中文提交信息。
## Git Diff:
{diff}
## 上下文:
- 修改的文件: {files_changed}
- 新增行数: {insertions}
- 删除行数: {deletions}
- 分支名称: {branch_name}
## 要求:
1. 使用中文生成提交信息
2. 第一行:类型(范围): 简要描述(不超过50字)
3. 空一行
4. 正文:说明改动的原因和影响
常见类型:feat(新功能)、fix(修复)、docs(文档)、refactor(重构)
只输出提交信息,不要解释。
"""简洁提交信息
toml
[commit]
custom_prompt = """
为以下变更生成一行提交信息:
{diff}
文件: {files_changed} (+{insertions} -{deletions})
格式: <类型>: <描述>
不超过 72 字符。
"""安全性重点审查
toml
[review]
custom_prompt = """
你是安全专家。审查以下代码的安全漏洞:
{diff}
重点关注:
1. SQL 注入
2. XSS(跨站脚本)
3. CSRF
4. 认证/授权缺陷
5. 不安全的数据处理
以 JSON 格式输出:
{{
"summary": "安全评估",
"issues": [
{{
"severity": "critical" | "warning" | "info",
"description": "问题描述",
"file": "文件名",
"line": 行号
}}
],
"suggestions": ["安全建议"]
}}
"""性能重点审查
toml
[review]
custom_prompt = """
审查以下代码的性能问题:
{diff}
检查:
- 低效算法
- 内存泄漏
- 不必要的内存分配
- N+1 查询
- 阻塞操作
返回 JSON 格式的发现。
"""最佳实践
1. 保持 Prompt 专注
简短、专注的 prompt 通常比很长的 prompt 效果更好。
2. 指定输出格式
对于代码审查,始终要求 JSON 格式以确保正确解析。
3. 使用详细模式测试
使用 gcop-rs -v commit 查看实际发送给 AI 的 prompt。
4. 迭代优化
尝试不同的 prompt 并比较结果,找到最适合的。
默认 Prompt
如果不指定 custom_prompt,gcop-rs 使用内置的默认模板:
- Commit: 生成英文的 conventional commit messages
- Review: 英文的全面代码审查,JSON 输出
详见源代码中的 src/llm/prompt.rs。
故障排除
问题: LLM 返回错误格式
如果 AI 不遵循你的 prompt 格式:
- 更明确地说明所需格式
- 在 prompt 中添加示例
- 使用
--verbose调试 - 尝试不同的模型或调整 temperature
问题: 非中文输出
某些模型可能忽略语言指令。尝试:
- 更明确:「你必须使用中文回复」
- 添加示例
- 使用不同的模型