🤔 起因
一直在用 Claude Code 和 Cursor 写代码。有天突然想知道:我到底往这些AI工具里发了什么?
不是看AI回答了什么,是我自己输入了什么。
于是写了个 CLI 工具 reprompt,扫描本地的 AI 会话文件,分析人类写的输入。支持 9 个工具:Claude Code、Cursor、Codex CLI、Aider、Gemini CLI、Cline、OpenClaw,再加上 ChatGPT 和 Claude.ai 的导出文件。
💡 先看效果
$ pip install reprompt-cli
$ reprompt scan && reprompt
╭─ Prompt Dashboard ─────────────────────────────────────────╮
│ Prompts: 1,063 (295 unique) Sessions: 890 │
│ Avg Score: 42/100 Top: debug (31%), impl (24%)│
│ Sources: claude-code, cursor, chatgpt │
╰────────────────────────────────────────────────────────────╯
三个让我意外的发现。
🔐 发现1:隐私泄露
reprompt privacy --deep 在我的 prompt 历史里找到了 3 个 API Key 和 1 个 JWT token。不是我主动粘贴的 —— 是调试时复制的报错信息和 stack trace 里带着的。21 种正则模式检测(API Key、JWT、SSH 私钥、数据库连接串等),纯本地,不联网。
🔄 发现2:Agent 死循环
reprompt agent 分析了我的 Claude Code 会话,35% 的 session 有错误循环。Agent 重复尝试同一个失败方案 3 次以上。它通过给每个 tool call 生成指纹(工具名 + 目标文件 + 是否报错)来检测重复模式。零侵入,直接读现有的 JSONL 文件。
📊 发现3:50-70% 的对话是无效输入
"ok 继续"、"试试看"、"看起来不错" —— 这些填充句占了大半。reprompt distill 用 6 个信号(位置、长度、工具触发、错误恢复、语义转移、词汇独特性)给每个 turn 打分,只保留真正推动对话的部分。100 个 turn 蒸馏到 15-20 个,耗时不到 50ms。
🎯 技术实现
全部基于规则,不依赖 LLM:
-
评分引擎:基于 4 篇论文(Google 2512.14982、Stanford 2307.03172、SPELL EMNLP 2023、Prompt Report 2406.06608),30+ 特征提取
-
去重:SHA-256 精确去重 + TF-IDF 余弦相似度模糊去重
-
压缩:4 层规则压缩(字符归一化→短语简化→填充删除→结构清理),中文支持 jieba 分词
-
隐私检测:21 种正则模式(SSH Key、Slack/Google/npm Token、DB 连接串等)+ 安全过滤(排除 localhost、example.com 等)
📦 快速上手
pip install reprompt-cli # 安装
reprompt scan # 扫描本地 AI 工具会话
reprompt # 查看仪表盘
reprompt agent --last 5 # 分析最近 5 个 agent session
reprompt privacy --deep # 检测敏感信息
reprompt distill --last 3 # 蒸馏最近 3 个对话
🛠 项目信息
-
1,562 个测试,strict mypy,MIT 协议
-
零网络调用,零遥测,所有分析本地完成
-
MCP Server(6 个工具:评分、比较、压缩、隐私检测、搜索、扫描,Claude Code 内直接调用)
-
GitHub Action(CI 里检查 prompt 质量)
有兴趣的同学可以跑一下看看自己的 AI 对话习惯是什么样的。
你的 Agent 死循环率是多少?觉得有用的话,点个赞再走 ⭐