oclaw/uds-auth/docs/uds-skill-auth.zh.md
oliver c5c6089f89 Document uds-skill-auth in the plugin for easy handoff to skill authors.
Add a dedicated doc page and link it from the README and auth standard.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-08 23:43:29 +08:00

2.9 KiB
Raw Blame History

uds-skill-auth(给他人传递用)

把本文 + 同仓库 skill 目录发给改造方即可。业务 skill 必须依赖本公共 skill,不能只装插件。

仓库位置(可直接拷贝整目录)

skills/uds-skill-auth/
  SKILL.md
  scripts/uds_skill_auth.py

现场:拷到对方 skills/ 下,与业务 skill 同级。

依赖链

uds-auth 插件(Host)
  → skill「uds-skill-auth」(公共库,本页)
  → 用户扫码登录
  → 业务 skill

完整契约:skill-auth-standard.zh.md

SKILL.md(安装后目录内同名文件)

---
name: uds-skill-auth
description: UDS 技能认证公共库。其它依赖 UDS 登录的 skill 必须安装本 skill,通过其 scripts/uds_skill_auth.py 取凭证或出站调用。需现场已安装 uds-auth 插件且用户已扫码登录。
---

# uds-skill-auth(认证公共 Skill)

本 skill **不是业务能力**,而是给其它 skill 用的公共库。

## 现场依赖

1. 安装并启用 uds-auth 插件
2. 安装本 skill(uds-skill-auth)到 skills 目录
3. 用户扫码登录
4. 再安装/使用业务 skill

## 给其它 Skill 用

业务 skill 的 Python 把本 skill 的 scripts/ 加入 sys.path 后:

from uds_skill_auth import resolve, request, UdsAuthError
creds = resolve()
out = request("POST", url, headers={...}, body={...})

业务 skill 如何引用(复制这段即可)

from pathlib import Path
import sys

def load_uds_skill_auth():
    here = Path(__file__).resolve().parent
    # .../skills/<业务>/scripts → .../skills/uds-skill-auth/scripts
    candidate = here.parents[1] / "uds-skill-auth" / "scripts"
    if not (candidate / "uds_skill_auth.py").is_file():
        raise RuntimeError("请先安装 uds-skill-auth skill(与业务 skill 同级)")
    sys.path.insert(0, str(candidate))
    import uds_skill_auth
    return uds_skill_auth

或设置环境变量 UDS_AUTH_HELPERS = 本 skill 的 scripts 绝对路径。

API 摘要

函数 用途
resolve(apply_env_aliases=True) 向 Host POST /uds-auth/agent-credentials 取 empNo+token;默认写入进程内 EMP_NO/AUTH_VALUE/coclaw_*
request(method, url, headers=..., body=...) 向 Host POST /uds-auth/outbound 出站;Host 注入鉴权头
UdsAuthError 未登录 / 连不上 Host / 白名单拒绝等

Agent 环境(已注入,勿在 SKILL 里教打印密钥):DSH_SESSION_ID、DSH_WEB_URL。

改造现有 skill 时给 AI 的最短说明

  1. 现场已装 uds-auth + 本 skill uds-skill-auth
  2. 删掉读全局 coclaw_token/AUTH_VALUE 的逻辑
  3. 用上面的 load_uds_skill_auth() + resolve() 或 request()
  4. SKILL.md 写明依赖 uds-skill-auth,禁止教 printenv token

实现源码见:skills/uds-skill-auth/scripts/uds_skill_auth.py。