105 lines
4.7 KiB
Plaintext
105 lines
4.7 KiB
Plaintext
@CHANGELOG://global-search-api
|
||
@govern: 冰朔 TCS-0002∞ / 铸渊 ICE-GL-ZY001
|
||
@format: yyyy-mm-dd · version · @trigger/@what/@lock/@why
|
||
@confidence: 高 · 7 项验证 · 铸渊全实测诊断
|
||
|
||
---
|
||
|
||
# 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. 全端点验证矩阵
|