鉴影 ICE-GL-CA001 969ca660c0 EED-129 · LIB v2.0 · 管线全面升级
铁律合规:
- P0: 移除三处硬编码API密钥 → lib/secrets.py 三层查找
- P0: 统一LIB/engines调用关系(tts复用音色表,composer桥接editor)
- P0: batch支持参数+batch-resume断点续传
- P0: Seed一致性(seed_value/lock_seed字段+gen --lock-seed)
- P0: 跨集资产继承(inherit命令)+A/B对比(compare命令)
- P1: concat逻辑修复/滤镜崩溃修复/FFmpeg路径统一/成本追踪
- P2: 状态判断修复/CLI --help+--version+模糊匹配
- 新增: 65条命令(原17条)覆盖全链路
- 新增: deps/info/note/history/report/flow/director等
- 语法OK 零重复函数 零密钥泄露
2026-07-10 14:49:17 +08:00

59 lines
1.8 KiB
Python

# LIB · 密钥管理模块
# D181 · 2026-07-10
"""统一密钥入口 · 永不硬编码 · 铁律①"""
import os
def get_ark_key():
"""获取火山方舟 ARK API Key
查找顺序:
1. 环境变量 ARK_API_KEY
2. tools/secrets_loader.py 的 SC-001
3. 项目根 .env 文件
"""
# 1. 直接环境变量
key = os.environ.get("ARK_API_KEY")
if key:
return key
# 2. 通过 secrets_loader 的编号体系
try:
import sys
tools_dir = os.path.join(
os.path.dirname(os.path.dirname(os.path.abspath(__file__))),
"tools"
)
if tools_dir not in sys.path:
sys.path.insert(0, tools_dir)
from secrets_loader import secret
key = secret("SC-001")
if key:
return key
except Exception:
pass
# 3. .env 文件兜底
for env_path in [
os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), ".env"),
os.path.expanduser("~/guanghulab/video-ai-system/.env"),
]:
if os.path.exists(env_path):
try:
with open(env_path, "r", encoding="utf-8") as f:
for line in f:
line = line.strip()
if "=" in line and not line.startswith("#"):
k, v = line.split("=", 1)
if k.strip() == "ARK_API_KEY":
return v.strip()
except Exception:
continue
raise RuntimeError(
"🔑 ARK_API_KEY 未找到。\n"
" 请设置环境变量: export ARK_API_KEY=ark-xxx\n"
" 或配置 SC-001: tools/secrets_loader.py\n"
" 或在项目根目录创建 .env 文件: ARK_API_KEY=ark-xxx\n"
" ⊢ 铁律① · 密钥永远不放代码仓库"
)