Preface

DeepSeek Harness (DSH) is a tool platform for agent development. In actual development workflows, deliverable files produced by tool execution (such as code or documents) are often scattered across conversation contexts, making them difficult to persist or manage in a unified way. dsh-openlist-sync is the OpenList file synchronization plugin for DeepSeek Harness (DSH). It is responsible for automatically uploading files delivered by Agents in each conversation to a designated OpenList directory and granting DSH full read/write access to that directory.

Features

This plugin is implemented in pure Node ESM, has zero third-party runtime dependencies, and is compatible with the /api/fs/* APIs of Alist / Alist-based implementations / OpenList v3/v4.

  1. Automatic synchronization of deliverable files
    The plugin monitors tool execution results in each DSH session. Once deliverable files are generated, they are automatically uploaded to the OpenList targetDir. It supports two types of sources: chat deliverable files returned by dsh_im_return_file, and artifacts produced by tools such as write / edit / str_replace_editor.

  2. Full directory read/write toolset
    After configuration, DSH has full operation permissions on the targetDir. The following tools are provided:
    * openlist_health: self-checks configuration and connectivity.
    * openlist_list / openlist_stat: lists a directory or views file metadata.
    * openlist_read_file / openlist_write_file / openlist_write_text: reads or writes files.
    * openlist_mkdir / openlist_remove / openlist_rename / openlist_move: creates, deletes, renames, and moves files.

  3. Web settings panel
    The plugin registers a Web settings panel. You can configure the OpenList endpoint, authentication details, target directory, and layout rules directly in DSH settings without manually editing YAML files.

Installation and Enablement

Install it using the official tarball package.

# 安装插件
dsh plugin --profile web add ./dsh-openlist-sync-0.3.1.tgz

After installation, you need to restart dsh web for the plugin to take effect.

Configuration

The configuration file is located at $DSH_HOME/profiles/web/cordis.patch.yml (i.e., ~/.dsh/profiles/web/cordis.patch.yml). Append or override the tool-openlist-sync configuration item in this file.

- id: tool-openlist-sync
  config:
    baseUrl: "https://your-openlist.example.com"   # OpenList 访问地址
    username: admin
    password: 你的密码
    targetDir: "/DSH交付"                  # 交付文件自动存放目录
    autoSync: true                          # 总开关
    syncChatDeliveries: true                # 聊天交付文件
    syncProducedFiles: true                 # 工具产物
    overwrite: false                        # 远端同名是否覆盖
    restrictToRoot: true                    # 目录工具是否锁定在 targetDir 内

You can also configure it through the Web settings panel. Find the OpenList sync option in settings, enter the endpoint, authentication details, and save.

Usage

  1. After configuration is complete, DSH automatically uploads deliverable files to OpenList after tool execution succeeds.
  2. Directly call the openlist_* tools in DSH to perform read/write operations within the configured targetDir.

Notes

  1. Directory isolation: By default, restrictToRoot: true, so directory tools are only allowed to operate within targetDir, preventing out-of-scope access.
  2. Upgrade method: Plugin upgrades must be performed using the dsh plugin add <new tgz> command. The profile directory is managed by pnpm. Never use cp to overwrite node_modules, otherwise pnpm may roll back the dependency manifest to an older version.
  3. Compatibility: Compatible with the /api/fs/* APIs of Alist / Alist-based implementations / OpenList v3/v4.