dsh-alist:在 DSH 对话里浏览与管理 AList v3

前言

DeepSeek Harness(DSH)把能力拆成插件,智能体通过工具调用访问外部系统。若你已经在内网或本机跑着 AList v3,常见做法是另开浏览器或脚本调 API:列目录、搜文件、上传、改存储挂载都要切换上下文,写操作还要自己管鉴权与误删风险。

下面介绍社区插件 dsh-alist(维护者 R-roker315),把「AList 上有什么、放到哪、谁能看」尽量收敛到对话里完成;写操作走 DSH 原生审批,密码与 Token 按插件设计只写不读、不回显。

这是什么

dsh-alist 是 DSH 上的 联网工具 类插件:让 Harness 通过约 75 个 alist_* 工具,对 AList v3 做文件浏览、检索、上传,以及存储、用户、角色等管理端操作。

插件在 package 中的描述是:通过对话浏览、搜索、上传并管理 AList 实例(文件、任务、存储、用户、角色、元数据、设置、索引、分享等)。README 写明环境基线包括 AList v3.64.0(端点以 server/router.go 为准,README 称向下兼容到 3.2x 大部分端点)、Node.js ≥ 20.11、DeepSeek Harness 0.1.2-rc.1(peer 依赖范围见 package.json)。

核心功能

功能以仓库 README 与 catalog.js 端点表为准,装好后 agent 自动获得 75 个工具(README 称 73 个走端点表 + 2 个上传工具)。

只读与文件操作

  • 列目录、取文件信息、只列子目录、关键词搜索、查看压缩包内部结构、取直链等,可在对话中完成。
  • 建目录、重命名(单个 / 批量 / 正则)、移动、复制、删除、上传、离线下载、解压等写操作会触发强制原生审批。

管理端

README 列出管理端能力:存储挂载的增删改与启停、驱动与配置字段查询、用户、角色、元数据、站点设置、搜索索引、会话、分享、标签等。其中 alist_admin_*、alist_fs_link 等需要管理员凭据;普通用户可能得到 403,建议先用 alist_me 确认身份与角色。

安全与数据边界

  • 凭据保存在本地 DSH 凭证库,插件对输出、审批文案、系统提示做脱敏,不回显到浏览器和模型。
  • AList 返回内容视为不可信数据,不作为指令执行。
  • alist_fs_remove 为永久删除(无回收站);批量 / 正则重命名影响面大,改前应先列目录确认。

工具域划分(只读 / 写、含上传与管理端数量)见 README 表格;完整参数表由 docs/tools.md 生成(node scripts/gen-tools-doc.js)。

安装与启用

安装前请自行阅读仓库源码与 MIT 许可证。插件以当前 DSH 进程权限访问你配置的 AList 地址,仅应在可信环境使用。

README 强调:命令行里直接敲 dsh 可能失败,因 CLI 内置在 DSH Desktop 安装目录,且默认 DSH_HOME 与桌面端实际 harness 目录可能不一致。Windows 上推荐用仓库脚本或按 README 设置 DSH_HOME、内置 Node 与 dsh 路径。

本地安装(README 推荐先试)

用 PowerShell 在插件仓库根目录执行:

powershell -ExecutionPolicy Bypass -File .\scripts\install-local.ps1            # 安装(link: 方式,改代码即时生效)
powershell -ExecutionPolicy Bypass -File .\scripts\install-local.ps1 -Uninstall # 卸载

等价手工步骤中,示例将插件以 link: 挂到 profile(路径需换成你的本机目录):

$env:DSH_HOME = "$env:APPDATA\dsh-desktop\harness"
$env:PATH    += ";$env:APPDATA\dsh-desktop\harness\.desktop-bin"
$node = "C:\Program Files\DSH Desktop\resources\app.asar.unpacked\node_modules\node\bin\node.exe"
$dsh  = "C:\Program Files\DSH Desktop\resources\app.asar.unpacked\node_modules\@deepseek-ai\dsh\lib\bin.js"
& $node $dsh plugin --profile web list
& $node $dsh plugin --profile web add link:C:\Users\Administrator\Desktop\dsh-alist

