# ЁЯУЪ dsh-library
- **1024 рд╕реНрдЯреЛрд░ рдЪреИрдирд▓**: рдПрдХ рдмрд╛рд░ `npm i -g dsh1024`, рдлрд┐рд░ `dsh1024 plugin --profile web add dsh-library` ([deepseek1024.com](https://deepseek1024.com) рдЗрдВрд╕реНрдЯреЙрд▓ рд░реИрдВрдХрд┐рдВрдЧ рдореЗрдВ рдЧрд┐рдирд╛ рдЬрд╛рддрд╛ рд╣реИ)ред
**DeepSeek Harness рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдп рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЬреНрдЮрд╛рди-рдХреЛрд╖ред**
*рдЖрдпрд╛рдд рдХрд░реЗрдВ, рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ, рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ тАФ рдЙрджреНрдзрд░рдг-рдпреБрдХреНрдд рд╣рд╛рдЗрдмреНрд░рд┐рдб рдЦреЛрдЬ рдЬрд┐рд╕реЗ рдЖрдкрдХрд╛ рдПрдЬреЗрдВрдЯ рдЬрд╛рдБрдЪ рд╕рдХрддрд╛ рд╣реИред*
[](LICENSE)
[](https://gitee.com/perrylink/dsh-library)
[](https://github.com/topics/dsh-plugin)
[](https://github.com/PerryLink/dsh-plugin-doctor#verified-х╛╜чла)
[](https://dsh.market/)
[](#)
[](https://github.com/PerryLink/dsh-library/actions)
[](https://github.com/PerryLink/dsh-library/releases)
[](https://www.npmjs.com/package/dsh-library)
[](https://www.npmjs.com/package/dsh-library)
[](https://dshfind.com/hi/plugins/PerryLink/dsh-library?ref=badge)
[English](README.md) ┬╖ [чоАф╜Уф╕нцЦЗ](README-zh.md) ┬╖ [Espa├▒ol](README-es.md) ┬╖ [Portugu├кs](README-pt.md) ┬╖ [рд╣рд┐рдиреНрджреА](README-hi.md)
```sh
dsh plugin --profile add dsh-library
```
---
**ЁЯУЦ рдЗрдХреЛрд╕рд┐рд╕реНрдЯрдо рдиреЙрд▓реЗрдЬ рдмреЗрд╕** тАФ рдорд╛рдкреЗ рдЧрдП рдЖрдБрдХрдбрд╝реЗ, рдорд╛рд░реНрдХреЗрдЯрд┐рдВрдЧ рдирд╣реАрдВ: [рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдЧрд╛рдЗрдб ┬╖ рдЪрдпрди рдбреЗрдЯрд╛ ┬╖ рд░рдЦрд░рдЦрд╛рд╡ рдорд╛рдирджрдВрдб](https://perrylink.github.io/dsh-plugin-guide/)ред
## рдЗрдВрд╕реНрдЯреЙрд▓ рдФрд░ рдЕрдирдЗрдВрд╕реНрдЯреЙрд▓
- **git рдЪреИрдирд▓** (рдирд╡реАрдирддрдо `main`): `dsh plugin --profile web add github:PerryLink/dsh-library` тАФ `prepare` рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗрд╡рд▓ рдкреНрд░реЛрдбрдХреНрд╢рди рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рд╕реЗ рдмрд┐рд▓реНрдб рдХрд░рддреА рд╣реИред
- **npm рдЪреИрдирд▓** (рдкреНрд░рдХрд╛рд╢рд┐рдд рд░рд┐рд▓реАрдЬрд╝): `dsh plugin --profile web add dsh-library`ред
- **tarball рдЪреИрдирд▓**: рдЗрд╕ рд░реЗрдкреЛ рдореЗрдВ `pnpm pack`, рдлрд┐рд░ `dsh plugin --profile web add ./dsh-library-.tgz`ред
- **рдЕрдирдЗрдВрд╕реНрдЯреЙрд▓**: `dsh plugin --profile web remove dsh-library` (рдпрд╛ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдкреИрдЪ рд╕реЗ рдкрдВрдХреНрддрд┐ рд╣рдЯрд╛рдПрдБ)ред
> рдпрджрд┐ pnpm рдЗрд╕ рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП `ERR_PNPM_IGNORED_BUILDS` рджрд┐рдЦрд╛рддрд╛ рд╣реИ (esbuild рдХрд╛ рд╣рд╛рдирд┐рд░рд╣рд┐рдд рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо-рдмрд╛рдЗрдирд░реА рд╕рддреНрдпрд╛рдкрди), рддреЛ рдЕрдкрдиреЗ `pnpm-workspace.yaml` рдореЗрдВ `allowBuilds: { esbuild: true }` рдЬреЛрдбрд╝реЗрдВ тАФ `dsh` CLI рд╕рдЯреАрдХ рд╕реНрдирд┐рдкреЗрдЯ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИред
## тнР хжВцЮЬхоГх╕охИ░ф║Жф╜а
рдпрд╣ рдкреНрд▓рдЧрдЗрди [DSH рдкреНрд▓рдЧрдЗрди рдкрд░рд┐рд╡рд╛рд░](https://github.com/PerryLink) рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ (95 рдкреНрд▓рдЧрдЗрди, рд╕рднреА Apache-2.0)ред рдЕрдЧрд░ рдпрд╣ рдЙрдкрдпреЛрдЧреА рд▓рдЧреЗ, рддреЛ **рдПрдХ рд╕реНрдЯрд╛рд░ рджреЗрдВ** тАФ рдЗрд╕рд╕реЗ рдХреЛрдИ рд╕реБрд╡рд┐рдзрд╛ рдЕрдирд▓реЙрдХ рдирд╣реАрдВ рд╣реЛрддреА, рдкрд░ рдЕрдЧрд▓рд╛ рд╡реНрдпрдХреНрддрд┐ рдЗрд╕реЗ рдЦреЛрдЬ рдореЗрдВ рдЖрд╕рд╛рдиреА рд╕реЗ рдкрд╛ рд▓реЗрддрд╛ рд╣реИред
*English:* part of a 95 plugin family for DeepSeek Harness. If it is useful, **a star helps the next person find it** тАФ nothing is gated behind it.
## What is dsh-library?
DeepSeek Harness рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдп рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЬреНрдЮрд╛рди-рдХреЛрд╖ред
рдЖрдпрд╛рдд рдХрд░реЗрдВ, рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ, рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ тАФ рдЙрджреНрдзрд░рдг-рдпреБрдХреНрдд рд╣рд╛рдЗрдмреНрд░рд┐рдб рдЦреЛрдЬ рдЬрд┐рд╕реЗ рдЖрдкрдХрд╛ рдПрдЬреЗрдВрдЯ рдЬрд╛рдБрдЪ рд╕рдХрддрд╛ рд╣реИред
![dsh-library рдХрд╛ рдЯрд░реНрдорд┐рдирд▓ рдбреЗрдореЛ: dsh-library тАФ install, then ask with [n] citations](docs/assets/dsh-library-flow.svg)

*рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣: рдЗрдВрд╕реНрдЯреЙрд▓ тЖТ рдкреИрдирд▓ рдЦреЛрд▓реЗрдВ тЖТ рдХрд╛рд░реНрдпред рдиреАрдЪреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрдорд╛рдВрдб рд╕рддрд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред*
*рд╡рд╣реА рд░рди, рдПрдирд┐рдореЗрдЯреЗрдбред*
## рд╕рдВрдЧрддрддрд╛
| рд╕рддрд╣ | рд╕реНрдерд┐рддрд┐ |
|---|---|
| Harness | DeepSeek Harness `dsh-v0.2.1-alpha.1` (2026-09-25 рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд: рджреЛрд╣рд░рд╛ typecheck + 89 рдЯреЗрд╕реНрдЯ + self-contained/artifacts рдЧреЗрдЯ; peer рд░реЗрдВрдЬ `>=0.1.2-rc.1 <0.2.0 \|\| >=0.1.5-alpha.1 <0.2.0 \|\| >=0.1.6-0 <0.2.0 \|\| >=0.1.7-0 <0.2.0`)ред рдкрд░рд┐рд╡рд╛рд░ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рдкреИрдХреЗрдЬ рдЬрд┐рд╕рдХрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ alpha.2 рд╣реЛрд╕реНрдЯ рд╕реНрдореЛрдХ рдЪрд▓рд╛ рд╣реИ (2026-09-11)ред |
| Node | `^22.19.0 \|\| >=24.0.0` |
| рднрдВрдбрд╛рд░рдг | рдХреЛрдИ рднреА storage-domain рдмреИрдХрдПрдВрдб (JSON рдпрд╛ SQLite); рд╕реВрдЪрдХрд╛рдВрдХ рд╣реЛрд╕реНрдЯ рдХреЗ рднрдВрдбрд╛рд░рдг рдбреЛрдореЗрди рдореЗрдВ рд░рд╣рддрд╛ рд╣реИ |
| рдореЙрдбрд▓ | рдХрд┐рд╕реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ тАФ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдПрдореНрдмреЗрдбрд░ рдирд┐рдпрддрд╛рддреНрдордХ рд╣реИрд╢ рд╣реИ (рд╢реВрдиреНрдп рдбрд╛рдЙрдирд▓реЛрдб) |
## рдЖрдкрдХреЛ рдХреНрдпрд╛ рдорд┐рд▓рддрд╛ рд╣реИ
`dsh-library` рд╕реНрдерд╛рдиреАрдп md/txt рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЛ рдПрдХ рдХреНрд╡реЗрд░реА-рдпреЛрдЧреНрдп рдЬреНрдЮрд╛рди-рдХреЛрд╖ рдореЗрдВ рдмрджрд▓рддрд╛ рд╣реИ, рдРрд╕реА рдЧреБрдгрд╡рддреНрддрд╛ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреЗ рд╕рд╛рде рдЬрд┐рд╕ рдкрд░ рдЖрдкрдХрд╛ рдПрдЬреЗрдВрдЯ рднрд░реЛрд╕рд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ:
- **`library_add` / `library_remove` / `library_list`** тАФ рдкрде рд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЖрдпрд╛рдд рдХрд░реЗрдВ (рдЪрдВрдХ + рдПрдореНрдмреЗрдб), рдПрдХ рдХреЛ **рдкрд░реНрдЬ рд╕рддреНрдпрд╛рдкрди** рдХреЗ рд╕рд╛рде рд╣рдЯрд╛рдПрдБ (рд╣рдЯрд╛рдП рдЧрдП рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╢реЗрд╖ рд╕реВрдЪрдХрд╛рдВрдХ рдореЗрдВ рдЬрд╛рдБрдЪреЗ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдХреЛрдИ рдЕрд╡рд╢реЗрд╖ рд░рд┐рдкреЛрд░реНрдЯ рд╣реЛрддрд╛ рд╣реИ) рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░реЗрдВред
- **`library_search`** тАФ рд╣рд╛рдЗрдмреНрд░рд┐рдб рд╕рд┐рдореЗрдВрдЯрд┐рдХ + рдХреАрд╡рд░реНрдб рд░реИрдВрдХрд┐рдВрдЧ, рдЕрдзрд┐рдХрддрдо-рд╕реАрдорд╛рдВрдд-рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХрддрд╛ рд╡рд┐рд╡рд┐рдзрддрд╛ рдкреБрдирдГ-рдХреНрд░рдо, рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХрддрд╛ рдЫрдВрдЯрд╛рдИ рдФрд░ **lost-in-the-middle рд╕реЗ рдмрдЪрд╛рд╡** (рд╕рдмрд╕реЗ рдордЬрд╝рдмреВрдд рдЪрдВрдХ рд╢реАрд░реНрд╖ рдФрд░ рдкреВрдБрдЫ рдкрд░)ред `inject: true` рдХреЗ рд╕рд╛рде рдкрд░рд┐рдгрд╛рдо-рдкреГрд╖реНрда рдХреЙрд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрдЬреЗрдВрдЯ рдореЗрдВ рдЗрдВрдЬреЗрдХреНрдЯ рд╣реЛрддрд╛ рд╣реИ; рд╣рд░ рд╣рд┐рдЯ рдкрд░ `[n]` рд╕реНрд░реЛрдд рдЪрд┐рд╣реНрди рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЗрдВрдЬреЗрдХреНрд╢рди `library/inject` рд╕рддреНрд░-рдШрдЯрдирд╛ рд╕реЗ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдпреЛрдЧреНрдп рд╣реИ (рд╣реЛрд╕реНрдЯ-рдЧреЗрдЯреЗрдб; рдЕрдиреБрдорддрд┐рдпрд╛рдБ рдФрд░ рдбреЗрдЯрд╛ рджреЗрдЦреЗрдВ)ред
- **`library_cite_check`** тАФ рдЙрддреНрддрд░ рдХреА `[n]` рдЙрджреНрдзрд░рдгреЛрдВ рдХреЛ рдкрд░рд┐рдгрд╛рдо-рдкреГрд╖реНрда рдХреЗ рд╡рд┐рд░реБрджреНрдз рдлрд╝рдЬрд╝реА рдЯреЛрдХрди рдорд┐рд▓рд╛рди рдФрд░ рд╕рд┐рдореЗрдВрдЯрд┐рдХ рд╕рдорд╛рдирддрд╛ рдЬрд╛рдБрдЪ рд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВред
- **`library_diagnose`** тАФ рдЪрдВрдХ-рдЖрдХрд╛рд░ рд╣рд┐рд╕реНрдЯреЛрдЧреНрд░рд╛рдо, рд▓рдЧрднрдЧ-рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдЪрдВрдХ рдпреБрдЧреНрдо, рдПрдХ рд╕реНрд╡-рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐ рдЬрд╛рдБрдЪ рдФрд░ рдордзреНрдп-рджрдВрдб рд╕рдВрдХреЗрддред
- **`/library`** тАФ рдкреНрд░рддрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдПрдХ-рдкрдВрдХреНрддрд┐ рд╕реВрдЪрдХрд╛рдВрдХ рд╕рд╛рд░рд╛рдВрд╢ред
```text
рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ тФАтФА library_add тФАтЦ╢ рдЪрдВрдХ (рд╕реНрд▓рд╛рдЗрдбрд┐рдВрдЧ рд╡рд┐рдВрдбреЛ) тФАтЦ╢ рдПрдореНрдмреЗрдб (рд╣реИрд╢ / рдмрд╛рд╣рд░реА рдХрдорд╛рдВрдб)
тФВ
рднрдВрдбрд╛рд░рдг рдбреЛрдореЗрди (documents / chunks / purges)
тФВ
рдХреНрд╡реЗрд░реА тФАтФА library_search тФАтЦ╢ рд╣рд╛рдЗрдмреНрд░рд┐рдб рд╕реНрдХреЛрд░ тФАтЦ╢ MMR рдкреБрдирдГ-рдХреНрд░рдо тФАтЦ╢ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХрддрд╛ рдЫрдВрдЯрд╛рдИ
тФВ тФАтЦ╢ lost-in-middle рдХреНрд░рдо
тЦ╝
[n] рдЪрд┐рд╣реНрдиреЛрдВ рд╡рд╛рд▓рд╛ рдкрд░рд┐рдгрд╛рдо-рдкреГрд╖реНрда тФАтФА inject: true тФАтЦ╢ рдПрдЬреЗрдВрдЯ + library/inject рдШрдЯрдирд╛ (рд╣реЛрд╕реНрдЯ-рдЧреЗрдЯреЗрдб)
```
## рддреНрд╡рд░рд┐рдд рд╢реБрд░реБрдЖрдд
```sh
dsh plugin --profile web add github:PerryLink/dsh-library
```
```sh
# 1. рдмрдВрдбрд▓ рдХреЛ рдЕрдкрдиреЗ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ
dsh plugin --profile web add github:PerryLink/dsh-library
# рдпрд╛ npm рд╕реЗ (рдкреНрд░рдХрд╛рд╢рд┐рдд рд░рд┐рд▓реАрдЬрд╝)
dsh plugin --profile web add dsh-library
# 2. рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░реЗрдВ рдФрд░ рдкрдВрдХреНрддрд┐ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ
dsh --profile web --dump-config | grep -A2 'id: dsh-library'
```
рдлрд┐рд░ рдПрдЬреЗрдВрдЯ рд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЛ рдХрд╣реЗрдВ:
```
> ./docs/spec.md рдХреЛ docs рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ, рдлрд┐рд░ рдЙрддреНрддрд░ рджреЗрдВ: spec рд░рд┐рдЯреНрд░рд╛рдИ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рдХрд╣рддреА рд╣реИ? [n] рдЪрд┐рд╣реНрдиреЛрдВ рд╕реЗ рдЙрджреНрдзреГрдд рдХрд░реЗрдВред
```
### рдЙрджрд╛рд╣рд░рдг
рдпреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рд╣реИрдВ; рдЗрдВрд╕реНрдЯреЙрд▓ рдХреЗ рдмрд╛рдж рдПрдХ рдЪрд▓рд╛рдПрдБред
#### рд╡рд┐рд╕реНрддреГрдд рдЙрджрд╛рд╣рд░рдг
**рдХрдорд╛рдВрдб**
~~~sh
library_search({ library: "docs", query: "what is the harness built on", inject: true })
~~~
**рдЖрдЙрдЯрдкреБрдЯ**
~~~text
Library docs: 2 result(s) for "what is the harness built on"
[1] DeepSeek Harness is a plugin-based agent harness built on vendored Cordis. Everything in the harness is a plugin row inside a cordis.yml composition. The tools/pre-execute waterfall lets plugins gateтАж
[2] The recipe for sourdough starts with a levain fed the night before. Bulk fermentation takes four to six hours at room temperature. Bake in a dutch oven at 230 degrees Celsius for the first twenty minтАж
~~~
*рд╕реНрд░реЛрдд `README.md:161-167; tests/index.spec.ts:46-64; src/index.ts:830-836`*
#### рд╡рд┐рдлрд▓рддрд╛ рд╢рд╛рдЦрд╛
**рдЗрдирдкреБрдЯ**
~~~text
{"path":"/nonexistent/dsh-library-missing.txt","library":"docs"}
~~~
**рдЖрдЙрдЯрдкреБрдЯ**
~~~text
isError=true; error.message=cannot read "/nonexistent/dsh-library-missing.txt": not found; error.info={"name":"FsError","code":"FS_NOT_FOUND"}
~~~
*рд╕реНрд░реЛрдд `plugins/dsh-library/src/index.ts:695-696 (fs.resolve/readText); plugins/dsh-library/tests/index.spec.ts:143-151 (unreadable path); plugins/dsh-library/README.md:195 (unreadable files fail loud); exercised through plugins/dsh-library/tests/harness.ts`*
#### рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЙрджрд╛рд╣рд░рдг
- `library_search`
- `library_list`
## рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди
рд╕рднреА рд╕рдорд╛рдпреЛрдЬрди Schemastery `Config` рдлрд╝реАрд▓реНрдб рд╣реИрдВ (cordis.yml рд╕реЗ рдмрджрд▓реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ)ред id-рд▓рдХреНрд╖рд┐рдд рдУрд╡рд░рд░рд╛рдЗрдб рдкреВрд░реА рдкрдВрдХреНрддрд┐ рдмрджрд▓ рджреЗрддрд╛ рд╣реИ тАФ рдЬрд╝рд░реВрд░рдд рдХреА рд╣рд░ рдХреБрдВрдЬреА рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦреЗрдВред `cordis.patch.yml` рд╣рд░ рдХреБрдВрдЬреА рдХреЛ рдЗрдирд▓рд╛рдЗрди рд╕рдордЭрд╛рддрд╛ рд╣реИред
| рдХреБрдВрдЬреА | рдбрд┐рдлрд╝реЙрд▓реНрдЯ | рдЕрд░реНрде |
|---|---|---|
| `chunkSize` | `900` | рд╕реНрд▓рд╛рдЗрдбрд┐рдВрдЧ-рд╡рд┐рдВрдбреЛ рдЪрдВрдХ рдЖрдХрд╛рд░ рд╡рд░реНрдгреЛрдВ рдореЗрдВ (тЙд 4000) |
| `chunkOverlap` | `120` | рд▓рдЧрд╛рддрд╛рд░ рд╡рд┐рдВрдбреЛ рдХреЗ рдмреАрдЪ рдУрд╡рд░рд▓реИрдк; `chunkSize` рд╕реЗ рдЫреЛрдЯрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП |
| `maxFileBytes` | `5242880` | рдЗрд╕рд╕реЗ рдмрдбрд╝реА рдлрд╝рд╛рдЗрд▓реЗрдВ `library_add` рдкрд░ рдЕрд╕реНрд╡реАрдХрд╛рд░ рд╣реЛрддреА рд╣реИрдВ |
| `embedding.dims` | `256` | рд╣реИрд╢-рдПрдореНрдмреЗрдбрд┐рдВрдЧ рдЖрдпрд╛рдо (тЙе 8) |
| `embedding.provider` | `hash` | рдПрдореНрдмреЗрдбрд░ рдмреИрдХрдПрдВрдб: `hash` (рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд, рд╢реВрдиреНрдп рдбрд╛рдЙрдирд▓реЛрдб), `command` (рдмрд╛рд╣рд░реА рдЙрдкрдкреНрд░рдХреНрд░рд┐рдпрд╛, `embedding.command` рдЖрд╡рд╢реНрдпрдХ), `ollama` (рд╕реНрдерд╛рдиреАрдп Ollama, рдЕрдиреБрдкрд▓рдмреНрдз рд╣реЛрдиреЗ рдкрд░ `hash` рдореЗрдВ рдбрд┐рдЧреНрд░реЗрдб) |
| `embedding.command` | `''` | рд╡реИрдХрд▓реНрдкрд┐рдХ рдмрд╛рд╣рд░реА рдПрдореНрдмреЗрдбрд░ рдХрдорд╛рдВрдб (рд╕реНрдкреЗрд╕-рд╕реЗрдкрд░реЗрдЯреЗрдб argv, рдХреЛрдИ рд╢реЗрд▓ рдирд╣реАрдВ) `ctx.subprocess` рд╕реЗ; рд╕реЗрдЯ рдХрд░рдиреЗ рдкрд░ `command` рдмреИрдХрдПрдВрдб рдЪрдпрдирд┐рдд рд╣реЛрддрд╛ рд╣реИ |
| `embedding.ollamaUrl` / `ollamaModel` | `http://127.0.0.1:11434` / `nomic-embed-text` | `ollama` рдмреИрдХрдПрдВрдб рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдп Ollama рдПрдВрдбрдкреЙрдЗрдВрдЯ рд╡ рдореЙрдбрд▓ (рд╢реВрдиреНрдп рдХреНрд▓рд╛рдЙрдб) |
| `embedding.timeoutMs` / `graceMs` / `maxOutputBytes` / `maxBatchItems` | `30000` / `1000` / `1048576` / `64` | рдПрдореНрдмреЗрдбрд░ рдЙрдкрдкреНрд░рдХреНрд░рд┐рдпрд╛ рдмрдЬрдЯ |
| `search.topK` | `8` | рдкреВрд░реА рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреЗ рдмрд╛рдж рд▓реМрдЯреЗ рдкрд░рд┐рдгрд╛рдо |
| `search.hybridWeight` | `0.6` | 0 = рдХреЗрд╡рд▓ рдХреАрд╡рд░реНрдб, 1 = рдХреЗрд╡рд▓ рд╕рд┐рдореЗрдВрдЯрд┐рдХ |
| `search.minRelevance` | `0.15` | рдЗрд╕ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХрддрд╛ рд╕реАрдорд╛ рд╕реЗ рдиреАрдЪреЗ рдХреЗ рдЪрдВрдХ рдЫрд╛рдБрдЯреЗ рдЬрд╛рддреЗ рд╣реИрдВ |
| `search.diversityLambda` | `0.5` | MMR рд╕рдВрддреБрд▓рди: 1 = рд╢реБрджреНрдз рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХрддрд╛, 0 = рд╢реБрджреНрдз рд╡рд┐рд╡рд┐рдзрддрд╛ |
| `search.lostMiddleHead` / `lostMiddleTail` | `1` / `1` | рд╕рдмрд╕реЗ рдордЬрд╝рдмреВрдд рдЪрдВрдХ рд╢реАрд░реНрд╖ / рдкреВрдБрдЫ рдкрд░ |
| `search.maxResultChars` | `16000` | рдореЙрдбрд▓-рджреГрд╢реНрдп рдкрд░рд┐рдгрд╛рдо-рдкреГрд╖реНрда рд╡рд░реНрдг рдмрдЬрдЯ |
| `injection.enabled` / `maxChars` | `true` / `12000` | `library_search` рдЗрдВрдЬреЗрдХреНрд╢рди рд╡реНрдпрд╡рд╣рд╛рд░ рд╡ рдмрдЬрдЯ |
| `citation.windowChars` / `minScore` / `minSemantic` | `150` / `40` / `0.1` | `library_cite_check` рд╕реАрдорд╛рдПрдБ |
| `purge.signatureLength` / `maxProbes` | `4` / `24` | рдкрд░реНрдЬ рд╕рддреНрдпрд╛рдкрди рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╡ рдЬрд╛рдБрдЪ рдмрдЬрдЯ |
| `diagnose.maxDuplicatePairs` / `sampleCap` / `positionBins` | `24` / `200` / `5` | `library_diagnose` рдмрдЬрдЯ рд╕реАрдорд╛рдПрдБ |
## рдЯреВрд▓ рдФрд░ рд╕рддрд╣реЗрдВ
| рдЯреВрд▓ | рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ |
|---|---|
| `library_add` | `{ path, library, name? }` тЖТ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ id; рдлрд╝рд╛рдЗрд▓ harness рдлрд╝рд╛рдЗрд▓-рд╕реЗрд╡рд╛ рд╕реЗ рдкрдврд╝реА рдЬрд╛рддреА рд╣реИ |
| `library_remove` | `{ library, documentId }` тЖТ рд╣рдЯрд╛рдиреЗ рдХрд╛ рд╕рд╛рд░рд╛рдВрд╢ + рдкрд░реНрдЬ рдирд┐рд░реНрдгрдп (рдЕрд╡рд╢реЗрд╖ рд░рд┐рдкреЛрд░реНрдЯ) |
| `library_list` | `{ library? }` тЖТ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдЯрд╛рдбреЗрдЯрд╛ (рдХрднреА рдкрд╛рда рдирд╣реАрдВ) |
| `library_search` | `{ query, library, topK?, inject? }` тЖТ `[n]` рдЪрд┐рд╣реНрдиреЛрдВ рд╕рд╣рд┐рдд рдХреНрд░рдордмрджреНрдз рд╣рд┐рдЯ; `inject: true` рдХреЙрд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрдЬреЗрдВрдЯ рдореЗрдВ рдмреАрдЬ рдбрд╛рд▓рддрд╛ рд╣реИ |
| `library_cite_check` | `{ library, query, answer }` тЖТ рдкреНрд░рддрд┐-рдЙрджреНрдзрд░рдг рд╡реИрдз/рдЕрд╡реИрдз рдирд┐рд░реНрдгрдп (рдлрд╝рдЬрд╝реА + рд╕рд┐рдореЗрдВрдЯрд┐рдХ) |
| `library_diagnose` | `{ library }` тЖТ рдЪрдВрдХ рдЖрдБрдХрдбрд╝реЗ, рдбреБрдкреНрд▓рд┐рдХреЗрдЯ, рд╕реНрд╡-рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐, рдордзреНрдп-рджрдВрдб |
| `/library [name]` | рдХрдорд╛рдВрдб: рдкреНрд░рддрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдп рджрд╕реНрддрд╛рд╡реЗрдЬрд╝/рдЪрдВрдХ рд╕рд╛рд░рд╛рдВрд╢ |
## рдЕрдиреБрдорддрд┐рдпрд╛рдБ рдФрд░ рдбреЗрдЯрд╛
- **рдЕрдиреБрдорддрд┐рдпрд╛рдБ**: рдкреНрд▓рдЧрдЗрди рдХреЗрд╡рд▓ рд╡рд╣реА рдлрд╝рд╛рдЗрд▓реЗрдВ рдкрдврд╝рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ `library_add` рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ (harness рдлрд╝рд╛рдЗрд▓-рд╕реЗрд╡рд╛ рдФрд░ рдЙрд╕рдХреА рдиреАрддрд┐ рд╕реЗ) рдФрд░ рдХреЗрд╡рд▓ рдЕрдкрдиреЗ `dsh_library` рднрдВрдбрд╛рд░рдг рдбреЛрдореЗрди рдореЗрдВ рд▓рд┐рдЦрддрд╛ рд╣реИред рдХреЛрдИ рдиреЗрдЯрд╡рд░реНрдХ рдЕрдиреБрд░реЛрдз рдирд╣реАрдВ; рд╡реИрдХрд▓реНрдкрд┐рдХ рдмрд╛рд╣рд░реА рдПрдореНрдмреЗрдбрд░ `ctx.subprocess` рд╕реЗ рдмрд┐рдирд╛ рд╢реЗрд▓-рд╡реНрдпрд╛рдЦреНрдпрд╛ рдЪрд▓рддрд╛ рд╣реИред
- **рдбреЗрдЯрд╛**: рдЪрдВрдХ рдкрд╛рда рдФрд░ рдПрдореНрдмреЗрдбрд┐рдВрдЧ рд╣реЛрд╕реНрдЯ рдХреЗ рднрдВрдбрд╛рд░рдг рдмреИрдХрдПрдВрдб рдореЗрдВ рд░рд╣рддреЗ рд╣реИрдВ (рдбрд┐рдкреНрд▓реЙрдпрдореЗрдВрдЯ рдХреЗ рдмрд╛рдХреА рд╕реНрдерд╛рдпреА рдбреЗрдЯрд╛ рдЬреИрд╕рд╛ рд╣реА рднрд░реЛрд╕рд╛); рдкреНрд▓рдЧрдЗрди рдХреЛрдИ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдирд╣реАрдВ рдЬреЛрдбрд╝рддрд╛ред рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкрде рдФрд░ рдПрдореНрдмреЗрдбрд┐рдВрдЧ рдХрднреА рд╕рддреНрд░ рд▓реЙрдЧ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рддреЗред
- **рд╕рддреНрд░ рд▓реЙрдЧ**: `library/inject` (id, рдХреНрд╡реЗрд░реА, рдЪрдВрдХ ids, рдкреГрд╖реНрда рдЖрдХрд╛рд░) рдФрд░ `library/purge` (рдирд┐рд░реНрдгрдп) рдХреЗрд╡рд▓-рд▓реЙрдЧ рдСрдбрд┐рдЯ рдШрдЯрдирд╛рдПрдБ рд╣реИрдВ тАФ рдореЙрдбрд▓-рджреГрд╢реНрдп рдЗрдВрдЬреЗрдХреНрдЯреЗрдб рдкреГрд╖реНрда рдЙрдирд╕реЗ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдпреЛрдЧреНрдп рд╣реИред рд▓рд┐рдЦрд╛рд╡рдЯ рд╣реЛрд╕реНрдЯ-рдЧреЗрдЯреЗрдб рд╣реИ: рдЬрд┐рди рд╣рд╛рд░реНрдиреЗрд╕ рдХрд╛ рдЬреНрдЮрд╛рдд-рдкреНрд░рдХрд╛рд░ рд╕рдореВрд╣ рд╢рдмреНрджрд╛рд╡рд▓реА рдХреЛ рдХрд╡рд░ рдХрд░рддрд╛ рд╣реИ рд╡реЗ рдШрдЯрдирд╛рдПрдБ рдкрд╛рддреЗ рд╣реИрдВ, `ignorable`-рд▓рд┐рдлрд╝рд╛рдлрд╝реЗ рд╡рд╛рд▓реЗ рдмрд┐рд▓реНрдб рдЙрдиреНрд╣реЗрдВ рдЪрд┐рд╣реНрди рдХреЗ рд╕рд╛рде рдкрд╛рддреЗ рд╣реИрдВ, рдФрд░ рд▓рд┐рдлрд╝рд╛рдлрд╝рд╛-рд░рд╣рд┐рдд рдмрд┐рд▓реНрдб (0.1.1-rc.2, 0.1.2-rc.1) рд▓рд┐рдЦрд╛рд╡рдЯ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ тАФ рд╡рд╣рд╛рдБ рд▓реЙрдЧ рдХрд┐рдП рдЧрдП `tool/call` + `tool/result` рдШрдЯрдирд╛рдПрдБ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдпреЛрдЧреНрдп рдСрдбрд┐рдЯ-рдХрдбрд╝реА рдмрдиреА рд░рд╣рддреА рд╣реИрдВред
0.1.2-rc.1 (2026-09-02 рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд): рд╕рддреНрд░ рд▓рд┐рдлрд╝рд╛рдлрд╝рд╛ рдЕрдкрдирд╛ ignorable рдлрд╝реАрд▓реНрдб рдХреЗрд╡рд▓ рд╕рдВрдЧреНрд░рд╣реАрдд-рд▓реЙрдЧ рдкрдарди рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП рд░рдЦрддрд╛ рд╣реИ - Session.append рдЕрднреА рднреА рдЗрд╕реЗ рд╕реНрдЯреИрдореНрдк рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рдЗрд╕рд▓рд┐рдП рдЧреЗрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реИред
## рд╕реБрд░рдХреНрд╖рд╛ рд╕реАрдорд╛рдПрдБ
- **рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдиреАрдпред** рд╢реВрдиреНрдп рдореЙрдбрд▓ рдбрд╛рдЙрдирд▓реЛрдб, рд╢реВрдиреНрдп рдиреЗрдЯрд╡рд░реНрдХ рдХреЙрд▓ тАФ рд╕реНрдХреЛрд░рд┐рдВрдЧ рдирд┐рдпрддрд╛рддреНрдордХ рд╣реИрд╢ рд╡ рдЯреЛрдХрди рдЧрдгрд┐рдд рд╣реИред рдХреЗрд╡рд▓ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдПрдореНрдмреЗрдбрд░ рдХрдорд╛рдВрдб рдХреЛрдб рдЪрд▓рд╛рддрд╛ рд╣реИ, рдФрд░ рдЙрд╕рдХрд╛ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдкреВрд░реНрдгрддрд╛-рдЬрд╛рдБрдЪ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ-рд╕реАрдорд┐рдд рд╣реИред
- **рдХреЛрдИ рдордирдЧрдврд╝рдВрдд рдирд╣реАрдВред** рдЙрджреНрдзрд░рдг рдЬрд╛рдБрдЪ рд╡рд╣реА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддреА рд╣реИ рдЬреЛ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреА рд╣реИ; рд╕рдВрджрд┐рдЧреНрдз рдЙрджреНрдзрд░рдг рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рджрд┐рдЦрддреЗ рд╣реИрдВ, рдЕрдиреБрдорд╛рди рдирд╣реАрдВ рд▓рдЧрд╛рдП рдЬрд╛рддреЗред
- **рдкрд░реНрдЬ рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрддрд╛ рд╣реИред** `library_remove` рд╣рдЯрд╛рдИ рдЧрдИ рд╕рд╛рдордЧреНрд░реА рдХреЗ рдирд┐рдпрддрд╛рддреНрдордХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░реЛрдВ рд╕реЗ рд╢реЗрд╖ рд╕реВрдЪрдХрд╛рдВрдХ рдЬрд╛рдБрдЪрддрд╛ рд╣реИ рдФрд░ рд╕рдлрд▓рддрд╛ рдорд╛рдирдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЕрд╡рд╢реЗрд╖ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИред
- **рдЬрд╝реЛрд░ рд╕реЗ рд╡рд┐рдлрд▓ред** рдЕрдорд╛рдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдп рдирд╛рдо, рдмрд╣реБрдд рдмрдбрд╝реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝, рдЕрдкрдардиреАрдп рдлрд╝рд╛рдЗрд▓реЗрдВ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░-рдкрд░-рдЕрдиреБрдкрд╕реНрдерд┐рдд рдПрдореНрдмреЗрдбрд░ рд╕реАрдо рд╕реНрдкрд╖реНрдЯ рддреНрд░реБрдЯрд┐ рд╕реЗ рд╡рд┐рдлрд▓ рд╣реЛрддреЗ рд╣реИрдВред
## рдЬреНрдЮрд╛рдд рд╕реАрдорд╛рдПрдБ
- **рд╢рд╛рдмреНрджрд┐рдХ-рд╕реНрддрд░ рдПрдореНрдмреЗрдбрд┐рдВрдЧред** рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╣реИрд╢ рдПрдореНрдмреЗрдбрд░ рд╕рддрд╣реА рд╕рдорд╛рдирддрд╛ рд╕реНрдХреЛрд░ рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрде рдирд╣реАрдВ; рд╡реНрдпрд╛рдЦреНрдпрд╛рддреНрдордХ рд╡рд╛рдХреНрдпреЛрдВ рдкрд░ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐ рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореЙрдбрд▓ рд╕реЗ рдХрдо рд╣реИ тАФ рдордЬрд╝рдмреВрдд рд╕рд┐рдореЗрдВрдЯрд┐рдХреНрд╕ рдХреЗ рд▓рд┐рдП `embedding.command` рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВред
- **рд╕реНрдерд╛рдиреАрдп рдЙрджреНрдзрд░рдг рдореЙрдбрд▓ред** `library_cite_check` рдкрд░рд┐рдгрд╛рдо-рдкреГрд╖реНрда (`[n]` рдХреНрд░рдорд╛рдВрдХрди) рдХреЗ рд╡рд┐рд░реБрджреНрдз рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдореБрдХреНрдд рд╕реНрд░реЛрдд-рдирд╛рдореЛрдВ рдХреЗ рд╡рд┐рд░реБрджреНрдз рдирд╣реАрдВ; рдлрд╝рдЬрд╝реА рд╕реНрдХреЛрд░ рдПрдХ рд╕реАрдорд┐рдд рдЯреЛрдХрди-рдЕрдиреБрдХреНрд░рдо рдЖрдВрд╢рд┐рдХ рдЕрдиреБрдкрд╛рдд рд╣реИред
- **рдХреЛрдИ рдЕрдВрддрд░реНрдЧреНрд░рд╣рдг рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдирд╣реАрдВред** рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкрде рд╕реЗ рдЖрдпрд╛рдд рд╣реЛрддреЗ рд╣реИрдВ (`md`/`txt`); PDF/docx рдирд┐рд╖реНрдХрд░реНрд╖рдг v0.1.0 рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИред
- **рд╣реЛрд╕реНрдЯ-рдЧреЗрдЯреЗрдб рдСрдбрд┐рдЯ рдШрдЯрдирд╛рдПрдБред** `library/inject` / `library/purge` рдХреЗрд╡рд▓ рдЙрдиреНрд╣реАрдВ рд╣рд╛рд░реНрдиреЗрд╕ рдкрд░ рд▓рд┐рдЦреА рдЬрд╛рддреА рд╣реИрдВ рдЬреЛ рдЙрдиреНрд╣реЗрдВ рд╕рдБрднрд╛рд▓ рд╕рдХреЗрдВ (рдЕрдиреБрдорддрд┐рдпрд╛рдБ рдФрд░ рдбреЗрдЯрд╛ рджреЗрдЦреЗрдВ); рдкреНрд░рдХрд╛рд╢рд┐рдд `0.1.2-rc.1` рд▓рд╛рдЗрди рдкрд░ (рдкрд╣рд▓реЗ рдХреА рд▓рд┐рдлрд╝рд╛рдлрд╝рд╛-рд░рд╣рд┐рдд рд▓рд╛рдЗрдиреЛрдВ рдХреА рддрд░рд╣) рдпреЗ рдирд╣реАрдВ рд▓рд┐рдЦреА рдЬрд╛рддреАрдВ, рдФрд░ рд╣рд░ рддрдереНрдп рдЯреВрд▓ рдХреЙрд▓/рдкрд░рд┐рдгрд╛рдо рд▓реЙрдЧ рд╕реЗ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдпреЛрдЧреНрдп рд░рд╣рддрд╛ рд╣реИред
## рд╡рд┐рдХрд╛рд╕
```sh
pnpm install # node ^22.19 || >=24
pnpm run typecheck # tsc: src + tests рд╕реНрдерд╛рдиреАрдп рд╣рд╛рд░реНрдиреЗрд╕ рдЪреЗрдХрдЖрдЙрдЯ рдХреЗ рд╡рд┐рд░реБрджреНрдз
pnpm run typecheck:ci # tsc рдкреНрд░рдХрд╛рд╢рд┐рдд 0.1.7-rc.2 рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╡рд┐рд░реБрджреНрдз (рдмрд┐рдирд╛ paths)
pnpm test # vitest: рдЧреБрдгрд╡рддреНрддрд╛ рдкреЛрд░реНрдЯ, рдореВрд▓ рд╢рдмреНрджрд╛рд╡рд▓реА, рд╡рд╛рд╕реНрддрд╡рд┐рдХ-рд╕реНрдЯреИрдХ рд╕рдВрдпреЛрдЬрди
pnpm run build # tsdown рдмрдВрдбрд▓ + tsc рдШреЛрд╖рдгрд╛рдПрдБ (lib/)
pnpm run verify:self-contained # рдирд┐рд░реНрднрд░рддрд╛ рд╕реНрдкреЗрдХ registry рд╕реЗ рд╣рд▓ рд╣реЛрддреА рд╣реИрдВ
pnpm run verify:artifacts # рдирд┐рд░реНрдорд┐рдд ESM рдлрд╝реЗрд╕ + рдмрдВрдбрд▓ рдкреИрдЪ рдореМрдЬреВрдж
pnpm pack # рдкреНрд░рдХрд╛рд╢рд┐рдд tarball
```
## Topics
`dsh`, `dsh-plugin`, `deepseek-harness`, `deepseek`, `cordis`, `rag`, `knowledge-base`, `retrieval`, `embedding`, `vector-search`, `citation-validation`, `document-library`
## Contributors
- [@PerryLink](https://github.com/PerryLink) тАФ рдирд┐рд░реНрдорд╛рддрд╛ рдФрд░ рдореЗрдВрдЯреЗрдирд░: рдЖрда рдЧреБрдгрд╡рддреНрддрд╛ рдкреЛрд░реНрдЯ, рднрдВрдбрд╛рд░рдг-рдбреЛрдореЗрди рд╕реВрдЪрдХрд╛рдВрдХ, рд╣рд╛рдЗрдмреНрд░рд┐рдб рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐ рдкрд╛рдЗрдкрд▓рд╛рдЗрди, рдЙрджреНрдзрд░рдг/рдкрд░реНрдЬ рд╕рддреНрдпрд╛рдкрди рдФрд░ рдкрд╛рдБрдЪ-рднрд╛рд╖рд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ред
## PerryLink DSH Plugin Family
рдпрд╣ рдкреНрд░реЛрдЬреЗрдХреНрдЯ [PerryLink](https://github.com/PerryLink) рдХреЗ DeepSeek Harness рдкреНрд▓рдЧрдЗрди рдкрд░рд┐рд╡рд╛рд░ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рдкреВрд░реА рд╕реВрдЪреА рдиреАрдЪреЗ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд░рдЦреА рдЧрдИ рд╣реИ рддрд╛рдХрд┐ рд╣рд░ README рдХреА рдкрд╣рд▓реА рд╕реНрдХреНрд░реАрди рдЫреЛрдЯреА рд░рд╣реЗ; рд╣рд░ рдкрдВрдХреНрддрд┐ рдФрд░ рдЙрд╕рдХреА рд╕реНрдерд┐рддрд┐ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдЦреЛрд▓реЗрдВред
рд╕рднреА рдкреНрд▓рдЧрдЗрди рдЦреЛрд▓реЗрдВ
| рдкреНрд▓рдЧрдЗрди | рд╕реНрдерд┐рддрд┐ |
|---|---|
| **[dsh-aqua-input-check](https://github.com/PerryLink/dsh-aqua-input-check)** | |
| **[dsh-archive-check](https://github.com/PerryLink/dsh-archive-check)** | |
| **[dsh-auto-review](https://github.com/PerryLink/dsh-auto-review)** | |
| **[dsh-autotier](https://github.com/PerryLink/dsh-autotier)** | |
| **[dsh-bid-ca-precheck](https://github.com/PerryLink/dsh-bid-ca-precheck)** | |
| **[dsh-bid-qual-check](https://github.com/PerryLink/dsh-bid-qual-check)** | |
| **[dsh-cert-mcp](https://github.com/PerryLink/dsh-cert-mcp)** | |
| **[dsh-checkpoint-rewind](https://github.com/PerryLink/dsh-checkpoint-rewind)** | |
| **[dsh-click](https://github.com/PerryLink/dsh-click)** | |
| **[dsh-composer-history](https://github.com/PerryLink/dsh-composer-history)** | |
| **[dsh-contract-stance](https://github.com/PerryLink/dsh-contract-stance)** | |
| **[dsh-customs-doc-check](https://github.com/PerryLink/dsh-customs-doc-check)** | |
| **[dsh-data-quality](https://github.com/PerryLink/dsh-data-quality)** | |
| **[dsh-demurrage-ledger](https://github.com/PerryLink/dsh-demurrage-ledger)** | |
| **[dsh-doublecheck](https://github.com/PerryLink/dsh-doublecheck)** | |
| **[dsh-drill-script-check](https://github.com/PerryLink/dsh-drill-script-check)** | |
| **[dsh-eia-guide-check](https://github.com/PerryLink/dsh-eia-guide-check)** | |
| **[dsh-emergency-plan](https://github.com/PerryLink/dsh-emergency-plan)** | |
| **[dsh-essay-rubric-check](https://github.com/PerryLink/dsh-essay-rubric-check)** | |
| **[dsh-evidence-check](https://github.com/PerryLink/dsh-evidence-check)** | |
| **[dsh-export-ctl-check](https://github.com/PerryLink/dsh-export-ctl-check)** | |
| **[dsh-fast](https://github.com/PerryLink/dsh-fast)** | |
| **[dsh-fmea-table-check](https://github.com/PerryLink/dsh-fmea-table-check)** | |
| **[dsh-forecast-penalty](https://github.com/PerryLink/dsh-forecast-penalty)** | |
| **[dsh-fund-research](https://github.com/PerryLink/dsh-fund-research)** | |
| **[dsh-github](https://github.com/PerryLink/dsh-github)** | |
| **[dsh-gongwen-flow-check](https://github.com/PerryLink/dsh-gongwen-flow-check)** | |
| **[dsh-gongwen-word-check](https://github.com/PerryLink/dsh-gongwen-word-check)** | |
| **[dsh-guard-plan-qc](https://github.com/PerryLink/dsh-guard-plan-qc)** | |
| **[dsh-hazchem-check](https://github.com/PerryLink/dsh-hazchem-check)** | |
| **[dsh-hazplan-check](https://github.com/PerryLink/dsh-hazplan-check)** | |
| **[dsh-hidden-risk-map](https://github.com/PerryLink/dsh-hidden-risk-map)** | |
| **[dsh-hs-classify](https://github.com/PerryLink/dsh-hs-classify)** | |
| **[dsh-icd-rule-check](https://github.com/PerryLink/dsh-icd-rule-check)** | |
| **[dsh-industry-research](https://github.com/PerryLink/dsh-industry-research)** | |
| **[dsh-lawcite-adapter](https://github.com/PerryLink/dsh-lawcite-adapter)** | |
| **[dsh-laya](https://github.com/PerryLink/dsh-laya)** | |
| **[dsh-lc-doc-check](https://github.com/PerryLink/dsh-lc-doc-check)** | |
| **[dsh-learning-gap-check](https://github.com/PerryLink/dsh-learning-gap-check)** | |
| **[dsh-library](https://github.com/PerryLink/dsh-library)** | |
| **[dsh-local-ai](https://github.com/PerryLink/dsh-local-ai)** | |
| **[dsh-lsp-actions](https://github.com/PerryLink/dsh-lsp-actions)** | |
| **[dsh-mask](https://github.com/PerryLink/dsh-mask)** | |
| **[dsh-mcp-panel](https://github.com/PerryLink/dsh-mcp-panel)** | |
| **[dsh-medrec-qc](https://github.com/PerryLink/dsh-medrec-qc)** | |
| **[dsh-memento](https://github.com/PerryLink/dsh-memento)** | |
| **[dsh-nsfc-form-check](https://github.com/PerryLink/dsh-nsfc-form-check)** | |
| **[dsh-nurse-record-check](https://github.com/PerryLink/dsh-nurse-record-check)** | |
| **[dsh-observe](https://github.com/PerryLink/dsh-observe)** | |
| **[dsh-origin-rvc-check](https://github.com/PerryLink/dsh-origin-rvc-check)** | |
| **[dsh-ota-review-check](https://github.com/PerryLink/dsh-ota-review-check)** | |
| **[dsh-output-styles](https://github.com/PerryLink/dsh-output-styles)** | |
| **[dsh-paper-doc-adapter](https://github.com/PerryLink/dsh-paper-doc-adapter)** | |
| **[dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules)** | |
| **[dsh-permit-report-check](https://github.com/PerryLink/dsh-permit-report-check)** | |
| **[dsh-pipeline-check](https://github.com/PerryLink/dsh-pipeline-check)** | |
| **[dsh-pleading-draft](https://github.com/PerryLink/dsh-pleading-draft)** | |
| **[dsh-plugin-doctor](https://github.com/PerryLink/dsh-plugin-doctor)** | |
| **[dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide)** | |
| **[dsh-plugin-kit](https://github.com/PerryLink/dsh-plugin-kit)** | |
| **[dsh-plugin-upgrade](https://github.com/PerryLink/dsh-plugin-upgrade)** | |
| **[dsh-policy-brief-draft](https://github.com/PerryLink/dsh-policy-brief-draft)** | |
| **[dsh-power-loss-split](https://github.com/PerryLink/dsh-power-loss-split)** | |
| **[dsh-power-ticket-check](https://github.com/PerryLink/dsh-power-ticket-check)** | |
| **[dsh-ppap-check](https://github.com/PerryLink/dsh-ppap-check)** | |
| **[dsh-protest-deadline](https://github.com/PerryLink/dsh-protest-deadline)** | |
| **[dsh-railway-window](https://github.com/PerryLink/dsh-railway-window)** | |
| **[dsh-repair-order-qc](https://github.com/PerryLink/dsh-repair-order-qc)** | |
| **[dsh-research-report](https://github.com/PerryLink/dsh-research-report)** | |
| **[dsh-review-reply-check](https://github.com/PerryLink/dsh-review-reply-check)** | |
| **[dsh-rulefile-check](https://github.com/PerryLink/dsh-rulefile-check)** | |
| **[dsh-safety-brief-check](https://github.com/PerryLink/dsh-safety-brief-check)** | |
| **[dsh-score](https://github.com/PerryLink/dsh-score)** | |
| **[dsh-session-sync](https://github.com/PerryLink/dsh-session-sync)** | |
| **[dsh-site-log-check](https://github.com/PerryLink/dsh-site-log-check)** | |
| **[dsh-skill-pack-security](https://github.com/PerryLink/dsh-skill-pack-security)** | |
| **[dsh-soe-decision-check](https://github.com/PerryLink/dsh-soe-decision-check)** | |
| **[dsh-soilwater-check](https://github.com/PerryLink/dsh-soilwater-check)** | |
| **[dsh-sop-sync-check](https://github.com/PerryLink/dsh-sop-sync-check)** | |
| **[dsh-spc-gbt-adapter](https://github.com/PerryLink/dsh-spc-gbt-adapter)** | |
| **[dsh-talk](https://github.com/PerryLink/dsh-talk)** | |
| **[dsh-tender-extract](https://github.com/PerryLink/dsh-tender-extract)** | |
| **[dsh-tender-matrix](https://github.com/PerryLink/dsh-tender-matrix)** | |
| **[dsh-test-drive](https://github.com/PerryLink/dsh-test-drive)** | |
| **[dsh-ticktick](https://github.com/PerryLink/dsh-ticktick)** | |
| **[dsh-translate](https://github.com/PerryLink/dsh-translate)** | |
| **[dsh-warranty-calc](https://github.com/PerryLink/dsh-warranty-calc)** | |
| **[dsh-budget](https://github.com/PerryLink/dsh-budget)** | ЁЯзК рдлрд╝реНрд░реЛрдЬрд╝рди тАФ рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА README рджреЗрдЦреЗрдВ |
| **[dsh-claude-move](https://github.com/PerryLink/dsh-claude-move)** | ЁЯзК рдлрд╝реНрд░реЛрдЬрд╝рди тАФ рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА README рджреЗрдЦреЗрдВ |
| **[dsh-defend](https://github.com/PerryLink/dsh-defend)** | ЁЯзК рдлрд╝реНрд░реЛрдЬрд╝рди тАФ рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА README рджреЗрдЦреЗрдВ |
| **[dsh-draw](https://github.com/PerryLink/dsh-draw)** | ЁЯзК рдлрд╝реНрд░реЛрдЬрд╝рди тАФ рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА README рджреЗрдЦреЗрдВ |
| **[dsh-reach](https://github.com/PerryLink/dsh-reach)** | ЁЯзК рдлрд╝реНрд░реЛрдЬрд╝рди тАФ рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА README рджреЗрдЦреЗрдВ |
| **[dsh-background-agents](https://github.com/PerryLink/dsh-background-agents)** | ЁЯЪл рд╕реЗрд╡рд╛рдирд┐рд╡реГрддреНрдд тАФ рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА README рджреЗрдЦреЗрдВ |
| **[dsh-session-pin](https://github.com/PerryLink/dsh-session-pin)** | ЁЯЪл рд╕реЗрд╡рд╛рдирд┐рд╡реГрддреНрдд тАФ рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА README рджреЗрдЦреЗрдВ |
| **[dsh-team-rooms](https://github.com/PerryLink/dsh-team-rooms)** | ЁЯЪл рд╕реЗрд╡рд╛рдирд┐рд╡реГрддреНрдд тАФ рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА README рджреЗрдЦреЗрдВ |
## License
[Apache License 2.0](LICENSE) ┬й 2026 dsh-library contributors
### DSH Desktop рдорд╛рд░реНрдХреЗрдЯ рд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ
рд╕рднреА PerryLink рдкреНрд▓рдЧрдЗрди DSH Desktop рдХреЗ рдмрд┐рд▓реНрдЯ-рдЗрди рдорд╛рд░реНрдХреЗрдЯ рдореЗрдВ рджреЗрдЦреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ: **Market тЖТ Sources тЖТ add source тЖТ рдкреЗрд╕реНрдЯ рдХрд░реЗрдВ** `https://perrylink-dsh-catalog.perrylink.workers.dev/catalog-source.json` **тЖТ рдЪреБрдиреЗрдВ**ред рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдорд╛рд░реНрдХреЗрдЯ рдХреЗ npm-identity рд╕рддреНрдпрд╛рдкрди рдФрд░ рдЖрдкрдХреА рдкреБрд╖реНрдЯрд┐ рд╕реЗ рд╣реА рд╣реЛрддрд╛ рд╣реИред