# Openlist

> OpenList Skill

- Skill: `uvwt/openlist` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add uvwt/openlist`
- Raw SKILL.md: https://api.skillmd.com/api/skills/uvwt/openlist/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: uvwt (https://skillmd.com/u/uvwt)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/uvwt/openlist

---


# OpenList Skill

把 [OpenList](https://github.com/OpenListTeam/OpenList) v4 的 HTTP API 封装为 AgentDock 原生 Skill。

## 能力

- 服务状态与公开配置检查
- 登录、登出、本地会话保存与清理
- 当前用户查询
- 文件/目录列表、详情、目录树与搜索
- 新建目录、上传 UTF-8 文本文件、重命名、移动、复制、删除
- 管理员存储列表、驱动列表
- 受限通用 `/api/*` JSON 请求

## 默认连接

默认连接 `http://127.0.0.1:5244`。可在调用中传 `base_url`，或设置 `OPENLIST_URL`。

登录成功后默认把 token 保存到 `$XDG_STATE_HOME/openlist-skill/session.json`；未设置 `XDG_STATE_HOME` 时使用 `~/.local/state/openlist-skill/session.json`。目录权限为 `0700`、文件权限为 `0600`。也可通过 `OPENLIST_SESSION_FILE` 指定会话文件，在单次调用中传 `token`，或设置 `OPENLIST_TOKEN`。

AgentDock 安装会通过 `OPENLIST_SESSION_FILE` 将私有会话保存在 `~/.agentdock/skill-data/openlist/session.json`，因此升级不会迁移或丢失当前登录态。

## 环境变量

| 变量 | 类型 | 必填 | 说明 |
|---|---|---:|---|
| `OPENLIST_URL` | config | 否 | OpenList 服务地址，默认 `http://127.0.0.1:5244` |
| `OPENLIST_TOKEN` | secret | 否 | 直接提供访问令牌；未配置时尝试读取本地会话 |
| `OPENLIST_SESSION_FILE` | config | 否 | 自定义会话文件路径 |
| `XDG_STATE_HOME` | config | 否 | 未配置会话文件时的可移植状态目录 |

## 上传

`upload` 操作通过 OpenList 官方 `/api/fs/put` 接口上传 UTF-8 文本，默认限制 1 MiB，最高允许 10 MiB，并校验 SHA-256。

## 安全约束

- `base_url` 仅允许 `http`/`https`，禁止 URL 内嵌用户名和密码。
- 通用请求仅允许 `/api/*` 路径和 GET/POST/PUT/PATCH/DELETE 方法。
- 登录结果默认不回显 token；只有显式传 `return_token: true` 才返回。
- 不包含 OpenList 上游源码或二进制，仅提供 API 适配层；OpenList 本身继续遵循其 AGPL-3.0 许可证。

## 辅助脚本执行

Skill 本体是本说明文档。确需调用包内辅助脚本时，在 Skill 包根目录使用相对路径执行；运行宿主负责切换到包根目录并把所需变量注入当前子进程。

```bash
printf '%s' '{"skill_action":"<动作>"}' | python3 run.py
```

输入必须是 JSON 对象。写操作仍按本文档中的确认规则执行。

| 动作 | 用途 |
|---|---|
| `status` | Check OpenList public settings endpoint and report connectivity. |
| `login` | Login to OpenList; saves token locally by default and does not echo it unless return_token=true. |
| `logout` | Logout from OpenList and clear the locally saved session by default. |
| `me` | Return the current authenticated OpenList user. |
| `list` | List a directory through /api/fs/list; guest access is supported when OpenList allows it. |
| `get` | Get file or directory details and raw URL through /api/fs/get. |
| `dirs` | List child directories through /api/fs/dirs. |
| `search` | Search the OpenList index. |
| `mkdir` | Create a directory. |
| `rename` | Rename a file or directory. |
| `move` | Move one or more names between directories. |
| `copy` | Copy one or more names between directories. |
| `remove` | Remove one or more names from a directory. |
| `upload` | Upload a small UTF-8 text file through /api/fs/put. Designed for safe automation and verification. |
| `storage-list` | List configured storages (admin token required). |
| `driver-list` | List OpenList storage driver definitions (admin token required). |
| `api-request` | Call an OpenList JSON API endpoint not covered by a dedicated action. |
| `session-status` | Show whether a local OpenList session token is saved without revealing it. |
| `session-clear` | Delete the locally saved OpenList session token. |

