面向 DSH 设置与 Profile 配置的策略化 Git 同步,支持敏感信息隔离、冲突审阅与按行选择应用。
安装
# npm 包(预构建)
dsh plugin --profile web add dsh-sync
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:ZhenHuangLab/dsh-sync
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
该插件的 README 只有英文版本。
dsh-sync
Git sync for DeepSeek Harness settings and profile configuration.
Sync what should travel. Keep secrets, machine-local values, and executable changes under your control.
Why choose dsh-sync
Keeping DeepSeek Harness configured across multiple machines should not mean copying your entire DSH home directory into Git.
dsh-sync gives you a safer workflow:
- Choose exactly what to sync — settings namespaces, profiles, patches, and your own presets.
- Keep secrets and local values local — credentials and configured machine-specific fields are excluded.
- Review before applying — inspect incoming changes and toggle individual added or removed lines.
- Separate settings from executable files — changes that can affect code or plugins require explicit confirmation.
- Handle conflicts clearly — cherry-pick local vs remote lines, or keep/take a whole file, without editing Git internals.
- Repair interrupted writes — backups and a repair action restore live configuration after a failed apply.
Installation
Install the plugin for the Web profile:
dsh plugin --profile web add dsh-sync
Restart dsh web, then open Settings → Git Sync.
To use /sync in a headless profile as well:
dsh plugin --profile headless add dsh-sync
Quick start
- Open Settings → Git Sync.
- Enter your Git remote URL and branch.
- Select the settings namespaces, profiles, patches, and presets you want to sync.
- Add any machine-specific settings paths to Keep local-only paths.
- Save the configuration and select Compare.
- Review the incoming and outgoing changes.
- Apply settings, confirm executable changes, resolve conflicts, or push local changes.
Git authentication uses your existing Git environment. dsh-sync does not store Git credentials in its configuration.
Features
Selective configuration sync
Only the settings namespaces, profiles, patches, and user preset IDs you explicitly select are included. Selected user preset directories are synchronized recursively, including their imported .mjs modules. Exact files can be marked local only so they stay unchanged on one machine and disappear from the sync plan. Credentials, sessions, storage, dependencies, and system presets stay outside the sync payload.
Secret-aware settings
dsh-sync removes known secret fields and your configured local-only paths before settings are stored in Git. Those local values are preserved when remote settings are applied.
Per-line review
Each changed line can be toggled before applying:
- Disable an added line to skip it.
- Disable a removed line to keep the local line.
- Keep the rest of the file selected and apply only the changes you want.
Unselected incoming changes remain available for the next review. Items under Local changes (not pushed) can also be opened and restored fully or partially from Git when you do not want to publish a local edit.
Executable-change confirmation
Profile patches, home patches, plugin manifests, and user presets can affect code execution. dsh-sync keeps these changes separate from ordinary settings and requires an explicit confirmation before applying them.
Conflict handling
When local and remote values both changed, dsh-sync shows the conflict. You can cherry-pick individual lines, or choose Keep local / Take remote for the whole file. Settings conflicts are decided per key. Remote changes are checked again before anything is written.
Safe recovery
Live files are backed up before replacement. If an apply is interrupted or verification fails, Repair interrupted write restores the previous files.
Sidecar Git workflow
The sync repository is kept separate from live DSH files. Fetching remote changes does not overwrite your active configuration, and pushes remain fast-forward only.
Web UI and commands
The Web plugin adds Settings → Git Sync with Compare, per-line review, conflict decisions, outgoing rollback, Inspect, and Repair controls. The /sync command provides the same core workflow from a session.
What gets synced
| Configuration | Behavior |
|---|---|
| Selected settings namespaces | Applied directly after review |
| Web and headless profile manifests | Applied with restart guidance |
| Profile and home patches | Require executable-change confirmation |
| Explicitly selected user agent preset directories | Synchronized recursively; require executable-change confirmation |
Never synchronized: credentials, sessions, storage, node_modules, generated profile files, .dsh-sync, .env*, system presets, symlinks, or gitlinks.
baseURL remains portable by default. Add it to local-only setting paths if an endpoint should stay on one machine. Add a repo-relative file such as profiles/web/package.json to Files kept local when that machine's plugin list should not be synchronized.
Commands
/sync status
/sync check
/sync diff
/sync pull
/sync push
/sync doctor
/sync recover
The standalone command is also available:
dsh-sync status
dsh-sync check
dsh-sync doctor
dsh-sync recover
Safety and privacy
- Only selected configuration is eligible for synchronization.
- Secret and local-only settings are preserved locally.
- Executable changes are never applied automatically.
- Reviewed changes are rejected if the plan, remote branch, or local file changed afterward.
- File writes are backed up and verified.
- HTTPS remote URLs containing embedded credentials are refused.
- Secret scanning reports the affected path without displaying the secret value.
If a secret has already entered Git history, rotate it before continuing.
Find it in dsh-market
dsh-sync is listed in dsh-market and the awesome-dsh-plugin catalog.
Install it directly with:
dsh plugin --profile web add dsh-sync
Requirements
- DeepSeek Harness
- Node.js 22 or newer
- A Git remote you can read and write
License
链接
同类插件
Q00/ouroboros#integrations/dsh-plugin★ 6128
通过 DSH MCP 客户端挂载 Ouroboros 的纯配置包,在 DSH 中提供 36 个涵盖需求访谈、Seed、执行、评估与演化流程的工具。
loopx-project/loopx#dsh-loopx-plugin★ 6087
LoopX——面向长周期 Agent 的提供商中立、本地优先状态内核与控制平面:在 DeepSeek Harness 执行层之上持久化 Goal、Todo、门禁、证据、配额、恢复与交接状态;插件负责引导安装 CLI 与技能、准入有界的同会话续跑,并为精确绑定的工作循环提供本地 GoalBar。
chuspeeism/dashi-taskboard#deepseek-harness★ 3253
把当前已安装并运行中的 Codex Taskboard 嵌入 DeepSeek Harness 侧边栏,并通过 Launcher 运行时描述文件连接,而不是使用固定端口。
NanmiCoder/dsh-agent-teams★ 1839
AgentTeams 多智能体团队。
EthanYoQ/AI-Novel-Writer#dsh-ai-novel-writer★ 1181
安装专用 AI 小说创作预设与工作台:提供带修订号的本地项目资产、紧凑侧边工作台,以及需要原生审批的逐文件变更。
tong-io/tongflow#dsh-tongflow★ 1034
基于 TongFlow 的“片场”插件,用于图片、配音、音乐与视频制作:agent 为每个资产生成 TongFlow 工作流文件(.tongflow.json)并通过 TongFlow 插件执行,内嵌工作流画布,按镜头/角色/take 组织项目,附漫剧模板;以 @tongflow 开头的会话进入 Studio 界面。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。