# ЁЯПа dsh-team-rooms
- **1024 рд╕реНрдЯреЛрд░ рдЪреИрдирд▓**: рдПрдХ рдмрд╛рд░ `npm i -g dsh1024` рдЪрд▓рд╛рдПрдБ, рдлрд┐рд░ `dsh1024 plugin --profile web add dsh-team-rooms` (рдпрд╣ [deepseek1024.com](https://deepseek1024.com) рдХреА рдЗрдВрд╕реНрдЯреЙрд▓ рд░реИрдВрдХрд┐рдВрдЧ рдореЗрдВ рдЧрд┐рдирд╛ рдЬрд╛рддрд╛ рд╣реИ)ред
**DeepSeek Harness рдХреЗ рд▓рд┐рдП рдЯрд┐рдХрд╛рдК, рдХреНрд░реЙрд╕-рд╕реЗрд╢рди рдорд▓реНрдЯреА-рдПрдЬреЗрдВрдЯ рдЯреАрдо рд░реВрдо тАФ рд╕рджрд╕реНрдп, рдПрдХ рд╕рдВрджреЗрд╢ рдмрд╕, рдПрдХ рд╕рд╛рдЭрд╛ рдХрд╛рд░реНрдп рдмреЛрд░реНрдб рдФрд░ рдПрдХ рд╕рд╛рдЭрд╛ рдЯрд╛рдЗрдорд▓рд╛рдЗрди, рдЬреЛ рд░реАрд╕реНрдЯрд╛рд░реНрдЯ рдХреЗ рдмрд╛рдж рднреА рдмрдЪреЗ рд░рд╣рддреЗ рд╣реИрдВред**
*рд╣рд░ рд╕рджрд╕реНрдп рдПрдХ рд╕реНрд╡рддрдВрддреНрд░ DSH рд╕реЗрд╢рди рд╣реИ; рд░реВрдо рдЙрдирдХреЗ рдмреАрдЪ рдХрд╛ рд╕рд╛рдЭрд╛ рдЯрд┐рдХрд╛рдК рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИред*
[](LICENSE)
[](https://github.com/topics/dsh-plugin)
[](#)
[](https://github.com/PerryLink/dsh-plugin-doctor#verified-х╛╜чла)
[](https://gitee.com/perrylink/dsh-team-rooms)
[](https://github.com/PerryLink/dsh-team-rooms/actions)
[](https://github.com/PerryLink/dsh-team-rooms/releases)
[](https://www.npmjs.com/package/dsh-team-rooms)
[](https://www.npmjs.com/package/dsh-team-rooms)
[English](README.md) ┬╖ [чоАф╜Уф╕нцЦЗ](README-zh.md) ┬╖ [Espa├▒ol](README-es.md) ┬╖ [Portugu├кs](README-pt.md) ┬╖ [рд╣рд┐рдиреНрджреА](README-hi.md)
---
> **[`dsh-background-agents`](https://github.com/PerryLink/dsh-background-agents) 0.9.6 рд╕реЗ рдирд┐рдХрд╛рд▓рд╛ рдЧрдпрд╛ред** рдЙрд╕ рдкреНрд▓рдЧрдЗрди рдХрд╛ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб-рдПрдЬреЗрдВрдЯ рдЖрдзрд╛ рд╣рд┐рд╕реНрд╕рд╛ (`background_agent` рдФрд░ рдкрд╛рдБрдЪ `bg_*` рдЯреВрд▓) DSH рдХреЗ рдиреЗрдЯрд┐рд╡ рдХрдВрдЯреАрдиреНрдпреБрдПрдмрд▓ рдЙрдк-рдПрдЬреЗрдВрдЯ рд╕реЗ рдмрджрд▓ рдЪреБрдХрд╛ рд╣реИ; рдЯреАрдо-рд░реВрдо рдЖрдзреЗ рдХрд╛ рдХреЛрдИ рдиреЗрдЯрд┐рд╡ рд╕рдордХрдХреНрд╖ рдирд╣реАрдВ рдерд╛, рдЗрд╕рд▓рд┐рдП рд╡рд╣ рдЕрдкрдиреЗ рдЕрд▓рдЧ рдкреИрдХреЗрдЬ рдХреЗ рд░реВрдк рдореЗрдВ рдпрд╣рд╛рдБ рдЬреАрд╡рд┐рдд рд╣реИред 0.9.6 рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦреЗ рдЧрдП рд╕реНрдЯреЛрд░реЗрдЬ рдбреЛрдореЗрди, рд╕реЗрд╢рди рд▓реЙрдЧ рдФрд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдмрд┐рдирд╛ рдмрджрд▓рд╛рд╡ рдХрд╛рдо рдХрд░рддреЗ рд░рд╣рддреЗ рд╣реИрдВ тАФ рджреЗрдЦреЗрдВ *рдЕрдиреБрдХреВрд▓рддрд╛*ред
## рдЕрдиреБрдХреВрд▓рддрд╛
рд╣реЛрд╕реНрдЯ `0.1.2-alpha.2` рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗрд╢рди рдЗрд╡реЗрдВрдЯ рд╢рдмреНрджрд╛рд╡рд▓реА рдкрд░ fail-closed рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдкреНрд▓рдЧрдЗрди рд╡рд╣рд╛рдБ рдЕрдкрдиреЗ рдХреЗрд╡рд▓-рд▓реЙрдЧ рддрдереНрдп рдЗрд╡реЗрдВрдЯ (`team-room/fact`) рдирд╣реАрдВ рд▓рд┐рдЦрддрд╛: рддрдереНрдп logger/рдкреИрдирд▓ рдЪреИрдирд▓ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ `teamRoom` рдкреНрд░реЛрдЬреЗрдХреНрд╢рди рдЦрд╛рд▓реА рдлрд╝реЛрд▓реНрдб рддрдХ рдШрдЯ рдЬрд╛рддрд╛ рд╣реИред рдкреБрд░рд╛рдиреА rc рд▓рд╛рдЗрдиреЗрдВ (рдЬрд╣рд╛рдБ рддрдХ `0.1.1-rc.2`) `ignorable` рдорд╛рд░реНрдХрд░ рдЕрдиреБрд╢рд╛рд╕рди рдмрдирд╛рдП рд░рдЦрддреА рд╣реИрдВред рдХреНрд▓рд╛рдЗрдВрдЯ рдЖрдзрд╛ рд╡рд░реНрддрдорд╛рди рдХреНрд▓рд╛рдЗрдВрдЯ рдкреИрдХреЗрдЬ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рддрд╛ рд╣реИ (`dsh-api-session-controller`, `dsh-client-ui-slots`, `dsh-client-ui-settings`, `dsh-client-locale`, `dsh-client-web`)ред
**`dsh-background-agents` 0.9.6 рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛ рдЕрдиреБрдХреВрд▓рддрд╛ рдХрдареЛрд░ рдирд┐рдпрдо рд╣реИред** рдпреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ 0.9.6 рдХреЗ рд╕рд╛рде рдмрд╛рдЗрдЯ-рджрд░-рдмрд╛рдЗрдЯ рд╕рдорд╛рди рд╣реИрдВ рдФрд░ рдЗрдирдХрд╛ рдирд╛рдо рдХрднреА рдирд╣реАрдВ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП: рд╕реНрдЯреЛрд░реЗрдЬ рдбреЛрдореЗрди `team_rooms`, рдкреНрд░реЛрдЬреЗрдХреНрд╢рди рдХреБрдВрдЬреА `teamRoom`, рд╕реЗрд╢рди рдЗрд╡реЗрдВрдЯ рдкреНрд░рдХрд╛рд░ `team-room/fact`, рдФрд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╕реНрд▓реЙрдЯ рдЖрдИрдбреА `team-rooms`ред рдЗрд╕рд▓рд┐рдП рдкреНрд▓рдЧрдЗрди рдмрджрд▓рдиреЗ рдкрд░ рдореМрдЬреВрджрд╛ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХреЗ рд░реВрдо, рд╕рджрд╕реНрдп рд▓реЙрдЧ рдФрд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкреЗрдЬ рдЬреНрдпреЛрдВ рдХреЗ рддреНрдпреЛрдВ рдмрдиреЗ рд░рд╣рддреЗ рд╣реИрдВред
| рд╕рддрд╣ | рд╕реНрдерд┐рддрд┐ |
|---|---|
| Harness | DeepSeek Harness `dsh-v0.1.5-rc.2` (GitHub рдЯреИрдЧ, 2026-09-11 рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд; dev рдФрд░ рд░рдирдЯрд╛рдЗрдо рдкрд┐рди `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` |
| рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо | рд╕рднреА (рд╣реЛрд╕реНрдЯ рдЯреВрд▓; рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкреЗрдЬ рдХреЗ рд▓рд┐рдП Web рдХреНрд▓рд╛рдЗрдВрдЯ рдЖрдзрд╛ рдФрд░ рд╕реНрдЯреЛрд░реЗрдЬ-рдбреЛрдореЗрди рдХреНрд╖рдорддрд╛ рдЪрд╛рд╣рд┐рдП) |
| рдореЙрдбрд▓ | рдХреЛрдИ рднреА (рд░реВрдо рдХреЛрдИ рдореЙрдбрд▓ рд░реВрдЯ рдирд╣реАрдВ рд░рдЦрддреЗ тАФ рд╕рджрд╕реНрдп рд╕рд╛рдзрд╛рд░рдг рд╕реЗрд╢рди рд╣реИрдВ) |
## рдЖрдкрдХреЛ рдХреНрдпрд╛ рдорд┐рд▓рддрд╛ рд╣реИ
`dsh-team-rooms` рдХрдИ рд╕реНрд╡рддрдВрддреНрд░ рд╕реЗрд╢рди рдХреЛ рдПрдХ рд╕рдордиреНрд╡рд┐рдд рдЯреАрдо рдмрдирд╛ рджреЗрддрд╛ рд╣реИ:
1. **`/room` рдХрдорд╛рдВрдб рдкрд░рд┐рд╡рд╛рд░** тАФ `create`, `join`, `leave`, `list`, `send`, `tasks`, `task add|assign|claim|done|delete`ред рд░реВрдо рдХрд╛ рдирд╛рдо рдФрд░ рд╕реНрд╡рд╛рдореА рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╕реНрдерд┐рд░ рд░реВрдо рдЖрдИрдбреА рд╕реЗ рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рджреВрд╕рд░реЗ рд╕реЗрд╢рди рдореЗрдВ рдкреЗрд╕реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
2. **рдЖрда `room_*` рдЯреВрд▓** тАФ `room_list_rooms`, `room_post`, `room_read`, `room_list_tasks`, `room_create_task`, `room_claim_task`, `room_transfer_task`, `room_complete_task`ред рдореЙрдбрд▓ рдЕрдкрдиреЗ рд╣реА рд╕реЗрд╢рди рд╕реЗ рд╕рд╛рдЭрд╛ рдмреЛрд░реНрдб рдФрд░ рдмрд╕ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ; `room_transfer_task` рд╕рджрд╕реНрдпреЛрдВ рдХреЗ рдмреАрдЪ рд╣рд╕реНрддрд╛рдВрддрд░рдг рд╕реЗ рдкрд╣рд▓реЗ рдЕрдиреБрдореЛрджрди рдорд╛рдБрдЧрддрд╛ рд╣реИред
3. **рдЯрд┐рдХрд╛рдК рд░реВрдо рд╕реНрдЯреЛрд░** тАФ рд╕рджрд╕реНрдп, рд╕рдВрджреЗрд╢ рдмрд╕ (рдирд┐рд░реНрджреЗрд╢рд┐рдд рдпрд╛ рдмреНрд░реЙрдбрдХрд╛рд╕реНрдЯ), рдХрд╛рд░реНрдп рдмреЛрд░реНрдб рдФрд░ рдЯрд╛рдЗрдорд▓рд╛рдЗрди `team_rooms` рд╕реНрдЯреЛрд░реЗрдЬ рдбреЛрдореЗрди рдореЗрдВ рд░рд╣рддреЗ рд╣реИрдВ (SQLite рдпрд╛ JSONL рдмреИрдХрдПрдВрдб тАФ рддрдп рдбрд┐рдкреНрд▓реЙрдпрдореЗрдВрдЯ рдХрд░рддрд╛ рд╣реИ; рдкреНрд▓рдЧрдЗрди рдХреЛрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реЗрд╡рд╛ рдирд╣реАрдВ рдЬреЛрдбрд╝рддрд╛) рдФрд░ DSH рд░реАрд╕реНрдЯрд╛рд░реНрдЯ рдХреЗ рдмрд╛рдж рдмрд╣рд╛рд▓ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред
4. **Web рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкреЗрдЬ** тАФ Team Rooms рд╕реЗрдХреНрд╢рди рд╡рд░реНрддрдорд╛рди рд╕реЗрд╢рди рдХреЗ рд╣рд░ рд░реВрдо рдХреЗ рд╕рджрд╕реНрдп рд╕реНрдЯреЗрдЯрд╕, рдХрд╛рд░реНрдп рдмреЛрд░реНрдб рдФрд░ рдЯрд╛рдЗрдорд▓рд╛рдЗрди рджрд┐рдЦрд╛рддрд╛ рд╣реИ: рдкрдврд╝рддрд╛ `teamRoom` рд╕реЗрд╢рди рдкреНрд░реЛрдЬреЗрдХреНрд╢рди рд╕реЗ рд╣реИ, рдФрд░ рд▓рд┐рдЦрддрд╛ рд╣реЛрд╕реНрдЯ `/room` рдХрдорд╛рдВрдб рд╕реЗ рд╣реИред
## рддреНрд╡рд░рд┐рдд рд╢реБрд░реБрдЖрдд
```sh
# 1. рдЕрдкрдиреЗ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдмрдВрдбрд▓ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ
dsh plugin --profile web add "github:PerryLink/dsh-team-rooms#main"
# рдпрд╛ npm рд╕реЗ (рдкреНрд░рдХрд╛рд╢рд┐рдд рд░рд┐рд▓реАрдЬрд╝)
dsh plugin --profile web add dsh-team-rooms
# 2. рдкреБрдирдГ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ рдФрд░ рдкрдВрдХреНрддрд┐ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ
dsh --profile web --dump-config | grep -A4 'id: team-rooms'
```
рдмрдВрдбрд▓ рдкреИрдЪ рдореЗрдВ рдкреНрд▓рдЧрдЗрди рдкрдВрдХреНрддрд┐ рд╣реЛрддреА рд╣реИ; рдХреЛрдИ Config рдХреБрдВрдЬреА рдЕрдирд┐рд╡рд╛рд░реНрдп рдирд╣реАрдВ рд╣реИред рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА рдЕрдкрдирд╛ рдмрд┐рд▓реНрдб рдЖрдЙрдЯрдкреБрдЯ (`lib/`) рдХрдорд┐рдЯ рдХрд░рддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП git рдЗрдВрд╕реНрдЯреЙрд▓ рдХреЛ рдмрд┐рд▓реНрдб рдЪрд░рдг рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВред рд░реВрдо рд╡рд╣рд╛рдБ рдорд╛рдЙрдВрдЯ рд╣реЛрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдБ рд╕реНрдЯреЛрд░реЗрдЬ рдбреЛрдореЗрди рд╕рдВрдпреЛрдЬрд┐рдд рд╣реЛ (`@deepseek-ai/dsh-storage-domain`, рд╣рд░ `@deepseek-ai/dsh-base` рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдореМрдЬреВрдж); рдЙрд╕рдХреЗ рдмрд┐рдирд╛ `/room` рдХрдорд╛рдВрдб рдФрд░ `room_*` рдЯреВрд▓ рд╕реБрдкреНрдд рд░рд╣рддреЗ рд╣реИрдВ рдФрд░ рдмрд╛рдХреА рд╕рдм рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд▓реЛрдб рд╣реЛрддрд╛ рд░рд╣рддрд╛ рд╣реИред
рдлрд┐рд░ рдХрд┐рд╕реА рднреА рд╕реЗрд╢рди рдореЗрдВ:
```
/room create release-prep
/room send kickoff: I own the changelog, who takes the docs?
/room task add draft the migration note
/room task claim
```
рдЫрдкреА рд╣реБрдИ рд░реВрдо рдЖрдИрдбреА рдХреЛ рджреВрд╕рд░реЗ рд╕реЗрд╢рди рдореЗрдВ рдкреЗрд╕реНрдЯ рдХрд░реЗрдВ рдФрд░ `/room join ` рдЪрд▓рд╛рдПрдБ тАФ рд╡рд╣ рд╕реЗрд╢рди рдЕрдм рд╕рджрд╕реНрдп рд╣реИ, рд░реВрдо рдХреА рдбрд┐рд▓реАрд╡рд░реА рд╕рд╛рдзрд╛рд░рдг рд╕рдВрджреЗрд╢реЛрдВ рдХреА рддрд░рд╣ рдкрд╛рддрд╛ рд╣реИ, рдФрд░ рд╡рд╣реА рдмреЛрд░реНрдб рджреЗрдЦрддрд╛ рд╣реИред
## рдЗрдВрд╕реНрдЯреЙрд▓ рдФрд░ рдЕрдирдЗрдВрд╕реНрдЯреЙрд▓
- **git рдЪреИрдирд▓** (рдирд╡реАрдирддрдо `main`): `dsh plugin --profile web add "github:PerryLink/dsh-team-rooms#main"` тАФ `lib/` рдХрдорд┐рдЯреЗрдб, рдХреЛрдИ `prepare` рдпрд╛ `allowBuilds` рдЪрд░рдг рдирд╣реАрдВред
- **npm рдЪреИрдирд▓** (рдкреНрд░рдХрд╛рд╢рд┐рдд рд░рд┐рд▓реАрдЬрд╝): `dsh plugin --profile web add dsh-team-rooms`ред
- **tarball рдЪреИрдирд▓**: рдЗрд╕ рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА рдореЗрдВ `pnpm pack`, рдлрд┐рд░ `dsh plugin --profile web add ./dsh-team-rooms-.tgz`ред
- **рдЕрдирдЗрдВрд╕реНрдЯреЙрд▓**: `dsh plugin --profile web remove dsh-team-rooms` (рдпрд╛ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдкреИрдЪ рд╕реЗ рдкрдВрдХреНрддрд┐ рд╣рдЯрд╛рдПрдБ)ред рдЖрдкрдХреЗ рд░реВрдо `team_rooms` рд╕реНрдЯреЛрд░реЗрдЬ рдбреЛрдореЗрди рдореЗрдВ рдмрдиреЗ рд░рд╣рддреЗ рд╣реИрдВ рдФрд░ рджреЛрдмрд╛рд░рд╛ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рдкрд░ рд▓реМрдЯ рдЖрддреЗ рд╣реИрдВред
- тЪая╕П **рдЗрд╕реЗ рдФрд░ `dsh-background-agents` рдХреЛ рдПрдХ рд╕рд╛рде рдорд╛рдЙрдВрдЯ рди рдХрд░реЗрдВред** рдбреЗрдкреНрд░рд┐рдХреЗрд╢рди рд╡рд┐рдВрдбреЛ рдХреЗ рджреМрд░рд╛рди рджреЛрдиреЛрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реИрдВ, рдФрд░ рджреЛрдиреЛрдВ рд╡рд╣реА рдЖрда `room_*` рдЯреВрд▓, рд╡рд╣реА `settings.section` рд╕реНрд▓реЙрдЯ id (`team-rooms`) рдФрд░ рд╡рд╣реА `team_rooms` рд╕реНрдЯреЛрд░реЗрдЬ рдбреЛрдореЗрди рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░рддреЗ рд╣реИрдВ тАФ рдЗрд╕рд▓рд┐рдП рджреЛрдиреЛрдВ рд░реВрдо рд╣рд┐рд╕реНрд╕реЗ рдЯрдХрд░рд╛рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ `dsh-background-agents` рдЪрд▓рд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдкрд╣рд▓реЗ рдЙрд╕реЗ рд╣рдЯрд╛рдПрдБ (`dsh plugin --profile web remove dsh-background-agents`)ред рдХрд┐рд╕реА рднреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЖрдкрдХреЗ рд░реВрдо рд╕реБрд░рдХреНрд╖рд┐рдд рд░рд╣рддреЗ рд╣реИрдВ: рд╡реЗ рд╕реНрдЯреЛрд░реЗрдЬ рдбреЛрдореЗрди рдореЗрдВ рд░рд╣рддреЗ рд╣реИрдВ, рдкреНрд▓рдЧрдЗрди рдореЗрдВ рдирд╣реАрдВред
## рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди
рд╣рд░ рдЯреНрдпреВрдиреЗрдмрд▓ рдПрдХ рд╕рддреНрдпрд╛рдкрд┐рдд Schemastery `Config` рдлрд╝реАрд▓реНрдб рд╣реИ тАФ рдЗрд╕реЗ cordis.yml рдореЗрдВ рдмрджрд▓реЗрдВ, рдХреЛрдб рдореЗрдВ рдХрднреА рдирд╣реАрдВред рдХреЛрдИ рднреА рдЕрдирд┐рд╡рд╛рд░реНрдп рдирд╣реАрдВ рд╣реИред
| рдХреБрдВрдЬреА | рдбрд┐рдлрд╝реЙрд▓реНрдЯ | рдЕрд░реНрде |
|---|---|---|
| `maxRooms` | `16` | рдкреВрд░реЗ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЯреАрдо рд░реВрдо рдХреА рдХрдареЛрд░ рд╕реАрдорд╛ |
| `maxMembersPerRoom` | `8` | рдкреНрд░рддрд┐ рд░реВрдо рд╕рджрд╕реНрдпреЛрдВ рдХреА рдХрдареЛрд░ рд╕реАрдорд╛ (`>= 2`) |
| `maxRoomsPerMember` | `4` | рдПрдХ рд╕рджрд╕реНрдп рд╕реЗрд╢рди рдХрд┐рддрдиреЗ рд░реВрдо рдЬреЙрдЗрди рдХрд░ рд╕рдХрддрд╛ рд╣реИ |
| `busRetention` | `200` | рдкреНрд░рддрд┐ рд░реВрдо рд░рдЦреЗ рдЧрдП рдмрд╕ рд╕рдВрджреЗрд╢ |
| `timelineRetention` | `500` | рдкреНрд░рддрд┐ рд░реВрдо рд░рдЦреЗ рдЧрдП рдЯрд╛рдЗрдорд▓рд╛рдЗрди рдЗрд╡реЗрдВрдЯ |
| `taskRetention` | `50` | рдкреНрд░рддрд┐ рд░реВрдо рд░рдЦреЗ рдЧрдП рдкреВрд░реНрдг рдХрд╛рд░реНрдп |
| `maxMessageChars` | `4000` | рдПрдХ рд░реВрдо рд╕рдВрджреЗрд╢ рдХреЗ рдЯреЗрдХреНрд╕реНрдЯ рдХреА рдХрдареЛрд░ рд╕реАрдорд╛ (рдЕрдзрд┐рдХ рд╣реЛрдиреЗ рдкрд░ рдЕрд╕реНрд╡реАрдХрд╛рд░, рдХрднреА рдХрд╛рдЯрд╛ рдирд╣реАрдВ рдЬрд╛рддрд╛) |
| `injectRoomBrief` | `true` | рд╕рджрд╕реНрдп рд╕реЗрд╢рди рдореЗрдВ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд░реВрдо рдмреНрд░реАрдлрд╝ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░реЗрдВ (рдЬреЙрдЗрди + рд░рд┐рдЬрд╝реНрдпреВрдо рдкрд░) |
| `roomOpenTimeoutMs` | `15000` | `team_rooms` рд╕реНрдЯреЛрд░реЗрдЬ-рдбреЛрдореЗрди рдЦреБрд▓рдиреЗ рдореЗрдВ рдХрд┐рддрдирд╛ рд╕рдордп рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рдж рд╣рд░ рд░реВрдо рдСрдкрд░реЗрд╢рди рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ (`store-unavailable`) рд╡рд┐рдлрд▓ рд╣реЛрддрд╛ рд╣реИ, рд▓рдЯрдХрддрд╛ рдирд╣реАрдВ |
| `allowUnmarkedFacts` | `false` | рдЬрд┐рди рд╣реЛрд╕реНрдЯ рдкрд░ `ignorable` рдорд╛рд░реНрдХрд░ рдЫреВрдЯ рдЬрд╛рддрд╛ рд╣реИ рд╡рд╣рд╛рдБ рдХреЗрд╡рд▓-рд▓реЙрдЧ `team-room/fact` рдЗрд╡реЗрдВрдЯ рдЬрд╝рдмрд░рджрд╕реНрддреА рд▓рд┐рдЦреЗрдВ (рдЦрддрд░рдирд╛рдХ: рдмрд┐рдирд╛ рдорд╛рд░реНрдХрд░ рд╡рд╛рд▓реЗ рддрдереНрдп рд╕реЗрд╢рди рдХреЛ рджреВрд╕рд░реЗ рд╣реЛрд╕реНрдЯ рдкрд░ рдЕрдкреБрдирд░реБрджреНрдз рдХрд░ рджреЗрддреЗ рд╣реИрдВ); рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкрд╣рдЪрд╛рди рдХрд░ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ |
| `inbound.enabled` | `false` | рдмрд╛рд╣рд░реА рдПрдЬреЗрдВрдЯ рд░рдирдЯрд╛рдЗрдо (OpenAI Agents SDK / CrewAI) рдХреЗ рд▓рд┐рдП stdio JSON-RPC рдЗрдирдмрд╛рдЙрдВрдб рдмреНрд░рд┐рдЬ рд╕рдХреНрд╖рдо рдХрд░реЗрдВред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдмрдВрдж (fail-closed)ред |
| `inbound.command` | *(рдХреЛрдИ рдирд╣реАрдВ)* | рдмрд╛рд╣рд░реА рд░рдирдЯрд╛рдЗрдо рд▓реЙрдиреНрдЪ рдХрдорд╛рдВрдб; рд╕рдХреНрд╖рдо рдФрд░ рдореМрдЬреВрдж рд╣реЛрдиреЗ рдкрд░ рдкреНрд▓рдЧрдЗрди рдЙрд╕реЗ spawn рдХрд░рддрд╛ рд╣реИ рдФрд░ рдирдИ-рдкрдВрдХреНрддрд┐-рд╕реАрдорд┐рдд JSON-RPC рд╕реВрдЪрдирд╛рдПрдБ рд╕реБрдирддрд╛ рд╣реИред рдЕрдиреБрдкрд╕реНрдерд┐рдд/spawn рди рд╣реЛ рдкрд╛рдиреЗ рдкрд░ = рдмреНрд░рд┐рдЬ рд╕реБрдкреНрдд рд░рд╣рддрд╛ рд╣реИ (рд▓реЙрдЧ рд╣реЛрддрд╛ рд╣реИ)ред |
## рдЙрдкрдХрд░рдг рдФрд░ рд╕рддрд╣реЗрдВ
| рд╕рддрд╣ | рдкреНрд░рдХрд╛рд░ | рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ |
|---|---|---|
| `/room` | command | `create\|join\|leave\|list\|send\|tasks\|task add\|assign\|claim\|done\|delete` |
| `room_list_rooms` | tool | рдЗрд╕ рд╕реЗрд╢рди рдХреЗ рд╣рд░ рд░реВрдо: рдЖрдИрдбреА, рдирд╛рдо, рд╕рджрд╕реНрдп рд╕реВрдЪреА, рдХрд╛рд░реНрдп рдЧрдгрдирд╛ |
| `room_post` | tool | рдмрд╕ рдкрд░ рдкреЛрд╕реНрдЯ рдХрд░реЗрдВ (рдмреНрд░реЙрдбрдХрд╛рд╕реНрдЯ, рдпрд╛ `to` рдХреЗ рд╕рд╛рде рдирд┐рд░реНрджреЗрд╢рд┐рдд) |
| `room_read` | tool | рдХрд┐рд╕реА рд░реВрдо рдХреА рдмрд╕ рд╣рд┐рд╕реНрдЯреНрд░реА, seq рдХрд░реНрд╕рд░ рд╕реЗ рдкрдврд╝реЗрдВ |
| `room_list_tasks` | tool | рдХрд┐рд╕реА рд░реВрдо рдХрд╛ рд╕рд╛рдЭрд╛ рдХрд╛рд░реНрдп рдмреЛрд░реНрдб |
| `room_create_task` | tool | рдмреЛрд░реНрдб рдкрд░ рдПрдХ рдкрдВрдХреНрддрд┐ рдЬреЛрдбрд╝реЗрдВ (рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рд╕реМрдВрдкреА рдЧрдИ) |
| `room_claim_task` | tool | рдЗрд╕ рд╕реЗрд╢рди рдХреЗ рд▓рд┐рдП рдкрдВрдХреНрддрд┐ claim рдХрд░реЗрдВ (assignee + рдкреНрд░рдЧрддрд┐ рдореЗрдВ) |
| `room_transfer_task` | tool | рдкрдВрдХреНрддрд┐ рджреВрд╕рд░реЗ рд╕рджрд╕реНрдп рдХреЛ рд╕реМрдВрдкреЗрдВ тАФ **рдЕрдиреБрдореЛрджрди-рдЖрдзрд╛рд░рд┐рдд**, рд╡рд┐рдлрд▓ рд╣реЛрдиреЗ рдкрд░ fail-closed |
| `room_complete_task` | tool | рдкрдВрдХреНрддрд┐ рдХреЛ `done` рдЪрд┐рд╣реНрдирд┐рдд рдХрд░реЗрдВ |
| `teamRoom` рдкреНрд░реЛрдЬреЗрдХреНрд╢рди | session projection | рдЗрд╕ рд╕рджрд╕реНрдп рдХреЗ рдЕрдкрдиреЗ рд▓реЙрдЧ рдореЗрдВ `team-room/fact` рдЗрд╡реЗрдВрдЯ рд╕реЗ рдлрд╝реЛрд▓реНрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд░реВрдо рджреГрд╢реНрдп |
| Web рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкреЗрдЬ | client | рд╕рджрд╕реНрдп рд╕реНрдЯреЗрдЯрд╕, рдХрд╛рд░реНрдп рдмреЛрд░реНрдб, рдЯрд╛рдЗрдорд▓рд╛рдЗрди рдФрд░ рд░реВрдо рдХреНрд░рд┐рдпрд╛рдПрдБ; рд╕реНрд▓реЙрдЯ рдЖрдИрдбреА `team-rooms` |
рдпреЗ **рдЖрда** `room_*` рдЯреВрд▓ рд╣реИрдВ, рдФрд░ рд╕реНрдЯреЛрд░реЗрдЬ рдбреЛрдореЗрди рд╕рдВрдпреЛрдЬрд┐рдд рд╣реЛрдиреЗ рдкрд░ рд╕рднреА рдкрдВрдЬреАрдХреГрдд рд╣реЛрддреЗ рд╣реИрдВред
## рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ тАФ рдФрд░ рд░реАрд╕реНрдЯрд╛рд░реНрдЯ рдХреЗ рдмрд╛рдж рдХреНрдпреЛрдВ рдмрдЪрд╛ рд░рд╣рддрд╛ рд╣реИ
рд░реВрдо рд╕реНрдЯреЛрд░ рдХреНрд░реЙрд╕-рд╕реЗрд╢рди рдкреНрд░рд╛рдзрд┐рдХрд╛рд░реА рд╣реИ; рд╕реЗрд╢рди рдкреНрд░реЛрдЬреЗрдХреНрд╢рди рд╣рд░ рд╕рджрд╕реНрдп рдХреА рдЕрдкрдиреА рдкреБрдирд░реНрдирд┐рд░реНрдорд┐рдд рдкреНрд░рддрд┐ рд╣реИред рджреЛ рдкреНрд░рдХрд╛рд░ рдХреА рд▓реЗрдЦрди рдПрдХ рд╕рд╛рде рдЪрд▓рддреА рд╣реИрдВ рдФрд░ рд╕реБрд╕рдВрдЧрдд рд░рд╣рддреА рд╣реИрдВ:
- **рд╣рд░ рд░реВрдо рдкрд░рд┐рд╡рд░реНрддрди** (create, join, leave, post, рдХрд╛рд░реНрдп рд╕рдВрдХреНрд░рдордг) рдПрдХ рд╣реА hub рд░рд╛рдЗрдЯ рдЪреЗрди рдкрд░ рдХрддрд╛рд░ рдореЗрдВ рд▓рдЧрддрд╛ рд╣реИ тАФ `team_rooms` рдбреЛрдореЗрди рдХреА рдПрдХрдорд╛рддреНрд░ рд░рд╛рдЗрдЯ рдЪреЗрди рд╣реА рдХреНрд░рдо-рдкреНрд░рд╛рдзрд┐рдХрд╛рд░реА рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рдорд╡рд░реНрддреА рдкреЛрд╕реНрдЯрд░ рдХрднреА read-modify-write рдХреЛ рдЗрдВрдЯрд░рд▓реАрд╡ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдФрд░ рдмрд╕ seq рдХрдбрд╝рд╛рдИ рд╕реЗ рдХрдорд┐рдЯ рдХреНрд░рдо рдореЗрдВ рдмрдирддреЗ рд╣реИрдВред
- **рдореЙрдбрд▓-рджреГрд╢реНрдп тЯ║ рджрд░реНрдЬ**: рдбрд┐рд▓реАрд╡рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд░реВрдо рд╕рдВрджреЗрд╢ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдЗрдирдмреЙрдХреНрд╕ рдбрд┐рд▓реАрд╡рд░реА рд╣реИ (`agent.followup` рдЬреАрд╡рд┐рдд рд╕рджрд╕реНрдп рдХреЛ рдЬрдЧрд╛рддрд╛ рд╣реИ; `agent.inject` рдСрдлрд╝рд▓рд╛рдЗрди рд╕рджрд╕реНрдп рдХреЛ рдЕрдЧрд▓реА рд╢реБрд░реБрдЖрдд рдкрд░ рдЙрд╕рдХрд╛ рдмреИрдХрд▓реЙрдЧ рджреЗрддрд╛ рд╣реИ), рдЗрд╕рд▓рд┐рдП рд╡рд╣ рдЙрд╕ рд╕рджрд╕реНрдп рдХреЗ рдЕрдкрдиреЗ рд╕реЗрд╢рди рд▓реЙрдЧ рдореЗрдВ рдЯрд┐рдХрд╛рдК `user/message` рдХреЗ рд░реВрдк рдореЗрдВ рджрд░реНрдЬ рд╣реЛрддрд╛ рд╣реИред
- **рд╕рд╛рдЭрд╛ рдЯрд╛рдЗрдорд▓рд╛рдЗрди** рд╣рд░ рд╕рджрд╕реНрдп рдХреЗ рд▓реЙрдЧ рдореЗрдВ рдХреЗрд╡рд▓-рд▓реЙрдЧ `team-room/fact` рдЗрд╡реЗрдВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рд╣реЛрддреА рд╣реИ, рдЬреЛ рдХреИрдиреЛрдирд┐рдХрд▓ рд╕реНрдЯреЛрд░ `timelineSeq` рд▓реЗрдХрд░ рдЪрд▓рддреЗ рд╣реИрдВ; `teamRoom` рдкреНрд░реЛрдЬреЗрдХреНрд╢рди рд╣рд░ рд╕рджрд╕реНрдп рдХреЗ рдЕрдкрдиреЗ рд▓реЙрдЧ рдХреЛ рдлрд╝реЛрд▓реНрдб рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рд░ рдкреБрдирдГ-рдЦреЛрд▓рдиреЗ рдкрд░ рджреГрд╢реНрдп рд╕реНрдЯреЛрд░ рдкрдврд╝реЗ рдмрд┐рдирд╛ рдлрд┐рд░ рд╕реЗ рдмрди рдЬрд╛рддрд╛ рд╣реИред
- **рдбрд┐рд▓реАрд╡рд░реА at-least-once рдФрд░ рдХреНрд░рдордмрджреНрдз рд╣реИ**: рдкреНрд░рддрд┐-рд╕рджрд╕реНрдп рдХрд░реНрд╕рд░ (`lastDeliveredSeq`, `lastFactSeq`) рдХреЗрд╡рд▓ рдбрд┐рд▓реАрд╡рд░реА рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рдмрд╛рдж рдмрдврд╝рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдХрдорд┐рдЯ рдФрд░ рдбрд┐рд▓реАрд╡рд░реА рдХреЗ рдмреАрдЪ рдХреНрд░реИрд╢ рд╣реЛрдиреЗ рдкрд░ рдХреИрдЪ-рдЕрдк рдореЗрдВ рджреЛрдмрд╛рд░рд╛ рдбрд┐рд▓реАрд╡рд░реА рд╣реЛрддреА рд╣реИ, рд╕рдВрджреЗрд╢ рдЦреЛрддрд╛ рдирд╣реАрдВред
рдЬрд┐рди рд╣реЛрд╕реНрдЯ рдХрд╛ `Session.append` `ignorable` рдорд╛рд░реНрдХрд░ рд╕реЗ рдкреБрд░рд╛рдирд╛ рд╣реИ (рд╕рднреА рдкреНрд░рдХрд╛рд╢рд┐рдд rc рд▓рд╛рдЗрдиреЗрдВ `0.1.0-rc.8` рддрдХ, `0.1.1-rc.2` рд▓рд╛рдЗрди, рдФрд░ `0.1.2-rc` рд▓рд╛рдЗрди, рдЬреЛ рдПрдирд╡рд▓рдк рдлрд╝реАрд▓реНрдб рдХреЗрд╡рд▓ рдкрд╣рд▓реЗ рд╕реЗ рд╕рд╣реЗрдЬреЗ рд▓реЙрдЧ рдкрдврд╝рдиреЗ рдХреА рд╕рдВрдЧрддрд┐ рдХреЗ рд▓рд┐рдП рд░рдЦрддреА рд╣реИ) рдЙрдиреНрд╣реЗрдВ рдкрд╣рд▓реЗ append рд╕реЗ рдкрд╣рд▓реЗ рдкрд╣рдЪрд╛рди рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (peer-рд╕рдВрд╕реНрдХрд░рдг рдкреВрд░реНрд╡-рдЬрд╛рдБрдЪ, рдлрд┐рд░ рд▓реМрдЯрд╛рдП рдЧрдП рдПрдирд╡рд▓рдк рдХреА рдЬрд╛рдБрдЪ) рдФрд░ рддрдереНрдп-рд▓реЗрдЦрди рдПрдХ рдмрд╛рд░ рдХреА рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рд╕рд╛рде рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдЯрд┐рдХрд╛рдК рд╕реНрдЯреЛрд░, API рд╕рддрд╣реЗрдВ рдФрд░ рдореЙрдбрд▓-рджреГрд╢реНрдп рдбрд┐рд▓реАрд╡рд░реА рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддреА рд░рд╣рддреА рд╣реИрдВ, рдФрд░ `teamRoom` рдЦрд╛рд▓реА рдлрд╝реЛрд▓реНрдб рддрдХ рдШрдЯ рдЬрд╛рддрд╛ рд╣реИред `allowUnmarkedFacts: true` рд▓реЗрдЦрди рдлрд┐рд░ рдЪрд╛рд▓реВ рдХрд░ рджреЗрддрд╛ рд╣реИ тАФ рдЬрд╛рди-рдмреВрдЭрдХрд░ рдЦрддрд░рдирд╛рдХред
## рдпрд╣ рдкреНрд▓рдЧрдЗрди рдирд╣реАрдВ рд╣реИ
| рдкреНрд░реЛрдЬреЗрдХреНрдЯ | рдпрд╣ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ | рд╕реАрдорд╛ |
|---|---|---|
| [titanwings/dsh-automation](https://github.com/titanwings/dsh-automation) | рдирдП рдПрдЬреЗрдВрдЯ рд╕реЗрд╢рди рдореЗрдВ рд╢реЗрдбреНрдпреВрд▓ рдХрд┐рдП рдЧрдП рдХреЛрдбрд┐рдВрдЧ рдХрд╛рд░реНрдп | рдпрд╣ рддрдп рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХрд╛рд░реНрдп **рдХрдм** рдЪрд▓реЗрдВ (рд╢реЗрдбреНрдпреВрд▓рд┐рдВрдЧ)ред рдпрд╣ рдкреНрд▓рдЧрдЗрди рдЙрд╕ **рд╕рд╛рдЭрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ** рдХрд╛ рд╕реНрд╡рд╛рдореА рд╣реИ рдЬрд┐рд╕ рдкрд░ рдХрдИ рд╕реЗрд╢рди рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ тАФ рдХреЛрдИ рд╢реЗрдбреНрдпреВрд▓рд░ рд╕реАрдо рдирд╣реАрдВ, рдХреЛрдИ cron рдирд╣реАрдВред |
| [YYTbit/dsh-plugin-agent-dashboard](https://github.com/YYTbit/dsh-plugin-agent-dashboard) | рдорд▓реНрдЯреА-рдПрдЬреЗрдВрдЯ рдбреИрд╢рдмреЛрд░реНрдб рд╕реНрдХрд┐рд▓ | рдкреНрд░рджрд░реНрд╢рди-рдХреЗрдВрджреНрд░рд┐рдд рдФрд░ рдореБрдЦреНрдпрддрдГ рдкрдардиред рдЗрд╕ рдкреНрд▓рдЧрдЗрди рдХреЗ рд░реВрдо **рд▓рд┐рдЦрдиреЗ рдпреЛрдЧреНрдп рд╕рдордиреНрд╡рдп-рд╕реНрдерд┐рддрд┐** рд╣реИрдВ: рдПрдХ рдмрд╕, рдПрдХ рдмреЛрд░реНрдб, рдФрд░ рдЕрдиреБрдореЛрджрди-рдЖрдзрд╛рд░рд┐рдд рд╣рд╕реНрддрд╛рдВрддрд░рдг, рдЬреЛ harness рдХреЗ рдЕрдкрдиреЗ рд╕реНрдЯреЛрд░реЗрдЬ рдореЗрдВ рдЯрд┐рдХрд╛рдК рд╣реИрдВред |
| `dsh-background-agents` | рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдПрдЬреЗрдВрдЯ рдФрд░ (рдкрд╣рд▓реЗ) рдЯреАрдо рд░реВрдо | рдЙрд╕ рдкреИрдХреЗрдЬ рдХрд╛ `bg_*` рдЖрдзрд╛ DSH рдХреЗ рдиреЗрдЯрд┐рд╡ рдХрдВрдЯреАрдиреНрдпреБрдПрдмрд▓ рдЙрдк-рдПрдЬреЗрдВрдЯ рд╕реЗ рдмрджрд▓ рдЪреБрдХрд╛ рд╣реИ; рдЙрд╕рдХрд╛ рд░реВрдо рдЖрдзрд╛ рдпрд╣ рдкреИрдХреЗрдЬ рд╣реИред рджреЛрдиреЛрдВ рд░реВрдо рдЖрдзреЗ рдПрдХ рд╕рд╛рде рдорд╛рдЙрдВрдЯ рди рдХрд░реЗрдВред |
## рдЕрдиреБрдорддрд┐рдпрд╛рдБ рдФрд░ рдбреЗрдЯрд╛
- **рдЕрдиреБрдорддрд┐рдпрд╛рдБ**: workshop рдореИрдирд┐рдлрд╝реЗрд╕реНрдЯ `session:append` рдФрд░ `tools:register` рдШреЛрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред рд░реВрдо рдХрднреА рдЙрдк-рдПрдЬреЗрдВрдЯ spawn рдирд╣реАрдВ рдХрд░рддреЗ, рдЗрд╕рд▓рд┐рдП рдкреНрд▓рдЧрдЗрди рдХреЛрдИ `subagent:*` рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рдорд╛рдБрдЧрддрд╛ рдФрд░ рдХреЛрдИ рдЙрдк-рдПрдЬреЗрдВрдЯ рдирд┐рд░реНрднрд░рддрд╛ рдШреЛрд╖рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ред
- **рдбреЗрдЯрд╛**: рд░реВрдо `team_rooms` рд╕реНрдЯреЛрд░реЗрдЬ рдбреЛрдореЗрди рдореЗрдВ рд░рд╣рддреЗ рд╣реИрдВ (SQLite рдпрд╛ JSONL тАФ рд╢реВрдиреНрдп рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реЗрд╡рд╛рдПрдБ)ред рдХреЛрдИ рдЕрд▓рдЧ рдбреЗрдЯрд╛рдмреЗрд╕ рдирд╣реАрдВ, рдХреЛрдИ рдиреЗрдЯрд╡рд░реНрдХ рдирд╣реАрдВред
- **рд╕реЗрд╢рди рд▓реЙрдЧ**: `team-room/fact` рдЗрд╡реЗрдВрдЯ рдЙрди рд╣реЛрд╕реНрдЯ рдкрд░ рдПрдирд╡рд▓рдк рдХреЗ `ignorable: true` рдорд╛рд░реНрдХрд░ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВ рдЬреЛ рдЙрд╕рдХрд╛ рд╕рдореНрдорд╛рди рдХрд░рддреЗ рд╣реИрдВ (рдорд╛рд░реНрдХрд░-рдкреВрд░реНрд╡ рд╣реЛрд╕реНрдЯ рдкрд╣рдЪрд╛рдиреЗ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рддрдереНрдп-рд▓реЗрдЦрди рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ тАФ рджреЗрдЦреЗрдВ `allowUnmarkedFacts`); рдореЙрдбрд▓-рджреГрд╢реНрдп рд░реВрдо рдбрд┐рд▓реАрд╡рд░реА рдЕрд╕рд▓реА `user/message` рд░рд┐рдХреЙрд░реНрдб рд╣реИрдВред
## рд╕реБрд░рдХреНрд╖рд╛ рд╕реАрдорд╛рдПрдБ
- **рдЕрдиреБрдореЛрджрди-рдЖрдзрд╛рд░рд┐рдд рд╣рд╕реНрддрд╛рдВрддрд░рдгред** `room_transfer_task` рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдЕрдиреБрдореЛрджрди рд╕реАрдо рд╕реЗ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЕрдиреБрдореЛрджрди рд╕реЗрд╡рд╛ рд╕рдВрдпреЛрдЬрд┐рдд рди рд╣реЛрдиреЗ рдпрд╛ рдХреЛрдИ рдЕрдиреБрдорддрд┐ рди рджреЗрдиреЗ рдкрд░ fail-closed рд╣реЛрддрд╛ рд╣реИ тАФ рдордирд╛ рдХрд░рдиреЗ рдкрд░ рдХреБрдЫ рдирд╣реАрдВ рдмрджрд▓рддрд╛ред
- **рдореЙрдбрд▓-рджреГрд╢реНрдп тЯ║ рджрд░реНрдЬред** рд╣рд░ рдбрд┐рд▓реАрд╡рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд░реВрдо рд╕рдВрджреЗрд╢ рд╕рджрд╕реНрдп рдХреЗ рдЕрдкрдиреЗ рд▓реЙрдЧ рдореЗрдВ рдЯрд┐рдХрд╛рдК `user/message` рд╣реИ; рд╕рд╛рдЭрд╛ рдЯрд╛рдЗрдорд▓рд╛рдЗрди рдХреЗрд╡рд▓-рд▓реЙрдЧ `team-room/fact` рдЗрд╡реЗрдВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рд╣реЛрддреА рд╣реИред рд░реВрдо рд╕рдВрджреЗрд╢ рджрд░реНрдЬ рд╣реБрдП рдмрд┐рдирд╛ рдореЙрдбрд▓ рддрдХ рдкрд╣реБрдБрдЪ рд╣реА рдирд╣реАрдВ рд╕рдХрддрд╛ред
- **рд╕рджрд╕реНрдпрддрд╛ рд╣реА рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╕реАрдорд╛ рд╣реИред** рд╣рд░ `room_*` рдЯреВрд▓ рдХреЙрд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕реЗрд╢рди рдХреА рдЕрдкрдиреА рд╕рджрд╕реНрдпрддрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкреНрд░рд╛рдзрд┐рдХреГрдд рдХрд░рддрд╛ рд╣реИ; рдЧреИрд░-рд╕рджрд╕реНрдп рдХреЛ рд╕реНрдерд┐рд░ рдЕрд╕реНрд╡реАрдХреГрддрд┐ рдорд┐рд▓рддреА рд╣реИ, рдЖрдзрд╛-рдЕрдзреВрд░рд╛ рд▓реЗрдЦрди рдирд╣реАрдВред
- **рдкреНрд░рддрд┐рдзрд╛рд░рдг рд╕реАрдорд┐рдд рд╣реИред** рдмрд╕, рдЯрд╛рдЗрдорд▓рд╛рдЗрди рдФрд░ рдкреВрд░реНрдг рдХрд╛рд░реНрдпреЛрдВ рдХреА рд╡рд┐рдВрдбреЛ рд╣рд░ рд▓реЗрдЦрди рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддреА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рджреАрд░реНрдШрдЬреАрд╡реА рд░реВрдо рдЕрд╕реАрдорд┐рдд рдирд╣реАрдВ рдмрдврд╝ рд╕рдХрддрд╛ред
- **рдХреЛрдИ рд╢реЗрдбреНрдпреВрд▓рд┐рдВрдЧ рдирд╣реАрдВ, рдХреЛрдИ рдХреНрд░реЙрд╕-рдорд╢реАрди рд╕рджрд╕реНрдп рдирд╣реАрдВред** рд╕рджрд╕реНрдп рдЗрд╕ рдбрд┐рдкреНрд▓реЙрдпрдореЗрдВрдЯ рдХреЗ рдкреНрд░реЛрд╕реЗрд╕-рд╕реНрдерд╛рдиреАрдп рд╕реЗрд╢рди рд╣реИрдВред
## рдХреНрд░реЙрд╕-рдЗрдХреЛрд╕рд┐рд╕реНрдЯрдо рдЗрдирдмрд╛рдЙрдВрдб (P2)
рдмрд╛рд╣рд░реА рдПрдЬреЗрдВрдЯ рд░рдирдЯрд╛рдЗрдо тАФ OpenAI Agents SDK, CrewAI рдФрд░ рд╕рдорд╛рди тАФ рдПрдХ рдиреНрдпреВрдирддрдо **stdio рдирдИ-рдкрдВрдХреНрддрд┐-рд╕реАрдорд┐рдд JSON-RPC 2.0 рдмреНрд░рд┐рдЬ** рдХреЗ рдЬрд╝рд░рд┐рдП рдЯреАрдо рд░реВрдо рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ JSON-RPC рдбрд╛рдпрд░реЗрдХреНрдЯ-рдХрдиреЗрдХреНрдЯ рдиреНрдпреВрдирддрдо рд╕реЗрдЯ рд╣реИ, рдЖрдзрд┐рдХрд╛рд░рд┐рдХ ACP рд╡рд╛рдпрд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдирд╣реАрдВ: рдкреВрд░реНрдг ACP рдЕрдиреБрдХреВрд▓рддрд╛ рдЕрдкрд╕реНрдЯреНрд░реАрдо рд╕реАрдо рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдореЗрдВ рд╣реИред
рдЗрд╕реЗ рджреЛ Config рдлрд╝реАрд▓реНрдб рд╕реЗ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ рдФрд░ `inbound.command` рдХреЛ рдРрд╕реЗ рд▓реЙрдиреНрдЪрд░ рдкрд░ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВ рдЬреЛ stdout рдкрд░ рдкреНрд░рддрд┐ рдкрдВрдХреНрддрд┐ рдПрдХ JSON рд╕реВрдЪрдирд╛ рджреЗрддрд╛ рд╣реЛ:
```yaml
# cordis.yml (рдкреНрд▓рдЧрдЗрди рдкрдВрдХреНрддрд┐)
inbound:
enabled: true
command: "python external_runtime.py --room "
```
рд░рдирдЯрд╛рдЗрдо рддреАрди рдкреНрд░рдХрд╛рд░ рдХреА рд╕реВрдЪрдирд╛рдПрдБ рджреЗрддрд╛ рд╣реИ; `method` рдЗрд╡реЗрдВрдЯ рдирд╛рдо рд╣реИ рдФрд░ `params.name` рдмрд╛рд╣рд░реА рдПрдЬреЗрдВрдЯ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдирд╛рдо:
```json
{"jsonrpc":"2.0","method":"agent_started","params":{"name":"researcher","room":"","traceId":"t-1"}}
{"jsonrpc":"2.0","method":"agent_message","params":{"name":"researcher","room":"","traceId":"t-1","message":"found the failing test"}}
{"jsonrpc":"2.0","method":"agent_finished","params":{"name":"researcher","room":"","traceId":"t-1","status":"ok","usage":{"inputTokens":100,"outputTokens":40}}}
```
рд╣рд░ рдПрдХ рд░реВрдо рдХреА рдореМрдЬреВрджрд╛ рд╕рддрд╣реЛрдВ рдкрд░ рдореИрдк рд╣реЛрддреА рд╣реИ: `agent_started` рдХрд╛рд░реНрдп рдмреЛрд░реНрдб рдкрд░ рдХрд╛рд░реНрдб рдЦреЛрд▓рддреА рд╣реИ, `agent_message` рд╕рдВрджреЗрд╢ рдмрд╕ рдкрд░ рдкреЛрд╕реНрдЯ рдХрд░рддреА рд╣реИ, рдФрд░ `agent_finished` рдХрд╛рд░реНрдб рдмрдВрдж рдХрд░ рдкрд░рд┐рдгрд╛рдо рдкреЛрд╕реНрдЯ рдХрд░рддреА рд╣реИред рдЕрдорд╛рдиреНрдп рд╕рдВрджреЗрд╢ fail-closed рд╣реЛрддреЗ рд╣реИрдВ тАФ рд╡реЗ рдЫреЛрдбрд╝ рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ stdin рдкрд░ JSON-RPC рддреНрд░реБрдЯрд┐ рд▓рд┐рдЦреА рдЬрд╛рддреА рд╣реИред рдмрд╛рд╣рд░реА рд░рдирдЯрд╛рдЗрдо DSH рд╕реЗрд╢рди рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд░реВрдо рдХреЗ рд╕реНрд╡рд╛рдореА рд╕рджрд╕реНрдп рдХрд╛ рд╕реЗрд╢рди рдкреНрд░реЗрд╖рдХ рдмрдирддрд╛ рд╣реИ; рдмрд┐рдирд╛ рд╕реНрд╡рд╛рдореА рд╕рджрд╕реНрдп рд╡рд╛рд▓рд╛ рд░реВрдо рдЗрд╡реЗрдВрдЯ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред рд╢реБрд░реВ рдФрд░ рдмрдВрдж рдкреНрд▓рдЧрдЗрди рдлрд╝рд╛рдЗрдмрд░ рдХреЗ disposer рдХреЗ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рдореЗрдВ рд╣реИрдВ; spawn рди рд╣реЛ рдкрд╛рдиреЗ рд╡рд╛рд▓рд╛ `inbound.command` рдПрдХ рд▓реЙрдЧ рдЪреЗрддрд╛рд╡рдиреА рддрдХ рд╕рд┐рдордЯ рдЬрд╛рддрд╛ рд╣реИ (рдмреНрд░рд┐рдЬ рд╕реБрдкреНрдд рд░рд╣рддрд╛ рд╣реИ, рдмрд╛рдХреА рдХреБрдЫ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛)ред
## рдЬреНрдЮрд╛рдд рд╕реАрдорд╛рдПрдБ
- рд░реВрдо рдХреЗ рд▓рд┐рдП рд╕реНрдЯреЛрд░реЗрдЬ рдбреЛрдореЗрди рд╕рдВрдпреЛрдЬрд┐рдд рд╣реЛрдирд╛ рдЬрд╝рд░реВрд░реА рд╣реИ; `@deepseek-ai/dsh-storage-domain` рдХреЗ рдмрд┐рдирд╛ `/room` рдХрдорд╛рдВрдб рдФрд░ `room_*` рдЯреВрд▓ рдЕрдХреНрд╖рдо рд░рд╣рддреЗ рд╣реИрдВред
- рд░реВрдо рддрдм рд╕рд╛рд░реНрдердХ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЙрд╕рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рджреЛ рд╕рджрд╕реНрдп рд╣реЛрдВ, рдФрд░ рд╕рджрд╕реНрдп рд╕реВрдЪреА `maxMembersPerRoom` рд╕реЗ рд╕реАрдорд┐рдд рд╣реИ; рд╕рджрд╕реНрдпрддрд╛ рдкреНрд░рддрд┐ рд╕реЗрд╢рди рд╣реИ, рдкреНрд░рддрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╣реАрдВред
- рдХреНрд░реЙрд╕-рдорд╢реАрди рд╕рджрд╕реНрдпрддрд╛ рдирд╣реАрдВ рд╣реИ: рд╣рд░ рд╕рджрд╕реНрдп рдЗрд╕ рдбрд┐рдкреНрд▓реЙрдпрдореЗрдВрдЯ рдХрд╛ рдкреНрд░реЛрд╕реЗрд╕-рд╕реНрдерд╛рдиреАрдп рд╕реЗрд╢рди рд╣реИред
- `room_transfer_task` рдХреЛ рдЕрдиреБрдореЛрджрди рдЙрддреНрддрд░рджрд╛рддрд╛ рдЪрд╛рд╣рд┐рдПред рдЙрд╕рдХреЗ рдмрд┐рдирд╛ рдпрд╣ рдбрд┐рдЬрд╝рд╛рдЗрди рд╕реЗ fail-closed рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╣рд╕реНрддрд╛рдВрддрд░рдг рдЪрд╛рд╣рдиреЗ рд╡рд╛рд▓реА рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрдиреБрдореЛрджрди рд╕реЗрд╡рд╛ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреА рд╣реЛрдЧреАред
- рд▓рд╛рдЧрдд/рдЙрдкрдпреЛрдЧ рд▓реЗрдЦрд╛рдВрдХрди рдпрд╣рд╛рдБ рдХреНрд╖реЗрддреНрд░ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИ (рд╡рд╣ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб-рдПрдЬреЗрдВрдЯ рдЖрдзреЗ рдореЗрдВ рдерд╛); рд░реВрдо рд╕рддрд╣реЗрдВ рд╕рдВрд░рдЪрдирд╛ рдмрддрд╛рддреА рд╣реИрдВ, рдЦрд░реНрдЪ рдирд╣реАрдВред
## рд╡рд┐рдХрд╛рд╕
```sh
pnpm install # рдХреЗрд╡рд▓ рдЯреВрд▓рд┐рдВрдЧ; harness рдкреИрдХреЗрдЬ рд╕рд╣реЛрджрд░ checkout рд╕реЗ рд╣рд▓ рд╣реЛрддреЗ рд╣реИрдВ
pnpm run typecheck # рд╕рдЦрд╝реНрдд TS, node + рдХреНрд▓рд╛рдЗрдВрдЯ рджреЛрдиреЛрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо
pnpm test # vitest: рдпреВрдирд┐рдЯ, рд░реВрдо hub, рдкреНрд░реЛрдЬреЗрдХреНрд╢рди рдФрд░ jsdom рдкреИрдирд▓ рдЯреЗрд╕реНрдЯ
pnpm run build # lib/index.js (node рдЖрдзрд╛) + lib/client.js (Web рдХреНрд▓рд╛рдЗрдВрдЯ рдмрдВрдбрд▓)
pnpm run verify:artifacts && pnpm run check:readmes
pnpm run gen-aliases # checkout рдЦрд┐рд╕рдХрдиреЗ рдкрд░ harness рдкреИрдХреЗрдЬ рдкрде рджреЛрдмрд╛рд░рд╛ рдореИрдк рдХрд░реЗрдВ
```
`pnpm run pack:smoke` рдмрд┐рд▓реНрдб рдФрд░ рдкреИрдХ рдХрд░рддрд╛ рд╣реИ, рдФрд░ `DSH_HARNESS_ROOT` рд╕реЗрдЯ рд╣реЛрдиреЗ рдкрд░ tarball рдХреЛ рдПрдХ рдЕрд╕реНрдерд╛рдпреА рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░ рд╕рдВрдпреЛрдЬрд┐рдд рдкрдВрдХреНрддрд┐ рдЬрд╛рдБрдЪрддрд╛ рд╣реИред
## рд╡рд┐рд╖рдп
`dsh`, `dsh-plugin`, `deepseek-harness`, `team-rooms`, `multi-agent`, `message-bus`, `task-board`, `collaboration`, `cross-session`
## рдпреЛрдЧрджрд╛рдирдХрд░реНрддрд╛
- [@PerryLink](https://github.com/PerryLink) тАФ рдирд┐рд░реНрдорд╛рддрд╛ рдФрд░ рдЕрдиреБрд░рдХреНрд╖рдХ: рдЯреАрдо-рд░реВрдо hub рдФрд░ рдЙрд╕рдХреА рд░рд╛рдЗрдЯ рдЪреЗрди, рдбрд┐рд▓реАрд╡рд░реА рдХрд░реНрд╕рд░, `teamRoom` рдкреНрд░реЛрдЬреЗрдХреНрд╢рди, Web рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкреЗрдЬ, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝, CI/CD рдФрд░ рд░рд┐рд▓реАрдЬрд╝ред
## PerryLink DSH рдкреНрд▓рдЧрдЗрди рдкрд░рд┐рд╡рд╛рд░
рдпрд╣ рдкреНрд░реЛрдЬреЗрдХреНрдЯ [PerryLink](https://github.com/PerryLink) рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрд░рдХреНрд╖рд┐рдд [36 DeepSeek Harness рдкреНрд▓рдЧрдЗрди](https://github.com/PerryLink) рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдЕрдЧрд░ рдпрд╣ рдЙрдкрдпреЛрдЧреА рд▓рдЧрд╛, рддреЛ рдмрд╛рдХреА рднреА рд▓рдЧреЗрдВрдЧреЗ:
| рдкреНрд▓рдЧрдЗрди | рдПрдХ рдкрдВрдХреНрддрд┐ |
|---|---|
| **[dsh-auto-review](https://github.com/PerryLink/dsh-auto-review)** | рдЕрдиреБрдореЛрджрди рд╢реНрд░реГрдВрдЦрд▓рд╛ рдкрд░ рджреВрд╕рд░реЗ рдореЙрдбрд▓ рдХрд╛ рдСрдЯреЛ-рд░рд┐рд╡реНрдпреВ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗ fail-closed | |
| **[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)** | Web рдХрдВрдкреЛрдЬрд╝рд░ рдХреЗ рд▓рд┐рдП рдЯрд░реНрдорд┐рдирд▓-рд╢реИрд▓реА рдЗрдирдкреБрдЯ рдЗрддрд┐рд╣рд╛рд╕: рддреАрд░, 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/issue рдПрдХреАрдХрд░рдг, рд╣рд░ рд▓реЗрдЦрди рдЕрдиреБрдореЛрджрди-рдЖрдзрд╛рд░рд┐рдд | |
| **[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 рдХрдорд╛рдВрдб + рд╕реНрдЯреЗрдЯрд╕, рдЯреВрд▓ рдФрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╡рд╛рд▓рд╛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдЯреИрдм | |
| **[dsh-memento](https://github.com/PerryLink/dsh-memento)** | рдЕрдиреБрдореЛрджрди-рдЖрдзрд╛рд░рд┐рдд рдХреНрд░реЙрд╕-рд╕реЗрд╢рди рдореЗрдореЛрд░реА: ctx.memory рд╕реАрдо + SQLite + memory рдЯреВрд▓ | |
| **[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)** | рдЯреЙрдк-рдмрд╛рд░ рдЯреЙрдЧрд▓ рдХреЗ рд╕рд╛рде рд╡реНрдпрдХреНрддрд┐рдЧрдд рдирд┐рд░реНрджреЗрд╢ рдЗрдВрдЬреЗрдХреНрдЯрд░ (framework рд╕рдВрд╕реНрдХрд░рдг) | |
| **[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)** | Web рд╕рд╛рдЗрдбрдмрд╛рд░ рдореЗрдВ рд╕реЗрд╢рди рдкрд┐рди рдХрд░реЗрдВ, рдЯрд┐рдХрд╛рдК рдХреНрд░рдо рдХреЗ рд╕рд╛рде | |
| **[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-autotier](https://github.com/PerryLink/dsh-autotier)** | Automatic strong/cheap model-tier routing with deterministic risk guards and a `/tier` command | |
| **[dsh-background-agents](https://github.com/PerryLink/dsh-background-agents)** | Durable background child agents with a Web UI sidebar, messaging and interrupt | |
| **[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-doctor](https://github.com/PerryLink/dsh-plugin-doctor)** | Zero-dependency static + sandbox smoke detector for DSH plugins | |
| **[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-wechat](https://github.com/PerryLink/dsh-wechat)** | WeChat тЖФ DSH bridge (Tencent iLink bot) developed with [pan17](https://github.com/pan17/dsh-wechat), who hosts the repo | |
### DSH Desktop рдорд╛рд░реНрдХреЗрдЯ рд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ
рд╕рднреА PerryLink рдкреНрд▓рдЧрдЗрди рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд DSH Desktop рдорд╛рд░реНрдХреЗрдЯ рдореЗрдВ рдмреНрд░рд╛рдЙрдЬрд╝ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ: **Market тЖТ Sources тЖТ add source тЖТ рдкреЗрд╕реНрдЯ рдХрд░реЗрдВ** `https://perrylink-dsh-catalog.perrylink.workers.dev/catalog-source.json` **тЖТ рдЙрд╕реЗ рдЪреБрдиреЗрдВ**ред рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдЕрдм рднреА рдорд╛рд░реНрдХреЗрдЯ рдХреЗ npm-рдкрд╣рдЪрд╛рди рд╕рддреНрдпрд╛рдкрди рдФрд░ рдЖрдкрдХреА рдкреБрд╖реНрдЯрд┐ рд╕реЗ рд╣реЛрдХрд░ рдЬрд╛рддрд╛ рд╣реИред
## рд▓рд╛рдЗрд╕реЗрдВрд╕
[Apache License 2.0](LICENSE) ┬й 2026 dsh-team-rooms contributors