- 新增 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∞
141 lines
4.7 KiB
Plaintext
141 lines
4.7 KiB
Plaintext
# 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 · 调用流程
|
||
|
||
```
|
||
耳耳蛋/鉴影:
|
||
① 确定需要调用哪个API(SC-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调用 = 真金白银 · 必须经过人类审批
|