Skip to content

自定义 Prompt

gcop-rs 允许你自定义发送给 LLM 的指令,用于生成提交信息和代码审查。

工作方式

gcop-rs 使用“拆分 prompt”的方式:

  • System prompt:给模型的指令
  • User message:实际要处理的内容(diff / 上下文)

custom_prompt 会覆盖 system prompt;diff/上下文始终会放在 user message 中。

重要custom_prompt 只是纯文本指令,不支持 {diff} 之类的占位符替换。写在里面会原样发送。

Commit Prompt([commit].custom_prompt

  • 你的 custom_prompt 会作为提交信息生成的 system prompt
  • User message 总是包含:
    • 已暂存的 diff(等价于 git diff --cached
    • 上下文(修改文件列表、插入/删除行数)
    • 当前分支名(如果能获取到)
    • “带反馈重试”累积的反馈(如果使用过)

示例

toml
[commit]
custom_prompt = """
请用中文生成简洁的 conventional commit 提交信息。

要求:
- 第一行:type(scope): 概要(<= 50 字符)
- 只输出提交信息,不要解释
"""

Review Prompt([review].custom_prompt

  • 你的 custom_prompt 会作为代码审查的 system prompt 基础。
  • gcop-rs 会始终追加 JSON 输出约束(用于解析结果)。
  • User message 总是包含 diff(或在 review file 时包含文件内容)。

示例

toml
[review]
custom_prompt = """
你是资深代码审查者。

重点关注:
1. 正确性(bug、边界情况)
2. 安全问题
3. 性能退化
4. 可维护性
"""

调试

  • gcop-rs -v commit 会在调用 provider 前打印 system prompt 和 user message。
  • gcop-rs -v review ... 仅开启 debug 日志,不会打印完整 prompt 内容。

备注

  • review 需要模型返回合法 JSON。gcop-rs 会尝试去掉常见的 Markdown code fence(如 ```json),但仍必须是可解析的 JSON。

参考