mirror of
https://github.com/hansjone/oclaw.git
synced 2026-10-09 03:30:48 +08:00
UI session behavior stays unchanged; login writes a separate skill cache, with optional retain-on-logout and loopback agent-credentials/outbound APIs plus helpers/docs. Co-authored-by: Cursor <cursoragent@cursor.com>
3.2 KiB
3.2 KiB
Skill 认证标准(uds-auth)
面向 DeepSeekHarness:现场安装 uds-auth 后,第三方 / 自研 skill 按本标准取凭证或出站调用。官方样板:skills/uds-icenter。
现场形态
安装 uds-auth 插件 → 用户扫码登录 → 加载 skill → 可用
无需再配全局 coclaw_token / AUTH_VALUE。
双轨模型
| 轨道 | 用途 | 行为 |
|---|---|---|
| UI | Cookie + sessionStore + /api/me |
保持原样;logout 仍清 cookie 并 sessionStore.delete |
| Skill | skillCredentialCache(skill-credentials.json) |
登录成功时写入/刷新;供 agent / cron |
配置项:
retainSkillCredentialsOnLogout(默认true):UI 退出时是否保留 skill tokenskillCredentialTtlSeconds(默认604800= 7 天)outboundAllowedHosts:出站白名单(逗号分隔)
管理员删除用户会同时清掉该用户的 skill 凭证。
Agent 环境
Shell 已注入(非密钥):
DSH_SESSION_ID— 当前 agent 会话DSH_WEB_URL— 可选,用于拼 Host 地址
Host 在 session/created 时会 stampSessionOwner(sessionId, empNo)。Cron 可按 ownerEmpNo 解析。
两种合法模式
Mode Outbound(推荐新 skill)
POST /uds-auth/outbound
X-DSH-Session-Id: <DSH_SESSION_ID>
{ "url": "https://icenterapi.zte.com.cn/...", "method": "POST", "headers": {...}, "body": {...} }
- 仅 loopback
- Host 注入
X-Emp-No/X-Auth-Value - 剥离客户端自带鉴权头
- host 必须在白名单内
Python:
from uds_skill_auth import request
out = request("POST", url, headers={...}, body={...})
# out["statusCode"], out["json"], out["body"]
Mode Creds(必须自管 HTTP 时)
POST /uds-auth/agent-credentials
X-DSH-Session-Id: <DSH_SESSION_ID>
返回 { empNo, token }。可设进程内 EMP_NO / AUTH_VALUE 别名,禁止写进 SKILL.md 教模型 printenv。
from uds_skill_auth import resolve
creds = resolve() # empNo + token;默认写入 EMP_NO/AUTH_VALUE
Helpers 路径:uds-auth/skill-helpers/python/(或环境变量 UDS_AUTH_HELPERS)。
自研 Skill 清单
- 建目录:
SKILL.md+scripts/ - 引用 helpers(见样板
lib_uds.py) - 默认走
request()outbound;发信等桌面端口可用resolve()贴头 - SKILL 只写「需已 UDS 登录」,不写 token 变量名
- JSON stdout;日志脱敏
禁止项
- 全局共享 token / 把 token 注入
shellEnv - SKILL 教打印环境变量中的密钥
- 无白名单的开放代理
- 用 UI
sessionStore的 30min TTL 冒充 skill 长凭证
验收
- UI 登录/退出与改前一致
- 默认配置下 UI 退出后 skill/cron 仍可用
retainSkillCredentialsOnLogout=false时退出后取证失败- 两会话不串号;未登录错误可理解且无 token 泄露
样板走读
| 文件 | 作用 |
|---|---|
skills/uds-icenter/SKILL.md |
给模型的用法 |
scripts/lib_uds.py |
定位 helpers |
scripts/contacts.py |
搜人/搜群/群成员(outbound) |
scripts/messaging.py |
本机发信 + resolve 贴头 |
scripts/cli.py |
统一入口 |