# ЁЯСе dsh-background-agents - **1024 рд╕реНрдЯреЛрд░ рдЪреИрдирд▓**: рдПрдХ рдмрд╛рд░ `npm i -g dsh1024`, рдлрд┐рд░ `dsh1024 plugin --profile web add dsh-background-agents` ([deepseek1024.com](https://deepseek1024.com) рдЗрдВрд╕реНрдЯреЙрд▓ рд░реИрдВрдХрд┐рдВрдЧ рдореЗрдВ рдЧрд┐рдирд╛ рдЬрд╛рддрд╛ рд╣реИ)ред **DeepSeek Harness рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рд▓рдВрдмреА-рд╕рддреНрд░ рд╡рд╛рд▓реЗ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдПрдЬреЗрдВрдЯ рдФрд░ рд▓рдЧрд╛рддрд╛рд░ рдмрдиреЗ рд░рд╣рдиреЗ рд╡рд╛рд▓реЗ рдорд▓реНрдЯреА-рдПрдЬреЗрдВрдЯ рдЯреАрдо рд░реВрдо тАФ рдПрдХ рдЯрд┐рдХрд╛рдК рдЪрд╛рдЗрд▓реНрдб рдПрдЬреЗрдВрдЯ рд╢реБрд░реВ рдХрд░реЗрдВ рдЬреЛ рдХрд╛рдо рдХрд░рддрд╛ рд░рд╣реЗ рдЬрдмрдХрд┐ рдЖрдк рдмрд╛рддрдЪреАрдд рдЬрд╛рд░реА рд░рдЦреЗрдВред** *рд╕рддреНрд░реЛрдВ рдХреЗ рдмреАрдЪ рд╕рдХреНрд░рд┐рдп рдмрд╛рддрдЪреАрдд рдЪрд▓рд╛рдПрдБ рдФрд░ рдПрдХ рдЯреАрдо рдХрд╛ рд╕рдордиреНрд╡рдп рдХрд░реЗрдВ; рд╕рдм рдХреБрдЫ harness рдХреЗ рдЕрдкрдиреЗ рд╕реНрдЯреЛрд░реЗрдЬ рд╕реЗ рд░реАрд╕реНрдЯрд╛рд░реНрдЯ рдХреЗ рдмрд╛рдж рднреА рдмрдирд╛ рд░рд╣рддрд╛ рд╣реИред* [![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](LICENSE) [![Gitee](https://img.shields.io/badge/Gitee-mirror-c71d23?logo=gitee)](https://gitee.com/perrylink/dsh-background-agents) [![DSH plugin](https://img.shields.io/badge/dsh--plugin-тЬЕ-green)](https://github.com/topics/dsh-plugin) [![dsh-doctor](https://raw.githubusercontent.com/PerryLink/dsh-plugin-doctor/main/badges/PerryLink__dsh-background-agents.svg)](https://github.com/PerryLink/dsh-plugin-doctor#verified-х╛╜чла) [![DSH Market](https://raw.githubusercontent.com/2BingLing/dsh-market/master/assets/readme/badge-listed-en.svg)](https://dsh.market/) [![Node](https://img.shields.io/badge/node-%5E22.19%20%7C%7C%20%3E%3D24-brightgreen.svg)](#) [![CI](https://img.shields.io/github/actions/workflow/status/PerryLink/dsh-background-agents/ci.yml?branch=main&label=CI)](https://github.com/PerryLink/dsh-background-agents/actions) [![Version](https://img.shields.io/github/v/tag/PerryLink/dsh-background-agents?label=version)](https://github.com/PerryLink/dsh-background-agents/releases) [![npm version](https://img.shields.io/npm/v/dsh-background-agents)](https://www.npmjs.com/package/dsh-background-agents) [![npm downloads](https://img.shields.io/npm/dm/dsh-background-agents)](https://www.npmjs.com/package/dsh-background-agents) [English](README.md) ┬╖ [чоАф╜Уф╕нцЦЗ](README-zh.md) ┬╖ [Espa├▒ol](README-es.md) ┬╖ [Portugu├кs](README-pt.md) ┬╖ [рд╣рд┐рдиреНрджреА](README-hi.md)
--- ## рдЕрдиреБрдХреВрд▓рддрд╛ рд╣реЛрд╕реНрдЯ `0.1.2-alpha.2` рдФрд░ рдмрд╛рдж рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рд╕рддреНрд░ рдЗрд╡реЗрдВрдЯ рд╢рдмреНрджрд╛рд╡рд▓реА рдкрд░ рдмрдВрдж-рд╡рд┐рдлрд▓ рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдкреНрд▓рдЧрдЗрди рд╡рд╣рд╛рдБ рдЕрдкрдиреЗ рдХреЗрд╡рд▓-рд▓реЙрдЧ рддрдереНрдп рдЗрд╡реЗрдВрдЯ (`background-agents/fact`, `team-room/fact`) рдирд╣реАрдВ рд▓рд┐рдЦрддрд╛: рддрдереНрдп рд▓реЙрдЧрд░/рдкреИрдирд▓ рдЪреИрдирд▓ рд╕реЗ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░реЛрдЬреЗрдХреНрд╢рди рдЦрд╛рд▓реА рдлреЛрд▓реНрдб рдореЗрдВ рдмрджрд▓ рдЬрд╛рддреЗ рд╣реИрдВред рдкреБрд░рд╛рдиреА rc рд▓рд╛рдЗрдиреЗрдВ (`0.1.1-rc.2` рддрдХ) ignorable-рдорд╛рд░реНрдХрд░ рдЕрдиреБрд╢рд╛рд╕рди рдмрдирд╛рдП рд░рдЦрддреА рд╣реИрдВред рдХреНрд▓рд╛рдЗрдВрдЯ рдЖрдзрд╛ рдЕрдм рд╡рд░реНрддрдорд╛рди рдХреНрд▓рд╛рдЗрдВрдЯ рдкреИрдХреЗрдЬ (`dsh-api-session-controller`, `dsh-client-web`) рдФрд░ рд╡рд░реНрддрдорд╛рди рд╕рдмрдПрдЬреЗрдВрдЯ рд░рд┐рдореЛрдЯ (`interruptByParent`, рдХреНрд▓рд╛рдЗрдВрдЯ-рдирд┐рд░реНрдорд┐рдд `requestId` рдХреЗ рд╕рд╛рде `prompt`; рдкреБрд░рд╛рдирд╛ `history` RPC рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ тАФ рдкрд░рд┐рдгрд╛рдо рдЭрд▓рдХрд┐рдпрд╛рдБ рдЪрд╛рдЗрд▓реНрдб рд╕рддреНрд░ рдХреЗ `conversation` рдкреНрд░реЛрдЬреЗрдХреНрд╢рди рд╕реЗ рдкрдврд╝реА рдЬрд╛рддреА рд╣реИрдВ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред 0.1.2-rc.1 (2026-09-04 рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд): рд╕рддреНрд░ рд▓рд┐рдлрд╝рд╛рдлрд╝рд╛ рдЕрдкрдирд╛ ignorable рдлрд╝реАрд▓реНрдб рдХреЗрд╡рд▓ рд╕рдВрдЧреНрд░рд╣реАрдд-рд▓реЙрдЧ рдкрдарди рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП рд░рдЦрддрд╛ рд╣реИ - Session.append рдЕрднреА рднреА рдЗрд╕реЗ рд╕реНрдЯреИрдореНрдк рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ (рддреАрд╕рд░рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗрд╡рд▓ рд╕рддрд╣ рдЗрд╡реЗрдВрдЯ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП SurfaceIntent рд╣реИ, рдХрднреА рд╡рд┐рдХрд▓реНрдк-рдмреИрдЧ рдирд╣реАрдВ), рдЗрд╕рд▓рд┐рдП рддрдереНрдп-рдЧреЗрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реИред 0.1.3-alpha.1 (2026-09-06 рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд): CI рд╣рд╛рд░реНрдиреЗрд╕ рдкрд┐рди рдорд╛рд╕реНрдЯрд░ checkout (`d347e7039`) рдкрд░ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ - session-persistence рд╕реЗрд╡рд╛ рдХрд╛ рд╣реИрдВрдбрд▓ рд╕реАрдо (`open тЖТ read тЖТ close`)ред рдкреНрд░рдХрд╛рд╢рд┐рдд 0.1.2-rc.1 рд░рдирдЯрд╛рдЗрдо open() рд╕реЗ рдкрд╣рд▓реЗ рдХрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП bg_result рдХреА рдХреЛрд▓реНрдб рд░реАрдб рд╕реАрдо рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдХрд░ load() рдкрд░ рдлрд╝реЙрд▓рдмреИрдХ рдХрд░рддреА рд╣реИ - рджреЛрдиреЛрдВ рд▓рд╛рдЗрдиреЛрдВ рдкрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕рдорд╛рди рд╣реИред 2026-09-06 рдХреЛ dsh-v0.1.3-alpha.1 рдорд╛рд╕реНрдЯрд░ checkout рдХреЗ рд╡рд┐рд░реБрджреНрдз рд╕рддреНрдпрд╛рдкрд┐рдд (рдкреВрд░реНрдг рдЧреЗрдЯ рд╢реНрд░реГрдВрдЦрд▓рд╛ + рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдЗрдВрд╕реНрдЯреЙрд▓ рд╕реНрдореЛрдХ)ред 0.1.5-alpha.1 (2026-09-09 рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд): `SessionHandleReadResult` рдЕрдм `{ eventState, events }` рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП bg_result рдХреА рдХреЛрд▓реНрдб рд░реАрдб рд╣реИрдВрдбрд▓ рд╕реАрдо рд╕реЗ `.events` рдбреАрд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХрд░рддреА рд╣реИ (рдкреНрд░рдХрд╛рд╢рд┐рдд рд▓рд╛рдЗрди рдХрд╛ `load()` рдлрд╝реЙрд▓рдмреИрдХ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реИ)ред CI рд╣рд╛рд░реНрдиреЗрд╕ рдкрд┐рди рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ tag commit `5dda764ed3aa` рдкрд░ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ (рд╕реНрдерд╛рдиреАрдп checkout 13 infra commits рдЖрдЧреЗ рд╣реИ рдФрд░ CI рд╕реЗ рдкрд╣реБрдБрдЪ рд╕реЗ рдмрд╛рд╣рд░) рдФрд░ compat рдЬрд╛рдБрдЪреЗрдВ alpha рд▓рд╛рдЗрди рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рддреА рд╣реИрдВред peers рдХреЛ `>=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0` рддрдХ рдмрдврд╝рд╛рдпрд╛ рдЧрдпрд╛ (prerelease-tuple рдирд┐рдпрдо: рдЕрдХреЗрд▓рд╛ рдкрд╣рд▓рд╛ рдмреНрд░рд╛рдЬрд╝ `0.1.5-alpha.1` рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛) рдФрд░ devDeps `0.1.5-alpha.1` рдкрд░ рдкрд┐рди рд╣реИрдВред 2026-09-09 рдХреЛ `dsh-v0.1.5-alpha.1` рдХреЗ рд╡рд┐рд░реБрджреНрдз рд╕рддреНрдпрд╛рдкрд┐рдд (рдкреВрд░реНрдг рдЧреЗрдЯ рд╢реНрд░реГрдВрдЦрд▓рд╛)ред рдкрд╣рд▓реЗ рдХрд╛ `0.1.3-alpha.1` рджрд╛рд╡рд╛ рдЕрдм рдЕрдкреНрд░рдЪрд▓рд┐рдд рд╣реИ: рд╡рд╣ рдкреНрд░реАрд░рд┐рд▓реАрдЬрд╝ рджреЛрдиреЛрдВ peer рдмреНрд░рд╛рдЬрд╝реЛрдВ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИред 0.1.5-rc.1 (2026-09-10 рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд): рдирд┐рд░реНрднрд░рддрд╛ рдкрд┐рди рдкреНрд░рдХрд╛рд╢рд┐рдд 0.1.5-rc.1 рд▓рд╛рдЗрди рдкрд░ рдЪрд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВ; рдХреЛрдИ seam рдкрд░рд┐рд╡рд░реНрддрди рдЗрд╕ рдкреНрд▓рдЧрдЗрди рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ред 0.1.5-rc.2 (2026-09-11 рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд): рдирд┐рд░реНрднрд░рддрд╛ рдкрд┐рди рдкреНрд░рдХрд╛рд╢рд┐рдд 0.1.5-rc.2 рд▓рд╛рдЗрди рдкрд░ рдЪрд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВ; рдХреЛрдИ seam рдкрд░рд┐рд╡рд░реНрддрди рдЗрд╕ рдкреНрд▓рдЧрдЗрди рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ред 0.1.6-alpha.2 (2026-09-18 рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд): рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗрд╢рди рд╕реЗрд╡рд╛ рдиреЗ рдЕрдкрдирд╛ рд╕рдмрдПрдЬреЗрдВрдЯ-рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХреЙрд▓ рд╣рдЯрд╛ рджрд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдХреНрд░рд┐рдпрд╛ рдЕрдм рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдмрддрд╛рддреА рд╣реИ рдХрд┐ рдиреЗрд╡рд┐рдЧреЗрд╢рди рд╕реЗрд╢рди рд╣реЗрдбрд░ рдХреЗ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рдореЗрдВ рд╣реИ (`ui-subagent` рдХреА lineage рд╕реАрдЯ), рдЪреБрдкрдЪрд╛рдк рд╡рд┐рдлрд▓ рд╣реЛрдиреЗ рдХреЗ рдмрдЬрд╛рдп; рд░реВрдо рдкреИрдирд▓ рдЕрдкрдирд╛ рд╡рд░реНрддрдорд╛рди рд╕реЗрд╢рди рдореБрдЦреНрдп-рд╡реНрдпреВ retention (`retainedBy.mainView`) рд╕реЗ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ `SessionListState.current` рдЕрдм рдирд╣реАрдВ рд╣реИред `agent/created` рдХреИрдЪ-рдЕрдк рд▓рд┐рд╕рдирд░ рдЕрдкрдиреА 2 рд╕реЗрдХрдВрдб рд╕реАрдорд╛ рдХреЗ рднреАрддрд░ рд╕рдордХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рд▓реМрдЯрддрд╛ рд╣реИ, рдФрд░ рдЕрдкрдардиреАрдп рдЪрд╛рдЗрд▓реНрдб рд▓реЙрдЧ рдЦрд╛рд▓реА рдЯреЗрдХреНрд╕реНрдЯ рдХреЗ рдмрдЬрд╛рдп `unavailable` рдмрддрд╛рддрд╛ рд╣реИред рд╕реЗрд╢рди-рд▓реЙрдЧ рдлрд╝реИрдХреНрдЯ рдЪреИрдирд▓ рд╕реЗ рдорд┐рд▓рдиреЗ рд╡рд╛рд▓реЗ dashboard рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдЗрд╕ рд▓рд╛рдЗрди рдкрд░ **рдЕрдиреБрдкрд▓рдмреНрдз** рд░рд╣рддреЗ рд╣реИрдВ (рдЧреИрд░-рд╕рд░рдлрд╝реЗрд╕ рдлрд╝реИрдХреНрдЯ рдЗрд╡реЗрдВрдЯ рдкрд░ рдЕрдм рднреА ignore рдорд╛рд░реНрдХрд░ рдирд╣реАрдВ рд▓рдЧ рд╕рдХрддрд╛) тАФ рдЯрд┐рдХрд╛рдК рд░реВрдо рдЯреЗрдмрд▓ рдФрд░ рдкреИрдирд▓ рдХрд╛ рдкреНрд░реЛрдЬреЗрдХреНрд╢рди рдорд╛рди рд╣реА рд░рд┐рдХреЙрд░реНрдб рд╣реИрдВред 2026-09-18 рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд (рджреЛрдиреЛрдВ typecheck + рдкреВрд░реА рдЯреЗрд╕реНрдЯ рд╕реВрдЯ); рдмреНрд░рд╛рдЙрдЬрд╝рд░-рджреГрд╢реНрдп рдЖрдзрд╛ рднрд╛рдЧ рдЕрднреА **рдорд╢реАрди-рд╕рддреНрдпрд╛рдкрд┐рдд рдирд╣реАрдВ** рд╣реИред | рд╕рддрд╣ | рд╕реНрдерд┐рддрд┐ | |---|---| | Harness | DeepSeek Harness `dsh-v0.1.5-rc.2` (GitHub tag, 2026-09-11 рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд; dev рдФрд░ runtime рдкрд┐рди `0.1.5-rc.2`, peers `>=0.1.2-rc.1 <0.2.0 \|\| >=0.1.5-alpha.1 <0.2.0`) | | Node | `^22.19.0 \|\| >=24.0.0` | | рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо | рд╕рднреА (рд╣реЛрд╕реНрдЯ рдЯреВрд▓; рд╕реНрдЯреЛрд░реЗрдЬ-рдбреЛрдореЗрди рдХреНрд╖рдорддрд╛ рдХреЗ рдЬрд╝рд░рд┐рдП рд╡реИрдХрд▓реНрдкрд┐рдХ рд╡реЗрдм рд╕рд╛рдЗрдбрдмрд╛рд░ рдкреИрдирд▓ рдФрд░ рдЯреАрдо рд░реВрдо) | | рдореЙрдбрд▓ | рдХреЛрдИ рднреА (рдЪрд╛рдЗрд▓реНрдб рдкреИрд░реЗрдВрдЯ рдХрд╛ рдорд╛рд░реНрдЧ рд▓реЗрддреЗ рд╣реИрдВ; `childProvider`/`childModel` рдЙрд╕реЗ рдмрджрд▓рддреЗ рд╣реИрдВ) | ## рдЖрдкрдХреЛ рдХреНрдпрд╛ рдорд┐рд▓рддрд╛ рд╣реИ `dsh-background-agents` DSH рдХреЗ рдлрд╛рдпрд░-рдПрдВрдб-рдлреЙрд░рдЧреЗрдЯ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб *рдЬреЙрдм* рдХреЛ рджреЛ рд╕рдордиреНрд╡рд┐рдд рд╕рддрд╣реЛрдВ рдореЗрдВ рдмрджрд▓ рджреЗрддрд╛ рд╣реИ: 1. **рдкрд╛рдБрдЪ рд╕реНрдЯреАрдпрд░рд┐рдВрдЧ рдЯреВрд▓** тАФ `background_agent` рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдЙрдк-рдПрдЬреЗрдВрдЯ рд╕реАрдо рдкрд░ рдПрдХ рдЯрд┐рдХрд╛рдК, рдЬрд╛рд░реА рд░рд╣рдиреЗ рдпреЛрдЧреНрдп рдЪрд╛рдЗрд▓реНрдб рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ (рд╡реИрдХрд▓реНрдкрд┐рдХ `tool_filter` тАФ рдЯреВрд▓ рд╣рдЯрд╛рддрд╛ рд╣реИ, рдХрднреА рдирдП рдирд╣реАрдВ рджреЗрддрд╛; `persona`; `max_depth`; `childProvider`/`childModel` рдорд╛рд░реНрдЧ)ред `bg_message` рдмрд╛рдж рдХрд╛ рдЯрд░реНрди рдкрд╣реБрдБрдЪрд╛рддрд╛ рд╣реИ; `bg_list` рд╕реНрдерд┐рддрд┐ рдмрддрд╛рддрд╛ рд╣реИ (рдпрд╛ `parentId`/`depth` рдХреЗ рд╕рд╛рде рд╡рдВрд╢рдЬ рдЯреНрд░реА); `bg_result` рдирд╡реАрдирддрдо рдкрд░рд┐рдгрд╛рдо рдкрд╛рда рдкрдврд╝рддрд╛ рд╣реИ (рд░реАрдЬрд╝рдирд┐рдВрдЧ рдлрд╝реЙрд▓рдмреИрдХ рдХреЛ `textSource: 'reasoning'` рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ); `bg_stop` рд░реБрдХрд╛рд╡рдЯ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИред 2. **рдкреНрд░рдЧрддрд┐ рдФрд░ рд╕рдВрдЧреНрд░рд╣** тАФ `autoReport` рд╣рд░ рдЪрд╛рдЗрд▓реНрдб рдЯрд░реНрди рдХреЗ рдмрд╛рдж рдПрдХ рдереНрд░реЙрдЯрд▓реНрдб рдкреНрд░рдЧрддрд┐ рдкрдВрдХреНрддрд┐ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рддрд╛ рд╣реИ; `reportDelivery: wakeup` рдкреИрд░реЗрдВрдЯ рдХреЗ рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╣реЛрдиреЗ рдкрд░ рдкреИрд░реЗрдВрдЯ рдЯрд░реНрди рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред рдирд┐рд╖реНрдХреНрд░рд┐рдпрддрд╛ рд╕реНрд╡реАрдк рд╢рд╛рдВрдд рдЪрд╛рдЗрд▓реНрдб рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ `bg_message` рдЙрдиреНрд╣реЗрдВ рдлрд┐рд░ рдЬрдЧрд╛ рджреЗрддрд╛ рд╣реИ (`autoArchive: false` рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╢рд╛рдВрдд рд╡реЙрдЪрд░ рдХреЛ рдкрд╛рд░реНрдХ рдХрд░ рджреЗрддрд╛ рд╣реИ)ред 3. **рдбреИрд╢рдмреЛрд░реНрдб рдкреНрд░реЛрдЬреЗрдХреНрд╢рди + рд╡реЗрдм рдкреИрдирд▓** тАФ `backgroundAgents` рд╕рддреНрд░ рдкреНрд░реЛрдЬреЗрдХреНрд╢рди рдкреИрд░реЗрдВрдЯ рд▓реЙрдЧ рдХреЛ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рдореЛрдбрд╝рддрд╛ рд╣реИ; рдПрдХ рд╕рд╛рдЗрдбрдмрд╛рд░ рдкреИрдирд▓ рд▓рд╛рдЗрд╡ рд╕реНрдерд┐рддрд┐, рдЬрдВрдк, рд╕рдВрджреЗрд╢, рд░реЛрдХ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдЭрд▓рдХ рджрд┐рдЦрд╛рддрд╛ рд╣реИред рд╕рдм рдХреБрдЫ рдЯрд┐рдХрд╛рдК рд▓реЙрдЧ рд╕реЗ рдлрд┐рд░ рд╕реЗ рдмрдирддрд╛ рд╣реИ тАФ рдХреЛрдИ рдЕрд▓рдЧ рдбреЗрдЯрд╛рдмреЗрд╕ рдирд╣реАрдВред 4. **рдЯреАрдо рд░реВрдо (v0.5.0+)** тАФ `/room` рдХрдорд╛рдВрдб рдкрд░рд┐рд╡рд╛рд░ рдФрд░ рдЖрда `room_*` рдЯреВрд▓ рд▓рдЧрд╛рддрд╛рд░ рдорд▓реНрдЯреА-рдПрдЬреЗрдВрдЯ рд░реВрдо рдмрдирд╛рддреЗ рд╣реИрдВ: рд╕рджрд╕реНрдп (рд╣рд░ рдПрдХ рд╕реНрд╡рддрдВрддреНрд░ рд╕рддреНрд░), рдПрдХ рд╕рдВрджреЗрд╢ рдмрд╕ (рдирд┐рд░реНрджреЗрд╢рд┐рдд/рдкреНрд░рд╕рд╛рд░рдг), рдПрдХ рд╕рд╛рдЭрд╛ рдЯрд╛рд╕реНрдХ рдмреЛрд░реНрдб рдФрд░ рдПрдХ рд╕рд╛рдЭрд╛ рдЯрд╛рдЗрдорд▓рд╛рдЗрди тАФ `team_rooms` рд╕реНрдЯреЛрд░реЗрдЬ рдбреЛрдореЗрди (SQLite рдпрд╛ JSONL) рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдФрд░ DSH рд░реАрд╕реНрдЯрд╛рд░реНрдЯ рдХреЗ рдмрд╛рдж рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддред рдХреНрд░реЙрд╕-рд╕рджрд╕реНрдп рдЯрд╛рд╕реНрдХ рд╣реИрдВрдбрдСрдлрд╝ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдЕрдиреБрдореЛрджрди рд╕реАрдо рд╕реЗ рдЧреБрдЬрд░рддреЗ рд╣реИрдВред ## рддреНрд╡рд░рд┐рдд рд╢реБрд░реБрдЖрдд ```sh # 1. рдЕрдкрдиреЗ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдмрдВрдбрд▓ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ dsh plugin --profile web add "github:PerryLink/dsh-background-agents#main" # рдпрд╛ npm рд╕реЗ (рдкреНрд░рдХрд╛рд╢рд┐рдд рд░рд┐рд▓реАрдЬрд╝) dsh plugin --profile web add dsh-background-agents # 2. рдкреБрдирдГ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ рдФрд░ рдкрдВрдХреНрддрд┐ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ dsh --profile web --dump-config | grep -A4 'id: background-agents' ``` рдмрдВрдбрд▓ рдкреИрдЪ рдкреНрд▓рдЧрдЗрди рдкрдВрдХреНрддрд┐ рд░рдЦрддрд╛ рд╣реИ; `provider` рдЕрдирд┐рд╡рд╛рд░реНрдп рд╣реИред рд░реЗрдкреЛ рдЕрдкрдирд╛ рдмрд┐рд▓реНрдб рдЖрдЙрдЯрдкреБрдЯ (`lib/`) рдХрдорд┐рдЯ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП git рдЗрдВрд╕реНрдЯреЙрд▓ рдХреЛ рдмрд┐рд▓реНрдб рдЪрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреАред рдкреНрд▓рдЧрдЗрди рдХреЛ рдЙрдк-рдПрдЬреЗрдВрдЯ рд╕реНрдкрд╛рдЗрди рдкрд╣рд▓реЗ рд╕реЗ рдорд╛рдЙрдВрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (`@deepseek-ai/dsh-base` рдкрд░ рдмрдирд╛ рдХреЛрдИ рднреА рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдЗрд╕реЗ рд░рдЦрддрд╛ рд╣реИ)ред рдЯреАрдо рд░реВрдо рд╡рд╣реАрдВ рдорд╛рдЙрдВрдЯ рд╣реЛрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдБ рд╕реНрдЯреЛрд░реЗрдЬ рдбреЛрдореЗрди (`@deepseek-ai/dsh-storage-domain`) рдмрдирд╛ рд╣реЛ; рдкрд╛рдБрдЪ `bg_*` рдЯреВрд▓ рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рднреА рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдлрд┐рд░, рдХрд┐рд╕реА рднреА рд╕рддреНрд░ рдореЗрдВ, рдмрд╕ рдореЙрдбрд▓ рд╕реЗ рдХрд╣реЗрдВ тАФ рдпрд╛ рдЯреВрд▓ рд╕реАрдзреЗ рдХреЙрд▓ рдХрд░реЗрдВ: ``` background_agent "watch the repo for test failures and keep me posted" (label: test-watch) bg_list bg_message "also check the snapshot tests now" bg_stop ``` ## рдЗрдВрд╕реНрдЯреЙрд▓ рдФрд░ рдЕрдирдЗрдВрд╕реНрдЯреЙрд▓ - **git рдЪреИрдирд▓** (рдирд╡реАрдирддрдо `main`): `dsh plugin --profile web add "github:PerryLink/dsh-background-agents#main"` тАФ `lib/` рдХрдорд┐рдЯреЗрдб, рдХреЛрдИ `prepare` рдпрд╛ `allowBuilds` рдЪрд░рдг рдирд╣реАрдВред - **npm рдЪреИрдирд▓** (рдкреНрд░рдХрд╛рд╢рд┐рдд рд░рд┐рд▓реАрдЬрд╝): `dsh plugin --profile web add dsh-background-agents`ред - **tarball рдЪреИрдирд▓**: рдЗрд╕ рд░реЗрдкреЛ рдореЗрдВ `pnpm pack`, рдлрд┐рд░ `dsh plugin --profile web add ./dsh-background-agents-.tgz`ред - **рдЕрдирдЗрдВрд╕реНрдЯреЙрд▓**: `dsh plugin --profile web remove dsh-background-agents` (рдпрд╛ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдкреИрдЪ рд╕реЗ рдкрдВрдХреНрддрд┐ рд╣рдЯрд╛рдПрдБ)ред ## рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╣рд░ рдЯреНрдпреВрдиреЗрдмрд▓ рдПрдХ рд╕рддреНрдпрд╛рдкрд┐рдд Schemastery `Config` рдлрд╝реАрд▓реНрдб рд╣реИ тАФ рдЗрд╕реЗ cordis.yml рдореЗрдВ рдмрджрд▓реЗрдВ, рдХреЛрдб рдореЗрдВ рдХрднреА рдирд╣реАрдВред рдХреЗрд╡рд▓ `provider` рдЕрдирд┐рд╡рд╛рд░реНрдп рд╣реИред | рдХреБрдВрдЬреА | рдбрд┐рдлрд╝реЙрд▓реНрдЯ | рдЕрд░реНрде | |---|---|---| | `provider` | *(рдЕрдирд┐рд╡рд╛рд░реНрдп)* | рдЬрд╛рд░реА рд░рд╣рдиреЗ рдпреЛрдЧреНрдп рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП `ctx.subagents` рдкреНрд░рджрд╛рддрд╛ рдирд╛рдо (`spawn`) | | `autoReport` | `true` | рд╣рд░ рдЪрд╛рдЗрд▓реНрдб рдЯрд░реНрди рдХреЗ рдмрд╛рдж рдкреИрд░реЗрдВрдЯ рдореЗрдВ рдПрдХ рдкреНрд░рдЧрддрд┐ рдкрдВрдХреНрддрд┐ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░реЗрдВ | | `reportDelivery` | `quiet` | `quiet` рдкрдВрдХреНрддрд┐ рдХреЛ рдЕрдЧрд▓реЗ рдореЙрдбрд▓ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИ; `wakeup` рдкреИрд░реЗрдВрдЯ рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╣реЛрдиреЗ рдкрд░ рдкреИрд░реЗрдВрдЯ рдЯрд░реНрди рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ | | `reportThrottleMs` | `15000` | рдПрдХ рдЪрд╛рдЗрд▓реНрдб рдХреА рджреЛ рдкреНрд░рдЧрддрд┐ рдЗрдВрдЬреЗрдХреНрд╢рдиреЛрдВ рдХреЗ рдмреАрдЪ рдиреНрдпреВрдирддрдо рдЕрдВрддрд░ | | `reportSummaryMaxChars` | `300` | рдЗрдВрдЬреЗрдХреНрдЯ рдХреА рдЧрдИ рдкреНрд░рдЧрддрд┐ рдкрдВрдХреНрддрд┐ рдХреЗ рдкрд╛рда рдХреА рдХрдареЛрд░ рд╕реАрдорд╛ (рджреАрд░реНрдШрд╡реГрддреНрдд) | | `resultMaxChars` | `4000` | `bg_result` рдкрд╛рда рдХреА рдХрдареЛрд░ рд╕реАрдорд╛ (рджреАрд░реНрдШрд╡реГрддреНрдд, `truncated` рдЪрд┐рд╣реНрдирд┐рдд) | | `maxBackgroundAgents` | `4` | рдкреНрд░рддрд┐ рдкреИрд░реЗрдВрдЯ рд╕рддреНрд░ рдЧреИрд░-рд╕рдВрдЧреНрд░рд╣реАрдд рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдПрдЬреЗрдВрдЯреЛрдВ рдХреА рдХрдареЛрд░ рд╕реАрдорд╛ | | `autoArchive` | `true` | рдирд┐рд╖реНрдХреНрд░рд┐рдп-рд╕рдВрдЧреНрд░рд╣ рдЯреЙрдЧрд▓; `false` рдкрд░ рд╕реНрд╡реАрдк рдХрднреА рд╢рд╛рдВрдд рдЪрд╛рдЗрд▓реНрдб рд╕рдВрдЧреНрд░рд╣реАрдд рдирд╣реАрдВ рдХрд░рддрд╛ | | `idleTimeoutMinutes` | `120` | рд╡рд╣ рдирд┐рд╖реНрдХреНрд░рд┐рдпрддрд╛ рд╡рд┐рдВрдбреЛ рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рд╢рд╛рдВрдд рдЪрд╛рдЗрд▓реНрдб рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддрд╛ рд╣реИ (`>= 1`) | | `idleSweepIntervalMs` | `60000` | рд╕рдВрдЧреНрд░рд╣ рд╕реНрд╡реАрдк рдЕрд╡рдзрд┐ | | `maxLabelChars` | `120` | рдкреНрд░рджрд░реНрд╢рди-рд▓реЗрдмрд▓ рд╕реАрдорд╛ (рджреАрд░реНрдШрд╡реГрддреНрдд) | | `childProvider` | *(рд╡рд┐рд░рд╛рд╕рдд)* | рдЪрд╛рдЗрд▓реНрдб рдореЙрдбрд▓ рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдкреНрд░рджрд╛рддрд╛ рдорд╛рд░реНрдЧ | | `childModel` | *(рд╡рд┐рд░рд╛рд╕рдд)* | рдЪрд╛рдЗрд▓реНрдб рдореЙрдбрд▓ рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдореЙрдбрд▓ id | | `maxChildDepth` | *(рдХреЛрдИ рдирд╣реАрдВ)* | рдХрд┐рд╕реА рд╢реБрд░реБрдЖрдд рдХреЗ `max_depth` рддрд░реНрдХ рдХреА рдХреЙрдиреНрдлрд╝рд┐рдЧ рд╕реАрдорд╛ | | `allowedChildTools` | *(рдХреЛрдИ рдирд╣реАрдВ)* | `tool_filter` рдирд╛рдореЛрдВ рдХреА рдЕрдиреБрдорддрд┐-рд╕реВрдЪреА; рдЦрд╛рд▓реА/рдЕрдиреБрдкрд╕реНрдерд┐рдд = рдХреЛрдИ рд╕реАрдорд╛ рдирд╣реАрдВ | | `maxRooms` | `16` | рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЯреАрдо рд░реВрдо рдХреА рдХрдареЛрд░ рд╕реАрдорд╛ | | `maxMembersPerRoom` | `8` | рдкреНрд░рддрд┐ рд░реВрдо рд╕рджрд╕реНрдпреЛрдВ рдХреА рдХрдареЛрд░ рд╕реАрдорд╛ | | `maxRoomsPerMember` | `4` | рдПрдХ рд╕рджрд╕реНрдп рд╕рддреНрд░ рдХрд┐рддрдиреЗ рд░реВрдо рдЬреЙрдЗрди рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЗрд╕рдХреА рдХрдареЛрд░ рд╕реАрдорд╛ | | `busRetention` | `200` | рдкреНрд░рддрд┐ рд░реВрдо рд░рдЦреЗ рдЧрдП рдмрд╕ рд╕рдВрджреЗрд╢ | | `timelineRetention` | `500` | рдкреНрд░рддрд┐ рд░реВрдо рд░рдЦреЗ рдЧрдП рдЯрд╛рдЗрдорд▓рд╛рдЗрди рдИрд╡реЗрдВрдЯ | | `taskRetention` | `50` | рдкреНрд░рддрд┐ рд░реВрдо рд░рдЦреЗ рдЧрдП рдкреВрд░реНрдг рдХрд╛рд░реНрдп | | `maxMessageChars` | `4000` | рдПрдХ рд░реВрдо рд╕рдВрджреЗрд╢ рдХреЗ рдкрд╛рда рдХреА рдХрдареЛрд░ рд╕реАрдорд╛ (рдКрдкрд░ рдЕрд╕реНрд╡реАрдХрд╛рд░, рдХрднреА рдХрд╛рдЯрд╛ рдирд╣реАрдВ) | | `injectRoomBrief` | `true` | рд╕рджрд╕реНрдп рд╕рддреНрд░реЛрдВ рдореЗрдВ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд░реВрдо рдкрд░рд┐рдЪрдп рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░реЗрдВ (рдЬреЙрдЗрди + рд░рд┐рдЬрд╝реНрдпреВрдо) | | `roomOpenTimeoutMs` | `15000` | `team_rooms` рд╕реНрдЯреЛрд░реЗрдЬ рдбреЛрдореЗрди рдЦреБрд▓рдиреЗ рдХреА рдЕрдзрд┐рдХрддрдо рдкреНрд░рддреАрдХреНрд╖рд╛; рд╕рдордп рд╕рдорд╛рдкреНрддрд┐ рдкрд░ рд╣рд░ рд░реВрдо рдСрдкрд░реЗрд╢рди рд▓рдЯрдХрдиреЗ рдХреЗ рдмрдЬрд╛рдп `store-unavailable` рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд╡рд┐рдлрд▓ рд╣реЛрддрд╛ рд╣реИ | | `allowUnmarkedFacts` | `false` | `ignorable` рдорд╛рд░реНрдХрд░ рдЫреЛрдбрд╝рдиреЗ рд╡рд╛рд▓реЗ рд╣реЛрд╕реНрдЯ рдкрд░ рддрдереНрдп рдИрд╡реЗрдВрдЯ рдмрд▓рдкреВрд░реНрд╡рдХ рд▓рд┐рдЦреЗрдВ (рдЦрддрд░рдирд╛рдХ: рдмрд┐рдирд╛ рдорд╛рд░реНрдХрд░ рд╡рд╛рд▓реЗ рддрдереНрдп рдЕрдиреНрдп рд╣реЛрд╕реНрдЯ рдкрд░ рд╕рддреНрд░ рдЕрдкреНрд░рд╛рдкреНрдп рдмрдирд╛рддреЗ рд╣реИрдВ); рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкрд╣рдЪрд╛рди-рдФрд░-рдЫреЛрдбрд╝ рд╣реИ | | `observability` | `true` | рдкреНрд░рддрд┐-рдПрдЬреЗрдВрдЯ рд▓рд╛рдЧрдд/рд╕реНрдерд┐рддрд┐ рдирд┐рд░реАрдХреНрд╖рдг рд╕реНрд╡рд┐рдЪ: рдкреНрд░рддреНрдпреЗрдХ рдЪрд╛рдЗрд▓реНрдб рдЯрд░реНрди рдкрд░ рдПрдХ `metrics` рддрдереНрдп (рдЯреЛрдХрди, рдЯрд░реНрди рд╡реЙрд▓ рдЯрд╛рдЗрдо, рддреНрд░реБрдЯрд┐ рдлрд╝реНрд▓реИрдЧ) рдХреИрдкреНрдЪрд░ рдХрд░реЗрдВ рдФрд░ рд▓рд╛рдЧрдд рдкреИрдирд▓ рдХреЗ рд▓рд┐рдП рд╣рд░ рдкрдВрдХреНрддрд┐ рдХреЗ `metrics` рдпреЛрдЧ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ; `false` рдХреИрдкреНрдЪрд░ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИ (рдкреИрдирд▓ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдХреЛ рдЕрдиреБрдкрд▓рдмреНрдз рджрд┐рдЦрд╛рддрд╛ рд╣реИ) | | `inbound.enabled` | `false` | рдмрд╛рд╣рд░реА рдПрдЬреЗрдВрдЯ рд░рдирдЯрд╛рдЗрдо (OpenAI Agents SDK / CrewAI) рдХреЗ рд▓рд┐рдП stdio JSON-RPC рдЗрдирдмрд╛рдЙрдВрдб рдмреНрд░рд┐рдЬ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ; рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЕрдХреНрд╖рдо (fail-closed) | | `inbound.command` | *(рдХреЛрдИ рдирд╣реАрдВ)* | рдмрд╛рд╣рд░реА рд░рдирдЯрд╛рдЗрдо рд▓реЙрдиреНрдЪ рдХрдорд╛рдВрдб; рд╕рдХреНрд╖рдо рдФрд░ рдореМрдЬреВрдж рд╣реЛрдиреЗ рдкрд░ рдкреНрд▓рдЧрдЗрди рдЙрд╕реЗ spawn рдХрд░рддрд╛ рд╣реИ рдФрд░ рдиреНрдпреВрд▓рд╛рдЗрди-рдбрд┐рд▓рд┐рдорд┐рдЯреЗрдб JSON-RPC рд╕реВрдЪрдирд╛рдПрдБ рд╕реБрдирддрд╛ рд╣реИред рдЕрдиреБрдкрд╕реНрдерд┐рдд/рдЕрд╕реНрдкреЙрдиреЗрдмрд▓ = рдмреНрд░рд┐рдЬ рдирд┐рд╖реНрдХреНрд░рд┐рдп рд░рд╣рддрд╛ рд╣реИ (рд▓реЙрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛) | ## рдЙрдкрдХрд░рдг рдФрд░ рд╕рддрд╣реЗрдВ | рд╕рддрд╣ | рдкреНрд░рдХрд╛рд░ | рдиреЛрдЯреНрд╕ | |---|---|---| | `background_agent` | рдЯреВрд▓ | рдЯрд┐рдХрд╛рдК, рдЬрд╛рд░реА рд░рд╣рдиреЗ рдпреЛрдЧреНрдп рдЪрд╛рдЗрд▓реНрдб рд╢реБрд░реВ рдХрд░реЗрдВ (label, `tool_filter`, `persona`, `max_depth`) | | `bg_message` | рдЯреВрд▓ | agent id рд╕реЗ рдЪрд╛рдЗрд▓реНрдб рдХреЛ рдмрд╛рдж рдХрд╛ рдЯрд░реНрди рдкрд╣реБрдБрдЪрд╛рдПрдБ | | `bg_list` | рдЯреВрд▓ | рдЖрдкрдХреЗ рдПрдЬреЗрдВрдЯреЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ (рдпрд╛ `recursive: true` рд╕реЗ рд╡рдВрд╢рдЬ рдЯреНрд░реА) | | `bg_result` | рдЯреВрд▓ | рдЪрд╛рдЗрд▓реНрдб рдХрд╛ рдирд╡реАрдирддрдо рдЕрд╕рд┐рд╕реНрдЯреЗрдВрдЯ рдЖрдЙрдЯрдкреБрдЯ рдкрд╛рда рд▓реЗрдВ | | `bg_stop` | рдЯреВрд▓ | рд╡рд░реНрддрдорд╛рди рдЯрд░реНрди рдХреА рд░реБрдХрд╛рд╡рдЯ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВ | | `/room` | рдХрдорд╛рдВрдб | `create\|join\|leave\|list\|send\|tasks\|task add\|assign\|claim\|done\|delete` | | `room_list_rooms` / `room_post` / `room_read` | рдЯреВрд▓ | рд╕рдВрджреЗрд╢ рдмрд╕: рд╕реВрдЪреА, рдкреЛрд╕реНрдЯ (рдкреНрд░рд╕рд╛рд░рдг/рдирд┐рд░реНрджреЗрд╢рд┐рдд), рдЗрддрд┐рд╣рд╛рд╕ рдкрдврд╝реЗрдВ | | `room_list_tasks` / `room_create_task` / `room_claim_task` | рдЯреВрд▓ | рд╕рд╛рдЭрд╛ рдЯрд╛рд╕реНрдХ рдмреЛрд░реНрдб | | `room_transfer_task` / `room_complete_task` | рдЯреВрд▓ | рд╣реИрдВрдбрдСрдлрд╝ (рдЕрдиреБрдореЛрджрди-рдЧреЗрдЯреЗрдб) рдФрд░ рдкреВрд░реНрдгрддрд╛ | | `backgroundAgents` рдкреНрд░реЛрдЬреЗрдХреНрд╢рди | рд╕рддреНрд░ рдкреНрд░реЛрдЬреЗрдХреНрд╢рди | рдкреИрд░реЗрдВрдЯ рд▓реЙрдЧ рд╕реЗ рдореЛрдбрд╝реА рдЧрдИ рдбреИрд╢рдмреЛрд░реНрдб рдкрдВрдХреНрддрд┐рдпрд╛рдБ | | `teamRoom` рдкреНрд░реЛрдЬреЗрдХреНрд╢рди | рд╕рддреНрд░ рдкреНрд░реЛрдЬреЗрдХреНрд╢рди | `team-room/fact` рдИрд╡реЗрдВрдЯ рд╕реЗ рдореЛрдбрд╝реА рдЧрдИ рд╕рд╛рдЭрд╛ рдЯрд╛рдЗрдорд▓рд╛рдЗрди | | рд╡реЗрдм рд╕рд╛рдЗрдбрдмрд╛рд░ рдкреИрдирд▓ | рдХреНрд▓рд╛рдЗрдВрдЯ | рд▓рд╛рдЗрд╡ рд╕реНрдерд┐рддрд┐, рдЬрдВрдк, рд╕рдВрджреЗрд╢, рд░реЛрдХ, рдкрд░рд┐рдгрд╛рдо рдЭрд▓рдХ | ## рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ тАФ рдФрд░ рд░реАрд╕реНрдЯрд╛рд░реНрдЯ рдХреЗ рдмрд╛рдж рдХреНрдпреЛрдВ рдмрдЪрд╛ рд░рд╣рддрд╛ рд╣реИ рд╕рдм рдХреБрдЫ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдЙрдк-рдПрдЬреЗрдВрдЯ рд╕реАрдо рдкрд░ рдЪрд▓рддрд╛ рд╣реИ: `startContinuable`, `followup`, `interrupt`, `listChildren` тАФ рдкреНрд▓рдЧрдЗрди рдЕрдкрдирд╛ рдХреЛрдИ рд▓рд╛рдЗрдлрд╝рд╕рд╛рдЗрдХрд▓ рд░реВрдЯрд┐рдВрдЧ рдирд╣реАрдВ рдХрд░рддрд╛, рдХрднреА рдХрд┐рд╕реА рджреВрд╕рд░реЗ рд╕рддреНрд░ рдХреЗ `Agent` рдХреЛ рдирд╣реАрдВ рдЫреВрддрд╛, рдФрд░ рдХрднреА рдХрд┐рд╕реА рдкреНрд░реЛрд╕реЗрд╕ рдЯреНрд░реА рдХреЛ рдирд╣реАрдВ рдорд╛рд░рддрд╛ (рд░реЛрдХ = *рд░реБрдХрд╛рд╡рдЯ рдХрд╛ рдЕрдиреБрд░реЛрдз*; рдЯрд┐рдпрд░рдбрд╛рдЙрди рдХрдВрдЯрд┐рдиреНрдпреВрдПрд╢рди рдореИрдиреЗрдЬрд░ рдХрд╛ рдХрд╛рдо рд╣реИ)ред рдкреНрд▓рдЧрдЗрди рд╣рд░ рддрдереНрдп рдХреЛ **рдПрдХ рд╕рдВрд░рдЪрд┐рдд рдЪреИрдирд▓ рдФрд░ рдПрдХ рдореЙрдбрд▓-рджреГрд╢реНрдп рдЪреИрдирд▓** рдХреЗ рдЬрд╝рд░рд┐рдП рд▓рд┐рдЦрддрд╛ рд╣реИ: - **`background-agents/fact` рд╕рдВрд░рдЪрд┐рдд рддрдереНрдп рдИрд╡реЗрдВрдЯ** тАФ рдкрдВрдЬреАрдХреГрдд / рд╕рдВрджреЗрд╢ / рд░реЛрдХ / рдкреНрд░рдЧрддрд┐ / рд╕рдВрдЧреНрд░рд╣реАрдд рддрдереНрдп, рдкреИрд░реЗрдВрдЯ рд▓реЙрдЧ рдореЗрдВ рдХреЗрд╡рд▓-рд▓реЙрдЧ рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рд▓рд┐рдлрд╝рд╛рдлрд╝реЗ рдХрд╛ `ignorable: true` рдорд╛рд░реНрдХрд░ рд░рдЦрддреЗ рд╣реИрдВ; рдЬреЛ рдкрд╛рдардХ рдЙрд╕ рдкреНрд░рдХрд╛рд░ рдХреЛ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╡реЗ рд▓реЙрдЧ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рд░рд┐рдХреЙрд░реНрдб рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВред рдЬрд┐рди рд╣реЛрд╕реНрдЯ рдХрд╛ `Session.append` рдорд╛рд░реНрдХрд░ рд╕реЗ рдкреБрд░рд╛рдирд╛ рд╣реИ (`0.1.0-rc.8` рддрдХ рдХреА рд╣рд░ рд░рд┐рд▓реАрдЬрд╝ rc рд▓рд╛рдЗрди рдФрд░ `0.1.1-rc` рд▓рд╛рдЗрди rc.2 рддрдХ, рдФрд░ `0.1.2-rc` рд▓рд╛рдЗрди (рдЬреЛ рд▓рд┐рдлрд╝рд╛рдлрд╝рд╛ рдлрд╝реАрд▓реНрдб рдХреЗрд╡рд▓ рд╕рдВрдЧреНрд░рд╣реАрдд-рд▓реЙрдЧ рдкрдарди рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП рд░рдЦрддреА рд╣реИ рдФрд░ рдЕрднреА рднреА рдорд╛рд░реНрдХрд░ рдирд╣реАрдВ рд▓рдЧрд╛ рд╕рдХрддреА) рдЙрд╕реЗ рдЪреБрдкрдЪрд╛рдк рдЫреЛрдбрд╝ рджреЗрддреА рд╣реИрдВ тАФ рдорд╛рд░реНрдХрд░ рд╕реБрдзрд╛рд░ рдХреЗрд╡рд▓ master рдкрд░ рд╣реИ тАФ рдЬрд┐рд╕рд╕реЗ рдмрд┐рдирд╛ рдорд╛рд░реНрдХрд░ рд╡рд╛рд▓реЗ рд╕рддреНрд░ рд╕рдЦреНрдд рдмрд┐рд▓реНрдб рдкрд░ рдЕрдкреНрд░рд╛рдкреНрдп рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ) рдЙрдиреНрд╣реЗрдВ рдкрд╣рд▓реЗ append рд╕реЗ рдкрд╣рд▓реЗ рд╣реА рдкрд╣рдЪрд╛рди рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (peer рд╕рдВрд╕реНрдХрд░рдг рдкреВрд░реНрд╡-рдЬрд╛рдБрдЪ + рд▓реМрдЯреЗ рд▓рд┐рдлрд╝рд╛рдлрд╝реЗ рдХреА рдЬрд╛рдБрдЪ) рдФрд░ рддрдереНрдп append рдПрдХ рдмрд╛рд░ рдХреА рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рд╕рд╛рде рдЫреЛрдбрд╝ рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ тАФ рдЯрд┐рдХрд╛рдК рд╕реНрдЯреЛрд░, рд╕реВрдЪрдирд╛рдПрдБ рдФрд░ рдЙрдкрдХрд░рдг рдЪрд╛рд▓реВ рд░рд╣рддреЗ рд╣реИрдВ, рдкреНрд░реЛрдЬреЗрдХреНрд╢рди рдЦрд╛рд▓реА рдлреЛрд▓реНрдб рдореЗрдВ рдбрд┐рдЧреНрд░реЗрдб рд╣реЛрддреЗ рд╣реИрдВред - **`tool/result` рд░реАрдкреНрд▓реЗ рдореЗрдЯрд╛рдбреЗрдЯрд╛** тАФ рд╕рдВрд░рдЪрд┐рдд рдЪреИрдирд▓ рд╕реЗ рдкрд╣рд▓реЗ рд▓рд┐рдЦреЗ рдЧрдП рд▓реЙрдЧ рдореЗрдВ рд╡рд╣реА рддрдереНрдп (рдХреЗрд╡рд▓ рддрднреА рдореЛрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВ рдЬрдм рдХрд┐рд╕реА рдкрдВрдХреНрддрд┐ рдХреЗ рдкрд╛рд╕ рдХреЛрдИ рд╕рдВрд░рдЪрд┐рдд рдкреНрд░реЛрд╡реЗрдиреЗрдВрд╕ рди рд╣реЛ)ред - **рдЗрдВрдЬреЗрдХреНрдЯ рдХрд┐рдП рдЧрдП `user/message` рдиреЛрдЯрд┐рд╕** (рдореЙрдбрд▓-рджреГрд╢реНрдп), рд╕реНрд░реЛрдд `{ kind: 'plugin', plugin: 'dsh-background-agents' }` тАФ рдереНрд░реЙрдЯрд▓реНрдб рдкреНрд░рдЧрддрд┐ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдФрд░ рд╕рдВрдЧреНрд░рд╣ рдиреЛрдЯрд┐рд╕ (рдХреИрдиреЛрдирд┐рдХрд▓ рдЙрдкрд╕рд░реНрдЧ `[background-agent ] тАж`)ред - **рдЖрдзрд┐рдХрд╛рд░рд┐рдХ `subagent-settled` рдиреЛрдЯрд┐рд╕** тАФ рдЪрд╛рдЗрд▓реНрдб рдХрд╛ рдЯрд┐рдХрд╛рдК "settled" рддрдереНрдпред - рдЯреАрдо рд░реВрдо рд╡рд╣реА рдЕрдиреБрд╢рд╛рд╕рди рджрд░реНрд╢рд╛рддреЗ рд╣реИрдВ: рд╣рд░ рдбрд┐рд▓реАрд╡рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд░реВрдо рд╕рдВрджреЗрд╢ рд╕рджрд╕реНрдп рдХреЗ рдЕрдкрдиреЗ рд▓реЙрдЧ рдореЗрдВ рдПрдХ рдЯрд┐рдХрд╛рдК `user/message` рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рд╕рд╛рдЭрд╛ рдЯрд╛рдЗрдорд▓рд╛рдЗрди `team_rooms` рд╕реНрдЯреЛрд░реЗрдЬ рдбреЛрдореЗрди рдореЗрдВ рдХреЗрд╡рд▓-рд▓реЙрдЧ `team-room/fact` рдИрд╡реЗрдВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рддрд┐рдмрд┐рдореНрдмрд┐рдд рд╣реЛрддреА рд╣реИред `backgroundAgents` рдкреНрд░реЛрдЬреЗрдХреНрд╢рди рд╕рдВрд░рдЪрд┐рдд рдЪреИрдирд▓ рдХреЛ рдореЛрдбрд╝рддрд╛ рд╣реИ рдФрд░ рдкреБрд░рд╛рдиреЗ рдлрд╝реЛрд▓реНрдб рдХреЛ рдмрдирд╛рдП рд░рдЦрддрд╛ рд╣реИ; рдбреИрд╢рдмреЛрд░реНрдб рдорд╛рди рдФрд░ `bg_list` рддрдереНрдп рд╣рд░ рдмрд╛рд░ рдЦреЛрд▓рдиреЗ рдкрд░ рдорд╛рдирд╡-рдкрдардиреАрдп рдиреЛрдЯрд┐рд╕ рдкрд╛рда рдХреЛ рдкрд╛рд░реНрд╕ рдХрд┐рдП рдмрд┐рдирд╛ рдлрд┐рд░ рд╕реЗ рдмрдирддреЗ рд╣реИрдВред рдЬрдм рдХреИрдЯрд▓реЙрдЧ рд╕реНрд╡рдпрдВ рдЙрдкрд▓рдмреНрдз рди рд╣реЛ, рддреЛ `bg_list` рдПрдХ рд╕реНрдкрд╖реНрдЯ **`unrecoverable`** рдорд╛рд░реНрдХрд░ рд▓реМрдЯрд╛рддрд╛ рд╣реИ тАФ рдпрд╣ рдХрднреА рдЦрд╛рд▓реА рд╕реВрдЪреА рдирд╣реАрдВ рдЧрдврд╝рддрд╛ред ## рдмрд┐рд▓реНрдЯ-рдЗрди рдЙрдк-рдПрдЬреЗрдВрдЯ рдЯреВрд▓ рд╕реЗ рдЗрд╕рдХрд╛ рд╕рдВрдмрдВрдз harness рдХреЛрд░ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЙрдк-рдПрдЬреЗрдВрдЯ рдЯреВрд▓ рд░рдЦрддрд╛ рд╣реИ (`subagent`, `send_message`, `interrupt_agent` рдФрд░ рдЪрд╛рдЗрд▓реНрдб-рд╕рд╛рдЗрдб `report` рдЯреВрд▓)ред рдЗрд╕ рдкреНрд▓рдЧрдЗрди рдХреЗ `bg_*` рдЯреВрд▓ рдЙрдирдХреЗ **рд╕рддреНрд░-рд╕реНрдХреЛрдкреНрдб рд╕рд╛рдереА** рд╣реИрдВ; рджреЛрдиреЛрдВ рдХреЛ рдПрдХ рд╕рд╛рде рдорд╛рдЙрдВрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: | рдмрд┐рд▓реНрдЯ-рдЗрди рдЯреВрд▓ | рдпрд╣ рдкреНрд▓рдЧрдЗрди | рдЕрдВрддрд░ | |---|---|---| | `subagent` (`backgroundMode: 'continuable'`) | `background_agent` | рд╡рд╣реА `startContinuable` рд╕реАрдо; рдпрд╣ рдкреНрд▓рдЧрдЗрди рдкреНрд░рддрд┐-рдЪрд╛рдЗрд▓реНрдб tool_filter/persona/max_depth рд╕рддреНрдпрд╛рдкрди рдФрд░ рдкреНрд░рддрд┐-рд╕рддреНрд░ рд╕реАрдорд╛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ | | `send_message` | `bg_message` | рд╡рд╣реА рдбрд┐рд▓реАрд╡рд░реА рд╕рд┐рдореЗрдВрдЯрд┐рдХреНрд╕; `bg_message` рдЗрд╕ рд╡рд╛рд░реНрддрд╛рд▓рд╛рдк рдХреЗ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдПрдЬреЗрдВрдЯреЛрдВ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкреНрд░реЛрдЬреЗрдХреНрд╢рди рддрдереНрдп рдмрдирд╛рдП рд░рдЦрддрд╛ рд╣реИ | | `interrupt_agent` | `bg_stop` | рд╡рд╣реА рд░реБрдХрд╛рд╡рдЯ рд╕рд┐рдореЗрдВрдЯрд┐рдХреНрд╕; `bg_stop` рдПрдХ рд╕рдВрд░рдЪрд┐рдд рд░реЛрдХ рддрдереНрдп рднреА рд░рд┐рдХреЙрд░реНрдб рдХрд░рддрд╛ рд╣реИ | | рдЪрд╛рдЗрд▓реНрдб-рд╕рд╛рдЗрдб `report` рдЯреВрд▓ | autoReport | рдмрд┐рд▓реНрдЯ-рдЗрди рдХреЛ рдЪрд╛рдЗрд▓реНрдб рдореЙрдбрд▓ рд╕реНрд╡рдпрдВ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ; рдпрд╣ рдкреНрд▓рдЧрдЗрди **рд╣рд░ рдЪрд╛рдЗрд▓реНрдб рдЯрд░реНрди рдХреЗ рдмрд╛рдж рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ** рдереНрд░реЙрдЯрд▓реНрдб рдкреНрд░рдЧрддрд┐ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рддрд╛ рд╣реИ | рдХреЛрд░ рдЯреВрд▓ рдореЗрдВ рдЬреЛ рдирд╣реАрдВ рд╣реИ: `bg_list`, `bg_result`, рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╕рдВрдЧреНрд░рд╣, рдФрд░ рдкреНрд░рддрд┐-рдкреИрд░реЗрдВрдЯ рдореЛрдбрд╝рд╛ рдЧрдпрд╛ рдкреИрдирд▓ рдкреНрд░реЛрдЬреЗрдХреНрд╢рдиред рджрд╛рдпрд░реЗ рдореЗрдВ рдирд╣реАрдВ: рд╢реЗрдбреНрдпреВрд▓реНрдб рдЯреНрд░рд┐рдЧрд░рд┐рдВрдЧ (рд╢реЗрдбреНрдпреВрд▓ рд╕реАрдо рдореМрдЬреВрдж рд╣реИ), рдХреНрд░реЙрд╕-рдорд╢реАрди/рд░рд┐рдореЛрдЯ рдПрдЬреЗрдВрдЯ, рдФрд░ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдЙрдк-рдПрдЬреЗрдВрдЯ рдПрдХреНрдЯрд┐рд╡реЗрд╢рди рдХреЙрдиреНрдЯреНрд░реИрдХреНрдЯ рдореЗрдВ рдХреЛрдИ рдмрджрд▓рд╛рд╡ред ## рдпрд╣ рдкреНрд▓рдЧрдЗрди рдирд╣реАрдВ рд╣реИ | рдкреНрд░реЛрдЬреЗрдХреНрдЯ | рдпрд╣ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ | рд╕реАрдорд╛ | |---|---|---| | [titanwings/dsh-automation](https://github.com/titanwings/dsh-automation) | рдирдП рдПрдЬреЗрдВрдЯ рд╕рддреНрд░реЛрдВ рдореЗрдВ рд╢реЗрдбреНрдпреВрд▓реНрдб рдХреЛрдбрд┐рдВрдЧ рдХрд╛рд░реНрдп | рдпрд╣ **рдХрдм** рдХрд╛рд░реНрдп рдЪрд▓рддреЗ рд╣реИрдВ рдЗрд╕рдХрд╛ рдорд╛рд▓рд┐рдХ рд╣реИ (рд╢реЗрдбреНрдпреВрд▓рд┐рдВрдЧ)ред рдпрд╣ рдкреНрд▓рдЧрдЗрди рдПрдХ рд▓рдВрдмреА рд╡рд╛рд░реНрддрд╛рд▓рд╛рдк рдХреА **рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рд╕реНрдЯреАрдпрд░рд┐рдВрдЧ** рдХрд╛ рдорд╛рд▓рд┐рдХ рд╣реИ тАФ рдХреЛрдИ рд╢реЗрдбреНрдпреВрд▓рд░ рд╕реАрдо рдирд╣реАрдВ, рдХреЛрдИ cron рдирд╣реАрдВред | | [vlln/dsh-task-status](https://github.com/vlln/dsh-task-status) | рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб *рдЬреЙрдм* рдХреЗ рд▓рд┐рдП рд╕реНрдЯреЗрдЯрд╕ рдмрд╛рд░ (рдкреНрд░рдЧрддрд┐ + рдЖрдЙрдЯрдкреБрдЯ рдЯреЗрд▓) | рдпрд╣ рдЯреВрд▓-рд╕реНрддрд░ рдХреЗ рдЬреЙрдм **рджрд┐рдЦрд╛рддрд╛** рд╣реИред рдпрд╣ рдкреНрд▓рдЧрдЗрди **рдПрдЬреЗрдВрдЯ рд╕рддреНрд░** рдмрдирд╛рддрд╛ рдФрд░ рдЪрд▓рд╛рддрд╛ рд╣реИ; рдЗрд╕рдХрд╛ рдбреИрд╢рдмреЛрд░реНрдб рдЙрд╕рдХрд╛ рдПрдХ рдкреИрдирд▓ рд╣реИ, рдЙрддреНрдкрд╛рдж рдирд╣реАрдВред | | [YYTbit/dsh-plugin-agent-dashboard](https://github.com/YYTbit/dsh-plugin-agent-dashboard) | рдорд▓реНрдЯреА-рдПрдЬреЗрдВрдЯ рдбреИрд╢рдмреЛрд░реНрдб рд╕реНрдХрд┐рд▓ | рдкреНрд░рджрд░реНрд╢рди-рдЙрдиреНрдореБрдЦред рдЗрд╕ рдкреНрд▓рдЧрдЗрди рдХреА рдкрдВрдХреНрддрд┐рдпрд╛рдБ **рдХрд╛рд░реНрд░рд╡рд╛рдИ рдпреЛрдЧреНрдп** рд╣реИрдВ: рдЪрд╛рдЗрд▓реНрдб рд╕рддреНрд░ рдореЗрдВ рдЬрд╛рдПрдБ, рд╕рдВрджреЗрд╢ рднреЗрдЬреЗрдВ, рд░реЛрдХреЗрдВ тАФ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдХрдВрдЯреНрд░реЛрд▓ рдкреНрд▓реЗрди рдХреЗ рдЬрд╝рд░рд┐рдПред | ## рдЕрдиреБрдорддрд┐рдпрд╛рдБ рдФрд░ рдбреЗрдЯрд╛ - **рдЕрдиреБрдорддрд┐рдпрд╛рдБ**: workshop рдореЗрдирд┐рдлрд╝реЗрд╕реНрдЯ `session:append`, `subagent:spawn` рдФрд░ `tools:register` рдШреЛрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред - **рдбреЗрдЯрд╛**: рдЯреАрдо рд░реВрдо `team_rooms` рд╕реНрдЯреЛрд░реЗрдЬ рдбреЛрдореЗрди (SQLite рдпрд╛ JSONL тАФ рдХреЛрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реЗрд╡рд╛ рдирд╣реАрдВ) рдореЗрдВ рд░рд╣рддреЗ рд╣реИрдВ; рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб-рдПрдЬреЗрдВрдЯ рддрдереНрдп рдкреИрд░реЗрдВрдЯ рд╕рддреНрд░ рд▓реЙрдЧ рдореЗрдВ рд░рд╣рддреЗ рд╣реИрдВред рдХреЛрдИ рдЕрд▓рдЧ рдбреЗрдЯрд╛рдмреЗрд╕ рдирд╣реАрдВ, рдХреЛрдИ рдиреЗрдЯрд╡рд░реНрдХ рдирд╣реАрдВред - **рд╕рддреНрд░ рд▓реЙрдЧ**: рдорд╛рд░реНрдХрд░ рдХрд╛ рд╕рдореНрдорд╛рди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╣реЛрд╕реНрдЯ рдкрд░ `background-agents/fact` рдФрд░ `team-room/fact` рдИрд╡реЗрдВрдЯ рд▓рд┐рдлрд╝рд╛рдлрд╝реЗ рдХреЗ `ignorable: true` рдорд╛рд░реНрдХрд░ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВ (рдорд╛рд░реНрдХрд░ рд╕реЗ рдкрд╣рд▓реЗ рдХреЗ рд╣реЛрд╕реНрдЯ рдкрд╣рдЪрд╛рдиреЗ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ append рдЫреЛрдбрд╝ рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ тАФ рджреЗрдЦреЗрдВ `allowUnmarkedFacts`); рдореЙрдбрд▓-рджреГрд╢реНрдп рдкреНрд░рдЧрддрд┐ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдФрд░ рд░реВрдо рдбрд┐рд▓реАрд╡рд░реА рд╡рд╛рд╕реНрддрд╡рд┐рдХ `user/message` рд░рд┐рдХреЙрд░реНрдб рд╣реИрдВред ## рд╕реБрд░рдХреНрд╖рд╛ рд╕реАрдорд╛рдПрдБ - **рдХреЗрд╡рд▓ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕реАрдоред** рд╢реБрд░реБрдЖрдд, рд╕рдВрджреЗрд╢ рдФрд░ рд░реЛрдХ `startContinuable` / `followup` / `interrupt` рдкрд░ рдкрддрд▓реЗ рдПрдбрд╛рдкреНрдЯрд░ рд╣реИрдВ; рд░реЛрдХ рд░реБрдХрд╛рд╡рдЯ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХрднреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рдорд╛рд░рддрд╛ред - **`tool_filter` рдХреЗрд╡рд▓ рд╕реАрдорд┐рдд рдХрд░рддрд╛ рд╣реИред** рдпрд╣ рдЪрд╛рдЗрд▓реНрдб рдХреА рджреГрд╖реНрдЯрд┐ рд╕реЗ рдЯреВрд▓ рд╣рдЯрд╛рддрд╛ рд╣реИ тАФ рдХрднреА рдирдП рдирд╣реАрдВ рджреЗрддрд╛; рдирд╛рдо `allowedChildTools` рд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрддреЗ рд╣реИрдВред - **рдЕрдиреБрдореЛрджрди-рдЧреЗрдЯреЗрдб рд╣реИрдВрдбрдСрдлрд╝ред** `room_transfer_task` рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдЕрдиреБрдореЛрджрди рд╕реАрдо рд╕реЗ рдЧреБрдЬрд░рддрд╛ рд╣реИ рдФрд░ рдХреЛрдИ answerer рд╕реНрд╡реАрдХреГрддрд┐ рди рджреЗрдиреЗ рдкрд░ рд╡рд┐рдлрд▓-рдмрдВрдж рд╣реЛрддрд╛ рд╣реИред - **рдореЙрдбрд▓-рджреГрд╢реНрдп тЯ║ рд░рд┐рдХреЙрд░реНрдбреЗрдбред** рд╣рд░ рдбрд┐рд▓реАрд╡рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд░реВрдо рд╕рдВрджреЗрд╢ рд╕рджрд╕реНрдп рдХреЗ рдЕрдкрдиреЗ рд▓реЙрдЧ рдореЗрдВ рдПрдХ рдЯрд┐рдХрд╛рдК `user/message` рд╣реИ; рд╕рд╛рдЭрд╛ рдЯрд╛рдЗрдорд▓рд╛рдЗрди рдХреЗрд╡рд▓-рд▓реЙрдЧ `team-room/fact` рдИрд╡реЗрдВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рддрд┐рдмрд┐рдореНрдмрд┐рдд рд╣реЛрддреА рд╣реИред - **рдХреЛрдИ рд╢реЗрдбреНрдпреВрд▓рд┐рдВрдЧ рдирд╣реАрдВ, рдХреЛрдИ рдХреНрд░реЙрд╕-рдорд╢реАрди рдПрдЬреЗрдВрдЯ рдирд╣реАрдВред** рдЪрд╛рдЗрд▓реНрдб рдбрд┐рдкреНрд▓реЙрдпрдореЗрдВрдЯ рдХреЗ рдкреНрд░реЛрд╕реЗрд╕-рд▓реЛрдХрд▓ рдЬрд╛рд░реА рд╕рддреНрд░ рд╣реИрдВред ## рдХреНрд░реЙрд╕-рдЗрдХреЛрд╕рд┐рд╕реНрдЯрдо рдЗрдирдмрд╛рдЙрдВрдб (P2) рдмрд╛рд╣рд░реА рдПрдЬреЗрдВрдЯ рд░рдирдЯрд╛рдЗрдо тАФ OpenAI Agents SDK, CrewAI рдФрд░ рд╕рдорд╛рди тАФ рдПрдХ **stdio рдкрд░ рдиреНрдпреВрд▓рд╛рдЗрди-рдбрд┐рд▓рд┐рдорд┐рдЯреЗрдб JSON-RPC 2.0 рдмреНрд░рд┐рдЬ** рдХреЗ рдЬрд╝рд░рд┐рдП рдЯреАрдо рд░реВрдо рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдбрд╛рдпрд░реЗрдХреНрдЯ-рдХрдиреЗрдХреНрдЯ рдиреНрдпреВрдирддрдо рд╕реЗрдЯ; рдкреВрд░реНрдг ACP рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╕рдВрдЧрддрддрд╛ upstream рд╕реАрдо рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддреА рд╣реИ)ред `inbound.enabled` рдФрд░ `inbound.command` рд╕реЗ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ; рд░рдирдЯрд╛рдЗрдо рдкреНрд░рддрд┐ рдкрдВрдХреНрддрд┐ рдПрдХ JSON рд╕реВрдЪрдирд╛ рднреЗрдЬрддрд╛ рд╣реИ рдЬрд╣рд╛рдБ `method` рдИрд╡реЗрдВрдЯ рд╣реИ (`agent_started` рдмреЛрд░реНрдб рдкрд░ рдХрд╛рд░реНрдб рдЦреЛрд▓рддрд╛ рд╣реИ, `agent_message` рдмрд╕ рдкрд░ рдкреЛрд╕реНрдЯ рдХрд░рддрд╛ рд╣реИ, `agent_finished` рдХрд╛рд░реНрдб рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИ)ред рдЕрдорд╛рдиреНрдп рд╕рдВрджреЗрд╢ рдЫреЛрдбрд╝ рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ JSON-RPC рддреНрд░реБрдЯрд┐ рд▓реМрдЯрд╛рдИ рдЬрд╛рддреА рд╣реИ; рд╢реБрд░реБрдЖрдд рдФрд░ рд░реЛрдХ disposer рд╕реЗ рд╣реЛрддреА рд╣реИред ## рдЬреНрдЮрд╛рдд рд╕реАрдорд╛рдПрдБ - рдЯреАрдо рд░реВрдо рдХреЛ рд╕реНрдЯреЛрд░реЗрдЬ рдбреЛрдореЗрди рдмрдиреЗ рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ; `@deepseek-ai/dsh-storage-domain` рдХреЗ рдмрд┐рдирд╛ `/room` рдХрдорд╛рдВрдб рдФрд░ `room_*` рдЯреВрд▓ рдЕрдХреНрд╖рдо рд░рд╣рддреЗ рд╣реИрдВ (рдкрд╛рдБрдЪ `bg_*` рдЯреВрд▓ рдлрд┐рд░ рднреА рд▓реЛрдб рд╣реЛрддреЗ рд╣реИрдВ)ред - `provider` рдХреЛ рдЬрд╛рд░реА-рдХреНрд╖рдо рдкреНрд░рджрд╛рддрд╛ (`prepareContinuable`) рдирд╛рдо рджреЗрдирд╛ рд╣реЛрдЧрд╛; рдЕрдиреБрдкрд╕реНрдерд┐рдд рдкреНрд░рджрд╛рддрд╛ рд╕реЗ `background_agent` рддрдм рддрдХ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ рдЬрдм рддрдХ рд╡рд╣ рди рдЖ рдЬрд╛рдПред - `maxBackgroundAgents` рд╕рддреНрд░ рдХреЗ **рд╣рд░** рдЬрд╛рд░реА рдкреНрд░рддреНрдпрдХреНрд╖ рдЪрд╛рдЗрд▓реНрдб рдХрд╛ рд╕рд╛рдЭрд╛ рдмрдЬрдЯ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдмрд┐рд▓реНрдЯ-рдЗрди `subagent` рдЯреВрд▓ рд╕реЗ рд╢реБрд░реВ рдХрд┐рдП рдЧрдП рднреА рд╢рд╛рдорд┐рд▓ рд╣реИрдВред - рдПрдХ-рдмрд╛рд░ рдХреЗ рдЪрд╛рдЗрд▓реНрдб рдХрднреА рд╕реВрдЪреАрдмрджреНрдз рдпрд╛ рд╕рдВрджреЗрд╢рд┐рдд рдирд╣реАрдВ рд╣реЛрддреЗ тАФ `bg_list` рдХреЗрд╡рд▓ рдЬрд╛рд░реА рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд░рдЦрддрд╛ рд╣реИред - рдЪрд╛рдЗрд▓реНрдб рдкреНрд░реЛрд╕реЗрд╕-рд▓реЛрдХрд▓ рд╣реЛрддреЗ рд╣реИрдВ: рд╢реЗрдбреНрдпреВрд▓ рд╕реАрдо "рдХрдм" рдХрд╛ рдорд╛рд▓рд┐рдХ рд╣реИ, рдпрд╣ рдкреНрд▓рдЧрдЗрди рдПрдХ рд╕рдХреНрд░рд┐рдп рдмрд╛рддрдЪреАрдд рдЪрд▓рд╛рдиреЗ рдХрд╛ рдорд╛рд▓рд┐рдХ рд╣реИред ## рд╡рд┐рдХрд╛рд╕ ```sh pnpm install # рдХреЗрд╡рд▓ tooling; harness рдкреИрдХреЗрдЬ рдХрд┐рд╕реА рд╕рд╣-рдЪреЗрдХрдЖрдЙрдЯ рдХреЗ рд╡рд┐рд░реБрджреНрдз рд╣рд▓ рд╣реЛрддреЗ рд╣реИрдВ pnpm run typecheck # рд╕рдЦреНрдд TS, node + client рдкреНрд░реЛрдЧреНрд░рд╛рдо pnpm test # vitest: рдпреВрдирд┐рдЯ + рдПрдВрдб-рдЯреВ-рдПрдВрдб рдкрд░реАрдХреНрд╖рдг (рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдк-рдПрдЬреЗрдВрдЯ рд╕реАрдо, рд╕реНрдХреНрд░рд┐рдкреНрдЯреЗрдб LLM, jsdom рдкреИрдирд▓) pnpm run build # lib/index.js (node рдЖрдзрд╛) + lib/client.js (рд╡реЗрдм рдХреНрд▓рд╛рдЗрдВрдЯ рдмрдВрдбрд▓) pnpm run gen-aliases # рдЪреЗрдХрдЖрдЙрдЯ рд╣рд┐рд▓рдиреЗ рдХреЗ рдмрд╛рдж harness рдкреИрдХреЗрдЬ рдкрде рдлрд┐рд░ рдореИрдк рдХрд░реЗрдВ ``` рдПрдХ рдмрд┐рдирд╛-рдХреБрдВрдЬреА рдПрдВрдб-рдЯреВ-рдПрдВрдб рдбреЗрдореЛ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреИрд░реЗрдВрдЯ рд╕рддреНрд░ рдФрд░ рдПрдХ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдЪрд╛рдЗрд▓реНрдб рдХреЛ рдПрдХ рдирд┐рдпрддрд╛рддреНрдордХ рд╕реНрдХреНрд░рд┐рдкреНрдЯреЗрдб LLM рдХреЗ рдЬрд╝рд░рд┐рдП рдЪрд▓рд╛рддрд╛ рд╣реИ (рдХреЛрдИ API key рдирд╣реАрдВ; `dev/` gitignore рдореЗрдВ рд╣реИ тАФ рдкрдереЛрдВ рдХреЛ рдЕрдкрдиреЗ checkout рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдмрджрд▓реЗрдВ): ```powershell $env:DSH_HOME = 'D:/deepseek-harness/Project/Plugins/dsh-background-agents/dev/dsh-home' pnpm dsh --profile headless --patch dev/cordis.yml "уАРчИ╢ф╝ЪшпЭуАСщй▒хКихРОхП░ agent ц╝Фчд║" ``` ## рд╡рд┐рд╖рдп `dsh`, `dsh-plugin`, `deepseek-harness`, `subagent`, `background-agent`, `background-agents`, `agent-dashboard`, `conversation-steering`, `team-rooms`, `multi-agent`, `message-bus`, `task-board`, `collaboration` ## рдпреЛрдЧрджрд╛рдирдХрд░реНрддрд╛ - [@PerryLink](https://github.com/PerryLink) тАФ рдирд┐рд░реНрдорд╛рддрд╛ рдФрд░ рдЕрдиреБрд░рдХреНрд╖рдХ: рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдЙрдк-рдПрдЬреЗрдВрдЯ рд╕реАрдо рдкрд░ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб-рдПрдЬреЗрдВрдЯ рд░рдирдЯрд╛рдЗрдо, рдЯреАрдо-рд░реВрдо рд╣рдм, рд╡реЗрдм UI рд╕рд╛рдЗрдбрдмрд╛рд░ рдкреИрдирд▓, рд╕рддреНрд░ рдкреНрд░реЛрдЬреЗрдХреНрд╢рди, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝, CI/CD рдФрд░ рд░рд┐рд▓реАрдЬрд╝ред ## PerryLink DSH рдкреНрд▓рдЧрдЗрди рдкрд░рд┐рд╡рд╛рд░ рдпрд╣ рдкреНрд░реЛрдЬреЗрдХреНрдЯ [PerryLink](https://github.com/PerryLink) рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрд░рдХреНрд╖рд┐рдд [42 DeepSeek Harness рдкреНрд▓рдЧрдЗрдиреЛрдВ](https://github.com/PerryLink) рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдЕрдЧрд░ рдпрд╣ рдЖрдкрдХреА рдорджрдж рдХрд░рддрд╛ рд╣реИ, рддреЛ рдмрд╛рдХреА рднреА рдХрд░реЗрдВрдЧреЗ: | Plugin | One-liner | |---|---| | **[dsh-auto-review](https://github.com/PerryLink/dsh-auto-review)** | рдЕрдиреБрдореЛрджрди рд╢реНрд░реГрдВрдЦрд▓рд╛ рдкрд░ рджреНрд╡рд┐рддреАрдп-рдореЙрдбрд▓ рд╕реНрд╡рддрдГ-рд╕рдореАрдХреНрд╖рд╛, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╡рд┐рдлрд▓-рдмрдВрдж | | | **[dsh-budget](https://github.com/PerryLink/dsh-budget)** | DeepSeek Harness рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧрдд рдкреНрд░рд╢рд╛рд╕рди: рдмрдЬрдЯ, рдХрд╛рд░реНрдмрди рдФрд░ рд╡рд┐рд▓рдВрдмрддрд╛ рдПрдХ рдкреИрдирд▓ рдореЗрдВред | | | **[dsh-checkpoint-rewind](https://github.com/PerryLink/dsh-checkpoint-rewind)** | Claude Code /rewind-рд╕рдорддреБрд▓реНрдп: рд╕реНрдиреИрдкрд╢реЙрдЯ, рд╕рддреНрд░ рдлрд╝реЙрд░реНрдХ, рдПрдХ-рдмрд╛рд░ рдкреБрдирд░реНрд╕реНрдерд╛рдкрдирд╛ | | | **[dsh-claude-move](https://github.com/PerryLink/dsh-claude-move)** | Claude Code рд╕рддреНрд░, рдореЗрдореЛрд░реА, рдХреМрд╢рд▓ рдФрд░ CLAUDE.md рдХреЛ DSH рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ | | | **[dsh-click](https://github.com/PerryLink/dsh-click)** | DeepSeek Harness рдХреЗ рд▓рд┐рдП рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдиреЗрдЯрд┐рд╡ рдбреЗрд╕реНрдХрдЯреЙрдк рдирд┐рдпрдВрддреНрд░рдг тАФ Windows рдкрд╣рд▓реЗред | | | **[dsh-composer-history](https://github.com/PerryLink/dsh-composer-history)** | рд╡реЗрдм рдХрдВрдкреЛрдЬрд╝рд░ рдХреЗ рд▓рд┐рдП рдЯрд░реНрдорд┐рдирд▓-рд╢реИрд▓реА рдЗрдирдкреБрдЯ рдЗрддрд┐рд╣рд╛рд╕: рддреАрд░, Ctrl+R рдЦреЛрдЬ | | | **[dsh-data-quality](https://github.com/PerryLink/dsh-data-quality)** | рдбреЗрдЯрд╛рд╕реЗрдЯ рдЧреБрдгрд╡рддреНрддрд╛ рдЬрд╛рдБрдЪ рд╡ рдЙрджреНрдзрд░рдг рд╕рддреНрдпрд╛рдкрди (рдпрд╣рд╛рдБ рдЙрдкрднреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕рдВрдЦреНрдпрд╛-рд╕реЗрддреБ) | | | **[dsh-defend](https://github.com/PerryLink/dsh-defend)** | DeepSeek Harness рдХреЗ рд▓рд┐рдП рдкреНрд░реЙрдореНрдкреНрдЯ-рдЗрдВрдЬреЗрдХреНрд╢рди, рдЬреЗрд▓рдмреНрд░реЗрдХ рдФрд░ рд╕реАрдХреНрд░реЗрдЯ-рд▓реАрдХ рд░рдХреНрд╖рд╛ред | | | **[dsh-doublecheck](https://github.com/PerryLink/dsh-doublecheck)** | рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ-рдЕрдиреБрд╢рд╛рд╕рди рд░рдХреНрд╖рдХ: рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреА рдкреВрдЫрддрд╛рдЫ, рдкрд░реАрдХреНрд╖рдг рджреНрд╡рд╛рд░, рдкреНрд░рддрд┐рджреНрд╡рдВрджреНрд╡реА рд╕рдореАрдХреНрд╖рд╛ | | | **[dsh-draw](https://github.com/PerryLink/dsh-draw)** | DeepSeek Harness рдХреЗ рд▓рд┐рдП рдПрдХреАрдХреГрдд рд╕реНрдереИрддрд┐рдХ-рдЫрд╡рд┐ рдирд┐рд░реНрдорд╛рдг рд░реВрдЯрд┐рдВрдЧред | | | **[dsh-fast](https://github.com/PerryLink/dsh-fast)** | DeepSeek Harness рдХреЗ рд▓рд┐рдП рд░реАрдб-рдУрдирд▓реА рдкреНрд░рджрд░реНрд╢рди рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХреНрд╕ред | | | **[dsh-fund-research](https://github.com/PerryLink/dsh-fund-research)** | рдЪреАрдиреА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдореНрдпреВрдЪреБрдЕрд▓ рдлрдВрдб рдХреЗ рд▓рд┐рдП рдирд┐рдпрддрд╛рддреНрдордХ рдЕрдиреБрд╕рдВрдзрд╛рди рд░рд┐рдкреЛрд░реНрдЯ | | | **[dsh-github](https://github.com/PerryLink/dsh-github)** | DSH рдХреЗ рд▓рд┐рдП GitHub PR/issues рдПрдХреАрдХрд░рдг, рд╣рд░ рд▓реЗрдЦрди рдЕрдиреБрдореЛрджрди-рджреНрд╡рд╛рд░рд┐рдд | | | **[dsh-industry-research](https://github.com/PerryLink/dsh-industry-research)** | рдЙрджреНрдпреЛрдЧ-рдЕрдиреБрд╕рдВрдзрд╛рди рдСрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрд╢рди рдЬреЛ рдЗрд╕ рдкреНрд▓рдЧрд┐рди рдХреЗ `ctx.researchReport.assemble` рд╕реЗ рдбрд┐рд▓реАрд╡рд░реЗрдмрд▓ рд╕реАрд▓ рдХрд░рддрд╛ рд╣реИ | | | **[dsh-library](https://github.com/PerryLink/dsh-library)** | DeepSeek Harness рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдп рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЬреНрдЮрд╛рдирдХреЛрд╢ред | | | **[dsh-local-ai](https://github.com/PerryLink/dsh-local-ai)** | DeepSeek Harness рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдп-рдореЙрдбрд▓ (Ollama) рдПрдХреАрдХрд░рдгред | | | **[dsh-lsp-actions](https://github.com/PerryLink/dsh-lsp-actions)** | рднрд╛рд╖рд╛ рд╕рд░реНрд╡рд░реЛрдВ рдкрд░ LSP рдирд┐рджрд╛рди, рдлрд╝реЙрд░реНрдореЗрдЯрд┐рдВрдЧ, рдкреВрд░реНрдгрддрд╛, рдХреЛрдб рдХреНрд░рд┐рдпрд╛рдПрдБ рдФрд░ рдирд╛рдо рдмрджрд▓рдирд╛ | | | **[dsh-mask](https://github.com/PerryLink/dsh-mask)** | PII рдорд╛рд╕реНрдХрд┐рдВрдЧ рдорд┐рдбрд▓рд╡реЗрдпрд░: рдореЙрдбрд▓ рд╕реАрдорд╛ рдкрд░ рдЕрдирд╛рдо рдХрд░реЗрдВ, рдбрд┐рд╕реНрдкреНрд▓реЗ рд▓реЗрдпрд░ рдкрд░ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ | | | **[dsh-mcp-panel](https://github.com/PerryLink/dsh-mcp-panel)** | рдХреЗрд╡рд▓-рдкрдврд╝рдиреЗ рд╡рд╛рд▓рд╛ MCP рд░рдирдЯрд╛рдЗрдо рдкреИрдирд▓: /mcp рдХрдорд╛рдВрдб + рд╕реНрдерд┐рддрд┐, рдЯреВрд▓ рдФрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╡рд╛рд▓рд╛ Settings рдЯреИрдм | | | **[dsh-memento](https://github.com/PerryLink/dsh-memento)** | рдЕрдиреБрдореЛрджрди-рджреНрд╡рд╛рд░рд┐рдд рдХреНрд░реЙрд╕-рд╕рддреНрд░ рдореЗрдореЛрд░реА: ctx.memory рд╕реАрдо + SQLite + рдореЗрдореЛрд░реА рдЯреВрд▓ | | | **[dsh-observe](https://github.com/PerryLink/dsh-observe)** | DeepSeek Harness рдХреЗ рд▓рд┐рдП OpenTelemetry рдФрд░ Langfuse рдЕрд╡рд▓реЛрдХрдиреАрдпрддрд╛ рдирд┐рд░реНрдпрд╛рддрдХред | | | **[dsh-output-styles](https://github.com/PerryLink/dsh-output-styles)** | Claude Code outputStyles-рд╕рдорддреБрд▓реНрдп рд░рдирдЯрд╛рдЗрдо рд╢реИрд▓реА рдмрджрд▓рд╛рд╡ | | | **[dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules)** | рдСрдбрд┐рдЯ рдХреЗ рд╕рд╛рде Claude Code-рд╢реИрд▓реА рдШреЛрд╖рдгрд╛рддреНрдордХ allow/deny/ask рдЕрдиреБрдорддрд┐ рдирд┐рдпрдо | | | **[dsh-personal-directive](https://github.com/PerryLink/dsh-personal-directive)** | рд╢реАрд░реНрд╖-рдмрд╛рд░ рдЯреЙрдЧрд▓ рдХреЗ рд╕рд╛рде рд╡реНрдпрдХреНрддрд┐рдЧрдд рдирд┐рд░реНрджреЗрд╢ рдЗрдВрдЬреЗрдХреНрдЯрд░ (рдлреНрд░реЗрдорд╡рд░реНрдХ рд╕рдВрд╕реНрдХрд░рдг) | | **[dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide)** | рдорд╛рдБрдЧ рдкрд░ рдПрдЬреЗрдВрдЯ рдХреМрд╢рд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд▓рдЧрдЗрди-рд╡рд┐рдХрд╛рд╕ рдЬреНрдЮрд╛рди рдЖрдзрд╛рд░ | | | **[dsh-reach](https://github.com/PerryLink/dsh-reach)** | рдорд▓реНрдЯреА-рдЪреИрдирд▓ рдЕрдиреБрдореЛрджрди/рдкреНрд░рд╢реНрди рдмреНрд░рд┐рдЬ: WeChat/Telegram/Feishu, рд╕рддреНрд░ рдХрдВрд╕реЛрд▓ | | **[dsh-research-report](https://github.com/PerryLink/dsh-research-report)** | рд╕рд╛рдордЧреНрд░реА-рдкрддрд╛ рд╕рд╛рдХреНрд╖реНрдп рдФрд░ рд╕реАрд▓рдмрдВрдж рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рд╡рд╛рд▓рд╛ рд╕рддреНрдпрд╛рдкрди-рдпреЛрдЧреНрдп рдЕрдиреБрд╕рдВрдзрд╛рди-рд░рд┐рдкреЛрд░реНрдЯ рдЗрдВрдЬрди | | | **[dsh-score](https://github.com/PerryLink/dsh-score)** | DeepSeek Harness рдкреНрд▓рдЧрд┐рдиреЛрдВ рдХреА рдмрд╣реБ-рдЖрдпрд╛рдореА рдЧреБрдгрд╡рддреНрддрд╛ рд╕реНрдХреЛрд░рд┐рдВрдЧред | | | **[dsh-session-pin](https://github.com/PerryLink/dsh-session-pin)** | рдЯрд┐рдХрд╛рдК рдХреНрд░рдо рдХреЗ рд╕рд╛рде рд╡реЗрдм рд╕рд╛рдЗрдбрдмрд╛рд░ рдореЗрдВ рд╕рддреНрд░ рдкрд┐рди рдХрд░реЗрдВ | | | **[dsh-session-sync](https://github.com/PerryLink/dsh-session-sync)** | DeepSeek Harness рдХреЗ рд▓рд┐рдП рдХреНрд░реЙрд╕-рдбрд┐рд╡рд╛рдЗрд╕ рд╕рддреНрд░ рд╕рд┐рдВрдХ тАФ рдЖрдкрдХреЗ рд╕рддреНрд░ рд╕реНрдЯреЛрд░ рдХрд╛ рдПрдХ рд╕рдорд░реНрдкрд┐рдд git рдорд┐рд░рд░ред | | | **[dsh-skill-pack-security](https://github.com/PerryLink/dsh-skill-pack-security)** | рд╕реБрд░рдХреНрд╖рд╛-рдСрдбрд┐рдЯ рдХреМрд╢рд▓ рдкреИрдХ: рдЧреБрдкреНрдд рд╕реНрдХреИрди, рдирд┐рд░реНрднрд░рддрд╛ рдФрд░ рдЖрдкреВрд░реНрддрд┐-рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╕рдореАрдХреНрд╖рд╛ | | | **[dsh-talk](https://github.com/PerryLink/dsh-talk)** | DeepSeek Harness рдХреЗ рд▓рд┐рдП рдЖрд╡рд╛рдЬрд╝-рдкреНрд░рдердо рд╕рддреНрд░ рд▓реВрдк: рдмреЛрд▓реЗрдВ рдФрд░ рдЙрддреНрддрд░ рд╕реБрдиреЗрдВред | | | **[dsh-test-drive](https://github.com/PerryLink/dsh-test-drive)** | DeepSeek Harness рдкреНрд▓рдЧрд┐рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдкреГрдердХ рдЗрдВрд╕реНрдЯреЙрд▓-рдПрдВрдб-рд╕реНрдореЛрдХ рдЯреЗрд╕реНрдЯ рдбреНрд░рд╛рдЗрд╡ред | | | **[dsh-ticktick](https://github.com/PerryLink/dsh-ticktick)** | TickTick/Dida365 рдХрд╛рд░реНрдп рдмреНрд░рд┐рдЬ: рд╕рддреНрд░-рд╣реЗрдбрд░ рдкреИрдирд▓ + 11 рдЯреВрд▓ | | **[dsh-translate](https://github.com/PerryLink/dsh-translate)** | DeepSeek Harness рдХреЗ рд▓рд┐рдП рд╡реЗрдВрдбрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдЕрдиреБрд╡рд╛рдж рдФрд░ рдирд┐рдпрддрд╛рддреНрдордХ JSON рдорд░рдореНрдорддред | | | **[dsh-wechat](https://github.com/pan17/dsh-wechat)** | WeChat тЖФ DSH рдмреНрд░рд┐рдЬ (Tencent iLink bot): рдЯреЗрдХреНрд╕реНрдЯ/рдЗрдореЗрдЬ/рдлрд╝рд╛рдЗрд▓/рдЖрд╡рд╛рдЬрд╝, рдЪреИрдЯ рдореЗрдВ рдЕрдиреБрдореЛрджрди | | **[dsh-autotier](https://github.com/PerryLink/dsh-autotier)** | Automatic strong/cheap model-tier routing with deterministic risk guards and a `/tier` command | | | **[dsh-catalog](https://github.com/PerryLink/dsh-catalog)** | DSH Desktop Market standard catalog source for the PerryLink family | | | **[dsh-cert-mcp](https://github.com/PerryLink/dsh-cert-mcp)** | Read-only MCP server exposing the certification registry: grades, snapshots and five-dimension evidence | | | **[dsh-kit](https://github.com/PerryLink/dsh-kit)** | One-command starter pack that installs the core family | | | **[dsh-plugin-certification](https://github.com/PerryLink/dsh-plugin-certification)** | Community certification registry with repro-checkable grades and badges | | | **[dsh-plugin-kit](https://github.com/PerryLink/dsh-plugin-kit)** | Shared zero-runtime-dependency toolkit for the PerryLink DSH plugins | | | **[dsh-plugin-portal](https://github.com/PerryLink/dsh-plugin-portal)** | Zero-dependency static portal rendering the whole plugin family as one page | | | **[dsh-plugin-upgrade-015](https://github.com/PerryLink/dsh-plugin-upgrade-015)** | Merged `0.1.3-alpha.1` тЖТ `0.1.5-rc.1` upgrade corridor card plus a zero-dependency seam scanner | | | **[dsh-team-rooms](https://github.com/PerryLink/dsh-team-rooms)** | Cross-session team rooms: shared message bus, task board and timeline | | | **[dsh-plugin-doctor](https://github.com/PerryLink/dsh-plugin-doctor)** | Zero-dependency static + sandbox smoke detector for DSH plugins | | | **[dsh-laya](https://github.com/PerryLink/dsh-laya)** | Laya typed decisions (`noul`/`choice`/`score`) as a first-class Cordis service and model-visible tools | | ### DSH Desktop рдорд╛рд░реНрдХреЗрдЯ рд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ рд╕рднреА PerryLink рдкреНрд▓рдЧрдЗрди DSH Desktop рдХреЗ рдмрд┐рд▓реНрдЯ-рдЗрди рдорд╛рд░реНрдХреЗрдЯ рдореЗрдВ рджреЗрдЦреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ: **Market тЖТ Sources тЖТ add source тЖТ рдкреЗрд╕реНрдЯ рдХрд░реЗрдВ** `https://perrylink-dsh-catalog.perrylink.workers.dev/catalog-source.json` **тЖТ рдЪреБрдиреЗрдВ**ред рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдорд╛рд░реНрдХреЗрдЯ рдХреЗ npm-identity рд╕рддреНрдпрд╛рдкрди рдФрд░ рдЖрдкрдХреА рдкреБрд╖реНрдЯрд┐ рд╕реЗ рд╣реА рд╣реЛрддрд╛ рд╣реИред ## рд▓рд╛рдЗрд╕реЗрдВрд╕ [Apache License 2.0](LICENSE) ┬й 2026 dsh-background-agents contributors