用了两个月 AI 编程,我给自己的每条 prompt 打了分——大多数不超过 30(附源码)

0 阅读5分钟

大家好,我是 chris,一个用 AI 写代码写了快一年的开发者。

今天分享一个自己用了几个月后决定开源的工具,顺带聊聊我用它持续追踪自己 prompt 质量六周后发现的一些规律。


🤔 起因

某天我在翻 Claude Code 的 session log,发现自己的 debug 类 prompt 几乎都长这样:

"修一下这个 bug"

"为什么这里报错"

"这里有问题"

每个不超过 10 个字,没有文件,没有行号,没有具体报错。然后我花了 20 分钟调这个 AI 才搞定的东西,其实可能 2 分钟就结束了——如果我当时写得具体一点。

我想知道:我的 prompt 到底有多差?更关键的是,追踪这个数据几周后,写 prompt 的习惯真的会变吗?


💡 解决思路

既然是 NLP 问题,我就去查了研究界怎么量化"好的 prompt"。翻了几篇论文之后,发现研究界对这事比我想的要具体:

研究核心发现
Google arXiv:2512.14982重复短语会降低输出质量
Stanford arXiv:2307.03172LLM 对 prompt 首尾权重更高(position bias)
SPELL EMNLP 2023词汇熵可作为信息密度代理指标
Prompt Report arXiv:2406.06608prompt 可分为 12 个任务类别

有理论依据之后,我基于这 4 篇论文实现了一个 0-100 打分系统。


🔍 打分逻辑

reprompt score 从四个维度出分:

Specificity(0-40 分) — 最重要。检测文件路径、行号、函数名、具体报错是否存在。这些信息给 AI 提供了可操作的上下文,有和没有差距极大。

Position(0-25 分) — 关键信息是否在 prompt 开头。根据 Stanford 的研究,LLM 对首尾权重远高于中间,把 auth.service.ts:47 放在前面比放在后面效果好。

Repetition(0-15 分) — 检测 prompt 内的重复短语,重复越多扣分越多。

Perplexity proxy(0-20 分) — 用词汇多样性(Shannon 熵)近似信息密度。


🎯 先看效果

废话不多说,直接看分数:

$ reprompt score "修一下这个 bug"
Prompt Quality Score: 18/100
  Specificity ██░░░░░░░░ 5/40 — 无文件、无函数、无错误信息
  Position ███░░░░░░░ 8/25 — 上下文空洞
  Repetition ██████████ 0/15 — 无惩罚
  Perplexity ██░░░░░░░░ 5/20 — 词汇单一
$ reprompt score "修复 auth.service.ts:47 的空指针异常 — token 在 session 超时时变 null,应该抛 AuthException 而不是返回 200"
Prompt Quality Score: 91/100
  Specificity █████████░ 38/40 — 文件路径、行号、错误类型、预期行为
  Position █████████░ 22/25 — 关键信息前置
  Repetition ██████████ 0/15 — 无惩罚
  Perplexity ██████████ 20/20 — 词汇丰富

📊 六周追踪后的发现

跑完 reprompt insights,我自己的结果是这样的:

debug : avg 31/100 ███░░░░░░░ Research: 65+  重点改进
implement: avg 64/100 ██████░░░░ Research: 70+
test : avg 72/100 ███████░░░ Research: 68 

debug 类平均 31 分,和研究基准的 65 差了一半。

最差的那批 prompt 几乎全是一两个小时没调出来、最后放弃的 session 开头。这个规律不是巧合——越急越懒,越懒越模糊,越模糊来回磨的越久。

追踪三周后,debug 平均分从 31 涨到了 48。不是因为刻意练习,而是每次 session 结束后看到 reprompt digest --quiet 输出的那一行数字,下意识地就会多写几个字。数字的力量比告诉自己"要写清楚"强很多。


🎭 Prompt 人格报告

v0.9 新增了 reprompt wrapped,生成类似 Spotify 年度总结的 prompt 报告。它会根据你的 prompt 类别分布和习惯,给你分配一个"人格":

  • Architect(架构师) — 偏系统级思考

  • Firefighter(救火队长) — 偏反应式调试

  • Explorer(探索者) — 偏探索和学习

  • Optimizer(优化师) — 偏重构和改进

  • Scholar(学者) — 偏解释和研究

  • Builder(建造者) — 偏功能实现

我自己是 70% Architect + 20% Firefighter。意外吗?看完数据后觉得完全不意外。


🛠 其他功能

reprompt compare "prompt A" "prompt B"

逐维度对比两条 prompt,搞清楚改动带来了什么变化。

reprompt digest

每周对比本周 vs 上周:prompt 数量、平均分变化、类别分布。

--quiet 输出单行,可以挂在 Claude Code Stop hook,每次 session 结束自动显示:

Week of Mar 10: 156 prompts ↑12% | specificity 4762 ↑ | debug ↓ implement ↑

reprompt style

个人 prompt 风格指纹:平均长度、类别分布、开头模式、specificity 分布曲线。

reprompt import

v0.9 新增。导入 ChatGPT 和 Claude.ai 的网页端对话记录:


reprompt import conversations.json # ChatGPT 数据导出

reprompt import claude-export.zip # Claude.ai 账号导出

导入后和 CLI 工具扫描的数据放在同一个 DB,所有分析命令通用。


📦 快速上手

pipx install reprompt-cli

reprompt demo # 先用内置示例数据体验一下
reprompt scan # 扫描你的 AI 编程会话(自动识别工具,零配置)
reprompt insights # 看看自己哪类 prompt 最差
reprompt score "你的 prompt" # 单条打分
reprompt wrapped # 生成 prompt 人格报告

支持自动识别的工具: Claude Code、Cursor、Aider、Gemini CLI、Cline、OpenClaw — 6 种扫描。

支持导入的平台: ChatGPT(conversations.json)、Claude.ai(ZIP 导出)— 2 种导入。


🔧 技术栈

  • Python 3.10+,scikit-learn(TF-IDF + K-means),SQLite

  • 493 个测试,严格 mypy,不是玩具项目

  • 8 个 Adapter(6 自动扫描 + 2 手动导入)

  • 所有数据本地处理,打分纯 NLP,无 LLM 调用,可选 Ollama 嵌入

  • MIT 协议


写在最后

开源地址:github.com/reprompt-de…,有兴趣的同学可以看看。

你的调试类 prompt 平均分多少?我猜大多数人跟我一样,debug 的时候写得最短,然后磨的时间最长。欢迎评论区交流。

觉得有用的话,点个赞再走 ⭐