chore: 移除 resolve_key() 等 skill 端函数,更新 CLAUDE.md 配置描述
This commit is contained in:
@@ -55,7 +55,7 @@ mytoolkit env list # 查看所有 key
|
||||
mytoolkit env export # 导出为 shell export 语句
|
||||
```
|
||||
|
||||
API key 读取顺序(所有 skill 脚本统一):环境变量 → `~/.mytoolkit/config.json`。共享调用为 `mytoolkit.config.resolve_key()`。
|
||||
本文件仅管理 mytoolkit 自身配置。Skill 脚本各自由其自身管理 API key(读取 `~/.xiaohe/agent/config.json`),与本配置独立。
|
||||
|
||||
## 3. 语音合成 (TTS)
|
||||
|
||||
|
||||
@@ -126,56 +126,3 @@ class Config:
|
||||
|
||||
# Global singleton
|
||||
config = Config()
|
||||
|
||||
|
||||
# ------------------------------------------------------------------
|
||||
# Shared utility: 2-layer key resolution for skill scripts
|
||||
# ------------------------------------------------------------------
|
||||
|
||||
def resolve_key(name: str) -> str:
|
||||
"""Two-layer key resolution.
|
||||
|
||||
Priority:
|
||||
1. Environment variable (checks ``MYCLI_<NAME>`` first, then ``<NAME>``)
|
||||
2. ``~/.mytoolkit/config.json`` → ``keys.<name>``
|
||||
|
||||
Returns the key value, or ``""`` if not found.
|
||||
"""
|
||||
# 1. Env var (MYCLI_ prefix first, then bare)
|
||||
env_name = name.upper()
|
||||
for var in (f"MYCLI_{env_name}", env_name):
|
||||
val = os.environ.get(var, "")
|
||||
if val:
|
||||
return val
|
||||
|
||||
# 2. ~/.mytoolkit/config.json
|
||||
try:
|
||||
cfg_path = Path.home() / ".mytoolkit" / "config.json"
|
||||
if cfg_path.exists():
|
||||
data = json.loads(cfg_path.read_text())
|
||||
return data.get("keys", {}).get(name, "")
|
||||
except (json.JSONDecodeError, OSError):
|
||||
pass
|
||||
|
||||
return ""
|
||||
|
||||
|
||||
def write_key_to_mytoolkit(name: str, value: str) -> None:
|
||||
"""Write a key into ~/.mytoolkit/config.json (persistent).
|
||||
|
||||
Called by skills when a key is missing and the user provides it.
|
||||
"""
|
||||
cfg_path = Path.home() / ".mytoolkit" / "config.json"
|
||||
cfg_path.parent.mkdir(parents=True, exist_ok=True)
|
||||
try:
|
||||
if cfg_path.exists():
|
||||
data = json.loads(cfg_path.read_text())
|
||||
else:
|
||||
data = {}
|
||||
if "keys" not in data:
|
||||
data["keys"] = {}
|
||||
data["keys"][name] = value
|
||||
cfg_path.write_text(json.dumps(data, indent=2, ensure_ascii=False) + "\n")
|
||||
except (json.JSONDecodeError, OSError):
|
||||
data = {"keys": {name: value}}
|
||||
cfg_path.write_text(json.dumps(data, indent=2, ensure_ascii=False) + "\n")
|
||||
|
||||
Reference in New Issue
Block a user