mirror of
https://github.com/hansjone/oclaw.git
synced 2026-10-11 01:50:46 +08:00
Bundle uds-skill-auth inside the uds-auth plugin for single-package handoff.
Move the public auth helper skill under uds-auth/skills and update docs to point there instead of the repo-root skills tree. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
parent
c5c6089f89
commit
b60c626d41
8 changed files with 51 additions and 94 deletions
|
|
@ -1,14 +1,14 @@
|
|||
# Skill 认证标准(uds-auth)
|
||||
|
||||
面向 DeepSeekHarness:现场安装 **uds-auth 插件** + **uds-skill-auth skill** 后,第三方 / 自研 skill 按本标准取凭证或出站调用。
|
||||
面向 DeepSeekHarness:现场安装 **uds-auth 插件**(内含 skill `uds-skill-auth`)后,第三方 / 自研 skill 按本标准取凭证或出站调用。
|
||||
|
||||
**转发给改造方时**:连同 [uds-skill-auth.zh.md](./uds-skill-auth.zh.md) 与目录 `skills/uds-skill-auth/` 一起给。
|
||||
**转发给改造方时**:发整个 `uds-auth` 插件即可;公共 skill 在 [`skills/uds-skill-auth/`](../skills/uds-skill-auth/),说明见 [uds-skill-auth.zh.md](./uds-skill-auth.zh.md)。
|
||||
|
||||
## 现场形态
|
||||
|
||||
```text
|
||||
安装 uds-auth 插件
|
||||
→ 安装 skill「uds-skill-auth」(认证公共库,必须)
|
||||
安装 uds-auth 插件(内含 skills/uds-skill-auth)
|
||||
→ 将 uds-skill-auth 加入 skills 路径(或复制到工作区 skills/)
|
||||
→ 用户扫码登录
|
||||
→ 安装/加载业务 skill
|
||||
→ 可用
|
||||
|
|
@ -16,7 +16,7 @@
|
|||
|
||||
无需再配全局 `coclaw_token` / `AUTH_VALUE`。
|
||||
|
||||
**认证公共库以 skill 分发**:仓库路径 `skills/uds-skill-auth/`。业务 skill 不要假设能访问插件源码目录。
|
||||
**认证公共库随插件分发**:路径 `uds-auth/skills/uds-skill-auth/`。
|
||||
|
||||
## 双轨模型
|
||||
|
||||
|
|
@ -79,12 +79,12 @@ from uds_skill_auth import resolve
|
|||
creds = resolve() # empNo + token;默认写入 EMP_NO/AUTH_VALUE
|
||||
```
|
||||
|
||||
Helpers 来源:已安装的 skill `uds-skill-auth` 的 `scripts/`(或环境变量 `UDS_AUTH_HELPERS`)。
|
||||
Helpers 来源:插件内 skill `uds-auth/skills/uds-skill-auth/scripts/`(装到 skills 路径后,或环境变量 `UDS_AUTH_HELPERS`)。
|
||||
|
||||
## 改造现有 Skill 清单
|
||||
|
||||
1. 现场确保已安装 `uds-skill-auth`
|
||||
2. 业务脚本定位 sibling:`skills/uds-skill-auth/scripts` → `import uds_skill_auth`
|
||||
1. 现场确保已从插件安装 `uds-skill-auth`(`uds-auth/skills/uds-skill-auth`)
|
||||
2. 业务脚本定位 sibling:`.../skills/uds-skill-auth/scripts` → `import uds_skill_auth`
|
||||
3. 替换原来的 `coclaw_*` / `EMP_NO`/`AUTH_VALUE` 手工读环境:改用 `resolve()` 或 `request()`
|
||||
4. SKILL.md 只写「需已 UDS 登录,并已安装 uds-skill-auth」,不写 token 变量名
|
||||
5. JSON stdout;日志脱敏
|
||||
|
|
|
|||
|
|
@ -1,57 +1,21 @@
|
|||
# uds-skill-auth(给他人传递用)
|
||||
# uds-skill-auth(随插件分发)
|
||||
|
||||
把**本文 + 同仓库 skill 目录**发给改造方即可。业务 skill 必须依赖本公共 skill,不能只装插件。
|
||||
|
||||
## 仓库位置(可直接拷贝整目录)
|
||||
本公共 skill **在插件仓库内**,与 uds-auth 一起提交、一起给别人:
|
||||
|
||||
```text
|
||||
skills/uds-skill-auth/
|
||||
uds-auth/skills/uds-skill-auth/
|
||||
SKILL.md
|
||||
scripts/uds_skill_auth.py
|
||||
```
|
||||
|
||||
现场:拷到对方 `skills/` 下,与业务 skill **同级**。
|
||||
## 现场怎么用
|
||||
|
||||
## 依赖链
|
||||
1. 安装 uds-auth 插件
|
||||
2. 把 `uds-auth/skills/uds-skill-auth` 配进 Harness 的 skills 目录(或复制到工作区 `skills/uds-skill-auth`)
|
||||
3. 用户扫码登录
|
||||
4. 业务 skill 通过 sibling / skills 根找到本 skill 的 `scripts/`
|
||||
|
||||
```text
|
||||
uds-auth 插件(Host)
|
||||
→ skill「uds-skill-auth」(公共库,本页)
|
||||
→ 用户扫码登录
|
||||
→ 业务 skill
|
||||
```
|
||||
|
||||
完整契约:[skill-auth-standard.zh.md](./skill-auth-standard.zh.md)
|
||||
|
||||
## SKILL.md(安装后目录内同名文件)
|
||||
|
||||
```markdown
|
||||
---
|
||||
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 如何引用(复制这段即可)
|
||||
## 业务 skill 引用
|
||||
|
||||
```python
|
||||
from pathlib import Path
|
||||
|
|
@ -59,32 +23,18 @@ 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 同级)")
|
||||
raise RuntimeError("请先安装插件自带的 uds-skill-auth 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 / 白名单拒绝等 |
|
||||
| `resolve()` | `POST /uds-auth/agent-credentials` → empNo+token |
|
||||
| `request(method, url, ...)` | `POST /uds-auth/outbound` 出站代贴鉴权 |
|
||||
| `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`。
|
||||
完整契约:[skill-auth-standard.zh.md](./skill-auth-standard.zh.md)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue