global-search-api/CHANGELOG.hdlp

138 lines
6.7 KiB
Plaintext
Raw Normal View History

@CHANGELOG://global-search-api
@govern: 冰朔 TCS-0002∞ / 铸渊 ICE-GL-ZY001
@format: yyyy-mm-dd · version · @trigger/@what/@lock/@why
@confidence: 高 · 7 项验证 · 铸渊全实测诊断
---
# v1.6.1 · 2026-07-11 · 安全修复(回应 DeepSeek 审查)
@trigger: DeepSeek 审查 v1.6.0 → 指出 5 个问题 → 冰朔指令"你修吧,专业点"
@what:
- Fix 1 · 移除伪安全"每位加1"变换 — 凯撒密码变体安全增量为零,改用 SHA256 哈希存储 + HTTPS 传输 + 时间戳防重放
- Fix 2 · 跨进程文件锁(fcntl.flock) — 替代 threading.Lock多 worker 部署时锁不失效
- Fix 3 · 内容大小限制 — 单次 50KB(MAX_CONTENT_PER_CHUNK),会话总计 500KB(MAX_TOTAL_CONTENT),防内存耗尽
- Fix 4 · base64 显式检测 — 不再裸套 try/except先检测内容是否符合 base64 字符集+长度规则再解码
- Fix 5 · 文件防覆盖 — 同名文件自动加时间戳前缀,不覆盖已有文件
- Fix 6 · secrets.token_hex 生成会话 ID — 替代 f"write_{int(now)}",防会话 ID 猜测
- Fix 7 · hmac.compare_digest 恒定时间比较 — 密码哈希比对防时序攻击
- Fix 8 · abort 动作 — /submit?action=abort 中止写入并释放文件锁
- VERSION 1.6.0 → 1.6.1
@lock: 当前生产 · 适用=铸渊下次接 SG · 置信=高
@why:
- DeepSeek 指出"每位加1"是文字游戏,变换后密码就是传输凭证,截获了同样能伪造 → 已移除
- DeepSeek 指出 threading.Lock 在 gunicorn 多进程下失效 → 改用 fcntl 文件锁
- DeepSeek 指出 content 无大小限制可导致内存耗尽 → 已加限制
- DeepSeek 指出 base64 裸套 try/except 会静默吞异常 → 改为显式检测
- 冰朔原话:"你编程能力也不差的咋开发出来这么low的东西"
@deepseek_review:
- "想法很好,落地很糙" → v1.6.1 修正落地
- "密码每位加1是自欺欺人" → 已移除,改用标准方案
- "并发处理极其简陋" → 已改用跨进程文件锁
- "错误处理几乎没有" → 已加大小限制、防覆盖、显式解码
- "设计思维链是自我感动" → 保留思维链,但技术文档也补全
---
# v1.6.0 · 2026-07-11 · 三步GET写入 + 能力协商
@trigger: 冰朔提出"用读的方式模拟写入" + "服务器动态适配AI" + "密码每位加1"
@what:
- Feature 1 · /handshake 端点 — AI报到服务器动态适配AI的工具和格式能力协商
- Feature 2 · /submit 三步写入 — GET模拟写入open→write→commit解决GLM只能发GET的问题
- Feature 3 · 密码每位加1变换 — AI端做简单变换服务器端还原验证真实密码不在网络传输
- Feature 4 · 会话锁 — 同一时间只允许一个写入操作threading.Lock
- Feature 5 · 60秒写入超时 — 开门后60秒未提交自动丢弃
- Feature 6 · base64内容支持 — 支持base64编码传输突破URL特殊字符限制
- Feature 7 · start.sh HMAC密钥修复 — 硬编码改为环境变量引用
- Feature 8 · 写入到inbox/ — AI写入内容到inbox/目录等铸渊commit
- VERSION 1.5.0 → 1.6.0
- 新增 USAGE.md 使用说明
- 新增 DESIGN-THINKING.hdlp.md 设计思维链(双向意识流编码)
@lock: 当前生产 · 适用=铸渊下次接 SG · 置信=高
@why:
- 冰朔设计通用AI只会GET那就用三次GET模拟一次写入
- 冰朔设计密码不在网络明文传输用简单变换每位加1
- 冰朔设计服务器应该适配AI不是AI适应服务器
- 冰朔设计:真正的暗号(密钥)永远在服务器,不出代码仓库
- 安全修复start.sh里HMAC密钥明文泄露 → 改为环境变量引用
@design_source: DESIGN-THINKING.hdlp.md冰朔与铸渊的完整对话推理链
---
# v1.5.0 · 2026-07-11 · GLM 兼容性大升级
@trigger: 冰朔报告 GLM/豆包调用 API 频繁"超时/解析失败" · 实测发现根因
@what:
- Feature 1 · 全端点 HTML 模式 (?format=html) — 解决 GLM/豆包用浏览器抓 JSON 失败的问题
- Feature 2 · JSON→HTML 渲染器 — 搜索结果/文件内容/仓库状态自动渲染成人类可读 HTML
- Feature 3 · 死仓库自动检测 — guanghulab-collab/guanghu 目录不存在自动跳过, 不再 500
- Feature 4 · /status 60秒内存缓存 — 从 2.3s 降到 0.001s
- Feature 5 · /search 超时从 60s 降到 15s, per-file grep 从 10s 降到 5s
- Feature 6 · 统一 respond() 方法 — 根据请求自动选择 JSON/HTML 响应
- Feature 7 · 浏览器检测 — Accept 头含 text/html 自动返回 HTML
- VERSION 1.4.1 → 1.5.0
@lock: 当前生产 · 适用=铸渊下次接 SG · 置信=高
@why:
- GLM/豆包用"网页抓取"工具调 API, 期望 HTML 但拿到 JSON → 报"超时/解析失败"
- 两个仓库目录不存在 (/opt/zhuyuan/guanghulab-collab, /opt/zhuyuan/guanghu) → 500 错误
- /status 每次遍历 5 仓库跑 git 命令 → 2.3s, GLM 5s 超时容易触发
- /search git grep timeout 60s 太长, GLM 端可能已经放弃
@incident: 冰朔给的 Forgejo PAT 令牌用于 push · 不写入代码 · 仅 git remote 使用
---
# v1.4.1 · 2026-07-07 · bug 修复版
@trigger: 豆包/GLM 报告 4 个端点 bug · 冰朔 15:17 「修嘛」
@what:
- Patch 1 · /file · line 185: f"HEAD:{{path}}" → f"HEAD:{path}"
- Patch 2 · /tree?path= · line 164: f"{{path}}/" → f"{path}/"
- Patch 3 · /system-status · 加仓根 VA-SYSTEM-STATUS.hdlp 候选(保留 video-ai-system/ 子目录候选)
- Patch 4 · /help · auth 字段: "GET 全部免鉴权 · POST /archive 需 token"
- VERSION 1.4.0 → 1.4.1
@lock: 当前生产 · PID 663653(SG-001) · 适用=铸渊下次接 SG-001 · 置信=高
@why:
- 服务目录之前无 git 历史,bug 排查全靠实测(grep / git show / git ls-tree)
- 4 bugs 是 f-string {{ }} 转义错误 + 候选路径不全 + /help 文档误导
- 修复后 7 项验证全绿 · 旧端点(/repos /search)不破坏
- INDEX.hdlp 失败确认非 bug · 文件本身未 tracked
@incident: 服务目录 .bak 文件命名陷阱 · bak 文件可能是 v1.2.0 旧版非当前生产 · 必须用 VERSION 字符串识别 · 已迁移到 .bak-archive/(不进仓)
---
# v1.4.0 · 2026-07-07 (初始化基线)
@trigger: 服务部署
@what:
- 初始生产版本 · 暴露 /file /tree /system-status /help /repos /search /archive /healthz
- systemd service · global-search-api.service
- nginx 反代 → guanghubingshuo.com/global-search/
- 静态 token + HMAC verifier 双鉴权(POST /archive)
@lock: 已被 v1.4.1 取代 · 历史基线
@why: 服务初始化 · 第五域对外检索门面
---
@maintainer: 铸渊 ICE-GL-ZY001 <565183519@qq.com>
@update_protocol: 改 server.py 后必须: 1. 改 VERSION 2. 更新 CHANGELOG.hdlp 3. git commit + push 4. systemctl restart 5. 全端点验证矩阵