@local/dsh-sync
DeepSeek Harness plugin: a Settings page that syncs the DSH home directory across machines with rclone bisync, with a configurable sync scope and guided cloud-remote setup. 适合需要在多台设备间同步会话、配置和附件的多机用户。
インストール
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:Rosa42/dsh-syncドキュメント
README 全文を読む ↗Configuration
Settings live in /settings.json and are written by the page. They are a plain JSON document:
{
"version": 1,
"target": "nutstore:dsh",
"sync": {
"sessions": true,
"attachments": true,
"profiles": true,
"homeConfig": true,
"credentials": false,
"workspaceState": false,
"providerCache": false,
"pluginModules": false
},
"extraExcludes": [],
"compare": "size,modtime",
"conflictResolve": "none",
"maxDelete": 10
}
The loader row's config seeds the two paths that must be known before the settings file can be found:
- id: dsh-sync
name: '@local/dsh-sync'
config:
localRoot: /home/me/.dsh # default: $DSH_HOME, then ~/.dsh
workDir: /home/me/.dsh-sync # default: ~/.dsh-sync
Why settings are not a Config schema
A bundle installed outside a profile cannot resolve @deepseek-ai/schemastery, so it cannot export the validated Config schema the harness expects. The settings file replaces it and the page is the editing surface. A deployment that installs this bundle from inside a profile can switch to a schema-backed Config without changing the route contract.
Sync scope
Each slice maps to rclone filter rules emitted when the slice is disabled:
| Key | Content | Default |
|---|---|---|
sessions | sessions/** — one append-only log per session | on |
attachments | attachments/** — images and files a session references | on |
profiles | profiles/** — bundles, patch layers, lockfiles | on |
homeConfig | cordis.patch.yml, AGENTS.md at the home root | on |
credentials | .credentials.yaml, .env — plaintext API keys | off |
workspaceState | storages/** — sidebar grouping and derived caches | off |
providerCache | llm-deepseek/** — expiring vendor upload records | off |
pluginModules | node_modules/** — platform-specific binaries and absolute links | off |
/.anonymous-user-id, session.lock, and *.tmp are always excluded.
The rules file is generated; editing it by hand has no effect, because the next state read rewrites it from the settings. Changing settings also invalidates bisync's remembered filter hash, which is why the page regenerates it before every run.