ЁЯФД dsh-session-sync
August 30, 2026 ┬╖ View on GitHub
ЁЯФД dsh-session-sync
- 1024 рд╕реНрдЯреЛрд░ рдЪреИрдирд▓: рдПрдХ рдмрд╛рд░
npm i -g dsh1024, рдлрд┐рд░dsh1024 plugin --profile web add dsh-session-sync(deepseek1024.com рдЗрдВрд╕реНрдЯреЙрд▓ рд░реИрдВрдХрд┐рдВрдЧ рдореЗрдВ рдЧрд┐рдирд╛ рдЬрд╛рддрд╛ рд╣реИ)ред
DeepSeek Harness рдХреЗ рд▓рд┐рдП рдХреНрд░реЙрд╕-рдбрд┐рд╡рд╛рдЗрд╕ рд╕рддреНрд░ рд╕рд┐рдВрдХ тАФ рдЖрдкрдХреЗ рд╕рддреНрд░ рд╕реНрдЯреЛрд░ рдХрд╛ рдПрдХ рд╕рдорд░реНрдкрд┐рдд git рдорд┐рд░рд░ред
рдЕрдкрдиреЗ рд╕рддреНрд░реЛрдВ рдХреЛ рдбрд┐рд╡рд╛рдЗрд╕реЛрдВ рдХреЗ рдмреАрдЪ рд╕рд┐рдВрдХ рдХрд░реЗрдВ, рдХрд┐рд╕реА рднреА рдЯрдХрд░рд╛рд╡ рдореЗрдВ рджреЛрдиреЛрдВ рдкрдХреНрд╖ рд░рдЦреЗрдВ, рдХрднреА рдХреЛрдИ рдЯрд░реНрди рди рдЦреЛрдПрдБред
English ┬╖ чоАф╜Уф╕нцЦЗ ┬╖ Espa├▒ol ┬╖ Portugu├кs ┬╖ рд╣рд┐рдиреНрджреА
рд╕рдВрдЧрддрддрд╛
| рд╕рддрд╣ | рд╕реНрдерд┐рддрд┐ |
|---|---|
| Harness | DeepSeek Harness 0.1.1-rc.2 |
| Node | ^22.19.0 || >=24.0.0 |
| рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо | рдЬрд╣рд╛рдБ рднреА git рдФрд░ DSH рдЪрд▓рддреЗ рд╣реИрдВ (git-рдЖрдзрд╛рд░рд┐рдд рдорд┐рд░рд░; рдХреЛрдИ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреЛрдб рдирд╣реАрдВ) |
| рдореЙрдбрд▓ | рдХреЗрд╡рд▓-рдЯреЗрдХреНрд╕реНрдЯ рдореЙрдбрд▓ рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рд╕рдорд░реНрдерд┐рдд; рд╡рд┐рдЬрд╝рди рдпрд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреНрд╖рдорддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ |
рдЖрдкрдХреЛ рдХреНрдпрд╛ рдорд┐рд▓рддрд╛ рд╣реИ
dsh-session-sync рдЖрдкрдХреЗ DSH рд╕рддреНрд░ рд╕реНрдЯреЛрд░ рдХреЛ рдПрдХ рд╕рдорд░реНрдкрд┐рдд git рд╡рд░реНрдХрдЯреНрд░реА рдореЗрдВ рдорд┐рд░рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрд╕реЗ рдПрдХ рдРрд╕реЗ рд░рд┐рдореЛрдЯ рд╕реЗ рд╕рд┐рдВрдХ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ тАФ рдХреЛрдИ рдХреНрд▓рд╛рдЙрдб рд╕реЗрд╡рд╛ рдирд╣реАрдВ, рдХреЛрдИ рддреГрддреАрдп-рдкрдХреНрд╖ рд╕реНрдЯреЛрд░реЗрдЬ рдирд╣реАрдВ:
/syncрдХрдорд╛рдВрдб тАФstatus(рдмреНрд░рд╛рдВрдЪ, рд╕реИрдирд┐рдЯрд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд░рд┐рдореЛрдЯ, рдЖрдЧреЗ/рдкреАрдЫреЗ, рдЧрдВрджреА рдлрд╝рд╛рдЗрд▓реЗрдВ, рдлрд╝реЛрд░реНрдХ),diff,log,pull,push,helpредsync_status/sync_pull/sync_pushрдЯреВрд▓ тАФ рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рд╡рд╣реА рд╕рддрд╣, рдПрдХ рдЯрд░реНрди рдХреЗ рдЕрдВрджрд░ред- Append-only рдЯрдХрд░рд╛рд╡ рд╕рдорд╛рдзрд╛рди тАФ рд╕рддреНрд░ рд▓реЙрдЧ append-only рд╣реЛрддреЗ рд╣реИрдВ; рдХрд┐рд╕реА рднреА рд╡рд┐рдЪрд▓рди рдкрд░ рдкреНрд▓рдЧрдЗрди рджреЛрдиреЛрдВ рдкрдХреНрд╖ рд░рдЦрддрд╛ рд╣реИ (рд╕реНрдерд╛рдиреАрдп рд╕рдВрд╕реНрдХрд░рдг рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд░рд┐рдореЛрдЯ рд╕рдВрд╕реНрдХрд░рдг рдлрд╝реЛрд░реНрдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрд░рдХреНрд╖рд┐рдд рд░рд╣рддрд╛ рд╣реИ) рдФрд░ рдХрднреА рдЪреБрдкрдЪрд╛рдк рдУрд╡рд░рд░рд╛рдЗрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ред рд╡рд┐рдЪрд▓рд┐рдд рд╕рддреНрд░ рд╕рддреНрд░-рд╕реНрддрд░ рдкрд░ рднреА рдлрд╝реЛрд░реНрдХ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
- рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдореЛрдб тАФ рд╕реНрдЯрд╛рд░реНрдЯ рдкрд░ pull, рд╣рд░ рдмрдВрдж рдЯрд░реНрди рдХреЗ рдмрд╛рдж push, рдФрд░ рдЖрд╡рдзрд┐рдХ pull, рд╕рднреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдФрд░ рдкреНрд░рддрд┐рд╡рд░реНрддреАред
- рдкреБрд╖реНрдЯрд┐-рдЧреЗрдЯреЗрдб рд▓реЗрдЦрди тАФ
pull/pushрдкрд╣рд▓реЗ рдкреВрдЫрддреЗ рд╣реИрдВ (userQuestionsрдпрд╛approvalрдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ); рдХреЗрд╡рд▓-рдкрдарди рд╕рддрд╣реЗрдВ рдХрднреА рдирд╣реАрдВ рдкреВрдЫрддреАрдВ; рдмрд┐рдирд╛ рдЙрддреНрддрд░рджрд╛рддрд╛ рдХреЗ рдСрдкрд░реЗрд╢рди рдмрдВрдж-рдЕрд╕рдлрд▓ рд╣реЛрддрд╛ рд╣реИред
рдбрд┐рд╡рд╛рдЗрд╕ A рд░рд┐рдореЛрдЯ (рдЖрдкрдХрд╛ git рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА) рдбрд┐рд╡рд╛рдЗрд╕ B
$DSH_HOME/sessions тФАтФАрдорд┐рд░рд░тФАтФАтЦ╢ commit тФАтФАpushтФАтФАтЦ╢ [sessions] тФАтФАpullтФАтФАтЦ╢ merge (рджреЛрдиреЛрдВ рд░рдЦреЗрдВ + fork)
рддреНрд╡рд░рд┐рдд рд╢реБрд░реБрдЖрдд
# 1. рдмрдВрдбрд▓ рдХреЛ рдЕрдкрдиреЗ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ
dsh plugin --profile web add "github:PerryLink/dsh-session-sync#main"
# рдпрд╛ npm рд╕реЗ (рдкреНрд░рдХрд╛рд╢рд┐рдд рд╕рдВрд╕реНрдХрд░рдг)
dsh plugin --profile web add dsh-session-sync
# 2. рдЗрд╕реЗ рдПрдХ рдирд┐рдЬреА git рд░рд┐рдореЛрдЯ рдХреА рдУрд░ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВ рдФрд░ рдкрдВрдХреНрддрд┐ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ
dsh --profile web --dump-config | grep -A2 'id: session-sync'
рдлрд┐рд░ рдЕрдкрдиреЗ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдкреИрдЪ рдореЗрдВ рд░рд┐рдореЛрдЯ рд╕реЗрдЯ рдХрд░реЗрдВ (рдПрдХ рдирд┐рдЬреА рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА рдЖрдзрд╛рд░ рд╣реИ) рдФрд░ рд╕рд┐рдВрдХ рдХрд░реЗрдВ:
- insert:
- id: session-sync
name: dsh-session-sync
config:
remote: git@github.com:you/your-dsh-sessions.git
> /sync status
> /sync pull
> /sync push
рдЗрдВрд╕реНрдЯреЙрд▓ рдФрд░ рдЕрдирдЗрдВрд╕реНрдЯреЙрд▓
- git рдЪреИрдирд▓ (рдирд╡реАрдирддрдо
main):dsh plugin --profile web add "github:PerryLink/dsh-session-sync#main"(git+https://github.com/PerryLink/dsh-session-sync.gitрд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд░рд╛рдмрд░)ред рдХреЛрдИ рдмрд┐рд▓реНрдб рдЪрд░рдг рдирд╣реАрдВ тАФindex.mjsрдФрд░lib/рд╣реА рдкреНрд░рдХрд╛рд╢рд┐рдд рдЖрд░реНрдЯрд┐рдлрд╝реИрдХреНрдЯ рд╣реИрдВред - npm рдЪреИрдирд▓ (рдкреНрд░рдХрд╛рд╢рд┐рдд рд╕рдВрд╕реНрдХрд░рдг):
dsh plugin --profile web add dsh-session-syncред - tarball рдЪреИрдирд▓: рдЗрд╕ рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА рдореЗрдВ
pnpm packрдЪрд▓рд╛рдПрдБ, рдлрд┐рд░dsh plugin --profile web add ./dsh-session-sync-<version>.tgzред - рдЕрдирдЗрдВрд╕реНрдЯреЙрд▓:
dsh plugin --profile web remove dsh-session-sync(рдпрд╛ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдкреИрдЪ рд╕реЗ рдкрдВрдХреНрддрд┐ рд╣рдЯрд╛рдПрдБ)ред
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди
рд╕рднреА рдЯреНрдпреВрдиреЗрдмрд▓ Schemastery Config рдлрд╝реАрд▓реНрдб рд╣реИрдВ (cordis.yml рд╕реЗ рдмрджрд▓реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ)ред id-рд▓рдХреНрд╖рд┐рдд рдУрд╡рд░рд░рд╛рдЗрдб рдкреВрд░реА рдкрдВрдХреНрддрд┐ рдХреЛ рдмрджрд▓ рджреЗрддрд╛ рд╣реИ тАФ рдЬреЛ рдХреБрдВрдЬрд┐рдпрд╛рдБ рдЪрд╛рд╣рд┐рдП рдЙрдиреНрд╣реЗрдВ рджреЛрдмрд╛рд░рд╛ рд▓рд┐рдЦреЗрдВред cordis.patch.yml рд╣рд░ рдХреБрдВрдЬреА рдХреЛ рдЗрдирд▓рд╛рдЗрди рджрд╕реНрддрд╛рд╡реЗрдЬрд╝рд┐рдд рдХрд░рддрд╛ рд╣реИред
| рдХреБрдВрдЬреА | рдбрд┐рдлрд╝реЙрд▓реНрдЯ | рдЕрд░реНрде |
|---|---|---|
enabled | true | рдорд╛рд╕реНрдЯрд░ рд╕реНрд╡рд┐рдЪ; false рдХрдорд╛рдВрдб, рдЯреВрд▓, рд▓рд┐рд╕рдирд░ рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдореЛрдб рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИ |
backend | git | рд╕рд┐рдВрдХ рдмреИрдХрдПрдВрдб: git (рд╕рд╛рджрд╛-рдкрд╛рда рдорд┐рд░рд░) рдпрд╛ encrypted (age-рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдорд┐рд░рд░ рд╕рд╛рдордЧреНрд░реА) |
sessionRoot | '' | рд╕рддреНрд░ рд╕реНрдЯреЛрд░ рд░реВрдЯ; рдЦрд╛рд▓реА = $DSH_HOME/sessions (рджреЛрдиреЛрдВ рдЕрдиреБрдкрд╕реНрдерд┐рдд рд╣реЛрдиреЗ рдкрд░ рд▓реЛрдб рдЕрд╕рдлрд▓) |
repoDir | '' | рд╕рд┐рдВрдХ рд╡рд░реНрдХрдЯреНрд░реА рд░реВрдЯ; рдЦрд╛рд▓реА = $DSH_HOME/dsh-session-sync/repo |
remote | '' | рд░рд┐рдореЛрдЯ рдкрддрд╛ (pull/push рд╕реЗ рдкрд╣рд▓реЗ рдЖрд╡рд╢реНрдпрдХ; status/diff рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ) |
branch | main | рд░рд┐рдореЛрдЯ рдмреНрд░рд╛рдВрдЪ рдХрд╛ рдирд╛рдо |
gitBin | git | git рдПрдХреНрдЬрд╝реАрдХреНрдпреВрдЯреЗрдмрд▓ рдкрде |
ageBin | age | age рдПрдХреНрдЬрд╝реАрдХреНрдпреВрдЯреЗрдмрд▓ рдкрде (backend: encrypted рдкрд░ рдЬрд╛рдБрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИ; рдЕрдиреБрдкрд╕реНрдерд┐рдд рд╣реЛрдиреЗ рдкрд░ рд╕рд╛рджреЗ-рдкрд╛рда рдкрд░ рдбрд╛рдЙрдирдЧреНрд░реЗрдб) |
ageRecipient | '' | age рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛ (рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рдпрд╛ рдкрд╣рдЪрд╛рди рд╕реНрдЯреНрд░рд┐рдВрдЧ); рдЦрд╛рд▓реА = рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛, рд╕рд╛рджреЗ-рдкрд╛рда рдкрд░ рдбрд╛рдЙрдирдЧреНрд░реЗрдб |
ageIdentity | '' | рдкрд╛рд╕рдлрд╝реНрд░реЗрдЬрд╝-рд░рд╣рд┐рдд age рдЧреБрдкреНрдд рдХреБрдВрдЬреА рдХрд╛ рдкрде (рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рдХреЗ рд▓рд┐рдП); рдЦрд╛рд▓реА = рд╕рд╛рджреЗ-рдкрд╛рда рдкрд░ рдбрд╛рдЙрдирдЧреНрд░реЗрдб |
autoPullOnStart | false | рдкреНрд▓рдЧрдЗрди рдорд╛рдЙрдВрдЯ рд╣реЛрдиреЗ рдкрд░ рдПрдХ рдмрд╛рд░ pull рдХрд░реЗрдВ (рдХреЙрдиреНрдлрд╝рд┐рдЧ рд╣реА рдЕрдиреБрдорддрд┐ рд╣реИ; рдкреБрдирдГ рдкреБрд╖реНрдЯрд┐ рдирд╣реАрдВ) |
autoPushOnTurnEnd | false | рд╣рд░ рдмрдВрдж рдЯрд░реНрди рдХреЗ рдмрд╛рдж push рдХрд░реЗрдВ |
pullIntervalMinutes | 0 | рд╣рд░ N рдорд┐рдирдЯ рдореЗрдВ рдЖрд╡рдзрд┐рдХ pull (0 = рдмрдВрдж, рдЕрдзрд┐рдХрддрдо 10080) |
confirmVia | auto | рдкреБрд╖реНрдЯрд┐ рдЪреИрдирд▓: auto (рдкрд╣рд▓реЗ userQuestions, рдлрд┐рд░ approval), userQuestions, approval |
graceMs | 10000 | git рдХреЛ рдорд╛рд░рдиреЗ рдХреА рдЕрдиреБрдЧреНрд░рд╣ рдЕрд╡рдзрд┐ (ms) |
commandTimeoutMs | 120000 | рдкреНрд░рддрд┐-рдХрдорд╛рдВрдб рдЯрд╛рдЗрдордЖрдЙрдЯ (ms) |
maxOutputBytes | 262144 | рдкреНрд░рддрд┐-рд╕реНрдЯреНрд░реАрдо рдПрдХрддреНрд░рд┐рдд рдЖрдЙрдЯрдкреБрдЯ рд╕реАрдорд╛ (рдмрд╛рдЗрдЯреНрд╕) |
commitName | dsh-session-sync | рдХрдорд┐рдЯ рд▓реЗрдЦрдХ рдирд╛рдо |
commitEmail | dsh-session-sync@localhost | рдХрдорд┐рдЯ рд▓реЗрдЦрдХ рдИрдореЗрд▓ |
registerCommand | true | /sync рдХрдорд╛рдВрдб рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВ |
registerTools | true | tools рд╕реЗрд╡рд╛ рдЙрдкрд╕реНрдерд┐рдд рд╣реЛрдиреЗ рдкрд░ sync_* рдЯреВрд▓ рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВ |
рдЖрдкрдХреЗ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдкреИрдЪ рдореЗрдВ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд╛ рдЙрджрд╛рд╣рд░рдг:
- insert:
- id: session-sync
name: dsh-session-sync
config:
remote: git@github.com:you/your-dsh-sessions.git
branch: main
autoPushOnTurnEnd: true
pullIntervalMinutes: 30
confirmVia: userQuestions
рдЯреВрд▓ рдФрд░ рд╕рддрд╣реЗрдВ
| рд╕рддрд╣ | рдХреЗрд╡рд▓-рдкрдарди | рдкреБрд╖реНрдЯрд┐ рдЖрд╡рд╢реНрдпрдХ | рдиреЛрдЯреНрд╕ |
|---|---|---|---|
/sync status | тЬЕ | тАФ | рдмреНрд░рд╛рдВрдЪ, рд╕реИрдирд┐рдЯрд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рд░рд┐рдореЛрдЯ, рдЖрдЧреЗ/рдкреАрдЫреЗ, рдЧрдВрджреА рдлрд╝рд╛рдЗрд▓реЗрдВ, рдлрд╝реЛрд░реНрдХ рдлрд╝рд╛рдЗрд▓реЗрдВ, рдЕрдВрддрд┐рдо pull/push |
/sync diff | тЬЕ | тАФ | рдЕрдирдХрдорд┐рдЯреЗрдб рдмрджрд▓рд╛рд╡ + HEAD..remote рдЖрдБрдХрдбрд╝реЗ (рдХреЗрд╡рд▓-рдкрдарди) |
/sync log | тЬЕ | тАФ | рд╕рд┐рдВрдХ рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА рдХреЗ рдЕрдВрддрд┐рдо рдХрдорд┐рдЯ |
/sync pull | тЬЕ | Fetch + merge рджреЛрдиреЛрдВ-рд░рдЦреЗрдВ рдЕрд░реНрде рдХреЗ рд╕рд╛рде; рд╕реНрдерд╛рдиреАрдп рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд░рд┐рдореЛрдЯ рдлрд╝реЛрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрд░рдХреНрд╖рд┐рдд | |
/sync push | тЬЕ | рдорд┐рд░рд░ + commit + push; рдХрднреА force-push рдирд╣реАрдВ рдХрд░рддрд╛, рдЕрд╕реНрд╡реАрдХреГрддрд┐ рдкрд░ рдПрдХ рдмрд╛рд░ рд╕реБрд▓рд╣ рдХрд░рдХреЗ рдкреБрдирдГ рдкреНрд░рдпрд╛рд╕ | |
sync_status | тЬЕ | тАФ | рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП /sync status рдЬреИрд╕реЗ рд╣реА рддрдереНрдп |
sync_pull | тЬЕ | рдореЙрдбрд▓-рдХреЙрд▓ рдХрд░рдиреЗ рдпреЛрдЧреНрдп pull | |
sync_push | тЬЕ | рдореЙрдбрд▓-рдХреЙрд▓ рдХрд░рдиреЗ рдпреЛрдЧреНрдп push |
рдЕрдиреБрдорддрд┐рдпрд╛рдБ рдФрд░ рдбреЗрдЯрд╛
- рдЕрдиреБрдорддрд┐рдпрд╛рдБ: рдкрд░рд┐рд╡рд░реНрддрдирдХрд╛рд░реА рдСрдкрд░реЗрд╢рди рдкреБрд╖реНрдЯрд┐ рджреНрд╡рд╛рд░ (
confirmVia) рдХреЛ рдкрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ; рдкреНрд▓рдЧрдЗрди рдХрднреА рднреА рд╣рд╛рд░реНрдиреЗрд╕ рдХреАuserQuestions/approvalрд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд╛рдЧреВ рдпрд╛ рдмрд╛рдпрдкрд╛рд╕ рдирд╣реАрдВ рдХрд░рддрд╛ред рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдореЛрдб рдХреЙрдиреНрдлрд╝рд┐рдЧ рдЕрдиреБрджрд╛рди рд╕реЗ рдЖрдЪреНрдЫрд╛рджрд┐рдд рд╣реИрдВ рдФрд░ рдХрднреА рдкреБрдирдГ рдкреБрд╖реНрдЯрд┐ рдирд╣реАрдВ рдХрд░рддреЗред - рдбреЗрдЯрд╛: рд╕рд┐рдВрдХ рдореЗрдЯрд╛рдбреЗрдЯрд╛ (рдбрд┐рд╡рд╛рдЗрд╕ id, рдЕрдВрддрд┐рдо pull/push, рдЕрдВрддрд┐рдо push head, рдЕрдВрддрд┐рдо рддреНрд░реБрдЯрд┐)
session-syncрд╕реНрдЯреЛрд░реЗрдЬ рдбреЛрдореЗрди рдореЗрдВ рд░рд╣рддрд╛ рд╣реИред рд╕рддреНрд░ рдлрд╝рд╛рдЗрд▓реЗрдВ рдЕрдкрд╛рд░рджрд░реНрд╢реА рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдХреЙрдкреА рд╣реЛрддреА рд╣реИрдВ тАФ рдкреНрд▓рдЧрдЗрди рдЙрдиреНрд╣реЗрдВ рдХрднреА рдкрд╛рд░реНрд╕ рдирд╣реАрдВ рдХрд░рддрд╛ред рдбрд┐рд╡рд╛рдЗрд╕ id рдХреНрд░реЙрд╕-рдбрд┐рд╡рд╛рдЗрд╕ рдлрд╝реЛрд░реНрдХ рд╢реНрд░реЗрдп рдХреЗ рд▓рд┐рдП рд╕рд┐рдВрдХ рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА рдореЗрдВdevice.txtрдореЗрдВ рднреА рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред - рд╕рддреНрд░ рд▓реЙрдЧ:
sync/push,sync/pull, рдФрд░sync/conflicttypes.d.tsрдореЗрдВ рдШреЛрд╖рд┐рдд рд╣реИрдВ; рд╡реЗ рдХреЗрд╡рд▓ рддрднреА рдЬреЛрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВ рдЬрдм рд╣реЛрд╕реНрдЯ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рддрд╛ рд╣реИ (рдЬреНрдЮрд╛рдд рд╕реАрдорд╛рдПрдБ рджреЗрдЦреЗрдВ)ред рдЬреЛ рдХреБрдЫ рднреА рд▓рд┐рдЦрд╛ рдпрд╛ рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рд╡рд╣ рд╕реИрдирд┐рдЯрд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╕реБрд░рдХреНрд╖рд╛ рд╕реАрдорд╛рдПрдБ
- рдХрднреА рдЪреБрдкрдЪрд╛рдк рдУрд╡рд░рд░рд╛рдЗрдЯ рдирд╣реАрдВред Append-only рддреАрди-рддрд░рдлрд╝рд╛ рдорд░реНрдЬ рдХрд┐рд╕реА рднреА рд╡рд┐рдЪрд▓рди рдкрд░ рджреЛрдиреЛрдВ рдкрдХреНрд╖ рд░рдЦрддрд╛ рд╣реИ; рдлрд╝реЛрд░реНрдХ рдлрд╝рд╛рдЗрд▓реЗрдВ рдХрднреА рдирд╣реАрдВ рд╣рдЯрддреАрдВ, рдФрд░ git рдХрднреА force-push, reset, rebase рдпрд╛ рдмреНрд░рд╛рдВрдЪ рд╕реНрд╡рд┐рдЪ рдирд╣реАрдВ рдХрд░рддрд╛ред
- рдкрде рд╕рдВрд░реЛрдзрдиред рдлрд╝рд╛рдЗрд▓реЗрдВ рдЕрдкрд╛рд░рджрд░реНрд╢реА рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдорд┐рд░рд░ рд╣реЛрддреА рд╣реИрдВ, рд╕рд┐рдорд▓рд┐рдВрдХ рдЕрд╕реНрд╡реАрдХреГрдд рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рд╣рд░ рдЬреЛрдбрд╝реЗ рдЧрдП рдкрде рдХреА рд╕рдВрд░реЛрдзрди рдЬрд╛рдБрдЪ рд╣реЛрддреА рд╣реИ (
PATH_UNSAFEрддреЗрдЬрд╝реА рд╕реЗ рдЕрд╕рдлрд▓)ред - рд╕реИрдирд┐рдЯрд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдЖрдЙрдЯрдкреБрдЯред рд░рд┐рдореЛрдЯ-URL рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓, рдЯреЛрдХрди рдФрд░
key=valueрд░рд╣рд╕реНрдп рдореЙрдбрд▓ рдпрд╛ рд▓реЙрдЧ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╣рдЯрд╛ рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ; рдкрде рдкреНрд░рджрд░реНрд╢рди рдЕрдкрдиреА рд░реВрдЯ рдХреЗ рдмрд╛рд╣рд░ рд╕рдм рдХреБрдЫ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред - рдХреЛрдИ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рд╕реНрдЯреЛрд░реЗрдЬ рдирд╣реАрдВред рдкреНрд▓рдЧрдЗрди рд╕реНрд╡рдпрдВ рдХреЛрдИ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рд╕рдВрдЧреНрд░рд╣реАрдд рдирд╣реАрдВ рдХрд░рддрд╛; git рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдЖрдкрдХреЗ рд╕рд╛рдорд╛рдиреНрдп git credential helper рдореЗрдВ рд░рд╣рддреЗ рд╣реИрдВред age рдкрд╣рдЪрд╛рди/рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛ рдлрд╝рд╛рдЗрд▓реЗрдВ рдЖрдкрдХреЗ рдкреНрд░рдмрдВрдзрди рдХреА рд╣реИрдВ, рдФрд░ рдХреБрдВрдЬрд┐рдпрд╛рдБ рдХрднреА рд╕рд┐рдВрдХ рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рддреАрдВред
- git рдХрдареЛрд░реАрдХрд░рдгред git
GIT_TERMINAL_PROMPT=0рдФрд░GIT_OPTIONAL_LOCKS=0рдХреЗ рд╕рд╛рде рдЪрд▓рддрд╛ рд╣реИ, рд╕рдордп-рд╕реАрдорд╛ рдФрд░ рд╕рд┐рдЧреНрдирд▓ рд╕реЗ рд╕реАрдорд┐рдд, рдкреНрд░рддрд┐-рд╕реНрдЯреНрд░реАрдо рдЖрдЙрдЯрдкреБрдЯ рд╕реАрдорд╛ рдХреЗ рд╕рд╛рдеред - рдмрдВрдж-рдЕрд╕рдлрд▓ред рдкреБрд╖реНрдЯрд┐ рдЙрддреНрддрд░рджрд╛рддрд╛, рд░рд┐рдореЛрдЯ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐, рдпрд╛ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдкрде рдСрдкрд░реЗрд╢рди рдХреЛ рддреЗрдЬрд╝реА рд╕реЗ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред
рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдФрд░ рдЦрд╝рддрд░рд╛ рдореЙрдбрд▓
backend: encrypted рдорд┐рд░рд░ рдХреЗ рдКрдкрд░ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ age рдкрд░рдд рдЬреЛрдбрд╝рддрд╛ рд╣реИ: рд╕рддреНрд░ рдмрд╛рдЗрдЯреНрд╕ рдХрдорд┐рдЯ рдФрд░ push рд╕реЗ рдкрд╣рд▓реЗ encrypted/**/*.age рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдорд░реНрдЬ рд╕реЗ рдкрд╣рд▓реЗ рд╕реНрдерд╛рдиреАрдп рд╕рд╛рджреЗ-рдкрд╛рда рдорд┐рд░рд░ рдореЗрдВ рд╡рд╛рдкрд╕ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рд╣реЛрддреЗ рд╣реИрдВред рддреАрди-рддрд░рдлрд╝рд╛ рдорд░реНрдЬ рд╣рдореЗрд╢рд╛ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рд╕рд╛рджреЗ-рдкрд╛рда рдкрд░ рдЪрд▓рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП append-only рджреЛрдиреЛрдВ-рд░рдЦреЗрдВ рдЕрд░реНрде рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд░рд╣рддреЗ рд╣реИрдВред
рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреНрдпрд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ:
- рд░рд┐рдореЛрдЯ рдореЗрдВ рдорд┐рд░рд░ рд╕рд╛рдордЧреНрд░реАред рдЖрдк рдЬреЛ рд╕рддреНрд░ рдлрд╝рд╛рдЗрд▓реЗрдВ push рдХрд░рддреЗ рд╣реИрдВ рд╡реЗ age рд╕рд┐рдлрд░рдЯреЗрдХреНрд╕реНрдЯ рд╣реЛрддреА рд╣реИрдВ; рд░рд┐рдореЛрдЯ рд╣реЛрд╕реНрдЯ, рдЙрд╕рдХреЗ рд╕рдВрдЪрд╛рд▓рдХ рдФрд░ рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА рдХреНрд▓реЛрди рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдИ рднреА рд╡реНрдпрдХреНрддрд┐ рдирд┐рдЬреА рдХреБрдВрдЬреА рдХреЗ рдмрд┐рдирд╛ рд╕рд╛рджреЗ-рдкрд╛рда рд╕рддреНрд░ рдмрд╛рдЗрдЯреНрд╕ рдирд╣реАрдВ рджреЗрдЦ рд╕рдХрддрд╛ред
рдХреНрдпрд╛ рдпрд╣ рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ (рд╕реАрдорд╛):
- рдХреБрдВрдЬрд┐рдпрд╛рдБ рдФрд░ age рдкрд╣рдЪрд╛рди рдЖрдкрдХреЗ рдкреНрд░рдмрдВрдзрди рдХреА рд╣реИрдВред рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛/рдкрд╣рдЪрд╛рди рдлрд╝рд╛рдЗрд▓реЗрдВ рдкреНрд▓рдЧрдЗрди рджреНрд╡рд╛рд░рд╛ рдХрднреА рд╢рд┐рдк, рд╕реНрдЯреЛрд░ рдпрд╛ рд░реЛрдЯреЗрдЯ рдирд╣реАрдВ рд╣реЛрддреАрдВред рдХреБрдВрдЬреА рд▓реАрдХ рд╣реЛрдиреЗ рдкрд░ рдЙрд╕рд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рдорд┐рд░рд░ рд╕рд╛рдордЧреНрд░реА рдЙрдЬрд╛рдЧрд░ рд╣реЛрддреА рд╣реИред рдкрд╛рд╕рдлрд╝реНрд░реЗрдЬрд╝-рд░рд╣рд┐рдд рдкрд╣рдЪрд╛рди рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рдЙрд╕реЗ рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА рд╕реЗ рдмрд╛рд╣рд░ рд░рдЦреЗрдВред
- рд░рд┐рдореЛрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдирд┐рдЬреА рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА рд╣реА рд░рд╣рддрд╛ рд╣реИред git рдореЗрдЯрд╛рдбреЗрдЯрд╛ тАФ рдХрдорд┐рдЯ рд╕рдВрджреЗрд╢,
.gitignore,encrypted/рдкрде рд╕рдВрд░рдЪрдирд╛, рдмреНрд░рд╛рдВрдЪ рдирд╛рдо рдФрд░ push/fetch рдЧрддрд┐рд╡рд┐рдзрд┐ тАФ рд░рд┐рдореЛрдЯ рд╣реЛрд╕реНрдЯ рдХреЛ рджрд┐рдЦрддрд╛ рд░рд╣рддрд╛ рд╣реИред рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рд╕рд╛рдордЧреНрд░реА рдЫрд┐рдкрд╛рддрд╛ рд╣реИ, рдпрд╣ рддрдереНрдп рдирд╣реАрдВ рдХрд┐ рдЖрдк рд╕рд┐рдВрдХ рдХрд░рддреЗ рд╣реИрдВ, рди рд╣реА рдЖрдкрдХреЗ рд╕рддреНрд░ рд╡реГрдХреНрд╖ рдХрд╛ рдЖрдХрд╛рд░ред - рд╕рд╛рджрд╛ рдкрд╛рда рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рд░рд╣рддрд╛ рд╣реИред
<repoDir>/sessions/рдХрд╛ рдорд┐рд░рд░ рдбрд┐рд╕реНрдХ рдкрд░ рд╕рд╛рджрд╛ рдкрд╛рда рд╣реИ; рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдкреНрд░реЗрд╖рд┐рдд/рд░рд┐рдореЛрдЯ рдкреНрд░рддрд┐ рдХреА рд░рдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ, рд╕реНрдерд╛рдиреАрдп рдбрд┐рд╕реНрдХ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдпрд╛ рд▓рд╛рдЗрд╡ рд╕рддреНрд░ рд╕реНрдЯреЛрд░ рдХреА рдирд╣реАрдВред - graceful degradation рдХрд╛ рдЕрд░реНрде рд╕рд╛рджрд╛ рдкрд╛рда рд╣реИред
backend: encryptedрдХреЗ рд╕рд╛рде, рдпрджрд┐ageрдЧрд╛рдпрдм рд╣реИ, рдпрд╛ageRecipient/ageIdentityрдЦрд╛рд▓реА рд╣реИ, рддреЛ рдкреНрд▓рдЧрдЗрди рд╕рд╛рджреЗ-рдкрд╛рда git рдкрде рдкрд░ рдЧрд┐рд░ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╕реНрдерд┐рддрд┐/рд▓реЙрдЧ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рдЪреЗрддрд╛рд╡рдиреА рджреЗрддрд╛ рд╣реИ тАФ рдпрд╣ рдХрднреА рдЪреБрдкрдЪрд╛рдк рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рд╣реЛрдиреЗ рдХрд╛ рджрд┐рдЦрд╛рд╡рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ред рд░рд┐рдореЛрдЯ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдорд╛рдирдиреЗ рд╕реЗ рдкрд╣рд▓реЗ/sync statusрдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА рдЬрд╛рдБрдЪреЗрдВред
рдЖрдзрд╛рд░: backend: git (рдбрд┐рдлрд╝реЙрд▓реНрдЯ) рдХреЗ рд╕рд╛рде рд╕рддреНрд░ рдмрд╛рдЗрдЯреНрд╕ рдЖрдкрдХреЗ git рд░рд┐рдореЛрдЯ рдореЗрдВ рдЕрдирдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рд░рд╣рддреЗ рд╣реИрдВ тАФ рдирд┐рдЬреА рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдЬреНрдЮрд╛рдд рд╕реАрдорд╛рдПрдБ
- рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИред
backend: encryptedрдПрдХ age рдкрд░рдд рдЬреЛрдбрд╝рддрд╛ рд╣реИ (рдКрдкрд░ ┬лрдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдФрд░ рдЦрд╝рддрд░рд╛ рдореЙрдбрд▓┬╗ рджреЗрдЦреЗрдВ);ageрдпрд╛ рдХреБрдВрдЬрд┐рдпрд╛рдБ рдЧрд╛рдпрдм рд╣реЛрдиреЗ рдкрд░ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рд╕рд╛рде рд╕рд╛рджреЗ-рдкрд╛рда рдкрд░ рдЧрд┐рд░ рдЬрд╛рддрд╛ рд╣реИредbackend: git(рдбрд┐рдлрд╝реЙрд▓реНрдЯ) рдХреЗ рд╕рд╛рде рд╕рддреНрд░ рдмрд╛рдЗрдЯреНрд╕ рдЖрдкрдХреЗ git рд░рд┐рдореЛрдЯ рдореЗрдВ рдЕрдирдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рд░рд╣рддреЗ рд╣реИрдВ тАФ рдПрдХ рдирд┐рдЬреА рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред - git рдЖрд╡рд╢реНрдпрдХред рдкреНрд▓рдЧрдЗрди рдХреЛ
gitрдПрдХреНрдЬрд╝реАрдХреНрдпреВрдЯреЗрдмрд▓ рдФрд░subprocessрд╕реЗрд╡рд╛ рдЪрд╛рд╣рд┐рдП; рдЙрдирдХреЗ рдмрд┐рдирд╛, рд╕рд┐рдВрдХ рдСрдкрд░реЗрд╢рди рд╕реНрдкрд╖реНрдЯ рдХрд╛рд░рдг рд╕реЗ рдЕрд╕рдлрд▓ рд╣реЛрддреЗ рд╣реИрдВ (рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓реЗрдВ рдмреВрдЯ рд╣реЛрддреА рд░рд╣рддреА рд╣реИрдВ)ред 0.1.0-rc.6/0.1.0-rc.8/0.1.1-rc.2рдкрд░ рд╕рддреНрд░ рдИрд╡реЗрдВрдЯред рд╣рд╛рд░реНрдиреЗрд╕ рдЕрднреАsync/*рдкреНрд░рдХрд╛рд░ рдкрдВрдЬреАрдХреГрдд рдирд╣реАрдВ рдХрд░рддрд╛, рдЗрд╕рд▓рд┐рдП рд╕рддреНрд░-рд▓реЙрдЧ рдЬреЛрдбрд╝ рдЫреЛрдбрд╝ рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ (рд╕рддреНрд░ рд▓реЛрдб рд╣реЛрддреЗ рд░рд╣рддреЗ рд╣реИрдВ); рдкреНрд▓рдЧрдЗрди рдЙрдиреНрд╣реЗрдВ рд╕реНрд╡рддрдГ рд╕рдХреНрд╖рдо рдХрд░рддрд╛ рд╣реИ рдЬрдм рдХреЛрдИ рд╣реЛрд╕реНрдЯ рдкреНрд░рдХрд╛рд░ рдкрдВрдЬреАрдХреГрдд рдХрд░рддрд╛ рд╣реИ рдпрд╛Session.appendрдкрд░ignorableрд▓рд┐рдлрд╝рд╛рдлрд╝рд╛ рдЙрдЬрд╛рдЧрд░ рдХрд░рддрд╛ рд╣реИред- рдЯрд░реНрди рдХреЗ рдмреАрдЪ
approvalред/syncрдЯрд░реНрди рдХреЗ рдмреАрдЪ рдЪрд▓рддрд╛ рд╣реИ, рдЬрд╣рд╛рдБapprovalрдЪреИрдирд▓ рдХреЗ рдкрд╛рд╕ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЦреБрд▓рд╛ рдЯрд░реНрди рдирд╣реАрдВ рд╣реЛрддрд╛; рдХрдорд╛рдВрдб-рд╕рдВрдЪрд╛рд▓рд┐рдд рд╕рд┐рдВрдХ рдХреЗ рд▓рд┐рдПconfirmVia: userQuestionsрдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдпрд╛ рдЯрд░реНрди рдХреЗ рдЕрдВрджрд░ рдЯреВрд▓ рджреНрд╡рд╛рд░рд╛ рд╕рд┐рдВрдХ рдЪрд▓рд╛рдПрдБред
рд╡рд┐рдХрд╛рд╕
pnpm install # node ^22.19 || >=24
pnpm run typecheck && pnpm run typecheck:ci # рдкреНрд░рдХрд╛рд╢рд┐рдд 0.1.1-rc.2 peers рдХреЗ рд╡рд┐рд░реБрджреНрдз tsc --checkJs
pnpm test # node --test (12 рдЯреЗрд╕реНрдЯ рдлрд╝рд╛рдЗрд▓реЗрдВ; git рдЗрдВрдЬрди рд╕реБрдЗрдЯ рдмрд┐рдирд╛ git рдХреЗ рдЫреЛрдбрд╝реА рдЬрд╛рддреА рд╣реИ)
pnpm run verify:self-contained # рдирд┐рд░реНрднрд░рддрд╛ spec рд░рдЬрд┐рд╕реНрдЯреНрд░реА рд╕реЗ рд╣рд▓ рд╣реЛрддреА рд╣реИрдВ
pnpm run verify:artifacts # рдкреНрд░рдХрд╛рд╢рд┐рдд рдлрд╝рд╛рдЗрд▓реЗрдВ рдЙрдкрд╕реНрдерд┐рдд + index.mjs import рдпреЛрдЧреНрдп
pnpm run check:readmes # рдкрд╛рдБрдЪ-рднрд╛рд╖рд╛ README рд╕рдВрдЧрддрддрд╛
pnpm pack # рдкреНрд░рдХрд╛рд╢рд┐рдд tarball
рдХреЛрдИ рдмрд┐рд▓реНрдб рдЪрд░рдг рдирд╣реАрдВ: рд╢реБрджреНрдз ESM, index.mjs рдФрд░ lib/ рд╣реА рдкреНрд░рдХрд╛рд╢рд┐рдд рдЖрд░реНрдЯрд┐рдлрд╝реИрдХреНрдЯ рд╣реИрдВред
Topics
dsh, dsh-plugin, deepseek-harness, deepseek, cordis, session-sync, session, git, sync, cross-device
рдпреЛрдЧрджрд╛рдирдХрд░реНрддрд╛
- @PerryLink тАФ рдирд┐рд░реНрдорд╛рддрд╛ рдФрд░ рдЕрдиреБрд░рдХреНрд╖рдХ: git рдорд┐рд░рд░ рдЗрдВрдЬрди, append-only рджреЛрдиреЛрдВ-рд░рдЦреЗрдВ рдорд░реНрдЬ,
/syncрдХрдорд╛рдВрдб рдФрд░sync_*рдЯреВрд▓, рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдореЛрдб, рд╕реИрдирд┐рдЯрд╛рдЗрдЬрд╝рд░, рдФрд░ рдкрд╛рдБрдЪ-рднрд╛рд╖рд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ред
PerryLink DSH Plugin Family
рдпрд╣ рдкреНрд░реЛрдЬреЗрдХреНрдЯ PerryLink рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрд░рдХреНрд╖рд┐рдд 33 DeepSeek Harness рдкреНрд▓рдЧрдЗрдиреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдЕрдЧрд░ рдпрд╣ рдЖрдкрдХреА рдорджрдж рдХрд░рддрд╛ рд╣реИ, рддреЛ рдмрд╛рдХреА рднреА рдХрд░реЗрдВрдЧреЗ:
| Plugin | One-liner |
|---|---|
| dsh-dsh-auto-review | рдЕрдиреБрдореЛрджрди рд╢реНрд░реГрдВрдЦрд▓рд╛ рдкрд░ рджреНрд╡рд┐рддреАрдп-рдореЙрдбрд▓ рд╕реНрд╡рддрдГ-рд╕рдореАрдХреНрд╖рд╛, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╡рд┐рдлрд▓-рдмрдВрдж |
| dsh-dsh-background-agents | рд╡реЗрдм UI рд╕рд╛рдЗрдбрдмрд╛рд░, рд╕рдВрджреЗрд╢ рдФрд░ рдЕрд╡рд░реЛрдзрди рдХреЗ рд╕рд╛рде рдЯрд┐рдХрд╛рдК рдкреГрд╖реНрдарднреВрдорд┐ рдЪрд╛рдЗрд▓реНрдб рдПрдЬреЗрдВрдЯ |
| dsh-dsh-budget | DeepSeek Harness рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧрдд рдкреНрд░рд╢рд╛рд╕рди: рдмрдЬрдЯ, рдХрд╛рд░реНрдмрди рдФрд░ рд╡рд┐рд▓рдВрдмрддрд╛ рдПрдХ рдкреИрдирд▓ рдореЗрдВред |
| dsh-dsh-checkpoint-rewind | Claude Code /rewind-рд╕рдорддреБрд▓реНрдп: рд╕реНрдиреИрдкрд╢реЙрдЯ, рд╕рддреНрд░ рдлрд╝реЙрд░реНрдХ, рдПрдХ-рдмрд╛рд░ рдкреБрдирд░реНрд╕реНрдерд╛рдкрдирд╛ |
| dsh-dsh-claude-move | Claude Code рд╕рддреНрд░, рдореЗрдореЛрд░реА, рдХреМрд╢рд▓ рдФрд░ CLAUDE.md рдХреЛ DSH рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ |
| dsh-dsh-click | DeepSeek Harness рдХреЗ рд▓рд┐рдП рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдиреЗрдЯрд┐рд╡ рдбреЗрд╕реНрдХрдЯреЙрдк рдирд┐рдпрдВрддреНрд░рдг тАФ Windows рдкрд╣рд▓реЗред |
| dsh-dsh-composer-history | рд╡реЗрдм рдХрдВрдкреЛрдЬрд╝рд░ рдХреЗ рд▓рд┐рдП рдЯрд░реНрдорд┐рдирд▓-рд╢реИрд▓реА рдЗрдирдкреБрдЯ рдЗрддрд┐рд╣рд╛рд╕: рддреАрд░, Ctrl+R рдЦреЛрдЬ |
| dsh-dsh-data-quality | рдбреЗрдЯрд╛рд╕реЗрдЯ рдЧреБрдгрд╡рддреНрддрд╛ рдЬрд╛рдБрдЪ рд╡ рдЙрджреНрдзрд░рдг рд╕рддреНрдпрд╛рдкрди (рдпрд╣рд╛рдБ рдЙрдкрднреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕рдВрдЦреНрдпрд╛-рд╕реЗрддреБ) |
| dsh-dsh-defend | DeepSeek Harness рдХреЗ рд▓рд┐рдП рдкреНрд░реЙрдореНрдкреНрдЯ-рдЗрдВрдЬреЗрдХреНрд╢рди, рдЬреЗрд▓рдмреНрд░реЗрдХ рдФрд░ рд╕реАрдХреНрд░реЗрдЯ-рд▓реАрдХ рд░рдХреНрд╖рд╛ред |
| dsh-dsh-doublecheck | рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ-рдЕрдиреБрд╢рд╛рд╕рди рд░рдХреНрд╖рдХ: рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреА рдкреВрдЫрддрд╛рдЫ, рдкрд░реАрдХреНрд╖рдг рджреНрд╡рд╛рд░, рдкреНрд░рддрд┐рджреНрд╡рдВрджреНрд╡реА рд╕рдореАрдХреНрд╖рд╛ |
| dsh-dsh-draw | DeepSeek Harness рдХреЗ рд▓рд┐рдП рдПрдХреАрдХреГрдд рд╕реНрдереИрддрд┐рдХ-рдЫрд╡рд┐ рдирд┐рд░реНрдорд╛рдг рд░реВрдЯрд┐рдВрдЧред |
| dsh-dsh-fast | DeepSeek Harness рдХреЗ рд▓рд┐рдП рд░реАрдб-рдУрдирд▓реА рдкреНрд░рджрд░реНрд╢рди рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХреНрд╕ред |
| dsh-dsh-fund-research | рдЪреАрдиреА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдореНрдпреВрдЪреБрдЕрд▓ рдлрдВрдб рдХреЗ рд▓рд┐рдП рдирд┐рдпрддрд╛рддреНрдордХ рдЕрдиреБрд╕рдВрдзрд╛рди рд░рд┐рдкреЛрд░реНрдЯ |
| dsh-dsh-github | DSH рдХреЗ рд▓рд┐рдП GitHub PR/issues рдПрдХреАрдХрд░рдг, рд╣рд░ рд▓реЗрдЦрди рдЕрдиреБрдореЛрджрди-рджреНрд╡рд╛рд░рд┐рдд |
| dsh-dsh-industry-research | рдЙрджреНрдпреЛрдЧ-рдЕрдиреБрд╕рдВрдзрд╛рди рдСрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрд╢рди рдЬреЛ рдЗрд╕ рдкреНрд▓рдЧрд┐рди рдХреЗ ctx.researchReport.assemble рд╕реЗ рдбрд┐рд▓реАрд╡рд░реЗрдмрд▓ рд╕реАрд▓ рдХрд░рддрд╛ рд╣реИ |
| dsh-dsh-library | DeepSeek Harness рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдп рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЬреНрдЮрд╛рдирдХреЛрд╢ред |
| dsh-dsh-local-ai | DeepSeek Harness рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдп-рдореЙрдбрд▓ (Ollama) рдПрдХреАрдХрд░рдгред |
| dsh-dsh-lsp-actions | рднрд╛рд╖рд╛ рд╕рд░реНрд╡рд░реЛрдВ рдкрд░ LSP рдирд┐рджрд╛рди, рдлрд╝реЙрд░реНрдореЗрдЯрд┐рдВрдЧ, рдкреВрд░реНрдгрддрд╛, рдХреЛрдб рдХреНрд░рд┐рдпрд╛рдПрдБ рдФрд░ рдирд╛рдо рдмрджрд▓рдирд╛ |
| dsh-dsh-mask | PII рдорд╛рд╕реНрдХрд┐рдВрдЧ рдорд┐рдбрд▓рд╡реЗрдпрд░: рдореЙрдбрд▓ рд╕реАрдорд╛ рдкрд░ рдЕрдирд╛рдо рдХрд░реЗрдВ, рдбрд┐рд╕реНрдкреНрд▓реЗ рд▓реЗрдпрд░ рдкрд░ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ |
| dsh-dsh-mcp-panel | рдХреЗрд╡рд▓-рдкрдврд╝рдиреЗ рд╡рд╛рд▓рд╛ MCP рд░рдирдЯрд╛рдЗрдо рдкреИрдирд▓: /mcp рдХрдорд╛рдВрдб + рд╕реНрдерд┐рддрд┐, рдЯреВрд▓ рдФрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╡рд╛рд▓рд╛ Settings рдЯреИрдм |
| dsh-dsh-memento | рдЕрдиреБрдореЛрджрди-рджреНрд╡рд╛рд░рд┐рдд рдХреНрд░реЙрд╕-рд╕рддреНрд░ рдореЗрдореЛрд░реА: ctx.memory рд╕реАрдо + SQLite + рдореЗрдореЛрд░реА рдЯреВрд▓ |
| dsh-dsh-observe | DeepSeek Harness рдХреЗ рд▓рд┐рдП OpenTelemetry рдФрд░ Langfuse рдЕрд╡рд▓реЛрдХрдиреАрдпрддрд╛ рдирд┐рд░реНрдпрд╛рддрдХред |
| dsh-dsh-output-styles | Claude Code outputStyles-рд╕рдорддреБрд▓реНрдп рд░рдирдЯрд╛рдЗрдо рд╢реИрд▓реА рдмрджрд▓рд╛рд╡ |
| dsh-dsh-permission-rules | рдСрдбрд┐рдЯ рдХреЗ рд╕рд╛рде Claude Code-рд╢реИрд▓реА рдШреЛрд╖рдгрд╛рддреНрдордХ allow/deny/ask рдЕрдиреБрдорддрд┐ рдирд┐рдпрдо |
| dsh-dsh-plugin-guide | рдорд╛рдБрдЧ рдкрд░ рдПрдЬреЗрдВрдЯ рдХреМрд╢рд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд▓рдЧрдЗрди-рд╡рд┐рдХрд╛рд╕ рдЬреНрдЮрд╛рди рдЖрдзрд╛рд░ |
| dsh-dsh-research-report | рд╕рд╛рдордЧреНрд░реА-рдкрддрд╛ рд╕рд╛рдХреНрд╖реНрдп рдФрд░ рд╕реАрд▓рдмрдВрдж рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рд╡рд╛рд▓рд╛ рд╕рддреНрдпрд╛рдкрди-рдпреЛрдЧреНрдп рдЕрдиреБрд╕рдВрдзрд╛рди-рд░рд┐рдкреЛрд░реНрдЯ рдЗрдВрдЬрди |
| dsh-dsh-score | DeepSeek Harness рдкреНрд▓рдЧрд┐рдиреЛрдВ рдХреА рдмрд╣реБ-рдЖрдпрд╛рдореА рдЧреБрдгрд╡рддреНрддрд╛ рд╕реНрдХреЛрд░рд┐рдВрдЧред |
| dsh-dsh-session-pin | рдЯрд┐рдХрд╛рдК рдХреНрд░рдо рдХреЗ рд╕рд╛рде рд╡реЗрдм рд╕рд╛рдЗрдбрдмрд╛рд░ рдореЗрдВ рд╕рддреНрд░ рдкрд┐рди рдХрд░реЗрдВ |
| dsh-dsh-skill-pack-security | рд╕реБрд░рдХреНрд╖рд╛-рдСрдбрд┐рдЯ рдХреМрд╢рд▓ рдкреИрдХ: рдЧреБрдкреНрдд рд╕реНрдХреИрди, рдирд┐рд░реНрднрд░рддрд╛ рдФрд░ рдЖрдкреВрд░реНрддрд┐-рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╕рдореАрдХреНрд╖рд╛ |
| dsh-dsh-talk | DeepSeek Harness рдХреЗ рд▓рд┐рдП рдЖрд╡рд╛рдЬрд╝-рдкреНрд░рдердо рд╕рддреНрд░ рд▓реВрдк: рдмреЛрд▓реЗрдВ рдФрд░ рдЙрддреНрддрд░ рд╕реБрдиреЗрдВред |
| dsh-dsh-test-drive | DeepSeek Harness рдкреНрд▓рдЧрд┐рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдкреГрдердХ рдЗрдВрд╕реНрдЯреЙрд▓-рдПрдВрдб-рд╕реНрдореЛрдХ рдЯреЗрд╕реНрдЯ рдбреНрд░рд╛рдЗрд╡ред |
| dsh-dsh-translate | DeepSeek Harness рдХреЗ рд▓рд┐рдП рд╡реЗрдВрдбрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдЕрдиреБрд╡рд╛рдж рдФрд░ рдирд┐рдпрддрд╛рддреНрдордХ JSON рдорд░рдореНрдорддред |
рд▓рд╛рдЗрд╕реЗрдВрд╕
LICENSE (Apache License 2.0) ┬й 2026 dsh-session-sync contributors