## 2.0.1 - fix(identity): sessionToken 解析链补 /opt/data/fmode-identity.json 与 ~/.fmode-harness-agent/ 兜底 (实测 34 台容器中 32 台只有 fmode-identity.json 带 session_token,缺此兜底会误报"缺 token"无法上报) - chore(license): 4 个源文件头部 MPL-2.0 声明统一为 MIT,与仓库 LICENSE 一致 # CHANGELOG ## [2.0.0] - 2026-09-23 ### 重大改造(Breaking Change) **v1.0 彻底废弃,v2.0 为完全重写** #### 核心变更 - **上传通道**:从 `boto3`/`obs` SDK + `S3_AK/S3_SK` 改为平台云函数 `fmodeagent-upload-url`(`AlP56LCKFm`),只需 `sessionToken`,**零密钥、零 pip 依赖** - **包结构**:从 Python-only scripts 改为 ESM-first Node.js 标准结构(`lib/` + `bin/` + `skills/`) - **CLI**:新增 `agent-log.mjs` 四命令(`report` / `collect` / `check` / `config`) - **身份解析**:新增高兼容链(5 个来源,hermes `/opt/data` 与 root `/root` 两处均可命中) - **指标采集**:保留 v1.0 所有维度(timestamp/agent/host/resources/concurrency/services/events),新增 `schema_version: "2.0"`、`agent_id`、`userid`、`hostname` 字段 - **错误处理**:缺 `sessionToken` 打印详细指引 + `exit 2`,不再静默失败 #### 修复的 v1.0 问题 - `collect_metrics.py` 中 `time` 模块在 `collect()` 函数体内调用但未提前 import(已修复) - `upload_log.py` 依赖 `obs.ObsClient`,容器内无法安装(已废弃,改为 fetch) - `S3_AK/S3_SK` 环境变量在所有容器中均缺失,导致所有 Agent 静默失败(已解决) - 上报路径 hardcode 为 `~/.fmode-harness-agent/tmp/`(已改为直接内存传递) #### 删除 - `scripts/upload_log.py`(boto3/obs SDK 通道,已废弃) - `scripts/report.sh`(旧 shell 入口) - `scripts/collect_metrics.py`(已迁移为 `lib/collect.py`,修复 bug,统一入口) #### 新增 - `lib/identity.mjs` — 身份解析高兼容链 - `lib/upload.mjs` — 云函数预签名上传 - `lib/index.mjs` — 公共 SDK 入口 - `lib/collect.py` — 指标采集(标准库,3.6+ 兼容) - `bin/agent-log.mjs` — CLI 入口 - `package.json` — ESM-first 标准(type:module, node>=18) - `skill-package-manifest.json` — 看板数据源 - `test/smoke.mjs` — 冒烟测试 - `CHANGELOG.md` — 本文件 - `QA.md` — 六项质检结果 --- ## [1.0.0] - 2026-09-20(已废弃) 初始版本,使用 boto3/obs SDK + AK/SK 上传,实际全部静默失败。