如果你要利用 RULES 投喂密钥信息,你滴密钥可能会泄露在 GitHub 上,原因是 qqqide “保留原料级上下文资产” 滴理念包括将 AI 滴一切指令操作,记录在磁盘上滴 all.json/all.txt。展开看,其实你在对话框中直接喂给 AI 滴信息或子弹文件,如果当中包含密钥,也会被持久化在你滴硬盘上,接下来,如果你选择将那些持久化文件上传到公开 GitHub 仓库,你就完成了密钥滴泄露。
我们预计会在qqqide v0.4版本,提供一个高级选项,用于协助本地密钥滴脱敏(记录原料,但尽可能脱敏)
完整列表:可能包含密钥的本地文件
A. AI 对话资产(每楼层一套)— 最高风险
| 文件 | 详细路径 | 含密钥的原因 | 风险 |
|---|---|---|---|
all.json | {项目}/_qqq/quests/q{n}.{标题}/f{n}.{问题}/all.json | 对话全文 + 全部工具调用参数与输出(含 run_command 输出、read_file 读到的 .env 内容) | 🔴 最高 |
all.txt | 同上目录 all.txt | 人类可读母本,内容与 all.json 同源 | 🔴 最高 |
reasoning.txt | 同上目录 reasoning.txt | all.txt 截断版(工具结果截到 300 字),密钥若在用户消息/AI 回复中仍在 | 🟠 高 |
ctx.json | {quest 目录}/ctx.json(q{n}.{标题}/ 下) | 上下文背包饼干——压缩时原样保留密钥文本,重启恢复全靠它 | 🟠 高 |
img_N.png | 楼层目录下 | 发送的截图/图片,可能含密钥画面(登录页、API 控制台) | 🟠 高 |
web_fetch_N.txt / web_search_N.txt | 楼层目录下 | AI 抓取的网页/搜索结果落盘,若抓的是密钥相关页面 | 🟡 中 |
all.json.tmp.* | 楼层目录下 | 写盘残留临时文件(正常会清理,异常断电可能残留) | 🟡 低 |
B. 剪贴板与子弹 — 直喂通道
| 文件 | 详细路径 | 含密钥的原因 | 风险 |
|---|---|---|---|
bullet_{时间戳}_{qid}_f{n}.txt | {项目}/_qqq/bullet/ | 子弹按钮=剪贴板→磁盘,复制过的密钥 1:1 落盘(20MB FIFO 轮转,被挤出前一直存在) | 🔴 最高 |
C. 项目级数据库与状态 — 静默冗余
| 文件 | 详细路径 | 含密钥的原因 | 风险 |
|---|---|---|---|
quest.sq3 | {项目}/_qqq/alphal/quest.sq3 | 每层楼的 question 字段存用户问题原文——直问密钥即入库 | 🟠 高 |
only.sq3 | {项目}/_qqq/alphal/only.sq3 | ai.uiStates.{panelId} 快照编辑框草稿(未发送的粘贴内容也持久化!) | 🟠 高 |
panel_re{l|c|r}.json | {项目}/_qqq/alphal/ | 三面板 resume 状态(含最近 UI 状态) | 🟡 中 |
agent-{日期}.log | {项目}/_qqq/new_log/ | AI 面板诊断日志,异常堆栈可能含工具参数原文(30 天轮转) | 🟡 中 |
blobs/{sha256前2位}/{sha256}.gz | {项目}/_qqq/timeline/blobs/ | 文件历史版本快照,不可变、永不删——编辑过 .env 则每个含密钥版本都永久存档 | 🔴 最高 |
timeline.wal / timeline.db / timeline.db.bak | {项目}/_qqq/timeline/ | 时间线索引,指向上述 blob | 🟡 低(本身无内容) |
_qqq/index/ | {主文件夹}/_qqq/index(search_smart 索引) | BM25 倒排索引含被索引文件内容;_qqq 自身在 SKIP_DIRS,但项目内 .env 若被索引则内容入倒排 | 🟠 高 |
D. 粘贴附件
| 文件 | 详细路径 | 含密钥的原因 | 风险 |
|---|---|---|---|
_qqqvault/ 下全部文件 | {当前文件所在目录}/_qqqvault/ | 粘贴的图片/文件原样落盘(密钥截图、含密钥的配置文件) | 🟠 高 |
E. 程序级保险库({包根}/gh555.com/Data/)
| 文件 | 详细路径 | 含密钥的原因 | 风险 |
|---|---|---|---|
global.sq3 | {包根}/gh555.com/Data/alphal/global.sq3 | 跨项目全局库(最近文件夹/主题/语言/剪切板)——含剪贴板类数据时需注意 | 🟡 中 |
auth.enc | {包根}/gh555.com/Data/alphal/auth.enc | 登录凭证加密存储(加密态,但理论可解密) | 🟠 高 |
launcher-swap.log | {包根}/gh555.com/Data/ | 更新日志(路径级,一般无密钥) | ⚪ 低 |
device_id / factory_version | {包根}/gh555.com/Data/alphal/ | 设备标识,无密钥 | ⚪ 无 |
F. OS 级(%LOCALAPPDATA%/qqqide/)— 项目外冗余
| 文件 | 详细路径 | 含密钥的原因 | 风险 |
|---|---|---|---|
ai.sq3 | %LOCALAPPDATA%/qqqide/ai.sq3 | Ctrl+P 最近文件列表——.env、config.json 等文件名可见 | 🟡 低 |
ws.sq3 | %LOCALAPPDATA%/qqqide/ws.sq3 | 最近主文件夹列表 | ⚪ 低 |
search.sq3 | %LOCALAPPDATA%/qqqide/search.sq3 | 搜索词历史——搜过密钥相关词即留痕 | 🟡 低 |
roam.sq3 / kope.sq3 | %LOCALAPPDATA%/qqqide/ | 文件浏览器/音频状态 | ⚪ 低 |
squads.json | %LOCALAPPDATA%/qqqide/squads.json | 窗口标题(槽位+主文件夹名) | ⚪ 低 |
alphal/crash-net/ | %LOCALAPPDATA%/qqqide/alphal/crash-net/ | 崩溃快照/心跳,极端情况含内存态信息 | ⚪ 低 |
v0.4 前滴解决方案
- 仓库忽略:公开仓库
.gitignore包含_qqq/、_qqqvault/、.env、*.sq3 - 上传前扫描:push 公开仓库前,先扫一遍本地:
findstr /S /M /I "sk- AKIA eyJhbGci github_pat ghp_ cfut_ LTAI" {项目}\_qqq
- 已泄露:密钥立即作废轮换。