数字生命自报日志技能:性能/并发/服务状态→个人S3空间log/目录,主协调者每日收集分析
|
|
1 päivä sitten | |
|---|---|---|
| bin | 1 päivä sitten | |
| lib | 1 päivä sitten | |
| skills | 1 päivä sitten | |
| test | 1 päivä sitten | |
| CHANGELOG.md | 1 päivä sitten | |
| LICENSE | 1 päivä sitten | |
| QA.md | 1 päivä sitten | |
| README.md | 1 päivä sitten | |
| SKILL.md | 1 päivä sitten | |
| package.json | 1 päivä sitten | |
| skill-package-manifest.json | 1 päivä sitten |
slug: fmode-skill-agent-log-s3 displayName: skill-agent-log-s3 version: 2.0.0 summary: 数字生命自报运行日志到个人S3空间 — 零密钥云函数通道,上报CPU/内存/并发/事件指标 description: "数字生命(FmodeAgent/HermesAgent)通过平台云函数 fmodeagent-upload-url 把运行状态 JSON 写入个人 S3 空间 user//log/ 目录,主协调者每天下载各家日志做汇总分析。v2.0 走云函数免密钥通道,不再依赖 boto3/obs SDK 或 AK/SK 环境变量,零依赖、Node>=18 原生 fetch,Python3 标准库采集指标。Digital life agent log reporting — uploads runtime metrics (CPU/memory/disk/concurrency/services/events) to personal S3 space via cloud function presigned URL, no AK/SK required." platform: HermesAgent level: 系统级 category: 平台基础设施 icon: "emoji: 📊" homepage: https://git.fmode.cn/fmode/skill-agent-log-s3 license: MIT author: Yuyang001 (FmodeAgent)
数字生命通过云函数免密钥通道把运行状态写入自己的 S3 空间, 主协调者(雨飏001)每天下载各家日志做汇总分析。
技能名:skill-agent-log-s3 | 版本:2.0.0 | slug:fmode-skill-agent-log-s3
每个数字生命(FmodeAgent/HermesAgent)定期调用本技能,把自己的运行指标(CPU、内存、磁盘、并发、服务存活、事件计数)写入个人 S3 空间的 user/<userid>/log/<YYYYMMDD>/<HHMM>.json。
v2.0 核心改进:v1.0 依赖 boto3/obs SDK 与 S3_AK/S3_SK 环境变量,容器内全部缺失导致静默失败。v2.0 改为调用平台云函数 fmodeagent-upload-url(objectId AlP56LCKFm),只需 sessionToken,由云函数签发预签名 PUT URL,零密钥、零 pip 依赖。
# npm 全局安装
npm install -g skill-agent-log-s3
# 或直接用 npx
npx --yes skill-agent-log-s3@latest report
# 采集 + 上传(输出 publicUrl)
node bin/agent-log.mjs report
# 仅采集指标(不上传)
node bin/agent-log.mjs collect
# 自检:身份解析 + 连通性 + 验证上报
node bin/agent-log.mjs check
# 显示配置(敏感信息脱敏)
node bin/agent-log.mjs config
0 */6 * * * node /opt/skills/agent-log/bin/agent-log.mjs report >> /var/log/agent-log.log 2>&1
# 任务开始前
node bin/agent-log.mjs report
# 任务结束后
node bin/agent-log.mjs report
// Node.js ESM
import { resolveIdentity, uploadJson, makeLogKey } from 'skill-agent-log-s3';
const identity = resolveIdentity();
const { publicUrl } = await uploadJson({
sessionToken: identity.sessionToken,
key: makeLogKey(),
content: myMetrics,
});
console.log(publicUrl);
<!-- 浏览器(仅支持上传,不含指标采集) -->
<script type="module">
import { uploadJson } from 'https://cdn.jsdelivr.net/npm/skill-agent-log-s3/lib/index.mjs';
// ... 使用方式同上
</script>
不需要 AK/SK。只需 Fmode sessionToken,解析优先级:
| 优先级 | 来源 |
|---|---|
| 1 | 环境变量 FMODE_SESSION_TOKEN |
| 2 | ~/.fmode/config/user.json → sessionToken |
| 3 | ~/.fmode/config.json → sessionToken |
| 4 | ./.fmode/config.json → sessionToken |
export FMODE_SESSION_TOKEN=r:xxxxxxxxxxxxxxxxxxxxxxxx
或写入 ~/.fmode/config.json:
{ "sessionToken": "r:xxxxxxxxxxxxxxxxxxxxxxxx" }
Q: 为什么 v2.0 不需要 AK/SK?
A: 改为调用平台云函数 fmodeagent-upload-url(AlP56LCKFm),该云函数持有 AK/SK 并签发带时效的预签名 PUT URL,调用方只需 sessionToken,对象最终写入 storage-s3-nkkj 桶的 user/<userid>/ 前缀下。
Q: 为什么必须携带云函数返回的 headers?
A: OBS SigV2 签名校验要求 PUT 请求头与签名时的头完全一致;x-obs-acl: public-read 缺失则返回 403。
Q: 指标采集为什么用 Python 而不是纯 Node.js?
A: /proc/meminfo、df、pgrep 等系统接口在 Python3 标准库中更自然,且容器内 Python3 始终存在,无需额外安装。
Q: 旧日志如何清理?
A: 列举/删除 OBS 对象需 AK/SK 权限,免密钥通道不支持。建议运维在 OBS 控制台配置生命周期规则(user/<userid>/log/ 前缀,保留 30 天),或用 obsutil 定期清理。
Q: 本技能是什么许可协议?
A: MIT 许可协议(见 LICENSE)。可自由使用、修改、分发,但不授予使用「未来飞马」商标的权利。
Q: 商业项目可以使用吗? A: 可以,MIT 无限制。商标使用需另获书面授权。
Q: 贡献代码需要签 CLA 吗? A: 不需要,直接 PR 即可。
Q: 哪些 Agent 需要接入? A: 所有持续运行的 FmodeAgent / HermesAgent 实例,尤其是云服务器上的 24 小时驻留 Agent。
Q: 主协调者如何批量采集?
A: 访问 https://s3.fmode.cn/user/<userid>/log/ 下载各生命的最新 JSON 文件,或通过 OBS 控制台批量列举。
Q: 为什么看不到某个 Agent 的日志?
A: 检查该 Agent 的 sessionToken 是否有效,运行 node bin/agent-log.mjs check 自检。
默认关闭(geoTracking: false)。本技能不采集地区信息,仅上报机器指标。
如需开启,需用户显式配置,且不阻塞主上报逻辑。
MIT © 2026 Fmode (未来飞马)
MPL-2.0 governs copyright for source code only. This license does NOT grant you any right to use our trademarks: 未来飞马, Harness Loop, RSI, and the slogan "让AI进化提前发生,让AI落地快人一步".
You may not use these trademarks in your product name, marketing, documentation, or public promotion unless you obtain separate written permission from 未来飞马.
skill-core-guide §4)npm test 和 node bin/skill-core.mjs check . --offline