dsh-webui-perf
awa-123-cw
DeepSeek Harness WebUI 性能优化开关插件:长代码流式渲染/历史加载/高亮缓存优化,设置面板一键开关(with official-package patches)
PROJECT TOPICS
PROJECT README
One command to backup. One command to restore. Your entire dev environment, synced across machines.
Export your agent workspace — submodules, configs, skills, API keys — to a private GitHub repo.
On a new machine, pull it back and everything installs itself.
You have multiple machines. Each runs opencode and/or Codex with different plugins, MCP servers, skills, and submodules checked out at different commits. Keeping them in sync is a nightmare of git submodule update, npx skills add, and copy-pasting config files.
uagent-sync makes it a single command:
# On your main machine
opencode-sync push "Friday backup"
# On your new laptop
opencode-sync pull
That's it. Submodules reset to exact commits. MCP servers rebuilt. Skills reinstalled. Config merged. API keys templated. Everything just works.
uagent-sync ships one CLI and three agent entry points. Install the one you use:
# From npm (recommended — bundles the CLI as a dependency)
dsh plugin --profile <name> add uagent-sync-dsh
# Or from GitHub (monorepo sub-package, pure JS — no build authorization needed)
dsh plugin --profile <name> add "github:severin-ye/uagent-sync#master&path:packages/dsh"
npm install -g uagent-sync # global CLI (commands: uagent-sync / opencode-sync)
# or run without installing:
npx uagent-sync <cmd>
Then add to your opencode config (config/opencode.json) and restart:
{ "plugin": ["file:///absolute/path/to/uagent-sync/dist/plugin.js"] }
codex plugin marketplace add severin-ye/uagent-sync
# Then open /plugins in the Codex CLI, install uagent-sync, and start a new session.
opencode-sync init # detect your workspace
opencode-sync push "init" # first backup
From source instead?
git clone https://github.com/severin-ye/uagent-sync && cd uagent-sync && npm install && npm run build, then usenode dist/cli.js <cmd>.New machine?
opencode-sync init --init-type sync --github-url <url>thenopencode-sync pull.
uagent-sync is also a Codex plugin (skills + hooks, no MCP): the same CLI and the same skills are shared across both agents.
codex plugin marketplace add severin-ye/uagent-sync
# Then open /plugins in the Codex CLI, install uagent-sync, and start a new session.
https://github.com/severin-ye/uagent-syncuagent-sync-backup (backup workflow), uagent-sync-restore (new-device restore), uagent-sync-update (ecosystem update) — loaded on demand, guiding the agent to use the CLIPLUGIN_ROOT resolves the plugin root; on Windows it goes through a Git-bash wrapper)node <plugin>/dist/cli.js <command> — 18 commands shared with the opencode pluginuagent-sync/
├── .codex-plugin/plugin.json # Codex plugin manifest (skills + hooks, mcpServers slot reserved)
├── hooks/ # hooks-codex.json + run-hook.cmd + session-start
├── skills/ # 3 SKILL.md files — shared by opencode and Codex
├── src/plugin.ts # opencode plugin (config hook auto-registers the skills dir)
├── packages/dsh/ # DeepSeek Harness bundle (16 sync_* tools → CLI bridge)
└── src/cli.ts # 18-command CLI — the single execution channel for all three
uagent-sync ships as a DeepSeek Harness bundle (packages/dsh/): 16 sync_* tools bridged to the same CLI. 中文名:U同步 / 优同步。
# From npm (recommended — uagent-sync-dsh depends on uagent-sync, so the CLI ships along)
dsh plugin --profile <name> add uagent-sync-dsh
# From GitHub (monorepo sub-package, pure JS — no build authorization needed):
dsh plugin --profile <name> add "github:severin-ye/uagent-sync#master&path:packages/dsh"
# Or from a local checkout (auto-discovers dist/cli.js):
dsh plugin --profile <name> add ./packages/dsh
The plugin locates the CLI in this order: cordis.yml config.cliPath → env OPENCODE_SYNC_UAGENT_SYNC_CLI → local-checkout relative path → npm dependency uagent-sync/dist/cli.js → workspace recursion (walk up to .gitmodules, then find uagent-sync/dist/cli.js). Details: packages/dsh/README.md.
DeepSeek Harness is currently Developer Preview; see the plugin docs for the current bundle/patch format.
Every node dist/cli.js * command needs to know the workspace root (the directory containing .gitmodules). Resolution order:
OPENCODE_SYNC_WORKSPACE_ROOT=<path> (explicit, highest priority)~/.config/opencode/sync-cache.json (reachable from any working directory)usync-dotfiles/state/sync-cache.json, written by v1.0.0).gitmodulesLaunching opencode from the desktop, home directory, or the OpenChamber default directory works fine — no need to start inside the workspace. If all four paths fail, the error message includes actionable guidance.
| Category | What | How |
|---|---|---|
| Submodules | All repos, exact commit hash | git clone + git reset --hard |
| OpenCode Config | plugins, MCP servers, providers | Deep-merge, never overwrite |
| Skills | Installed skills from git sources | skills add <source> -g |
| API Keys | Names + descriptions (never values) | Template file at keys/API.md — the keys/ directory is gitignored in usync-dotfiles, so real values only ever exist locally |
| Dependencies | gh CLI, Ralph, Skills CLI | Auto-install via winget/brew/apt/npm |
| Windows Fixes | NTFS path issues | Auto-detects problematic filenames, applies git config core.protectNTFS |
| Install Log | Every install, its source, any pitfalls | state/install-log.json — provenance you can trust |
Inspect Codex, OpenCode, and DeepSeek Harness configuration without changing it:
opencode-sync inventory --json
opencode-sync dashboard
The dashboard binds to 127.0.0.1 by default and prints the actual local URL. Phase 1 is read-only: it visualizes Skills, instructions, MCP declarations, hooks, plugins/tools, portability, and migration gaps. Secret values, sessions, memories, provider credentials, permissions, themes, shortcuts, UI state, and caches are excluded. DeepSeek MCP remains marked unverified until local evidence proves support.
Output defaults to English and can be switched to Chinese per run or persistently:
--lang zh flag, or UAGENT_SYNC_LANG=zh environment variable (system locale is the fallback, then English).localStorage (uagent-lang).opencode-sync api-keys detect # English by default
opencode-sync api-keys detect --lang zh # Chinese
UAGENT_SYNC_LANG=zh opencode-sync guide # Chinese guide
Run any command as node dist/cli.js <command> (or opencode-sync <command> after npm link).
| Command | What it does |
|---|---|
init |
Detect workspace, guide first-time setup. Only asks once. |
push |
Export state → commit → push to GitHub. One command. |
pull |
Pull from GitHub → restore everything. One command. |
export |
Export full workspace state as JSON |
import |
Restore from JSON (with --dry-run preview) |
diff |
Compare current state vs saved state |
status |
Show every submodule: commit, branch, dirty? |
verify |
Health check: gh, git, config, ralph, skills, submodules |
setup |
Install everything: gh, submodules, config, ralph, skills CLI, skill packages |
create-repo |
Create a private GitHub repo (warns if public) |
api-keys |
Detect, template, or add API keys |
guide |
Generate guide/SYNC-GUIDE.md — the restore playbook |
log |
Read/write install provenance log |
crystallize |
Record install + regenerate docs + export state + commit in one shot |
update |
Update the agent ecosystem: plugins, skills, MCP tools, sync repo, config deps |
changelog |
Draft categorized changelog from the latest update report |
inventory |
Inspect Codex/OpenCode/DeepSeek Harness configuration (read-only, secrets excluded) |
dashboard |
Start a local read-only configuration dashboard (127.0.0.1 by default) |
The MCP-server form (v1.0.0) was removed — since v1.1.0 only the opencode plugin form and the standalone CLI exist. Tool/command names keep the
opencode_sync_*/node dist/cli.jsprefixes for compatibility.
uagent-sync/ # ← This repo (code only, never modified at runtime)
├── src/
│ ├── lib/ # Modules, each <200 lines
│ │ ├── types.ts # All interfaces
│ │ ├── run.ts # Shell execution + safety (shellEscape, isPathSafe)
│ │ ├── cache.ts # Workspace root detection (fixed cache + env + migration)
│ │ ├── init-state.ts # Init lifecycle tracker
│ │ ├── log.ts # Install provenance log
│ │ ├── state.ts # Export/import/diff core logic
│ │ ├── workspace.ts # Verify/setup/submodule status
│ │ ├── github.ts # Private repo creation
│ │ ├── keys.ts # API key detection & templates
│ │ ├── skills.ts # Skill source map
│ │ ├── update.ts # updateExtensions — ecosystem update orchestration
│ │ ├── codebase-memory.ts # codebase-memory-mcp release updater
│ │ └── guide.ts # SYNC-GUIDE.md generator
│ ├── sync.ts # Barrel export
│ ├── plugin.ts # opencode plugin (16 opencode_sync_* tools)
│ └── cli.ts # Standalone CLI (16 commands)
├── skills/ # 3 shared skills (opencode + Codex)
├── hooks/ # Codex SessionStart hook
├── .codex-plugin/ # Codex plugin manifest + marketplace
├── test/ # node:test suites (run `npm test`)
├── .github/workflows/ # CI + Release automation
├── CHANGELOG.md # Keep a Changelog
├── RELEASING.md # Release playbook
└── dist/ # Compiled output
usync-dotfiles/ # ← Runtime data (separate repo, synced via Git)
├── state/ # Runtime state files
├── guide/ # Auto-generated docs
├── keys/ # API key templates
├── config/ # OpenCode config templates
├── sessions/ # Chat history (from session-recorder plugin)
└── scripts/ # Bootstrap scripts
Code never touches data. The plugin lives in one directory. All generated files go to
usync-dotfiles/. Clean separation.
git clone https://github.com/severin-ye/uagent-sync
cd uagent-sync
npm install
npm run typecheck # tsc --noEmit
npm run build # TypeScript → dist/
npm test # full node:test suite
CI gate (GitHub Actions, Windows, Node 20/22): npm run build + npm test must pass before merge.
See RELEASING.md. Flow: update CHANGELOG → npm run release:patch|minor|major (version + tag + push) → GitHub Actions builds, tests, and creates a Release with the tarball attached.
shellEscape() wraps all user input before shell execution. Git commits use -F file input instead of -m string interpolation.isPathSafe() validates all file paths resolve within workspace root..min(), .max(), .strict() before touching the filesystem.create_repo creates --private. Warns if existing repo is public.PRs welcome. Test-first: new features ship with tests, bug fixes ship with a failing-then-passing regression test. Check evaluation.xml for the test suite design.
🤖 For AI Agents: See
AGENTS.md— a complete step-by-step guide that enables any AI agent to install, configure, and run full backup/sync workflows with zero additional prompts. Just point the agent at this repo.
MIT © 2026 uagent-sync contributors
简体中文 | English
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。