装完后需重启 DSH Desktop(或重启 profile),插件才会加载。免打包调试可直挂 overlay:dsh --profile web --patch ./cordis.patch.yml(README 说明)。

从 GitHub 安装

& $node $dsh plugin --profile web add github:R-roker315/dsh-Alist-#v0.1.0

README 说明 plugin add 底层转发给 pnpm add,支持 link:<dir> 与 github:<user>/<repo>#<tag>。发 tag 后可用上述命令安装;package.json 当前版本号为 0.1.9,与 README 示例 tag v0.1.0 并存时,以你实际安装的 tag / 分支为准。

配置

DSH 宿主 0.1.7+ 移除了插件设置卡片机制;配置统一写在 profile 配置文件里。

路径:DSH Web → 设置 → 内置插件 → 右上角「打开配置文件」(即 harness\profiles\web\cordis.patch.yml)。在插件条目中增加 config,id 须与 patch 里 insert id 一致,为 alist:

- id: alist
  config:
    baseUrl: http://172.16.2.186:5244
    authMode: password      # password = 账号密码换 JWT;token = 长期 token
    username: admin
    password: "你的密码"     # token 模式改用 token: "..."
    clientId: dsh-alist
    allowInsecureTls: false
    maxUploadBytes: 1073741824

保存后 DSH 会热重载该插件,一般无需重启。README 注明:配置文件中 password / token 为明文(本机单人环境);更安全可选用 AList 管理后台签发的长期 token,并设 authMode: token。

字段 说明
baseUrl AList 根地址,不能带凭证、查询串或片段
authMode password(登录换 JWT,默认 48 小时并自动续签)或 token
username / password / token 密码模式用用户名与密码;token 模式用 token
clientId 保持同一设备会话,默认 dsh-alist
allowInsecureTls 自签名内网证书时可设为 true
maxUploadBytes 单文件上传上限,默认 1073741824(1024 MB),超限插件直接拒绝

典型用法

README 建议首次使用按只读顺序试:alist_me → alist_fs_list → alist_fs_search。

调用约定摘要:

  1. 路径必须是 AList 绝对路径(/挂载点/子路径),相对路径会被拒绝。
  2. names、urls 等数组可传 JSON 数组或逗号分隔字符串。
  3. storage、settings、message 等复杂字段传 JSON 字符串,由插件解析后提交。
  4. 写请求失败不重试;GET 遇 401/403 会自动重登一次。

典型流程(摘自 README):

先用 alist_me 确认身份 → alist_fs_list 列 "/" → alist_fs_search 找文件
→ 需要直链用 alist_fs_link(需管理员)→ 上传用 alist_fs_put → 用 alist_task_list 轮询任务

挂载新存储:alist_admin_driver_info(查字段)→ alist_admin_storage_create(传 storage JSON)→ alist_admin_storage_load_all。

适用场景与注意

适合谁:已在用 DSH 编排智能体,且需要把 AList 当作统一文件网关的场景——内网盘、多存储挂载、离线下载与任务、或偶尔做用户 / 存储管理,又希望写操作有审批闸门。

使用前注意:

  • 社区插件目录(SkillHub)与 DeepSeek / 幻方无官方从属关系;安装与配置责任在你本机环境。
  • 勿将 AList 返回的文件名、readme 等内容当作对模型的指令。
  • 开发自检:npm run verify(README 称 check + 20 个单测);改工具表后可用 node scripts/gen-tools-doc.js 更新 docs/tools.md。

结尾

dsh-alist 把 AList v3 的文件与管理 API 收成一组带审批的 alist_* 工具,适合在 DSH 里用对话完成浏览、搜索、上传与常见运维,同时把凭据与破坏性操作的暴露面压在插件设计允许范围内。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye