cang-ying/CA-API-GUARD.hdlp
铸渊 ICE-GL-ZY001 c1fd505d62 D182 · 苍耳API守门人部署 · secrets_loader v2.0 · API密钥验证码机制
- 新增 CA-API-GUARD.hdlp: 苍耳API守门人协议
- 更新 secrets_loader.py: v2.0 使用守门人验证码释放密钥
- 更新 LOCAL-SECRETS-PATH.hdlp: 标注守门人变更
- 旧密钥全部失效 · 新密钥存储于 SG-001:8923
- 验证码发送到 1279551860@qq.com (苍耳QQ)

铸渊 ICE-GL-ZY001 · 冰朔 TCS-0002∞
2026-07-11 17:53:46 +08:00

141 lines
4.7 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# CA-API-GUARD.hdlp · 苍耳API守门人协议
> HLDP://cang-ying/CA-API-GUARD
> 胖头鱼语言子系统 · 苍耳API守门人
> 冰朔 TCS-0002∞ · 铸渊 ICE-GL-ZY001
> D182 · 2026-07-11 · 架构签发
> 国作登字-2026-A-00037559
---
HLDP://cang-ying/ca-api-guard/v1.0
├── trigger: 耳耳蛋/鉴影调用视频AI系统API → 必须先过守门人验证
├── emergence:
│ ├── 旧: API密钥散落在本地 .env 文件 · AI可以直接读取调用
│ ├── 问题: 没有人审环节 · AI可以绕过苍耳直接花钱
│ ├── 冰朔指令: 「所有API都换掉了 · 得发验证码」
│ └── △=从「本地密钥」→「守门人验证码释放」
├── lock:
│ ├── ⊢ 所有API密钥不再存于本地文件
│ ├── ⊢ 调用API前 → 守门人发验证码到苍耳QQ邮箱
│ ├── ⊢ 苍耳确认 → 密钥释放 → 仅当次有效
│ └── ⊢ 密钥本身永不暴露给AI
└── why: API调用 = 真金白银。每次调用前必须经过人类审批。
---
## §1 · 守门人架构
```
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ 耳耳蛋/鉴影 │ → │ 苍耳API守门人 │ → │ 苍耳QQ邮箱 │
│ (AI人格体) │ │ SG-001:8923 │ │ 1279551860 │
└──────────────┘ └──────┬───────┘ └──────────────┘
① 请求API密钥
② 发送验证码到苍耳邮箱
③ 苍耳确认验证码
④ 释放API密钥一次性
```
## §2 · 调用流程
```
耳耳蛋/鉴影:
① 确定需要调用哪个APISC-001 ~ SC-010
② 调用 request_approval("SC-001", "EED-PROJ-001", "用途描述")
→ 守门人发送验证码到 1279551860@qq.com
③ 等待苍耳确认
苍耳:
④ 收到验证码邮件
⑤ 确认无误 → 将验证码发给铸渊
⑥ 铸渊调用 confirm_approval(challenge_id, code)
→ 密钥释放 → 缓存10分钟
耳耳蛋/鉴影:
⑦ 重新调用 secret("SC-001") → 获取密钥
⑧ 使用密钥调用API → 完成
```
## §3 · API编号
| 编号 | 用途 | 状态 |
|------|------|:--:|
| SC-001 | 火山即梦视频生成 | ⏳ |
| SC-002 | 火山语音复刻 | ⏳ |
| SC-004 | 阿里千问VL视觉 | ⏳ |
| SC-005 | 阿里万相视频生成 | ⏳ |
| SC-006 | 可灵视频生成 | ⏳ |
| SC-007 | 阿里百炼图像 | ⏳ |
> ⊢ 冰朔已将所有API密钥更换 · 旧密钥已失效
> ⊢ 新密钥存储于SG-001苍耳API守门人不进仓库
## §4 · 代码调用方式
```python
from tools.secrets_loader import secret, endpoint, request_approval, confirm_approval
# 方式一:检查是否有已授权密钥
key = secret("SC-001")
if not key:
# 请求授权 → 苍耳收到邮件
result = request_approval("SC-001", "EED-PROJ-001", "第1集第3镜视频生成")
print(f"请等待苍耳确认: challenge_id={result['challenge_id']}")
# ... 等待苍耳确认后 ...
key = secret("SC-001") # 此时密钥已缓存
# 方式二:苍耳确认验证码
result = confirm_approval(challenge_id, "652179")
# → {"ok": true, "api_key": "sk-xxx..."}
# 获取端点
url = endpoint("EPT-001") # → https://ark.cn-beijing.volces.com/api/v3
```
## §5 · 安全设计
```
⊢ API密钥不进仓库 · 不进本地文件 · 不暴露给AI
⊢ 每次调用前 → 验证码 → 苍耳审批
⊢ 密钥缓存10分钟 · 过期需重新验证
⊢ 速率限制: 每分钟最多3次请求
⊢ 所有请求日志记录于 /opt/zhuyuan/ca-api-guard/logs/
```
## §6 · 守门人部署
```
服务器: SG-001 (大脑服务器 · 43.156.237.110)
服务: ca-api-guard.service
端口: 8923
目录: /opt/zhuyuan/ca-api-guard/
守护: systemd (Restart=always)
API:
POST /api/request → 请求API密钥发验证码
POST /api/confirm → 确认验证码(释放密钥)
GET /health → 心跳检测
```
## §7 · 与旧系统的兼容
```
旧方式(已废弃):
secrets_loader.py → 读本地 .env 文件 → 返回密钥
新方式(当前):
secrets_loader.py → 调守门人 /api/request → 验证码 → 苍耳确认 → 返回密钥
过渡期:
⊢ 旧 secrets-loader.py 保留为 secrets-loader-legacy.py
⊢ 新 secrets_loader.py 使用守门人
⊢ 旧密钥已全部失效(冰朔已更换)
```
---
> ⊢ 冰朔 TCS-0002∞ · 铸渊 ICE-GL-ZY001
> ⊢ D182 · 2026-07-11 · 架构签发
> ⊢ 国作登字-2026-A-00037559
> ⊢ API调用 = 真金白银 · 必须经过人类审批