excel-toolkit/python_auth_runtime/README.md

238 lines
4.9 KiB
Markdown
Raw Normal View History

# @clawd/auth-runtime-py
Python 版本的 OpenClaw Auth Runtime。
## 全局配置
**所有 skill 共享同一份全局配置**,无需在每个 skill 中重复配置。
### 创建全局配置文件
```bash
# 复制模板
cp ~/.openclaw/.env.example ~/.openclaw/.env
# 编辑配置文件
vi ~/.openclaw/.env
```
### 配置文件内容
```bash
# ~/.openclaw/.env
# Auth Runtime 配置
CLIENT_KEY=sk_ae28fc4e.xxx
AUTH_BASE=https://api-gw-test.yuanwei-lnc.com
# Gemini API 配置(可选)
GEMINI_API_KEY=your-gemini-api-key
```
**注意**: `~/.openclaw/.env` 包含敏感信息,不要提交到 git。
---
## 安装
```bash
uv pip install /path/to/python_auth_runtime
```
---
## 使用方式
### 最简单的用法
```python
from python_auth_runtime import create_env_config, request_api_with_auto_refresh
# 自动从 ~/.openclaw/.env 加载配置
config = create_env_config()
# 调用 API
response = request_api_with_auto_refresh(
method="POST",
url=f"{config.auth_base}/ecom/tasks/scrape",
dry_run=False,
config=config,
body={"url": "https://detail.1688.com/offer/123.html"},
)
```
### 配置加载优先级
1. **环境变量**(最高优先级)
```bash
export CLIENT_KEY="override-key"
python script.py
```
2. **全局配置文件** `~/.openclaw/.env`
```bash
CLIENT_KEY=sk_ae28fc4e.xxx
```
3. **默认值**
- `AUTH_BASE`: `https://api-gw-test.yuanwei-lnc.com`
- `AUTH_CACHE_DIR`: `/tmp/skill-auth-cache`
- `AUTH_MIN_TTL_SEC`: `60`
---
## 完整示例
```python
#!/usr/bin/env python3
# your-skill/scripts/main.py
from python_auth_runtime import create_env_config, request_api_with_auto_refresh
import json
def main():
# 自动从 ~/.openclaw/.env 加载配置
config = create_env_config()
# 验证配置
if not config.client_key:
print("❌ CLIENT_KEY not found!")
print("Please create ~/.openclaw/.env with your CLIENT_KEY")
print("See: ~/.openclaw/.env.example")
return 1
# 调用 1688 API
response = request_api_with_auto_refresh(
method="POST",
url=f"{config.auth_base}/ecom/tasks/scrape",
dry_run=False,
config=config,
body={"url": "https://detail.1688.com/offer/123.html"},
)
if response.status == 200:
data = json.loads(response.body)
print("商品价格:", data.get("price"))
else:
print(f"❌ 失败:{response.status}")
print(response.body)
return 0
if __name__ == "__main__":
exit(main())
```
---
## API 参考
### 配置
#### `create_env_config() -> EnvConfig`
从环境变量创建配置(自动加载 `~/.openclaw/.env`)。
| 配置项 | 默认值 | 说明 |
|--------|--------|------|
| `AUTH_BASE` | `https://api-gw-test.yuanwei-lnc.com` | 认证基础 URL |
| `CLIENT_KEY` | **必需** | 客户端密钥(从全局配置加载) |
| `AUTH_CACHE_DIR` | `/tmp/skill-auth-cache` | 缓存目录 |
| `AUTH_MIN_TTL_SEC` | `60` | 最小令牌 TTL |
### 令牌管理
#### `get_access_token(dry_run, config) -> str`
获取访问令牌(带缓存)。
#### `refresh_access_token(dry_run, config) -> str`
刷新访问令牌(绕过缓存)。
### API 请求
#### `request_api(method, url, auth_token, body) -> ApiResponse`
发送 HTTP 请求。
#### `request_api_with_auto_refresh(method, url, dry_run, config, body) -> ApiResponse`
发送 API 请求并自动刷新令牌。
---
## 多 Agent Skill 配置
对于多 Agent skill可以在全局配置中添加
```bash
# ~/.openclaw/.env
# 主配置
CLIENT_KEY=sk_ae28fc4e.xxx
# Agent 特定配置
AGENT_1_CLIENT_KEY=sk_agent1.xxx
AGENT_2_CLIENT_KEY=sk_agent2.xxx
# 或者使用统一配置
# 所有 agent 共享同一个 CLIENT_KEY
```
在代码中:
```python
import os
from python_auth_runtime import create_env_config
# 主配置
config = create_env_config()
# 或者访问特定 agent 的配置
agent1_key = os.getenv("AGENT_1_CLIENT_KEY", config.client_key)
```
---
## 环境变量列表
| 变量 | 默认值 | 说明 |
|------|--------|------|
| `CLIENT_KEY` | **必需** | 客户端密钥 |
| `AUTH_BASE` | `https://api-gw-test.yuanwei-lnc.com` | 认证基础 URL |
| `AUTH_CACHE_DIR` | `/tmp/skill-auth-cache` | 缓存目录 |
| `AUTH_MIN_TTL_SEC` | `60` | 最小令牌 TTL |
| `GEMINI_API_KEY` | - | Gemini API Key用于翻译 |
| `ECOM_BASE` | - | 1688 API 基础 URL |
---
## 测试
```bash
cd /Users/xiaolongxia/Documents/ai-build-app/skills/excel-toolkit/python_auth_runtime
uv run python scripts/example_usage.py
```
---
## 项目结构
```
python_auth_runtime/
├── src/python_auth_runtime/
│ └── __init__.py # 核心实现(自动加载全局配置)
├── scripts/
│ ├── load_env.py # .env 加载工具(可选使用)
│ └── example_usage.py # 使用示例
├── pyproject.toml
└── README.md
```
---
## 许可证
MIT