deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:ddtcorex/dsh-maestro-sync
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
Maestro harness sync — merge memory and sessions across machines (publishable)
DSH Maestro plugin — part of the
dsh-maestro-*ecosystem (@ddtcorex/dsh-maestro-sync).
dsh plugin add @ddtcorex/dsh-maestro-sync
Sync is exact, read-only preview first, then confirmed apply:
# 1. Preview (read-only, no writes, 60s TTL) — the only way to see a plan
node lib/cli.js --pull --dry-run # or --push --dry-run
# stdout: one final JSON SyncPreview { ok, previewId, revision, expiresAt, summary, actions }
# human progress goes to stderr
# 2. Apply the EXACT preview you just reviewed (requires all three)
node lib/cli.js --pull --apply --preview-id <id> --confirm
--apply without --preview-id and
--confirm exits non-zero; the legacy pull/push routes and tools are
preview-only compatibility aliases and never write.STALE_PREVIEW if anything changed since the preview — no write
happens against a stale plan. Apply is single-use per preview id.dsh-maestro-memory/**/*.md (no *.bak.*), dsh-maestro-memory/SUGGESTIONS.jsonl, sessions/<hash>/<id>/session.jsonl.zstdspawn/rsync --files-from, no shell interpolation;
the remote root is a validated absolute path. A ~/.dsh default is resolved
to the absolute remote home by the SSH preflight (printf %s '$HOME'), never
by shell ~ expansion.Buffer/path only via validated Zstd artifact API; the
standalone checksummed header frame is preserved and merged line-union.backup + fsync(tmp) + rename + fsync(dir) per
local file; push = materialize to a private operation dir, upload to
<root>/.maestro-sync/stage/<op>/, then a fixed POSIX CAS helper validates
each target SHA-256 (expectedTargetSha256), backs up and renames atomically.
A concurrent remote change is reported as CONCURRENT_MODIFICATION and never
overwrites the target.committed/uncommitted journals — ok:true only when every
reported file was actually published. No merge-mode fallback to destructive
rsync; --strategy=override exists only with a separate --ack-override..bak.<ts>.<rand>; remote backups under the same rule). Restore with
cp <path>.bak.* <path>.--preview-id + --confirm; the Settings UI only offers Apply inside a
confirmation dialog bound to a live preview.ssh -o ConnectTimeout=5 must succeed before preview/apply.copy/merge/skip/conflict -> confirmation dialog (direction, host,
plan age, action counts) -> Apply.Excluded (never read, hashed or copied): settings, tunnel profiles, secret
material, profiles, supervisor state, storages, tools, skills, logs, caches and
*.bak.*.
Backup and restore of the eligible data (memory + session logs) to an S3-compatible bucket through a dependency-free SigV4 client.
~/.dsh/maestro/settings.json → domains.sync.r2): accountId,
bucket (default maestro-backup), prefix, region; optional
provider: "aws" with a real region works through the same client (UI
hidden in phase 1).R2_ACCESS_KEY_ID/R2_SECRET_ACCESS_KEY,
AWS AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY) or a private 0600 sidecar
file at ~/.dsh/dsh-maestro-sync/backup-secrets.json
({"accessKeyId":"…","secretAccessKey":"…"}) — never in settings, never
logged, never returned by RPC/tools (status shows only Env | Private file | Not configured and the bucket/prefix). With neither source the backup tools
refuse with MISSING_BACKUP_SECRETS and the message names both the accepted
environment variables and the exact sidecar path.HEAD pointer; ok is reported
only after HEAD advances (CONCURRENT_MODIFICATION on a race)..bak.<ts>.<rand>, fsync+rename), both
confirmation-first. GC: retains the newest 30 daily + 12 monthly
manifests and deletes only unreachable blobs, confirmation-first.pnpm --filter @ddtcorex/dsh-maestro-sync verify
pnpm --filter @ddtcorex/dsh-maestro-sync build
pnpm --filter @ddtcorex/dsh-maestro-sync test CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。