refactor: simplify reader digest skill

This commit is contained in:
zhuyongxin
2026-07-28 19:14:09 +08:00
parent 5eb390e3ed
commit 6dd8cef347
14 changed files with 388 additions and 1859 deletions
@@ -1,46 +1,27 @@
# IMA 凭证链:从 reader `.env` 到 IMA 上传
# IMA 凭证与安全边界
## 凭证来源
## 必需配置
IMA 上传所需的凭证存储在多个位置,优先级如下:
- `IMA_OPENAPI_CLIENTID`
- `IMA_OPENAPI_APIKEY`
- `IMA_DAILY_KNOWLEDGE_BASE_ID`
- `IMA_DAILY_KNOWLEDGE_BASE_NAME=daily`
| 优先级 | 位置 | 说明 |
|--------|------|------|
| 1 | 环境变量 `IMA_OPENAPI_CLIENTID` / `IMA_OPENAPI_APIKEY` | Hermes session 级 |
| 2 | `~/.config/ima/client_id` / `api_key` | ima-skill 的默认检查路径 |
| 3 | `/home/ubuntu/zhu/github/reader/.env` | reader 项目配置,含完整的 IMA 凭证和 KB ID |
优先使用当前进程环境和 IMA Skill 已支持的凭证加载机制。不要在本 Skill 中复制、迁移或重写密钥文件。
## 凭证内容(reader .env 中)
## 缺失处理
```
IMA_OPENAPI_CLIENTID=<32位hex>
IMA_OPENAPI_APIKEY=<base64编码的API密钥>
IMA_DAILY_KNOWLEDGE_BASE_ID=<base64编码的KB ID>
IMA_DAILY_KNOWLEDGE_BASE_NAME=daily
```
Preflight 返回凭证缺失或目标知识库无法解析时:
## 缺失时的处理流程
1. 停止上传;
2. 只报告缺失的变量名或配置项;
3. 等待用户或运行环境补齐配置;
4. 配置恢复后重新执行 preflight,不重复生成知识笔记。
当 IMA 上传失败(`-100` 凭证缺失错误)时:
## 安全边界
1. 从 reader `.env` 读取凭证:
```
grep -E '^(IMA_OPENAPI_CLIENTID|IMA_OPENAPI_APIKEY)=' /home/ubuntu/zhu/github/reader/.env
```
2. 同步到 ima-skill 默认检查路径:
```
echo "<client_id>" > ~/.config/ima/client_id
echo "<api_key>" > ~/.config/ima/api_key
```
3. (可选)追加到 Hermes `.env` 以全局生效:
```
echo "IMA_OPENAPI_CLIENTID=<client_id>" >> /root/.hermes/.env
echo "IMA_OPENAPI_APIKEY=<api_key>" >> /root/.hermes/.env
echo "IMA_DAILY_KNOWLEDGE_BASE_ID=<kb_id>" >> /root/.hermes/.env
echo "IMA_DAILY_KNOWLEDGE_BASE_NAME=daily" >> /root/.hermes/.env
```
## 执行注意事项
- **COS 凭证红线**:`create_media` 返回的 `cos_credential` 中的 `token`/`secret_id`/`secret_key` 在 `terminal()` 输出中会被 Hermes 替换为 `***`。必须用 `subprocess.run()` 捕获原始输出,或用 `execute_code` 内联操作。
- **凭证格式**:`api_key` 是 base64 字符串(76 字符),`kb_id` 也是 base64 字符串。不要截断或转码。
- 不在聊天、日志或命令输出中打印完整 API key、KB ID 或 COS 临时凭证;
- `create_media` 返回的 COS 凭证仅在同一受控进程内传给上传工具,不写入磁盘;
- 不通过拼接 Shell 字符串传递凭证,使用参数数组或 IMA Skill 的封装;
- 不绕过 Hermes 的脱敏机制;若现有工具链无法安全传递凭证,停止并报告;
- 上传结束后不持久化 COS 临时凭证。