Agent Core Extractor
从支持的框架仓库中提取仅含核心代码的压缩包,用于跨框架迁移或分析。
支持密钥与邮箱验证码登录,管理 LiberFi 账户会话状态。
openclaw skills install @bombmod/liberfi-auth命令、参数、文件名以原文为准
使用 LiberFi 进行身份验证并管理会话。
请参阅 [bootstrap.md](../shared/bootstrap.md) 了解 CLI 安装和连接性验证方法。
首次使用时生成一个 P-256 密钥对;后续调用将复用已有密钥。
无需用户交互,适用于自动化和代理环境。
lfi login key --role AGENT --name "MyAgent" --json流程:
~/.liberfi/keys/default.json 或生成新的密钥对。Date.now()(毫秒时间戳字符串)进行签名(SHA-256 + ECDSA P-256)。POST /v1/auth/key 发送 { publicKeyHex, uncompressedPublicKeyHex, timestampMs, signature }。~/.liberfi/session.json 中。令牌刷新机制:
POST /v1/auth/key。401 响应时,CLI 会尝试自动刷新一次,失败后再向上抛出错误。分两步完成:发送验证码,然后验证。
步骤 1 — 发送 OTP:
lfi login user@example.com --json预期输出:
{
"ok": true,
"otpId": "uuid-here",
"message": "Verification code sent to user@example.com. It expires in 5 minutes."
}步骤 2 — 验证 OTP:
lfi verify <otpId> <6-digit-code> --json预期输出:
{
"ok": true,
"userId": "...",
"role": "HUMAN",
"evmAddress": "0x...",
"solAddress": "...",
"isNewUser": true,
"message": "Email verified. Authenticated as ..."
}注意事项:
lfi status --json在不发起网络请求的情况下显示当前认证状态。
{
"ok": true,
"authenticated": true,
"userId": "...",
"role": "HUMAN",
"evmAddress": "0x...",
"solAddress": "...",
"expiresInSecs": 82340,
"expired": false
}lfi whoami --json从服务器获取当前用户资料(需要有效令牌)。
{
"userId": "...",
"role": "HUMAN",
"displayName": "",
"email": "user@example.com",
"evmAddress": "0x...",
"solAddress": "..."
}lfi logout --json清除 ~/.liberfi/session.json 文件中的内容。服务器端不会撤销该 JWT。
在任何需要认证的操作开始前,请执行以下序列:
# 1. 网络连通性检测
lfi ping --json
# 2. 检查会话状态
lfi status --json**根据 lfi status 输出结果的决策树:**
authenticated | expired | 操作 |
|---|---|---|
true | false | 继续 — 会话有效 |
true | true | 重新认证(令牌已过期) |
false | 任意值 | 认证(无会话) |
代理环境(自动化场景):
lfi login key --role AGENT --name "AgentName" --json
lfi whoami --json人类用户(交互式场景):
lfi login user@example.com --json
# → 提示用户输入 6 位数字验证码
lfi verify <otpId> <otp> --json
lfi whoami --json| 文件路径 | 内容说明 |
|---|---|
~/.liberfi/session.json | JWT、钱包地址、用于刷新的密钥材料 |
~/.liberfi/keys/default.json | P-256 密钥对(永久身份) |
~/.liberfi/keys/otp-pending.json | 邮箱 OTP 流程期间的临时密钥对 |
这些文件以 0600 权限创建(仅所有者可读写)。
切勿共享或传输这些文件。
认证成功后,系统将为用户分配两个由 LiberFi 后端托管的 TEE 钱包:
| 钱包类型 | 字段 | 说明 |
|---|---|---|
| EVM | evmAddress | 兼容 Ethereum 的钱包(用于 EVM 交易操作) |
| Solana | solAddress | Solana 钱包(用于 SVM 交易操作) |
这些钱包由 LiberFi 后端管理。
用户的本地 P-256 私钥 不会 用于链上签名。
通过 LiberFi 官方网站登录(社交账号登录)的用户,可通过以下接口将身份令牌兑换为 LiberFi JWT:
POST /v1/auth/exchange
{ "identityToken": "<identity-token>" }该过程由网站的认证处理器自动处理 —— CLI 用户无需直接调用此接口。
| 错误信息 | 含义 | 解决方案 |
|---|---|---|
"signature verification failed" | 密钥无效或时间戳被篡改 | 使用 lfi login key 重新生成密钥对 |
"timestamp is outside the ±300s window" | 系统时钟偏差过大 | 同步系统时间 |
"OTP expired or not found" | OTP 已超时(5 分钟) | 重新运行 lfi login <email> |
"incorrect OTP code" | 输入的 6 位验证码错误 | 重新输入或重新运行 lfi login <email> |
"invalid or expired token" 出现在 /auth/me 接口 | JWT 已过期且刷新失败 | 重新认证 |
401 出现在交换/交易命令中 | 会话已过期 | 执行 lfi status 后重新认证 |
请参阅 [security-policy.md](../shared/security-policy.md) 了解通用安全规则。
本技能特有规则:
~/.liberfi/keys/default.json)必须严格保密。切勿记录、显示或传输其内容。
ensureSession()。已收录 1 个 Skill