ЁЯУМ dsh-session-pin
September 4, 2026 ┬╖ View on GitHub
ЁЯУМ dsh-session-pin
- 1024 рд╕реНрдЯреЛрд░ рдЪреИрдирд▓: рдПрдХ рдмрд╛рд░
npm i -g dsh1024, рдлрд┐рд░dsh1024 plugin --profile web add dsh-session-pin(deepseek1024.com рдЗрдВрд╕реНрдЯреЙрд▓ рд░реИрдВрдХрд┐рдВрдЧ рдореЗрдВ рдЧрд┐рдирд╛ рдЬрд╛рддрд╛ рд╣реИ)ред
DeepSeek Harness рд╕рд╛рдЗрдбрдмрд╛рд░ рдореЗрдВ рд╕рддреНрд░реЛрдВ рдФрд░ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рд╢реАрд░реНрд╖ рдкрд░ рдкрд┐рди рдХрд░реЗрдВ, рд╣рд░ рдкрд┐рди рдХреЗ рд╕рд╛рде рдкрдВрдХреНрддрд┐-рд░рдВрдЧ рджреЗрдВред
рдПрдХ рджреЛрд╣рд░реЗ-рдЪреЗрд╣рд░реЗ (host + browser) рд╡рд╛рд▓рд╛ plugin: рдкрд┐рди рдХреЗ рджреЛ рд╕реНрддрд░, рд╣рд░ рдкрд┐рди рдХреЗ рд▓рд┐рдП 8-рд░рдВрдЧ рдХрд╛ рдмрдЯрди, рдФрд░ рдПрдХ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдЖрдпреЛрдЬрдХ тАФ boards, рдЯреИрдЧ, рд╕рд╣реЗрдЬреЗ рдЧрдП рджреГрд╢реНрдп, рд╕реНрд╡рд╛рд╕реНрдереНрдп рд╕рд╛рд░рд╛рдВрд╢ рдФрд░ /gotoред
English ┬╖ чоАф╜Уф╕нцЦЗ ┬╖ Espa├▒ol ┬╖ Portugu├кs ┬╖ рд╣рд┐рдиреНрджреА
Compatibility
| рд╕рддрд╣ | рд╕реНрдерд┐рддрд┐ |
|---|---|
| Harness | DeepSeek Harness 0.1.2-rc.1 (client packages 0.1.2-rc.1) |
| Node | >= 22 (рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдЖрдзрд╛рд░) |
| рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо | Web GUI (рджреЛрд╣рд░рд╛ рдЪреЗрд╣рд░рд╛: host + browser) |
| рдореЙрдбрд▓ | рдХреЛрдИ рднреА (рдХреЗрд╡рд▓ UI тАФ рдХреЛрдИ рдореЙрдбрд▓ рдЯреНрд░реИрдлрд╝рд┐рдХ рдирд╣реАрдВ, рдХреЛрдИ рд╕рддреНрд░ рдШрдЯрдирд╛ рдирд╣реАрдВ) |
session/pin рдЗрд╡реЗрдВрдЯ | рдкреНрд░реА-рдлрд╝реНрд▓рд╛рдЗрдЯ рдЧреЗрдЯ: рдЙрди hosts рдкрд░ рдХрднреА рдирд╣реАрдВ рд▓рд┐рдЦреЗ рдЬрд╛рддреЗ рдЬрд┐рдирдХрд╛ рдЗрд╡реЗрдВрдЯ рд╢рдмреНрджрдХреЛрд╢ рдкреНрд░рдХрд╛рд░ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдФрд░ рдЬрд┐рдирдХреЗ append рдиреЗ ignorable рдорд╛рд░реНрдХрд░ рдЧрд┐рд░рд╛ рджрд┐рдпрд╛ (0.1.2-rc.1); projection settings cache рдкрд░ degrade рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ 0.1.2-rc.1 (2026-09-04 рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд): рд╕рддреНрд░ рд▓рд┐рдлрд╝рд╛рдлрд╝рд╛ рдЕрдкрдирд╛ ignorable рдлрд╝реАрд▓реНрдб рдХреЗрд╡рд▓ рд╕рдВрдЧреНрд░рд╣реАрдд-рд▓реЙрдЧ рдкрдарди рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП рд░рдЦрддрд╛ рд╣реИ - Session.append рдЕрднреА рднреА рдЗрд╕реЗ рд╕реНрдЯреИрдореНрдк рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рдЗрд╕рд▓рд┐рдП рдЧреЗрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реИред |
What you get
dsh-session-pin рдЙрди рдмрд╛рддрдЪреАрддреЛрдВ рдХреЛ рд╕рд╛рдЗрдбрдмрд╛рд░ рдореЗрдВ рд╢реАрд░реНрд╖ рдкрд░ рд░рдЦрддрд╛ рд╣реИ рдЬреЛ рдорд╛рдпрдиреЗ рд░рдЦрддреА рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд░рдВрдЧ рджреЗрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдПрдХ рдирдЬрд╝рд░ рдореЗрдВ рдорд┐рд▓ рдЬрд╛рдПрдБ:
- рдкрд┐рди рдХреЗ рджреЛ рд╕реНрддрд░ тАФ рдкреВрд░реЗ workspace рдФрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ session рдкрд┐рди рдХрд░реЗрдВ; рдкрд┐рди рдХрд┐рдпрд╛ workspace workspace рд╕реВрдЪреА рдореЗрдВ рдФрд░ рдкрд┐рди рдХрд┐рдпрд╛ session рдЕрдкрдиреЗ рдЦрд╛рддреЗ рдореЗрдВ рд╕рдмрд╕реЗ рдЖрдЧреЗ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред
- рд╣рд░ рдкрд┐рди рдХрд╛ рдкрдВрдХреНрддрд┐-рд░рдВрдЧ тАФ рд╣рд░ рдкрд┐рди рдХреЗ рдмрд╛рдж рдХрд╛ рд░рдВрдЧ рдмрдЯрди 8-рд░рдВрдЧ рдХреА preset palette рдШреБрдорд╛рддрд╛ рд╣реИ (Shift+рдХреНрд▓рд┐рдХ рд╕рд╛рдлрд╝ рдХрд░рддрд╛ рд╣реИ); рдкрдВрдХреНрддрд┐ рдХреЛ рдмрд╛рдИрдВ рдУрд░ рдПрдХ accent рдкрдЯреНрдЯреА рдФрд░ рдкрд╛рд░рднрд╛рд╕реА рд░рдВрдЧрдд рдорд┐рд▓рддреА рд╣реИред
- рдЪрд╛рд░ рдкрд┐рди рд╕рддрд╣реЗрдВ тАФ рд╣рд░ рдкрдВрдХреНрддрд┐ рдкрд░ рдПрдХ hover
[pin][рд░рдВрдЧ]рдЬреЛрдбрд╝реА, session рд╣реЗрдбрд░ рдореЗрдВ рдПрдХ рдЯреЙрдЧрд▓, pinned рдкреИрдирд▓ рд╡рд╛рд▓реА sidebar рдлреБрдЯ рдХреНрд░рд┐рдпрд╛, рдФрд░ рд╣рд░-рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЯрд┐рдХрд╛рдК pinning рдЬреЛ рд░реАрд╕реНрдЯрд╛рд░реНрдЯ рдХреЗ рдмрд╛рдж рднреА pin рдФрд░ рд░рдВрдЧ рдмрдирд╛рдП рд░рдЦрддрд╛ рд╣реИред - рдХреЛрд░ рдореЗрдВ рд╢реВрдиреНрдп рдмрджрд▓рд╛рд╡ тАФ рд╕реНрдЯреЙрдХ DSH Web GUI рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрд╡рддрдВрддреНрд░ plugin; рд╣рд░ рд╕рддрд╣ рдкреБрд░рд╛рдиреА рдЖрдзрд╛рд░рд░реЗрдЦрд╛рдУрдВ рдкрд░ рд╕рд╣рдЬ рд░реВрдк рд╕реЗ degrade рд╣реЛ рдЬрд╛рддреА рд╣реИред
тФМтФА Workspaces тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФР
тФВ ЁЯОи Workbench тЦИтЦИтЦИ тФВ тЖР рдкрд┐рди рдХрд┐рдпрд╛ workspace, рд▓рд╛рд▓ рд░рдВрдЧ
тФВ ЁЯУМ Implement login flow 3h тФВ тЖР рдкрд┐рди рдХрд┐рдпрд╛ session, рдЯреАрд▓ рд░рдВрдЧ
тФВ Fix the auth bug 1h тФВ тЖР hover рдкрд░ рдЧреНрд░реЗ pin + рд░рдВрдЧ рдмрдЯрди
тФВ Refactor the DB layer 2d тФВ
тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФШ
Navigation organizer
рдЪрд╛рд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░-рд╕реНрдерд╛рдиреАрдп рдХреНрд╖рдорддрд╛рдПрдБ pinning рдХреЗ рдКрдкрд░ рдмрд╣реБ-рд╕рддреНрд░ рдХрд╛рд░реНрдп рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рддреА рд╣реИрдВред рд╕рд╛рд░рд╛ state рдЙрд╕реА session-pin store рдореЗрдВ рд░рд╣рддрд╛ рд╣реИ (рд╣рд░-рдмреНрд░рд╛рдЙрдЬрд╝рд░; рдХреБрдЫ рднреА рдЕрдкрд▓реЛрдб рдирд╣реАрдВ рд╣реЛрддрд╛), рдФрд░ рд╣рд░ рдПрдХ рдХрд╛ Config рд╕реНрд╡рд┐рдЪ рд╣реИред
- Boards тАФ pins рдирд╛рдорд┐рдд рд╕рдореВрд╣реЛрдВ рдореЗрдВ рдЬреБрдбрд╝рддреЗ рд╣реИрдВ; рдЪрд┐рдк рдкрдВрдХреНрддрд┐ boards рдмрдирд╛рддреА, рдирд╛рдо рдмрджрд▓рддреА рдФрд░ рд╣рдЯрд╛рддреА рд╣реИ рддрдерд╛ рдЙрдиреНрд╣реЗрдВ рдЦреАрдВрдЪрдХрд░ рдкреБрдирдГрдХреНрд░рдорд┐рдд рдХрд░рддреА рд╣реИ (рдХреНрд░рдо рд╣рд░-рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдмрдирд╛ рд░рд╣рддрд╛ рд╣реИ), рдЬрдмрдХрд┐ рдкреИрдирд▓ рд╣рд░ board рдХреЗ pins рдХреЛ рдПрдХ рд╕рдВрдХреБрдЪрд┐рдд рд╢реАрд░реНрд╖рдХ рдХреЗ рдиреАрдЪреЗ рд╕рдореВрд╣рд┐рдд рдХрд░рддрд╛ рд╣реИред
- рдЯреИрдЧ рдФрд░ рджреГрд╢реНрдп тАФ entities рдкрд░ рдЕрдзрд┐рдХрддрдо 8 рдЯреИрдЧ (рд╣рд░ рдПрдХ тЙд24 рдЕрдХреНрд╖рд░), рдкреИрдирд▓ рдХреЗ рдкреНрд░рдмрдВрдзрди рдмрдЯрди рд╕реЗ рдкреНрд░рддрд┐ рдкрдВрдХреНрддрд┐ рд╕реЗрдЯ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ (рдЬреЛ pin рдХрд╛ board рднреА рдЕрд╕рд╛рдЗрди рдХрд░рддрд╛ рд╣реИ); рдлрд╝рд┐рд▓реНрдЯрд░ рдмрд╛рд░ рдЯреЗрдХреНрд╕реНрдЯ рдФрд░ рдЯреИрдЧ рд╕реЗ рдорд┐рд▓рд╛рддрд╛ рд╣реИ, рдФрд░ рдХреЛрдИ рднреА рдлрд╝рд┐рд▓реНрдЯрд░ рд╕реНрдерд┐рддрд┐ рдПрдХ рдирд╛рдорд┐рдд рджреГрд╢реНрдп (рдЕрдзрд┐рдХрддрдо 20) рдмрдирдХрд░ рдПрдХ рдХреНрд▓рд┐рдХ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддреА рд╣реИред
- рд╕реНрд╡рд╛рд╕реНрдереНрдп рд╕рд╛рд░рд╛рдВрд╢ тАФ рд╣рд░ рдкрд┐рди рдХреА рдЧрдИ session рдкрдВрдХреНрддрд┐ рдореЗрдВ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ session snapshot рд╕реЗ рд╡реНрдпреБрддреНрдкрдиреНрди рд░реАрдб-рдУрдирд▓реА, рд╕реИрдирд┐рдЯрд╛рдЗрдЬрд╝реНрдб рдкрдВрдХреНрддрд┐ (
N msgs ┬╖ you|ai ┬╖ рд╕рд╛рдкреЗрдХреНрд╖ рд╕рдордп) рдЬреБрдбрд╝рддреА рд╣реИ тАФ рдХреЗрд╡рд▓ рдЧрдгрдирд╛ рд╡ рджрд┐рд╢рд╛, рд╕рд╛рдордЧреНрд░реА рдХрднреА рдирд╣реАрдВред /goto <рдХреАрд╡рд░реНрдб>тАФ рдХрдореНрдкреЛрдЬрд╝рд░ рдореЗрдВ/gotoрд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдкрдВрдХреНрддрд┐ + Enter: рдЕрджреНрд╡рд┐рддреАрдп рдорд┐рд▓рд╛рди рдЦреЛрд▓рддрд╛ рд╣реИ, рдХрдИ рдорд┐рд▓рд╛рди рд╕реВрдЪреА рджреЗрддреЗ рд╣реИрдВ, рдХреЛрдИ рдорд┐рд▓рд╛рди рдирд╣реАрдВ рддреЛ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдгред рдХрдорд╛рдВрдб рдкрдВрдХреНрддрд┐ рдореЙрдбрд▓ рддрдХ рдХрднреА рдирд╣реАрдВ рдкрд╣реБрдБрдЪрддреАред
How it works
- Host рдЖрдзрд╛ (
src/index.ts) тАФ рдЯрд┐рдХрд╛рдКsession-pinsettings namespace рдкрдВрдЬреАрдХреГрдд рдХрд░рддрд╛ рд╣реИ (рджреЛ рдкрд┐рди рдХреА рдЧрдИ id рд╕реВрдЪрд┐рдпрд╛рдБ, рджреЛ рд░рдВрдЧ рдорд╛рдирдЪрд┐рддреНрд░ рдФрд░ рдЖрдпреЛрдЬрдХ state, рд╕рд╛рде рдореЗрдВ host рдиреАрддрд┐maxPins/reorderOnLoad/pruneStale); рдХреЛрдИ session event рдирд╣реАрдВ, рдХреЛрдИ рдореЙрдбрд▓ рдЯреНрд░реИрдлрд╝рд┐рдХ рдирд╣реАрдВред - Browser рдЖрдзрд╛ (
src/client.ts) тАФ рдПрдХ framework-рдореБрдХреНрддPinStore(settings transport, рдЯреИрдм-рд╕рд┐рдВрдХ рд╡рд╛рд▓реЗ versionedlocalStorageрджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкрд░ degrade), рдПрдХPinController(рджреЛ-рд╕реНрддрд░реАрдп toggle / рд░рдВрдЧ рдЪрдХреНрд░ / prune / reorder рд╕реНрдЯреЗрдЯ рдорд╢реАрди) рдФрд░ UI рдЬреЛрдбрд╝рддрд╛ рд╣реИ: рдкрдВрдХреНрддрд┐ рдУрд╡рд░рд▓реЗ, рд╡реИрдХрд▓реНрдкрд┐рдХ рдкрдВрдХреНрддрд┐-slot рдкрдВрдЬреАрдХрд░рдг, рд╣реЗрдбрд░ рдЯреЙрдЧрд▓, рдлреБрдЯ рдХреНрд░рд┐рдпрд╛ рдФрд░ pinned рдкреИрдирд▓ред рдХреНрд░рдоctx.workspacesрд╕реЗ рд╣реЛрдХрд░ рдЬрд╛рддрд╛ рд╣реИред - log-рд╕рдорд░реНрдерд┐рдд рд▓реЗрдЦрди рдЪреИрдирд▓ тАФ рдмрд┐рд▓реНрдЯ-рдЗрди
dsh-session-pinрд╕реЗрд╡рд╛ рдорд╛рдЙрдВрдЯ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ builds рдкрд░, рд╣рд░ session рдЯреЙрдЧрд▓ рдкрд╣рд▓реЗsession.setPinnedRPC рд╕реЗ commit рд╣реЛрддрд╛ рд╣реИ (session/pinрдЗрд╡реЗрдВрдЯ log canonical residence рд╣реИ) рдФрд░ settings store рдореЗрдВ mirror рд╣реЛрддрд╛ рд╣реИ; рд╡рд┐рдлрд▓ рдпрд╛ рдзреАрдорд╛ RPC рд╕реАрдзреЗ settings рд▓реЗрдЦрди рдкрд░ degrade рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред - log-рд╕рдорд░реНрдерд┐рдд projection рдкрдарди тАФ
enableLogBacking(host Config, fail-closed рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдмрдВрдж) рдПрдХ reader рдорд╛рдЙрдВрдЯ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд▓рд╛рдЗрд╡session/pinрдЗрд╡реЗрдВрдЯреНрд╕ рдХреЛ canonical pin рд╕реЗрдЯ рдореЗрдВ fold рдХрд░рддрд╛ рд╣реИ рдФрд░ foldedpinned/colorsрдХреЛ settings namespace рдореЗрдВ mirror рдХрд░рддрд╛ рд╣реИред рдЗрд╡реЗрдВрдЯ schema, рд╢реБрджреНрдз fold (foldPinEvents) рдФрд░ рдкреНрд░реА-рдлрд╝реНрд▓рд╛рдЗрдЯ-рдЧреЗрдЯреЗрдб append seam (PinLogAppender)src/pin-log.tsрдореЗрдВ рд░рд╣рддреЗ рд╣реИрдВ: host рдХрд╛ рдЬреНрдЮрд╛рдд рдЗрд╡реЗрдВрдЯ рд╢рдмреНрджрдХреЛрд╢ рдФрд░ рдЙрд╕рдХрд╛ignorableappend рдорд╛рд░реНрдХрд░ рдкрд╣рд▓реА рд▓реЗрдЦрди рд╕реЗ рдкрд╣рд▓реЗ рдЬрд╛рдБрдЪреЗ рдЬрд╛рддреЗ рд╣реИрдВ (рдкрд░рд┐рдгрд╛рдо рдкреНрд░рддрд┐-рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреИрд╢), рдЗрд╕рд▓рд┐рдП рдЬреЛ hosts рдЗрд╡реЗрдВрдЯ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд▓реЗ рдЬрд╛ рд╕рдХрддреЗ тАФ0.1.2-rc.1рдкрдврд╝рдиреЗ рдкрд░ рдЕрдЬреНрдЮрд╛рдд рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ fail-closed рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ тАФ рдЙрдиреНрд╣реЗрдВ рдПрдХ рднреА рд▓реЗрдЦрди рдирд╣реАрдВ рдорд┐рд▓рддрд╛; settings/localStorage store рд╕рдВрдЧрддрддрд╛ рд╡ degradation рдкрде рдмрдирд╛ рд░рд╣рддрд╛ рд╣реИред - рдХреНрд▓рд╛рдЗрдВрдЯ seam тАФ browser рдЖрдзрд╛
SessionId/WorkspaceIdbrands рдХреЛ@deepseek-ai/dsh-client-connectionрд╕реЗ рдкрдврд╝рддрд╛ рд╣реИ (рд╣рдЯрд╛рдпрд╛ рдЧрдпрд╛dsh-client-runtimeрдкреИрдХреЗрдЬ рд╡рд░реНрддрдорд╛рди hosts рдкрд░ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ); session-рд╣реЗрдбрд░ slot рдХреА standard-kit рд╕реАрдЯреЗрдВ рд╕реНрдерд╛рдиреАрдп structural contract рдХреЗ рд░реВрдк рдореЗрдВ рдЯрд╛рдЗрдк рд╣реЛрддреА рд╣реИрдВред0.1.2-rc.1hosts рдкрд░sessions.row.actionрдкрдВрдХреНрддрд┐ slot рдШреЛрд╖рд┐рдд рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП session рдкрдВрдХреНрддрд┐рдпрд╛рдБ DOM рдУрд╡рд░рд▓реЗ рдкрд░ fallback рдХрд░рддреА рд╣реИрдВ рдФрд░ slot рдкрдВрдЬреАрдХрд░рдг рдЯрд╛рд▓рд╛ рд░рд╣рддрд╛ рд╣реИред - рдмрд┐рд▓реНрдб тАФ esbuild host ESM рдЖрдзрд╛ рдФрд░ рд╡реЗрдм рдмреВрдЯ рдлрд╝реИрдХреНрдЯрд░реА (
window.__ModuleLoader__.load({ id, factory })) рдореЗрдВ рд▓рд┐рдкрдЯрд╛ client CJS рдЖрдзрд╛ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░рддрд╛ рд╣реИ;reactshell рдХреЗ рдЕрдкрдиреЗ React рдкрд░ externalize рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдХреЛрдИ@deepseek-ai/*рдорд╛рди-рдЖрдпрд╛рдд рдмреНрд░рд╛рдЙрдЬрд╝рд░ bundle рдореЗрдВ рд░рд┐рд╕рдиреЗ рдкрд░ purity gate рдмрд┐рд▓реНрдб рд╡рд┐рдлрд▓ рдХрд░ рджреЗрддрд╛ рд╣реИред
рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдкреЙрдЗрдВрдЯ: settings (host); sessions, workspaces, settingsScope, connection, remote, slots (client); locale (client, рд╡реИрдХрд▓реНрдкрд┐рдХ); conversation.session.header.actions, sidebar.footer.action, shell.overlay, рдФрд░ upstream рдХрд╛ sessions.row.action рдкрдВрдХреНрддрд┐ slot рдЬрдм рдШреЛрд╖рд┐рдд рд╣реЛ (0.1.2-rc.1 hosts рдЗрд╕реЗ рдШреЛрд╖рд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ тАФ рд╡рд╣рд╛рдБ session рдкрдВрдХреНрддрд┐рдпрд╛рдБ DOM рдУрд╡рд░рд▓реЗ рд╕реЗ рдврдХрддреА рд╣реИрдВ)ред рдореЙрдбрд▓-рджреГрд╢реНрдп рдкреНрд░рднрд╛рд╡: рдХреЛрдИ рдирд╣реАрдВ тАФ рдХреЗрд╡рд▓-UI plugin: рди рдХреЛрдИ session event рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдФрд░ рди рдХрд┐рд╕реА рдореЙрдбрд▓ рдЕрдиреБрд░реЛрдз рдореЗрдВ tokenред
Quick start
# 1. bundle рдХреЛ рдЕрдкрдиреЗ profile рдореЗрдВ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ
dsh plugin --profile web add "github:PerryLink/dsh-session-pin#main"
# рдпрд╛ npm рд╕реЗ (рдкреНрд░рдХрд╛рд╢рд┐рдд рд╕рдВрд╕реНрдХрд░рдг)
dsh plugin --profile web add dsh-session-pin
# 2. рд░реАрд╕реНрдЯрд╛рд░реНрдЯ рдХрд░реЗрдВ рдФрд░ рдкрдВрдХреНрддрд┐ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░реЗрдВ
dsh --profile web --dump-config | grep -A3 'id: session-pin'
Loader entry idред рдЬрд┐рди harness builds рдХрд╛
dsh-basebundle рдмрд┐рд▓реНрдЯ-рдЗрди host рд╕реЗрд╡рд╛@deepseek-ai/dsh-session-pinрдорд╛рдЙрдВрдЯ рдХрд░рддрд╛ рд╣реИ (entry idsession-pin), рд╡рд╣рд╛рдБ рдЗрд╕ plugin рдХреЛ profile patch рдкрдВрдХреНрддрд┐ рдореЗрдВ рдПрдХ рдЕрд▓рдЧ entry id рджреЗрдВ, рдЬреИрд╕реЗid: session-pin-uiтАФ рдбреБрдкреНрд▓рд┐рдХреЗрдЯsession-pinid рд╕реЗ рдмреВрдЯ "duplicate loader entry id" рдХреЗ рд╕рд╛рде рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
Install & uninstall
- git рдЪреИрдирд▓ (рдирд╡реАрдирддрдо
main):dsh plugin --profile web add "github:PerryLink/dsh-session-pin#main"тАФpnpm run buildhost рдЖрдзрд╛ (lib/index.js) рдФрд░ browser рдЖрдзрд╛ (lib/client.js) рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░рддрд╛ рд╣реИред - npm рдЪреИрдирд▓ (рдкреНрд░рдХрд╛рд╢рд┐рдд рд╕рдВрд╕реНрдХрд░рдг):
dsh plugin --profile web add dsh-session-pinред - tarball рдЪреИрдирд▓: рдЗрд╕ repo рдореЗрдВ
pnpm pack, рдлрд┐рд░dsh plugin --profile web add ./dsh-session-pin-<version>.tgzред - рдЕрдирдЗрдВрд╕реНрдЯреЙрд▓:
dsh plugin --profile web remove dsh-session-pin(рдпрд╛ profile patch рд╕реЗ рдкрдВрдХреНрддрд┐ рд╣рдЯрд╛рдПрдБ;settings.yamlрдХрд╛session-pinрдЕрдиреБрднрд╛рдЧ рднреА рд╣рдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)ред
Configuration
рд╕рднреА рдЯреНрдпреВрдиреЗрдмрд▓ Schemastery Config рдлрд╝реАрд▓реНрдб рд╣реИрдВ (cordis.yml рд╕реЗ рдмрджрд▓реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ)ред cordis.patch.yml рдиреАрдЪреЗ рджрд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЗ рд╕рд╛рде bundle рдорд╛рдЙрдВрдЯ рдХрд░рддрд╛ рд╣реИред
| рдХреБрдВрдЬреА | рдбрд┐рдлрд╝реЙрд▓реНрдЯ | рдЕрд░реНрде |
|---|---|---|
maxPins | 0 | рд╣рд░ рд╕реНрддрд░ рдХреЗ рд▓рд┐рдП рдкрд┐рди рдХреА рдЧрдИ entities рдХреА рдЕрдзрд┐рдХрддрдо рд╕рдВрдЦреНрдпрд╛ (session рдФрд░ workspace рдХрд╛ рдЕрдкрдирд╛ рдмрдЬрдЯ); 0 = рдЕрд╕реАрдорд┐рдд |
reorderOnLoad | true | рд╕реВрдЪрд┐рдпрд╛рдБ рддреИрдпрд╛рд░ рд╣реЛрддреЗ рд╣реА рдкрд┐рди рдХрд┐рдП рдЙрдкрд╕рд░реНрдЧ (рд╕рдмрд╕реЗ рдирдпрд╛ pin рдкрд╣рд▓реЗ) рдлрд┐рд░ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ |
pruneStale | true | рддреИрдпрд╛рд░ рд╕реВрдЪреА рд╕реЗ рдЧрд╛рдпрдм entities (рд╣рдЯрд╛рдИ/рд╕рдВрдЧреНрд░рд╣реАрдд) рдХреЗ pins рдФрд░ рд░рдВрдЧ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИ |
enableBoards | true | рд╕рд╛рдЗрдбрдмрд╛рд░ рдкреИрдирд▓ рдореЗрдВ рдкрд┐рди рд╕рдореВрд╣ (boards) рд╕рдХреНрд╖рдо рдХрд░реЗрдВ |
enableTags | true | session/workspace рдЯреИрдЧ рдФрд░ рдкреИрдирд▓ рдлрд╝рд┐рд▓реНрдЯрд░ рдмрд╛рд░ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ |
enableViews | true | рд╕рд╣реЗрдЬреЗ рдЧрдП рдлрд╝рд┐рд▓реНрдЯрд░ рджреГрд╢реНрдп рд╕рдХреНрд╖рдо рдХрд░реЗрдВ |
enableHealth | true | рд╣рд░ рдкрд┐рди рдХрд┐рдП session рдХрд╛ рд╕реНрд╡рд╛рд╕реНрдереНрдп рд╕рд╛рд░рд╛рдВрд╢ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ (рд░реАрдб-рдУрдирд▓реА, рд╕реИрдирд┐рдЯрд╛рдЗрдЬрд╝реНрдб) |
enableGoto | true | рдХрдореНрдкреЛрдЬрд╝рд░ рдХрд╛ /goto <рдХреАрд╡рд░реНрдб> рдХрдорд╛рдВрдб рд╕рдХреНрд╖рдо рдХрд░реЗрдВ |
enableLogBacking | false | session/pin рдЗрд╡реЗрдВрдЯреНрд╕ рдХреЛ log-рд╕рдорд░реНрдерд┐рдд projection рдореЗрдВ fold рдХрд░реЗрдВ рдФрд░ settings cache рдореЗрдВ mirror рдХрд░реЗрдВ (fail-closed: рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдкрд░ log canonical рд╣реИ) |
Tools & surfaces
| рд╕рддрд╣ | рдкреНрд░рдХрд╛рд░ | рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ |
|---|---|---|
[pin][рд░рдВрдЧ] рдкрдВрдХреНрддрд┐ рдирд┐рдпрдВрддреНрд░рдг | UI slot / DOM рдУрд╡рд░рд▓реЗ | рд╣рд░ session рдФрд░ workspace рдкрдВрдХреНрддрд┐ рдкрд░ hover рдирд┐рдпрдВрддреНрд░рдг |
| session рд╣реЗрдбрд░ рдЯреЙрдЧрд▓ | UI slot | рд╣реЗрдбрд░ рдХреА рдХреНрд░рд┐рдпрд╛-рдкрдВрдХреНрддрд┐ рдореЗрдВ рд╡рд╣реА рдирд┐рдпрдВрддреНрд░рдг, session id рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ |
| sidebar рдлреБрдЯ + pinned рдкреИрдирд▓ | UI slot / рдУрд╡рд░рд▓реЗ | рдкрд┐рди рдХрд┐рдП workspace рдФрд░ session board рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рдореВрд╣рд┐рдд (рд╕рдВрдХреБрдЪрд┐рдд), рдкреНрд░рддрд┐ рдкрдВрдХреНрддрд┐ board/tag рдкреНрд░рдмрдВрдзрди рдФрд░ рд░рдВрдЧ-рдмрд┐рдВрджреБрдУрдВ рдХреЗ рд╕рд╛рде рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддрд╛ рд╣реИ |
/goto <рдХреАрд╡рд░реНрдб> | command | рд╢реАрд░реНрд╖рдХ/рдЯреИрдЧ рд╕реЗ рдХрдореНрдкреЛрдЬрд╝рд░ рддреНрд╡рд░рд┐рдд-рдЫрд▓рд╛рдВрдЧ; рдкрдВрдХреНрддрд┐ рдореЙрдбрд▓ рддрдХ рдХрднреА рдирд╣реАрдВ рдкрд╣реБрдБрдЪрддреА |
session-pin settings namespace | host рд╕реЗрд╡рд╛ | pins, рд░рдВрдЧ рдФрд░ рдЖрдпреЛрдЬрдХ state рдХрд╛ рд╣рд░-рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЯрд┐рдХрд╛рдК рднрдВрдбрд╛рд░ |
Permissions & data
- рдЕрдиреБрдорддрд┐рдпрд╛рдБ:
dshWorkshopmanifestbrowser:local-storage,settings:readрдФрд░settings:writeрдШреЛрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред - рдбреЗрдЯрд╛: pins, рд░рдВрдЧ рдФрд░ рдЖрдпреЛрдЬрдХ state рд╣рд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ
session-pinsettings namespace рдореЗрдВ рд░рд╣рддреЗ рд╣реИрдВ; рдЬрд╣рд╛рдБ web proxy namespace рдирд╣реАрдВ рдкрд░реЛрд╕рддрд╛ рд╡рд╣рд╛рдБ versionedlocalStorageрджрд╕реНрддрд╛рд╡реЗрдЬрд╝ (v1 рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ migrate рд╣реЛрддреЗ рд╣реИрдВ) рдкрд░ degrade рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред рдХреБрдЫ рднреА рдЕрдкрд▓реЛрдб рдирд╣реАрдВ рд╣реЛрддрд╛ред - рд╕рддреНрд░ рд▓реЙрдЧ: рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдХреЛрдИ рдирд╣реАрдВ тАФ рдпрд╣ plugin рди рдХреЛрдИ session event рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдФрд░ рди рдХрд┐рд╕реА рдореЙрдбрд▓ рдЕрдиреБрд░реЛрдз рдореЗрдВ tokenред
enableLogBackingрдЪрд╛рд▓реВ рд╣реЛрдиреЗ рдкрд░, host рдХреЗрд╡рд▓-logsession/pinрдЗрд╡реЗрдВрдЯ (upstreamsession.setPinnedRPC рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦрд┐рдд) рдХреЛ canonical pin projection рдореЗрдВ fold рдХрд░рддрд╛ рд╣реИ;PinLogAppenderрдЕрдкрдиреА рд▓реЗрдЦрди рдХреЛ рдкреНрд░реА-рдлрд╝реНрд▓рд╛рдЗрдЯ рдЧреЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЬреЛ hosts рдЗрд╡реЗрдВрдЯ рдирд╣реАрдВ рд▓реЗ рдЬрд╛ рд╕рдХрддреЗ (0.1.2-rc.1) рдЙрдиреНрд╣реЗрдВ рдПрдХ рднреА рд▓реЗрдЦрди рдирд╣реАрдВ рдорд┐рд▓рддрд╛ред рдореЙрдбрд▓-рджреГрд╢реНрдп рдкреНрд░рднрд╛рд╡ рдлрд┐рд░ рднреА рдХреЛрдИ рдирд╣реАрдВред
Security boundaries
- рдХреЗрд╡рд▓ UIред рдХреЛрдИ рдореЙрдбрд▓-рджреГрд╢реНрдп рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ, рдХреЛрдИ рдиреЗрдЯрд╡рд░реНрдХ рдирд╣реАрдВ, рдХреЛрдИ subprocess рдирд╣реАрдВ; рд╣рд░ рд╕рддрд╣ рдкреБрд░рд╛рдиреА рдЖрдзрд╛рд░рд░реЗрдЦрд╛рдУрдВ рдкрд░ рд╕рд╣рдЬ рд░реВрдк рд╕реЗ degrade рд╣реЛрддреА рд╣реИред
- рдЯрд┐рдХрд╛рдК рдФрд░ рд╕реАрдорд┐рдд stateред pins рдФрд░ рд░рдВрдЧ рд╣рдЯрд╛рдИ рдЧрдИ entities рдХреЗ рд╕рд╛рде prune рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ (
pruneStale);maxPinsрд╣рд░ рд╕реНрддрд░ рдХреА рдкрд┐рди рд╕рдВрдЦреНрдпрд╛ рд╕реАрдорд┐рдд рдХрд░рддрд╛ рд╣реИред - рд░реАрдб-рдУрдирд▓реА рд╕реНрд╡рд╛рд╕реНрдереНрдпред рд╕реНрд╡рд╛рд╕реНрдереНрдп рд╕рд╛рд░рд╛рдВрд╢ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ session snapshot рд╕реЗ рдХреЗрд╡рд▓ рдЧрдгрдирд╛ рд╡ рджрд┐рд╢рд╛ рд╡реНрдпреБрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХреБрдЫ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рд▓рд┐рдЦрддрд╛ред
Known limitations
- рд╕реНрдерд╛рдпрд┐рддреНрд╡ рдХрд╛ рджрд╛рдпрд░рд╛ тАФ рдЬрд╣рд╛рдБ web proxy
session-pinnamespace рдирд╣реАрдВ рдкрд░реЛрд╕рддрд╛, рд╡рд╣рд╛рдБ pins рдФрд░ рд░рдВрдЧ рдмреНрд░рд╛рдЙрдЬрд╝рд░-рд╕реНрдерд╛рдиреАрдпlocalStorageрдкрд░ fallback рдХрд░рддреЗ рд╣реИрдВ; upstream рджреНрд╡рд╛рд░рд╛ namespace рдПрдХреНрд╕рдкреЛрдЬрд╝ рдХрд░рддреЗ рд╣реА host рдкрдВрдЬреАрдХрд░рдг рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЯрд┐рдХрд╛рдК рднрдВрдбрд╛рд░ рдмрди рдЬрд╛рддрд╛ рд╣реИред0.1.2-rc.1hosts рдкрд░ рдкреНрд░реА-рдлрд╝реНрд▓рд╛рдЗрдЯ рдЧреЗрдЯ log appends рдХреЛ рдкреВрд░реА рддрд░рд╣ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИ (fail-closed рдЗрд╡реЗрдВрдЯ рд╢рдмреНрджрдХреЛрд╢ рдРрд╕реЗ logs рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рджреЗрддрд╛), рдЗрд╕рд▓рд┐рдП projection рд╡рд╣рд╛рдБ settings cache рдкрд░ degrade рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред - рдХреНрд░рдо рдХрд╛ рджрд╛рдпрд░рд╛ тАФ рдкрд┐рди рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗрд╡рд▓ Manual рдХреНрд░рдо рдореЗрдВ рд╕реНрдерд┐рд░ рд╣реИ; Updated рдХреНрд░рдо рдореЗрдВ рдХреЛрд░ рдХреА рдЧрддрд┐рд╡рд┐рдзрд┐-рдкреНрд░рдореЛрд╢рди рд╕рдХреНрд░рд┐рдп sessions рдХреЛ рдлрд┐рд░ рд╕реЗ рдЖрдЧреЗ рдХрд░ рджреЗрддреА рд╣реИ, рдФрд░
reorderOnLoadрд▓реЛрдб рдкрд░ рдЙрдкрд╕рд░реНрдЧ рдлрд┐рд░ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред - рджреВрд░рд╕реНрде рдмреНрд░рд╛рдЙрдЬрд╝рд░ тАФ baseline рдкрд░ settings RPC рдХреЗрд╡рд▓ loopback рд╣реИрдВ; рджреВрд░рд╕реНрде рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░-рд╕реНрдерд╛рдиреАрдп
localStorageрдкрд░ fallback рдХрд░рддреЗ рд╣реИрдВред - рдкрдВрдХреНрддрд┐ рдмреИрдЬ fallback тАФ рдЬрд╣рд╛рдБ upstream рдХрд╛ рдкрдВрдХреНрддрд┐ slot рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ, session рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд╢реАрд░реНрд╖рдХ рдкрд╛рда рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИрдВ; рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╢реАрд░реНрд╖рдХреЛрдВ рдкрд░ рдмреИрдЬ рд╣рд░ рдореЗрд▓ рдЦрд╛рддреА рдкрдВрдХреНрддрд┐ рдкрд░ рджрд┐рдЦрддрд╛ рд╣реИ рдФрд░ рдкрд╣рд▓реЗ рдореЗрд▓ рдХреЛ рдЯреЙрдЧрд▓ рдХрд░рддрд╛ рд╣реИ (рдХреЙрд╕реНрдореЗрдЯрд┐рдХ)ред
- рдкрдВрдХреНрддрд┐ DOM рдирд┐рд░реНрднрд░рддрд╛ тАФ рдУрд╡рд░рд▓реЗ рдХреЛрд░ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА
role="treeitem"рд╕рдВрд░рдЪрдирд╛ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИ рдФрд░ рдЙрд╕реЗ upstream рдХреЗ UI рдмрджрд▓рд╛рд╡реЛрдВ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
Roadmap
- рд░рд╛рдЗрдЯ-рдХреНрд▓рд┐рдХ / рдкрдВрдХреНрддрд┐-рдореЗрдиреВ рдореЗрдВ ┬лрдкрд┐рди┬╗ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ (рдХреЛрд░ рдХреЗ рдкрдВрдХреНрддрд┐-рд╕реНрддрд░реАрдп рдореЗрдиреВ slot рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛; рдкрдВрдХреНрддрд┐ рдмреИрдЬ slot рдЕрдм upstream рдореЗрдВ рд╣реИ)ред
рд╡рд┐рд╣рд┐рдд рд╕реНрдерд╛рди: рдПрдХ log-рд╕рдорд░реНрдерд┐рддрд▓рд╛рдЧреВ (P0): plugin рдореЗрдВ рдЕрдмsession/pinevent +pinprojection + write RPC (upstream) тАФ рддрдм settings namespace рдЯрд┐рдХрд╛рдК рднрдВрдбрд╛рд░ рд╕реЗ рд╣рдЯ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ pluginuseProjection('pin')рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░рддрд╛ рд╣реИредsession/pinevent schema, рд╢реБрджреНрдз projection fold (foldPinEvents), рдкреНрд░реА-рдлрд╝реНрд▓рд╛рдЗрдЯ-рдЧреЗрдЯреЗрдб append seam (PinLogAppender) рдФрд░ рдПрдХ host projection reader (enableLogBacking) рд╣реИ рдЬреЛ рд▓рд╛рдЗрд╡session/pinрдЗрд╡реЗрдВрдЯреНрд╕ рдХреЛ settings cache рдореЗрдВ рд╡рд╛рдкрд╕ fold рдХрд░рддрд╛ рд╣реИ; settings/localStorage рд╕рдВрдЧрддрддрд╛ рд╡ degradation рдкрде рдмрдиреЗ рд░рд╣рддреЗ рд╣реИрдВ, рдФрд░ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдкрд░ log canonical рд╣реИред- рд╡рд┐рд╣рд┐рдд рд╕реНрдерд╛рди рдореМрдЬреВрдж рд╣реЛрдиреЗ рдкрд░ рдПрдХ рдкреВрд░реНрдг рд░рдВрдЧ-рдЪрдпрдирдХрд░реНрддрд╛ popover (рдордирдкрд╕рдВрдж рд░рдВрдЧ); рдЖрдЬ рдХрд╛ рдЪрдХреНрд░ рдмрдЯрди preset palette рдХреЛ рдХрд╡рд░ рдХрд░рддрд╛ рд╣реИред
Development
pnpm install # рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ
pnpm run typecheck # tsc --noEmit
pnpm test # vitest рдпреВрдирд┐рдЯ рдЯреЗрд╕реНрдЯ
pnpm run build # рджреЛ-рдЖрдзрд╛ build + client purity рдЬрд╛рдБрдЪ
node scripts/verify-live.mjs # рдЪрд╛рд▓реВ `dsh web` рдХреЗ рд╡рд┐рд░реБрджреНрдз рд▓рд╛рдЗрд╡ рдЬрд╛рдБрдЪ (DSH_CHECKOUT env)
Topics
deepseek-harness, dsh, dsh-plugin, session-pin, pin, workspace
Contributors
- @PerryLink тАФ рдирд┐рд░реНрдорд╛рддрд╛ рдФрд░ рдЕрдиреБрд░рдХреНрд╖рдХ: pin рдЕрдиреБрднрд╡, рдЯрд┐рдХрд╛рдК рд╕реНрдерд╛рдпрд┐рддреНрд╡, workspace рдХреНрд░рдо, рдкреНрд░рддрд┐-pin рд░рдВрдЧ, рдиреЗрд╡рд┐рдЧреЗрд╢рди рдЖрдпреЛрдЬрдХ рдФрд░ рдкрд╛рдБрдЪ-рднрд╛рд╖рд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ред
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-sync | DeepSeek Harness рдХреЗ рд▓рд┐рдП рдХреНрд░реЙрд╕-рдбрд┐рд╡рд╛рдЗрд╕ рд╕рддреНрд░ рд╕рд┐рдВрдХ тАФ рдЖрдкрдХреЗ рд╕рддреНрд░ рд╕реНрдЯреЛрд░ рдХрд╛ рдПрдХ рд╕рдорд░реНрдкрд┐рдд git рдорд┐рд░рд░ред |
| 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-pin рдпреЛрдЧрджрд╛рдирдХрд░реНрддрд╛
DSH Desktop рдорд╛рд░реНрдХреЗрдЯ рд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ
рд╕рднреА PerryLink рдкреНрд▓рдЧрдЗрди DSH Desktop рдХреЗ рдмрд┐рд▓реНрдЯ-рдЗрди рдорд╛рд░реНрдХреЗрдЯ рдореЗрдВ рджреЗрдЦреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ: Market тЖТ Sources тЖТ add source тЖТ рдкреЗрд╕реНрдЯ рдХрд░реЗрдВ https://perrylink-dsh-catalog.perrylink.workers.dev/catalog-source.json тЖТ рдЪреБрдиреЗрдВред рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдорд╛рд░реНрдХреЗрдЯ рдХреЗ npm-identity рд╕рддреНрдпрд╛рдкрди рдФрд░ рдЖрдкрдХреА рдкреБрд╖реНрдЯрд┐ рд╕реЗ рд╣реА рд╣реЛрддрд╛ рд╣реИред