# chunk-invariance

Проверяет, не пропускает ли потоковый фильтр секреты на границах чанков, и создаёт pytest для регрессии.

- MCP-сервер · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 13
- Автор: ninadphalak
- Лицензия: Apache-2.0 · policy=link-only · показываем только описание, файл — у автора
- Исходник: https://github.com/ninadphalak/LLM-Shield-Proxy/tree/HEAD/chunk-invariance
- Обновлён: 2026-10-19
- HTML: https://affpapa.org/nevibecode/mcp/chunk-invariance

## Что делает

chunk-invariance сравнивает результат обработки целого текста с объединённым результатом потокового фильтра. Он перебирает заданные разбиения, сообщает первый сбой и показывает вход, части, ожидаемый и фактический вывод. Проверка работает со `str` и `bytes`, а для асинхронных генераторов есть отдельный API.

MCP-сервер предоставляет инструменты `check_stream_filter`, `write_regression_test` и `explain`. Он импортирует функцию из модуля, запускает её в отдельном процессе с тайм-аутом и может подготовить файл pytest на основе `assert_chunk_invariant`. Сервер не делает сетевых запросов и не записывает файлы сам. Передавайте только выдуманные образцы: результаты проверки и утечки попадут в ответ ассистенту и в сгенерированный тест.

## Требования
- Нужно: Python и uv (команды через uvx)

## Установка

### Claude Code (родная платформа)

**Командой платформы**
```bash
claude mcp add chunk-invariance -- uvx chunk-invariance
```
uvx запускает команду с именем пакета; если в README она другая — uvx --from chunk-invariance <команда>

### Codex

**Командой платформы**
```bash
codex mcp add chunk-invariance -- uvx chunk-invariance
```
uvx запускает команду с именем пакета; если в README она другая — uvx --from chunk-invariance <команда>

### Cursor

**Файл настроек**
Файл `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "chunk-invariance": {
            "command": "uvx",
            "args": [
                "chunk-invariance"
            ]
        }
    }
}
```
uvx запускает команду с именем пакета; если в README она другая — uvx --from chunk-invariance <команда>

### GitHub Copilot

**Файл настроек**
Файл `.vscode/mcp.json`:
```json
{
    "servers": {
        "chunk-invariance": {
            "type": "stdio",
            "command": "uvx",
            "args": [
                "chunk-invariance"
            ]
        }
    }
}
```
uvx запускает команду с именем пакета; если в README она другая — uvx --from chunk-invariance <команда>

### Gemini CLI

**Командой платформы**
```bash
gemini mcp add chunk-invariance uvx chunk-invariance
```
uvx запускает команду с именем пакета; если в README она другая — uvx --from chunk-invariance <команда>

## Когда брать
- находить секрет, разрезанный между чанками
- сравнивать потоковую и цельную обработку текста
- ловить короткий буфер удержания и пропущенный flush
- добавлять регрессионный тест для CI

## Примеры запросов агенту
- Проверь, пропускает ли `redact_stream` из `myapp/filters.py` значения, разрезанные между чанками, и создай регрессионный тест.
- Запусти проверку `redact_stream` на выдуманных образцах API-ключей.
- Объясни, почему фильтрация каждого чанка отдельно даёт утечку.

## Похожие
- [test-master](https://affpapa.org/nevibecode/skills/test-master.md) — скилл · 5300 установок
- [assertion-quality](https://affpapa.org/nevibecode/skills/assertion-quality.md) — скилл · 3600 установок
- [test-analysis-extensions](https://affpapa.org/nevibecode/skills/test-analysis-extensions.md) — скилл · 3100 установок
- [deepeval](https://affpapa.org/nevibecode/skills/deepeval.md) — скилл · 2800 установок
- [ai-test-generation](https://affpapa.org/nevibecode/skills/ai-test-generation.md) — скилл · 1200 установок
- [unit-testing](https://affpapa.org/nevibecode/skills/unit-testing.md) — скилл · 1100 установок

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
