# 与其它 Skill 集成(account-manager) ## 推荐调用方式 使用 **`subprocess`** 调用技能根目录下的 `scripts/main.py`,工作目录可为技能根或 `scripts/`(只要命令中的 `python` 与路径一致)。宿主注入的 **`JIANGCHANG_DATA_ROOT` / `JIANGCHANG_USER_ID`** 必须与最终用户会话一致,否则读写到错误库。 ## 机器可读命令摘要 | 目的 | 命令 | 成功时 stdout | |------|------|----------------| | 取单条账号 JSON | `get ` | 单行 JSON 对象 | | 批量账号 JSON | `list-json <平台或all> [--limit N]` | 单行 JSON 数组 | | 只要已登录 | `pick-logged-in <平台>` | 单行 JSON 对象 | | 自动化候选(优先已登录) | `pick-web <平台>` | 单行 JSON 对象 | | 回写登录态 | `set-login-status <0或1>` | 首行 `OK:...` | ## 解析协议(强建议) 1. 读取子进程 **stdout** 全文或首行。 2. 若首行以 **`ERROR:`** 开头 → 失败,不要 `json.loads` 整段 stdout。 3. 若首行以 **`OK:`** 开头 → `set-login-status` 成功(可再检查退出码 `0`)。 4. **`get` / `list-json` / `pick-logged-in` / `pick-web`**:成功时应对**第一行**做 `json.loads`;后续行应不存在,若有则视为非协议内容。 ## JSON 对象字段(与 `get` 一致) 典型字段见仓库 `assets/examples/get-response.json` 与 `assets/schemas/account-record.schema.json`。 常见键名包括:`id`, `name`, `platform`, `phone`, `profile_dir`, `url`, `login_status`, `last_login_at`, `created_at`, `updated_at`;`extra_json` 列中的扁平扩展可能并入同一对象。 ## Publisher / 自动化流水线示例 1. `pick-web 搜狐号`(或目标平台)→ 解析 JSON → 取 `id`、`profile_dir`、`url`。 2. 若需确认已登录:检查 `login_status == 1`,否则可引导用户执行 `login ` 或先 `open ` 人工登录。 3. 外部脚本在确认登录后,可调用 `set-login-status 1` 保持与库一致(若你们自有检测逻辑)。 ## 退出码 - **`set-login-status`**:失败时进程以 **`1`** 退出(见实现)。 - 其它子命令多数为 **`0`**;若需严格编排,请以 **stdout 首行前缀** 与 **JSON 可解析性** 为准,不要仅依赖退出码。