ЁЯОЩя╕П dsh-talk
September 7, 2026 ┬╖ View on GitHub
ЁЯОЩя╕П dsh-talk
- 1024 рд╕реНрдЯреЛрд░ рдЪреИрдирд▓: рдПрдХ рдмрд╛рд░
npm i -g dsh1024, рдлрд┐рд░dsh1024 plugin --profile web add dsh-talk(deepseek1024.com рдЗрдВрд╕реНрдЯреЙрд▓ рд░реИрдВрдХрд┐рдВрдЧ рдореЗрдВ рдЧрд┐рдирд╛ рдЬрд╛рддрд╛ рд╣реИ)ред
DeepSeek Harness рдХреЗ рд▓рд┐рдП рд╡реЙрдЗрд╕-рдлрд░реНрд╕реНрдЯ рд╕рддреНрд░ рд▓реВрдк: рдЙрд╕рд╕реЗ рдмреЛрд▓реЗрдВ рдФрд░ рдЙрддреНрддрд░ рд╕реБрдиреЗрдВред
рдорд╛рдЗрдХ рджрдмрд╛рдПрдБ, рдмреЛрд▓реЗрдВ рдФрд░ рдЬрд╡рд╛рдм рдЬрд╝реЛрд░ рд╕реЗ рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ тАФ рдмреЛрд▓рддреЗ рд╣реА рд░реБрдХрд╛рд╡рдЯред
English ┬╖ чоАф╜Уф╕нцЦЗ ┬╖ Espa├▒ol ┬╖ Portugu├кs ┬╖ рд╣рд┐рдиреНрджреА
рд╕рдВрдЧрддрддрд╛
| рд╕рддрд╣ | рд╕реНрдерд┐рддрд┐ |
|---|---|
| Harness | DeepSeek Harness dsh-v0.1.3-alpha.1 (GitHub tag, 2026-09-06 рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд: рдкреВрд░реНрдг gate chain + profile install smoke)ред npm рдирд┐рд░реНрднрд░рддрд╛ рд▓рд╛рдЗрди 0.1.2-rc.1, peers >=0.1.2-rc.1 <0.2.0ред |
| Node | ^22.19.0 || >=24.0.0 |
| рдмреНрд░рд╛рдЙрдЬрд╝рд░ | Web Speech + MediaRecorder (Chrome/Edge рдореЗрдВ рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда); рдмрд╛рдХреА рдХреЗ рд▓рд┐рдП host рдХреЗ рдЯреНрд░рд╛рдВрд╕рдХреНрд░рд┐рдкреНрд╢рди/TTS рдЗрдВрдЬрди |
рдЖрдкрдХреЛ рдХреНрдпрд╛ рдорд┐рд▓рддрд╛ рд╣реИ
dsh-talk рд╡реЙрдЗрд╕ рд▓реВрдк рдХреЛ рджреЛрдиреЛрдВ рджрд┐рд╢рд╛рдУрдВ рдореЗрдВ рдмрдВрдж рдХрд░рддрд╛ рд╣реИ:
speakрдЯреВрд▓ тАФ рдПрдЬреЗрдВрдЯ рдЕрдкрдиреЗ рдЙрддреНрддрд░ рдЬрд╝реЛрд░ рд╕реЗ рдкрдврд╝рддрд╛ рд╣реИред TTS рдЗрдВрдЬрди: рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╡реЙрдЗрд╕,edge-tts(рдиреЗрдЯрд╡рд░реНрдХ рдиреНрдпреВрд░рд▓ рд╡реЙрдЗрд╕) рдпрд╛piper(рд╕реНрдерд╛рдиреАрдп)ред рдСрдбрд┐рдпреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдмрдЬрддрд╛ рд╣реИ; рдЬреЛ host рдЗрд╕реЗ рд╡рд╣рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рд╡рд╣рд╛рдБ рд╕рддреНрд░ рд▓реЙрдЧ рд╕реИрдирд┐рдЯрд╛рдЗрдЬрд╝ рдХреА рдЧрдИ рдмрд╛рдд рджрд░реНрдЬ рдХрд░рддрд╛ рд╣реИ (рд╕реБрд░рдХреНрд╖рд╛ рд╕реАрдорд╛рдПрдБ рджреЗрдЦреЗрдВ)ред- рдХрдВрдкреЛрдЬрд╝рд░ рдорд╛рдЗрдХ рдмрдЯрди тАФ рджрдмрд╛рдПрдБ, рдмреЛрд▓реЗрдВ рдФрд░ рдЯреНрд░рд╛рдВрд╕рдХреНрд░рд┐рдкреНрд╢рди рдЗрдирдкреБрдЯ рдмреЙрдХреНрд╕ рдореЗрдВ рднрд░ рдЬрд╛рддрд╛ рд╣реИ (рдпрд╛ рд╕реАрдзреЗ рд╕рдмрдорд┐рдЯ рд╣реЛрддрд╛ рд╣реИ)ред STT рдЗрдВрдЬрди: рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд╛ Web Speech (рдЕрдВрддрд░рд┐рдо рдкрд░рд┐рдгрд╛рдореЛрдВ рд╕рд╣рд┐рдд), FunASR HTTP рд╕рд░реНрд╡рд░ рдпрд╛ рд╕реНрдерд╛рдиреАрдп
whisper.cppред - рдмреЛрд▓рддреЗ рд╣реА рд░реБрдХрд╛рд╡рдЯ тАФ рдмреЛрд▓рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реА рдЪрд▓ рд░рд╣рд╛ рдкреНрд▓реЗрдмреИрдХ рд░реБрдХ рдЬрд╛рддрд╛ рд╣реИ (clientтЖТhost,
talkRemote рдиреЗрдорд╕реНрдкреЗрд╕ рдкрд░)ред - рдЗрд╡реЗрдВрдЯ рдШреЛрд╖рдгрд╛рдПрдБ тАФ рдЯрд░реНрди рдкреВрд░рд╛ рд╣реЛрдирд╛, рд▓рдВрдмрд┐рдд рд╕реНрд╡реАрдХреГрддрд┐рдпрд╛рдБ (waterfall-рд╕реБрд░рдХреНрд╖рд┐рдд: рдЧреЗрдЯ рдХрднреА рдмреНрд▓реЙрдХ рдирд╣реАрдВ рдХрд░рддрд╛) рдФрд░ рддреНрд░реБрдЯрд┐рдпрд╛рдБ, рдореНрдпреВрдЯ рд╕реНрд╡рд┐рдЪ рд╡ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╡рд╛рдХреНрдпреЛрдВ рд╕рд╣рд┐рддред
- рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдЯреИрдм тАФ рдЗрдВрдЬрди/рднрд╛рд╖рд╛ рдЪрдпрди рдФрд░ рдШреЛрд╖рдгрд╛ рд╕реНрд╡рд┐рдЪ, append-only рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓-рдкреИрдЪ рдСрдкрд░реЗрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╣реЗрдЬреЗ рдЬрд╛рддреЗ рд╣реИрдВ (рдмреИрдХрдЕрдк рд╕рд╣рд┐рдд)ред
рддреНрд╡рд░рд┐рдд рд╢реБрд░реБрдЖрдд
# 1. рдмрдВрдбрд▓ рдХреЛ рдЕрдкрдиреЗ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ
dsh plugin --profile web add "github:PerryLink/dsh-talk#main"
# рдпрд╛ npm рд╕реЗ (рдкреНрд░рдХрд╛рд╢рд┐рдд рд░рд┐рд▓реАрдЬрд╝)
dsh plugin --profile web add dsh-talk
# 2. рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░реЗрдВ рдФрд░ рдкрдВрдХреНрддрд┐ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ
dsh --profile web --dump-config | grep -A2 'id: talk'
рдлрд┐рд░ рдХрдВрдкреЛрдЬрд╝рд░ рдХреЗ рдкрд╛рд╕ рдорд╛рдЗрдХ рджрдмрд╛рдПрдБ рдФрд░ рдмреЛрд▓реЗрдВ; рдпрд╛ рдПрдЬреЗрдВрдЯ рд╕реЗ рдмреЛрд▓рдиреЗ рдХреЛ рдХрд╣реЗрдВ:
> speak рдЯреВрд▓ рд╕реЗ "рдирдорд╕реНрддреЗ" рдХрд╣реЛред
рдЗрдВрд╕реНрдЯреЙрд▓ рдФрд░ рдЕрдирдЗрдВрд╕реНрдЯреЙрд▓
- git рдЪреИрдирд▓ (рдирд╡реАрдирддрдо
main):dsh plugin --profile web add "github:PerryLink/dsh-talk#main"тАФprepareрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗрд╡рд▓ рдкреНрд░реЛрдбрдХреНрд╢рди рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рд╕реЗ рдмрд┐рд▓реНрдб рдХрд░рддреА рд╣реИред - npm рдЪреИрдирд▓ (рдкреНрд░рдХрд╛рд╢рд┐рдд рд░рд┐рд▓реАрдЬрд╝):
dsh plugin --profile web add dsh-talkред - tarball рдЪреИрдирд▓: рдЗрд╕ рд░реЗрдкреЛ рдореЗрдВ
pnpm pack, рдлрд┐рд░dsh plugin --profile web add ./dsh-talk-<version>.tgzред - рдЕрдирдЗрдВрд╕реНрдЯреЙрд▓:
dsh plugin --profile web remove dsh-talk(рдпрд╛ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдкреИрдЪ рд╕реЗ рдкрдВрдХреНрддрд┐ рд╣рдЯрд╛рдПрдБ)ред
рдпрджрд┐ pnpm рдЗрд╕ рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП
ERR_PNPM_IGNORED_BUILDSрджрд┐рдЦрд╛рддрд╛ рд╣реИ (esbuild рдХрд╛ рд╣рд╛рдирд┐рд░рд╣рд┐рдд рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо-рдмрд╛рдЗрдирд░реА рд╕рддреНрдпрд╛рдкрди), рддреЛ рдЕрдкрдиреЗpnpm-workspace.yamlрдореЗрдВallowBuilds: { esbuild: true }рдЬреЛрдбрд╝реЗрдВ тАФdshCLI рд╕рдЯреАрдХ рд╕реНрдирд┐рдкреЗрдЯ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИред
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди
рд╕рднреА рд╕рдорд╛рдпреЛрдЬрди Schemastery Config рдлрд╝реАрд▓реНрдб рд╣реИрдВ (cordis.yml рд╕реЗ рдмрджрд▓реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ)ред cordis.patch.yml рд╣рд░ рдХреБрдВрдЬреА рдХреЛ рдЗрдирд▓рд╛рдЗрди рд╕рдордЭрд╛рддрд╛ рд╣реИред
| рдХреБрдВрдЬреА | рдбрд┐рдлрд╝реЙрд▓реНрдЯ | рдЕрд░реНрде |
|---|---|---|
record.enabled | true | рдХрдВрдкреЛрдЬрд╝рд░ рдорд╛рдЗрдХ рдмрдЯрди рджрд┐рдЦрд╛рдПрдБ |
record.hotkey | (рдХреЛрдИ рдирд╣реАрдВ) | рд╡реИрдХрд▓реНрдкрд┐рдХ рдЯреЙрдЧрд▓ рд╣реЙрдЯрдХреА, рдЬреИрд╕реЗ "alt+r" |
record.maxSeconds | 60 | рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рд╕реАрдорд╛ рд╕реЗрдХрдВрдб рдореЗрдВ (1..600) |
record.autoSubmit | false | рдЯреНрд░рд╛рдВрд╕рдХреНрд░рд┐рдкреНрд╢рди рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдВрджреЗрд╢ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдмрдорд┐рдЯ рдХрд░реЗрдВ (false = рдбреНрд░рд╛рдлреНрдЯ рднрд░реЗрдВ) |
record.vad.enabled / silenceMs / energyThreshold | true / 1500 / 0.01 | рдзреНрд╡рдирд┐-рдЧрддрд┐рд╡рд┐рдзрд┐ рдкрд╣рдЪрд╛рди: рдореМрди рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рд╕реНрд╡рддрдГ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ (AudioContext рдЕрдиреБрдкрд╕реНрдерд┐рдд рд╣реЛрдиреЗ рдкрд░ рдореИрдиреБрдЕрд▓ рд╕реНрдЯреЙрдк) |
stt.engine | auto | auto / web / funasr / whisper; auto рдкрд╣рд▓реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рд╕реНрдерд╛рдиреАрдп рдЗрдВрдЬрди, рдлрд┐рд░ Web Speech |
stt.language | auto | BCP-47 рднрд╛рд╖рд╛ рдпрд╛ auto |
stt.interim | true | рдЕрдВрддрд░рд┐рдо рдЯреНрд░рд╛рдВрд╕рдХреНрд░рд┐рдкреНрд╢рди рджрд┐рдЦрд╛рдПрдБ (Web Speech) |
stt.silenceFinaliseMs | 4000 | рдЗрддрдиреА рдорд┐рд▓реАрд╕реЗрдХрдВрдб рддрдХ рдЖрд╡рд╛рдЬрд╝ рди рдЖрдиреЗ рдкрд░ рд▓рдЧрд╛рддрд╛рд░ Web Speech рд░реЛрдХреЗрдВ (500..15000) |
stt.funasr.url | (рдХреЛрдИ рдирд╣реАрдВ) | FunASR рдЗрдиреНрдлрд╝рд░реЗрдВрд╕ рдПрдВрдбрдкреЙрдЗрдВрдЯ; funasr рдЗрдВрдЬрди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ |
stt.whisper.modelPath | (рдХреЛрдИ рдирд╣реАрдВ) | whisper.cpp рдореЙрдбрд▓; whisper рдЗрдВрдЬрди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ |
tts.engine | auto | auto / browser / edge-tts / piper; auto рдкрд╣рд▓реЗ piper, рдлрд┐рд░ edge-tts, рдлрд┐рд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╡реЙрдЗрд╕ |
tts.rate | 0 | edge-tts/piper рдХреЗ рд▓рд┐рдП рдЧрддрд┐ рдСрдлрд╝рд╕реЗрдЯ рдкреНрд░рддрд┐рд╢рдд рдореЗрдВ (-50..50) |
tts.fallbackToBrowser | true | рд╕реНрдерд╛рдиреАрдп рдЗрдВрдЬрди рд╡рд┐рдлрд▓ рд╣реЛрдиреЗ рдкрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╡реЙрдЗрд╕ рдкрд░ рдЧрд┐рд░реЗрдВ |
tts.browser.voiceName | (рдХреЛрдИ рдирд╣реАрдВ) | рдкрд╕рдВрджреАрджрд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╡реЙрдЗрд╕ рдирд╛рдо; рди рдорд┐рд▓рдиреЗ рдкрд░ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЙрдкрдпреЛрдЧ рд╣реЛрддрд╛ рд╣реИ |
tts.browser.rate | 1 | рдмреНрд░рд╛рдЙрдЬрд╝рд░ SpeechSynthesis рдЧрддрд┐ (0.1..10) |
tts.browser.pitch | 1 | рдмреНрд░рд╛рдЙрдЬрд╝рд░ SpeechSynthesis рдкрд┐рдЪ (0..2) |
tts.piper.modelPath | (рдХреЛрдИ рдирд╣реАрдВ) | piper рд╡реЙрдЗрд╕ рдореЙрдбрд▓; piper рдЗрдВрдЬрди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ |
announce.enabled | true | рдШреЛрд╖рдгрд╛рдУрдВ рдХрд╛ рдорд╛рд╕реНрдЯрд░ рд╕реНрд╡рд┐рдЪ |
announce.onTurnEnd / onApproval / onError | true | рдХреМрди рд╕реЗ рдЗрд╡реЗрдВрдЯ рдмреЛрд▓реЗ рдЬрд╛рдПрдБ |
announce.messages.* | "Turn complete." рдЖрджрд┐ | рдмреЛрд▓реЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╡рд╛рдХреНрдп |
interrupt | true | рдмреЛрд▓рддреЗ рд╣реА рдЪрд▓рддрд╛ рдкреНрд▓реЗрдмреИрдХ рд░реБрдХрддрд╛ рд╣реИ |
maxSpeakChars | 20000 | speak рдЯреВрд▓ рдХреЗ рдЯреЗрдХреНрд╕реНрдЯ рдХреА рд╕реАрдорд╛ (1..100000) |
maxAudioCacheBytes | 8388608 | рдореЗрдореЛрд░реА рдореЗрдВ рд╕рд┐рдВрдереЗрд╕рд╛рдЗрдЬрд╝реНрдб рдСрдбрд┐рдпреЛ рдХреИрд╢ рд╕реАрдорд╛ (1 MiB..64 MiB) |
stt.silenceFinaliseMs рдФрд░ record.vad.silenceMs рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрдВрддреНрд░ рд╣реИрдВ: рдкрд╣рд▓рд╛ рд▓рдЧрд╛рддрд╛рд░ Web Speech рдкрд╣рдЪрд╛рди рдореЗрдВ рдЖрд╡рд╛рдЬрд╝ рди рдорд┐рд▓рдиреЗ рдкрд░ рдЯреНрд░рд╛рдВрд╕рдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЕрдВрддрд┐рдо рд░реВрдк рджреЗрддрд╛ рд╣реИ; рджреВрд╕рд░рд╛ MediaRecorder рдХрд╛ рдКрд░реНрдЬрд╛-рдЖрдзрд╛рд░рд┐рдд рдбрд┐рдЯреЗрдХреНрдЯрд░ рд╣реИ рдЬреЛ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ (рдФрд░ record.autoSubmit рдЪрд╛рд▓реВ рд╣реЛрдиреЗ рдкрд░ рдЙрд╕реЗ рднреЗрдЬ рджреЗрддрд╛ рд╣реИ)ред рджреЛрдиреЛрдВ рдЕрд▓рдЧ рдкрд╛рдЗрдкрд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рдЪрд▓рддреЗ рд╣реИрдВ рдФрд░ рдХреЛрдИ рд╕рд╛рдЭрд╛ рд╕реНрдерд┐рддрд┐ рдирд╣реАрдВ рд░рдЦрддреЗред
рдЯреВрд▓ рдФрд░ рд╕рддрд╣реЗрдВ
| рд╕рддрд╣ | рдкреНрд░рдХрд╛рд░ | рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ |
|---|---|---|
speak | рдЯреВрд▓ | рдЯреЗрдХреНрд╕реНрдЯ рдЬрд╝реЛрд░ рд╕реЗ рдмреЛрд▓рддрд╛ рд╣реИ (browser/edge-tts/piper); рдкреНрд░рддрд┐-рдХреЙрд▓ рдЗрдВрдЬрди/рд╡реЙрдЗрд╕ рдУрд╡рд░рд░рд╛рдЗрдб; рдХреИрдирдирд┐рдХрд▓ JSON рдкрд░рд┐рдгрд╛рдо |
| рдорд╛рдЗрдХ рдмрдЯрди | conversation.input.left рд╕реНрд▓реЙрдЯ | рд░рд┐рдХреЙрд░реНрдб тЖТ рдЯреНрд░рд╛рдВрд╕рдХреНрд░рд╛рдЗрдм тЖТ рдбреНрд░рд╛рдлреНрдЯ рднрд░реЗрдВ (рдпрд╛ рд╕рдмрдорд┐рдЯ); рджрдмрд╛рддреЗ рд╣реА рд░реБрдХрд╛рд╡рдЯ |
| рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдЯреИрдм | settings.plugins.tab (id talk) | рдЗрдВрдЬрди/рднрд╛рд╖рд╛/рдШреЛрд╖рдгрд╛ рд╕реНрд╡рд┐рдЪ; append-only рд╕рд╣реЗрдЬ |
talk:* | Typert Remote | status, audio, transcribe, applySettings, interrupt (host рдиреЗрдорд╕реНрдкреЗрд╕) |
рдЕрдиреБрдорддрд┐рдпрд╛рдБ рдФрд░ рдбреЗрдЯрд╛
- рдЕрдиреБрдорддрд┐рдпрд╛рдБ: рдкреНрд▓рдЧрдЗрди рдХреЗрд╡рд▓ рдмрд╛рдЗрдЯ-рд╕реАрдорд┐рдд рдЗрди-рдореЗрдореЛрд░реА рдСрдбрд┐рдпреЛ рдХреИрд╢ рд░рдЦрддрд╛ рд╣реИ; рдорд╛рдЗрдХ рдЕрдиреБрдорддрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░-рдордзреНрдпрд╕реНрде рд╣реИред рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдЯреИрдм рдХреЗрд╡рд▓ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкреИрдЪ рдЦрдВрдб рдЬреЛрдбрд╝рддрд╛ рд╣реИ (рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдмреИрдХрдЕрдк рд╕рд╣рд┐рдд) тАФ рдлрд╝рд╛рдЗрд▓ рдХрднреА рджреЛрдмрд╛рд░рд╛ рдирд╣реАрдВ рд▓рд┐рдЦрддрд╛ред
- рдбреЗрдЯрд╛: рдСрдбрд┐рдпреЛ рдХрднреА рдореЙрдбрд▓ рд╕рдВрджрд░реНрдн рдпрд╛ рд╕рддреНрд░ рд▓реЙрдЧ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рддрд╛ред рдЬрд╣рд╛рдБ host рдХрд╛ рд╕рддреНрд░ рд╢рдмреНрджрд╛рд╡рд▓реА рдЗрд╕реЗ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ,
dsh-talk/speechрдЗрд╡реЗрдВрдЯ рдЙрдЪреНрдЪрд╛рд░рдг id, рдЗрдВрдЬрди, рдХрд╛рд░рдг, рдЖрдХрд╛рд░, рд╕реИрдирд┐рдЯрд╛рдЗрдЬрд╝ рдЯреЗрдХреНрд╕реНрдЯ рдФрд░ рд▓рд╛рдЧреВ рд╣реЛрдиреЗ рдкрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╡реЙрдЗрд╕, рдЧрддрд┐ рдФрд░ рдкрд┐рдЪ рд░рдЦрддрд╛ рд╣реИ; рдПрдирд╡рд▓рдк-рд░рд╣рд┐рдд host рдкрд░ рдпрд╣ рдЗрд╡реЗрдВрдЯ рд▓рд┐рдЦрд╛ рд╣реА рдирд╣реАрдВ рдЬрд╛рддрд╛ред рд╣рд░ рдбрд┐рд╕реНрдкреНрд▓реЗ/рд▓реЙрдЧ рд╕рддрд╣ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓, JWT, bearer рд╣реЗрдбрд░ рдФрд░ рдЕрд╕реНрдерд╛рдпреА рдкрдереЛрдВ рдХреЛ рд░рд┐рдбреИрдХреНрдЯ рдХрд░рддреА рд╣реИред - рдиреЗрдЯрд╡рд░реНрдХ: рдХреЗрд╡рд▓ рдЖрдкрдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЗрдВрдЬрди рд╕реЗ рд╕рдВрдкрд░реНрдХ рд╣реЛрддрд╛ рд╣реИред
edge-ttsрдиреЗрдЯрд╡рд░реНрдХ рд╕рд┐рдВрдереЗрд╕рд┐рд╕ рдХрд░рддрд╛ рд╣реИ, FunASR рдЕрдкрдиреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдПрдВрдбрдкреЙрдЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдФрд░ Chrome рдХрд╛webkitSpeechRecognitionрдЯреНрд░рд╛рдВрд╕рдХреНрд░рд┐рдкреНрд╢рди рдХреЗ рд▓рд┐рдП рдорд╛рдЗрдХреНрд░реЛрдлрд╝реЛрди рдСрдбрд┐рдпреЛ Google рдХреЗ рд╕рд░реНрд╡рд░ рдкрд░ рднреЗрдЬрддрд╛ рд╣реИ; рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд╛speechSynthesisplayback рд╕реНрдерд╛рдиреАрдп рд░рд╣рддрд╛ рд╣реИред
рд╕реБрд░рдХреНрд╖рд╛ рд╕реАрдорд╛рдПрдБ
- рдореЙрдбрд▓-рджреГрд╢реНрдп тЯ║ рд▓реЙрдЧреНрдб тАФ рдореЙрдбрд▓ рдХреЗрд╡рд▓ speak рдЯреВрд▓ рдХрд╛ рдХреИрдирдирд┐рдХрд▓ рдорд╛рди рдФрд░ рд░реЗрдВрдбрд░ рдЯреЗрдХреНрд╕реНрдЯ рджреЗрдЦрддрд╛ рд╣реИред
dsh-talk/speechрдЗрд╡реЗрдВрдЯ рдХреЗрд╡рд▓ рддрдм рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм host рдЗрд╕реЗ рд╡рд╣рди рдХрд░ рд╕рдХреЗ (рд╣реЛрд╕реНрдЯ рд╕рдВрдЧрддрддрд╛ рджреЗрдЦреЗрдВ);tool/call+tool/resultрдЗрд╡реЗрдВрдЯ рд╣рдореЗрд╢рд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдпреЛрдЧреНрдп рдирд┐рд╢рд╛рди рдмрдиреЗ рд░рд╣рддреЗ рд╣реИрдВред - рд╕реНрд╡реАрдХреГрддрд┐ рдШреЛрд╖рдгрд╛рдПрдБ рдХрднреА рдмреНрд▓реЙрдХ рдирд╣реАрдВ рдХрд░рддреАрдВ тАФ
approval/requestрд▓рд┐рд╕рдирд░ рд╣рдореЗрд╢рд╛next()рдмреБрд▓рд╛рддрд╛ рд╣реИред - рд╕реИрдирд┐рдЯрд╛рдЗрдЬрд╝реНрдб рдЖрдЙрдЯрдкреБрдЯ тАФ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдФрд░ рдЕрд╕реНрдерд╛рдпреА рдСрдбрд┐рдпреЛ рдкрде рд▓реЙрдЧ рдпрд╛ рдбрд┐рд╕реНрдкреНрд▓реЗ рддрдХ рдирд╣реАрдВ рдкрд╣реБрдБрдЪрддреЗред
- рд╣реЛрд╕реНрдЯ рд╕рдВрдЧрддрддрд╛ тАФ
dsh-talk/speechрдЗрд╡реЗрдВрдЯ рдПрдХ рдЕрдиреБрдХреВрд▓реА рдЧреЗрдЯ рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬрд┐рди host рдХреА рдЬреНрдЮрд╛рдд-рдкреНрд░рдХрд╛рд░ рд╢рдмреНрджрд╛рд╡рд▓реА рдЗрд╕ рдЗрд╡реЗрдВрдЯ рдХреЛ рдХрд╡рд░ рдХрд░рддреА рд╣реИ рд╡реЗ рдЗрд╕реЗ рд╕реАрдзреЗ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ;ignorableрд╡рд┐рдХрд▓реНрдк рд╡рд╛рд▓реЗ host рдЗрд╕реЗ рдорд╛рд░реНрдХрд░ рд╕рд╣рд┐рдд рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ; рдПрдирд╡рд▓рдк-рд░рд╣рд┐рдд host тАФ0.1.1-rc.2рддрдХ рдХреА рд╣рд░ рдЬрд╛рд░реА рд▓рд╛рдЗрди,0.1.2-alphaрд▓рд╛рдЗрди, рдФрд░0.1.2-rc.1рд▓рд╛рдЗрди, рдЬрд┐рд╕рдХрд╛ Session.append ignorable рдорд╛рд░реНрдХрд░ рд╕реНрдЯреИрдореНрдк рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рд╣рд╛рд▓рд╛рдБрдХрд┐ рдПрдирд╡рд▓рдк рдлрд╝реАрд▓реНрдб рдкрдарди рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ тАФ рдХреЛрдИ append рдирд╣реАрдВ рдкрд╛рддреЗ, рдЗрд╕рд▓рд┐рдП рдЙрди рд▓рд╛рдЗрдиреЛрдВ рдкрд░ рд╕реНрдкреАрдЪ рдХрднреА рд╕рддреНрд░ рд▓реЙрдЧ рдХреЛ рджреВрд╖рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреАред рд╡рд╣рд╛рдБ live playback рдЗрддрд┐рд╣рд╛рд╕ рдЦрд╛рд▓реА рд░рд╣рддрд╛ рд╣реИ рдФрд░ speak рдЯреВрд▓ рдХреЗ рдкрд░рд┐рдгрд╛рдо рд╣реА рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдпреЛрдЧреНрдп рдирд┐рд╢рд╛рди рд╣реИрдВред - Fail loud тАФ рдЕрдорд╛рдиреНрдп рдЗрдВрдЬрди, рд╕реАрдорд╛ рд╕реЗ рдмрд╛рд╣рд░ рдорд╛рди рдФрд░ рдмрд┐рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдореЙрдбрд▓/рдПрдВрдбрдкреЙрдЗрдВрдЯ рдХреЗ рдЗрдВрдЬрди рдорд╛рдЙрдВрдЯ рдкрд░ рдЕрд╕рдлрд▓ рд╣реЛрддреЗ рд╣реИрдВред
рдЬреНрдЮрд╛рдд рд╕реАрдорд╛рдПрдБ
- рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдорд░реНрдерди: Web Speech рдФрд░ MediaRecorder рдХреНрд╖рдорддрд╛-рдкрд╣рдЪрд╛рди рд╕реЗ рдЪрд▓рддреЗ рд╣реИрдВ; рдмрд┐рдирд╛ рдЙрдирдХреЗ рдмрдЯрди рдЕрдХреНрд╖рдо рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рд╣реЛрдиреЗ рдкрд░ host рдЗрдВрдЬрди (FunASR/whisper.cpp) рдЯреНрд░рд╛рдВрд╕рдХреНрд░рд╛рдЗрдм рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
- рд╕реНрдерд╛рдиреАрдп рдЗрдВрдЬрди рдЖрдкрдХреА рдЗрдВрд╕реНрдЯреЙрд▓ рд╣реИрдВ:
edge-tts,piper,whisper.cppрдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдФрд░ рдореЙрдбрд▓ рдЕрд▓рдЧ рд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рд╣реЛрддреЗ рд╣реИрдВред - рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдкреНрд░рд╛рд░реВрдк: рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЕрдкрдиреЗ рдиреЗрдЯрд┐рд╡ MediaRecorder рдХреЛрдбреЗрдХ рд╕реЗ рд░рд┐рдХреЙрд░реНрдб рдХрд░рддрд╛ рд╣реИ; whisper.cpp рдХреЛ WAV рд░рд┐рдХреЙрд░реНрдбрд░ рдпрд╛ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рд░реВрдкрд╛рдВрддрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред
- рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд░реАрд▓реЛрдб рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддреА рд╣реИрдВ: рдЯреИрдм рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдкреИрдЪ рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИ; рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рд░реАрд▓реЛрдб (рдпрд╛ рд╡реЗрдм-рдРрдк рдкреБрдирдГ рдЖрд░рдВрдн) рдмрджрд▓рд╛рд╡ рд╕рдХреНрд░рд┐рдп рдХрд░рддрд╛ рд╣реИред
- рдПрдирд╡рд▓рдк-рд░рд╣рд┐рдд host рдкрд░ live playback рдЗрддрд┐рд╣рд╛рд╕ рдЦрд╛рд▓реА рд░рд╣рддрд╛ рд╣реИ:
0.1.1-rc.2,0.1.2-alphaрд▓рд╛рдЗрди, рдФрд░0.1.2-rc.1рдкрд░ host рдХреА рд╢рдмреНрджрд╛рд╡рд▓реАdsh-talk/speechрдХреЛ рдирд╣реАрдВ рдЬрд╛рдирддреА, рдЗрд╕рд▓рд┐рдП рдЧреЗрдЯ рдХреБрдЫ рдирд╣реАрдВ рд▓рд┐рдЦрддрд╛ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреА рд╕рддреНрд░-рд╕реНрддрд░реАрдп playback рд╕реВрдЪреА рдЦрд╛рд▓реА рд░рд╣рддреА рд╣реИред рд╕реНрдкреАрдЪ рд╕реНрд╡рдпрдВ, рдорд╛рдЗрдХ, рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдЯреИрдм рдФрд░ рдЯреВрд▓ рдЕрдкреНрд░рднрд╛рд╡рд┐рдд рд░рд╣рддреЗ рд╣реИрдВред - dsh-talk тЙд 0.2.1 рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦреЗ рдкреБрд░рд╛рдиреЗ рд▓реЙрдЧ рдХреЛ cold load рд╕реЗ рдкрд╣рд▓реЗ рдорд░рдореНрдордд рдХреА рдЬрд╝рд░реВрд░рдд рд╣реЛ рд╕рдХрддреА рд╣реИ:
0.2.1рддрдХ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдмрд┐рдирд╛ рдорд╛рд░реНрдХрд░ рд╡рд╛рд▓реЗdsh-talk/speechevents рдЬреЛрдбрд╝рддреЗ рдереЗред0.1.0-rc.7рдпрд╛ рдирдП host рдкрд░, рдЬрд┐рд╕ session рдХреА log рдореЗрдВ рдпреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реЛрдВ рдЙрд╕рдХрд╛ рдЕрдЧрд▓рд╛ cold loadSessionFormatUnsupportedErrorрдХреЗ рд╕рд╛рде рд╡рд┐рдлрд▓ рд╣реЛрддрд╛ рд╣реИред рд╕реБрдзрд╛рд░: host рд░реЛрдХреЗрдВ, session рдХреА.jsonllog рдХрд╛ рдмреИрдХрдЕрдк рд▓реЗрдВ, рд╣рд░ рдЙрд╕ JSON рдкрдВрдХреНрддрд┐ рдореЗрдВ рд╢реАрд░реНрд╖-рд╕реНрддрд░ рд╕рджрд╕реНрдп рдХреЗ рд░реВрдк рдореЗрдВ"ignorable":trueрдЬреЛрдбрд╝реЗрдВ рдЬрд┐рд╕рдХрд╛"type""dsh-talk/speech"рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╢реБрд░реБрдЖрддреА{рдХреЗ рдареАрдХ рдмрд╛рдж"ignorable":true,рдбрд╛рд▓реЗрдВ), рдлрд┐рд░ session рджреЛрдмрд╛рд░рд╛ рдЦреЛрд▓реЗрдВред рдмрд╛рдХреА рдХреБрдЫ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рдФрд░ рдХреБрдЫ рднреА рдЦреЛрддрд╛ рдирд╣реАрдВ; рдЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдирдП append рдХрднреА рдмрд┐рдирд╛-рдорд╛рд░реНрдХрд░ рдЗрд╡реЗрдВрдЯ рдирд╣реАрдВ рдЬреЛрдбрд╝рддреЗред
рд╡рд┐рдХрд╛рд╕
pnpm install # node ^22.19 || >=24
pnpm run typecheck # tsc: src + tests рд╕реНрдерд╛рдиреАрдп рд╣рд╛рд░реНрдиреЗрд╕ рдЪреЗрдХрдЖрдЙрдЯ рдХреЗ рд╡рд┐рд░реБрджреНрдз
pnpm run typecheck:ci # tsc рдкреНрд░рдХрд╛рд╢рд┐рдд 0.1.2-rc.1 рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╡рд┐рд░реБрджреНрдз (рдмрд┐рдирд╛ paths)
pnpm test # vitest: 77 рдЯреЗрд╕реНрдЯ, 13 рд╕реБрдЗрдЯ
pnpm run build # tsc рдШреЛрд╖рдгрд╛рдПрдБ + tsdown рдмрдВрдбрд▓ (lib/)
pnpm run verify:self-contained # рдирд┐рд░реНрднрд░рддрд╛ рд╕реНрдкреЗрдХ registry рд╕реЗ рд╣рд▓ рд╣реЛрддреА рд╣реИрдВ
pnpm run verify:artifacts # рдирд┐рд░реНрдорд┐рдд ESM рдлрд╝реЗрд╕ + рдХреНрд▓рд╛рдЗрдВрдЯ ModuleLoader рд╣реИрдВрдбрд╢реЗрдХ
pnpm pack # рдкреНрд░рдХрд╛рд╢рд┐рдд tarball
Topics
dsh, dsh-plugin, deepseek-harness, deepseek, cordis, voice, speech, tts, stt, speech-to-text, text-to-speech, microphone
Contributors
- @PerryLink тАФ рдирд┐рд░реНрдорд╛рддрд╛ рдФрд░ рдореЗрдВрдЯреЗрдирд░: рд╡реЙрдЗрд╕ рдкрд╛рдЗрдкрд▓рд╛рдЗрди, рд╕реНрдкреАрдЪ рдЗрдВрдЬрди, рдорд╛рдЗрдХ рд░рд┐рдХреЙрд░реНрдбрд░, рдЗрд╡реЗрдВрдЯ рдШреЛрд╖рдгрд╛рдПрдБ, рдкреНрд░реЛрдЬреЗрдХреНрд╢рди рдпреВрдирд┐рдЯ рдФрд░ рдкрд╛рдБрдЪ-рднрд╛рд╖рд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ред
PerryLink DSH Plugin Family
рдпрд╣ рдкреНрд░реЛрдЬреЗрдХреНрдЯ PerryLink рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрд░рдХреНрд╖рд┐рдд 37 DeepSeek Harness рдкреНрд▓рдЧрдЗрдиреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдЕрдЧрд░ рдпрд╣ рдЖрдкрдХреА рдорджрдж рдХрд░рддрд╛ рд╣реИ, рддреЛ рдмрд╛рдХреА рднреА рдХрд░реЗрдВрдЧреЗ:
| Plugin | One-liner |
|---|---|
| dsh-auto-review | рдЕрдиреБрдореЛрджрди рд╢реНрд░реГрдВрдЦрд▓рд╛ рдкрд░ рджреНрд╡рд┐рддреАрдп-рдореЙрдбрд▓ рд╕реНрд╡рддрдГ-рд╕рдореАрдХреНрд╖рд╛, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╡рд┐рдлрд▓-рдмрдВрдж |
| dsh-background-agents | рд╡реЗрдм UI рд╕рд╛рдЗрдбрдмрд╛рд░, рд╕рдВрджреЗрд╢ рдФрд░ рдЕрд╡рд░реЛрдзрди рдХреЗ рд╕рд╛рде рдЯрд┐рдХрд╛рдК рдкреГрд╖реНрдарднреВрдорд┐ рдЪрд╛рдЗрд▓реНрдб рдПрдЬреЗрдВрдЯ |
| dsh-budget | DeepSeek Harness рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧрдд рдкреНрд░рд╢рд╛рд╕рди: рдмрдЬрдЯ, рдХрд╛рд░реНрдмрди рдФрд░ рд╡рд┐рд▓рдВрдмрддрд╛ рдПрдХ рдкреИрдирд▓ рдореЗрдВред |
| dsh-checkpoint-rewind | Claude Code /rewind-рд╕рдорддреБрд▓реНрдп: рд╕реНрдиреИрдкрд╢реЙрдЯ, рд╕рддреНрд░ рдлрд╝реЙрд░реНрдХ, рдПрдХ-рдмрд╛рд░ рдкреБрдирд░реНрд╕реНрдерд╛рдкрдирд╛ |
| dsh-claude-move | Claude Code рд╕рддреНрд░, рдореЗрдореЛрд░реА, рдХреМрд╢рд▓ рдФрд░ CLAUDE.md рдХреЛ DSH рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ |
| dsh-click | DeepSeek Harness рдХреЗ рд▓рд┐рдП рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдиреЗрдЯрд┐рд╡ рдбреЗрд╕реНрдХрдЯреЙрдк рдирд┐рдпрдВрддреНрд░рдг тАФ Windows рдкрд╣рд▓реЗред |
| dsh-composer-history | рд╡реЗрдм рдХрдВрдкреЛрдЬрд╝рд░ рдХреЗ рд▓рд┐рдП рдЯрд░реНрдорд┐рдирд▓-рд╢реИрд▓реА рдЗрдирдкреБрдЯ рдЗрддрд┐рд╣рд╛рд╕: рддреАрд░, Ctrl+R рдЦреЛрдЬ |
| dsh-data-quality | рдбреЗрдЯрд╛рд╕реЗрдЯ рдЧреБрдгрд╡рддреНрддрд╛ рдЬрд╛рдБрдЪ рд╡ рдЙрджреНрдзрд░рдг рд╕рддреНрдпрд╛рдкрди (рдпрд╣рд╛рдБ рдЙрдкрднреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕рдВрдЦреНрдпрд╛-рд╕реЗрддреБ) |
| dsh-defend | DeepSeek Harness рдХреЗ рд▓рд┐рдП рдкреНрд░реЙрдореНрдкреНрдЯ-рдЗрдВрдЬреЗрдХреНрд╢рди, рдЬреЗрд▓рдмреНрд░реЗрдХ рдФрд░ рд╕реАрдХреНрд░реЗрдЯ-рд▓реАрдХ рд░рдХреНрд╖рд╛ред |
| dsh-doublecheck | рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ-рдЕрдиреБрд╢рд╛рд╕рди рд░рдХреНрд╖рдХ: рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреА рдкреВрдЫрддрд╛рдЫ, рдкрд░реАрдХреНрд╖рдг рджреНрд╡рд╛рд░, рдкреНрд░рддрд┐рджреНрд╡рдВрджреНрд╡реА рд╕рдореАрдХреНрд╖рд╛ |
| dsh-draw | DeepSeek Harness рдХреЗ рд▓рд┐рдП рдПрдХреАрдХреГрдд рд╕реНрдереИрддрд┐рдХ-рдЫрд╡рд┐ рдирд┐рд░реНрдорд╛рдг рд░реВрдЯрд┐рдВрдЧред |
| dsh-fast | DeepSeek Harness рдХреЗ рд▓рд┐рдП рд░реАрдб-рдУрдирд▓реА рдкреНрд░рджрд░реНрд╢рди рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХреНрд╕ред |
| dsh-fund-research | рдЪреАрдиреА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдореНрдпреВрдЪреБрдЕрд▓ рдлрдВрдб рдХреЗ рд▓рд┐рдП рдирд┐рдпрддрд╛рддреНрдордХ рдЕрдиреБрд╕рдВрдзрд╛рди рд░рд┐рдкреЛрд░реНрдЯ |
| dsh-github | DSH рдХреЗ рд▓рд┐рдП GitHub PR/issues рдПрдХреАрдХрд░рдг, рд╣рд░ рд▓реЗрдЦрди рдЕрдиреБрдореЛрджрди-рджреНрд╡рд╛рд░рд┐рдд |
| dsh-industry-research | рдЙрджреНрдпреЛрдЧ-рдЕрдиреБрд╕рдВрдзрд╛рди рдСрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрд╢рди рдЬреЛ рдЗрд╕ рдкреНрд▓рдЧрд┐рди рдХреЗ ctx.researchReport.assemble рд╕реЗ рдбрд┐рд▓реАрд╡рд░реЗрдмрд▓ рд╕реАрд▓ рдХрд░рддрд╛ рд╣реИ |
| dsh-library | DeepSeek Harness рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдп рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЬреНрдЮрд╛рдирдХреЛрд╢ред |
| dsh-local-ai | DeepSeek Harness рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдп-рдореЙрдбрд▓ (Ollama) рдПрдХреАрдХрд░рдгред |
| dsh-lsp-actions | рднрд╛рд╖рд╛ рд╕рд░реНрд╡рд░реЛрдВ рдкрд░ LSP рдирд┐рджрд╛рди, рдлрд╝реЙрд░реНрдореЗрдЯрд┐рдВрдЧ, рдкреВрд░реНрдгрддрд╛, рдХреЛрдб рдХреНрд░рд┐рдпрд╛рдПрдБ рдФрд░ рдирд╛рдо рдмрджрд▓рдирд╛ |
| dsh-mask | PII рдорд╛рд╕реНрдХрд┐рдВрдЧ рдорд┐рдбрд▓рд╡реЗрдпрд░: рдореЙрдбрд▓ рд╕реАрдорд╛ рдкрд░ рдЕрдирд╛рдо рдХрд░реЗрдВ, рдбрд┐рд╕реНрдкреНрд▓реЗ рд▓реЗрдпрд░ рдкрд░ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ |
| dsh-mcp-panel | рдХреЗрд╡рд▓-рдкрдврд╝рдиреЗ рд╡рд╛рд▓рд╛ MCP рд░рдирдЯрд╛рдЗрдо рдкреИрдирд▓: /mcp рдХрдорд╛рдВрдб + рд╕реНрдерд┐рддрд┐, рдЯреВрд▓ рдФрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╡рд╛рд▓рд╛ Settings рдЯреИрдм |
| dsh-memento | рдЕрдиреБрдореЛрджрди-рджреНрд╡рд╛рд░рд┐рдд рдХреНрд░реЙрд╕-рд╕рддреНрд░ рдореЗрдореЛрд░реА: ctx.memory рд╕реАрдо + SQLite + рдореЗрдореЛрд░реА рдЯреВрд▓ |
| dsh-observe | DeepSeek Harness рдХреЗ рд▓рд┐рдП OpenTelemetry рдФрд░ Langfuse рдЕрд╡рд▓реЛрдХрдиреАрдпрддрд╛ рдирд┐рд░реНрдпрд╛рддрдХред |
| dsh-output-styles | Claude Code outputStyles-рд╕рдорддреБрд▓реНрдп рд░рдирдЯрд╛рдЗрдо рд╢реИрд▓реА рдмрджрд▓рд╛рд╡ |
| dsh-permission-rules | рдСрдбрд┐рдЯ рдХреЗ рд╕рд╛рде Claude Code-рд╢реИрд▓реА рдШреЛрд╖рдгрд╛рддреНрдордХ allow/deny/ask рдЕрдиреБрдорддрд┐ рдирд┐рдпрдо |
| dsh-personal-directive | рд╢реАрд░реНрд╖-рдмрд╛рд░ рдЯреЙрдЧрд▓ рдХреЗ рд╕рд╛рде рд╡реНрдпрдХреНрддрд┐рдЧрдд рдирд┐рд░реНрджреЗрд╢ рдЗрдВрдЬреЗрдХреНрдЯрд░ (рдлреНрд░реЗрдорд╡рд░реНрдХ рд╕рдВрд╕реНрдХрд░рдг) |
| dsh-plugin-guide | рдорд╛рдБрдЧ рдкрд░ рдПрдЬреЗрдВрдЯ рдХреМрд╢рд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд▓рдЧрдЗрди-рд╡рд┐рдХрд╛рд╕ рдЬреНрдЮрд╛рди рдЖрдзрд╛рд░ |
| dsh-reach | рдорд▓реНрдЯреА-рдЪреИрдирд▓ рдЕрдиреБрдореЛрджрди/рдкреНрд░рд╢реНрди рдмреНрд░рд┐рдЬ: WeChat/Telegram/Feishu, рд╕рддреНрд░ рдХрдВрд╕реЛрд▓ |
| dsh-research-report | рд╕рд╛рдордЧреНрд░реА-рдкрддрд╛ рд╕рд╛рдХреНрд╖реНрдп рдФрд░ рд╕реАрд▓рдмрдВрдж рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рд╡рд╛рд▓рд╛ рд╕рддреНрдпрд╛рдкрди-рдпреЛрдЧреНрдп рдЕрдиреБрд╕рдВрдзрд╛рди-рд░рд┐рдкреЛрд░реНрдЯ рдЗрдВрдЬрди |
| dsh-score | DeepSeek Harness рдкреНрд▓рдЧрд┐рдиреЛрдВ рдХреА рдмрд╣реБ-рдЖрдпрд╛рдореА рдЧреБрдгрд╡рддреНрддрд╛ рд╕реНрдХреЛрд░рд┐рдВрдЧред |
| dsh-session-pin | рдЯрд┐рдХрд╛рдК рдХреНрд░рдо рдХреЗ рд╕рд╛рде рд╡реЗрдм рд╕рд╛рдЗрдбрдмрд╛рд░ рдореЗрдВ рд╕рддреНрд░ рдкрд┐рди рдХрд░реЗрдВ |
| dsh-session-sync | DeepSeek Harness рдХреЗ рд▓рд┐рдП рдХреНрд░реЙрд╕-рдбрд┐рд╡рд╛рдЗрд╕ рд╕рддреНрд░ рд╕рд┐рдВрдХ тАФ рдЖрдкрдХреЗ рд╕рддреНрд░ рд╕реНрдЯреЛрд░ рдХрд╛ рдПрдХ рд╕рдорд░реНрдкрд┐рдд git рдорд┐рд░рд░ред |
| dsh-skill-pack-security | рд╕реБрд░рдХреНрд╖рд╛-рдСрдбрд┐рдЯ рдХреМрд╢рд▓ рдкреИрдХ: рдЧреБрдкреНрдд рд╕реНрдХреИрди, рдирд┐рд░реНрднрд░рддрд╛ рдФрд░ рдЖрдкреВрд░реНрддрд┐-рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╕рдореАрдХреНрд╖рд╛ |
| dsh-test-drive | DeepSeek Harness рдкреНрд▓рдЧрд┐рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдкреГрдердХ рдЗрдВрд╕реНрдЯреЙрд▓-рдПрдВрдб-рд╕реНрдореЛрдХ рдЯреЗрд╕реНрдЯ рдбреНрд░рд╛рдЗрд╡ред |
| dsh-ticktick | TickTick/Dida365 рдХрд╛рд░реНрдп рдмреНрд░рд┐рдЬ: рд╕рддреНрд░-рд╣реЗрдбрд░ рдкреИрдирд▓ + 11 рдЯреВрд▓ |
| dsh-translate | DeepSeek Harness рдХреЗ рд▓рд┐рдП рд╡реЗрдВрдбрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдЕрдиреБрд╡рд╛рдж рдФрд░ рдирд┐рдпрддрд╛рддреНрдордХ JSON рдорд░рдореНрдорддред |
| dsh-wechat | WeChat тЖФ DSH рдмреНрд░рд┐рдЬ (Tencent iLink bot): рдЯреЗрдХреНрд╕реНрдЯ/рдЗрдореЗрдЬ/рдлрд╝рд╛рдЗрд▓/рдЖрд╡рд╛рдЬрд╝, рдЪреИрдЯ рдореЗрдВ рдЕрдиреБрдореЛрджрди |
License
Apache License 2.0 ┬й 2026 dsh-talk contributors
DSH Desktop рдорд╛рд░реНрдХреЗрдЯ рд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ
рд╕рднреА PerryLink рдкреНрд▓рдЧрдЗрди DSH Desktop рдХреЗ рдмрд┐рд▓реНрдЯ-рдЗрди рдорд╛рд░реНрдХреЗрдЯ рдореЗрдВ рджреЗрдЦреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ: Market тЖТ Sources тЖТ add source тЖТ рдкреЗрд╕реНрдЯ рдХрд░реЗрдВ https://perrylink-dsh-catalog.perrylink.workers.dev/catalog-source.json тЖТ рдЪреБрдиреЗрдВред рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдорд╛рд░реНрдХреЗрдЯ рдХреЗ npm-identity рд╕рддреНрдпрд╛рдкрди рдФрд░ рдЖрдкрдХреА рдкреБрд╖реНрдЯрд┐ рд╕реЗ рд╣реА рд╣реЛрддрд╛ рд╣реИред