воскресенье, 23 августа 2026 г.

Comet, T, TT

public class BackgroundService<
    TBehavior, TScheduler, TMetrics, TTuner,
    TAuth, TLogging, TCache, TRetry, TSer, TCompress>
    : BackgroundService
    where TBehavior : IBehaviorStrategy
    where TScheduler : ISchedulerStrategy
    where TMetrics : IMetricsStrategy
    where TTuner : ITunerStrategy
    where TAuth : IAuthStrategy
    where TLogging : ILoggingStrategy
    where TCache : ICacheStrategy
    where TRetry : IRetryStrategy
    where TSer : ISerializerStrategy
    where TCompress : ICompressorStrategy
{ ... }

" Если хотите, могу показать пример простого скрипта (C# или Python), который упаковывает код в Markdown без большой шапки." Покажите

Ниже два минималистичных варианта «своего Repomix» без шапки: на C# и на Python.
Оба делают одно и то же:

  • обходят директорию репозитория,

  • выбирают файлы по маскам,

  • собирают их в один .md файл,

  • перед каждым файлом ставят заголовок и Markdown‑блок кода.

Я специально сделал код максимально прямолинейным, чтобы легко адаптировать под ваши нужды.


Вариант 1: C# (консольное приложение)

csharp
using System; using System.IO; using System.Linq; using System.Collections.Generic; class RepoToMarkdown { static void Main(string[] args) { if (args.Length < 2) { Console.WriteLine("Usage: RepoToMarkdown <sourceDir> <outputFile.md>"); return; } var sourceDir = args[0]; var outputFile = args[1]; if (!Directory.Exists(sourceDir)) { Console.WriteLine($"Source directory does not exist: {sourceDir}"); return; } // Какие расширения включать var extensions = new HashSet<string>(StringComparer.OrdinalIgnoreCase) { ".cs", ".js", ".ts", ".cpp", ".h", ".json", ".yaml", ".yml", ".md" }; using var writer = new StreamWriter(outputFile); // МИНИМАЛЬНАЯ шапка (можно вообще убрать) writer.WriteLine($"# Repository dump"); writer.WriteLine(); writer.WriteLine($"Source: {sourceDir}"); writer.WriteLine($"Generated: {DateTime.Now}"); writer.WriteLine(); foreach (var file in Directory.EnumerateFiles(sourceDir, "*.*", SearchOption.AllDirectories)) { var ext = Path.GetExtension(file); if (!extensions.Contains(ext)) continue; var relativePath = Path.GetRelativePath(sourceDir, file); // Заголовок для файла writer.WriteLine(); writer.WriteLine($"## {relativePath}"); writer.WriteLine(); // Определяем язык для Markdown-блока var lang = GetLanguageByExtension(ext); writer.WriteLine($"```{lang}"); foreach (var line in File.ReadLines(file)) { writer.WriteLine(line); } writer.WriteLine("```"); writer.WriteLine(); } Console.WriteLine($"Done: {outputFile}"); } static string GetLanguageByExtension(string ext) { return ext.ToLower() switch { ".cs" => "csharp", ".js" => "javascript", ".ts" => "typescript", ".cpp" => "cpp", ".h" => "cpp", ".json" => "json", ".yaml" => "yaml", ".yml" => "yaml", ".md" => "", _ => "" }; } }

Как использовать:

  1. Собрать как обычное консольное приложение .NET (например, dotnet new console).

  2. Положить этот код в Program.cs (или отдельный файл и вызвать его).

  3. Запустить:

bash
dotnet run -- "C:\path\to\repo" "C:\path\to\dump.md"

Результат:

  • dump.md без большой шапки от Repomix.

  • Файлы идут один за другим:

text
## src/Services/MyBackgroundService.cs ```csharp // код файла ... ``` ## src/Controllers/HomeController.cs ```csharp // код файла ... ```

Шапку в начале (# Repository dump и пару строк) можете вообще убрать, если не нужна.


Вариант 2: Python (скрипт в одну файл)

Если вам удобнее Python (например, через VS Code или отдельную утилиту):

python
import os import sys from datetime import datetime EXTENSIONS = { ".cs", ".js", ".ts", ".cpp", ".h", ".json", ".yaml", ".yml", ".md" } LANG_MAP = { ".cs": "csharp", ".js": "javascript", ".ts": "typescript", ".cpp": "cpp", ".h": "cpp", ".json": "json", ".yaml": "yaml", ".yml": "yaml", ".md": "" } def get_lang(ext: str) -> str: return LANG_MAP.get(ext.lower(), "") def repo_to_markdown(source_dir: str, output_file: str) -> None: if not os.path.isdir(source_dir): print(f"Source directory does not exist: {source_dir}") return with open(output_file, "w", encoding="utf-8") as out: # Минимальная шапка (можно удалить) out.write("# Repository dump\n\n") out.write(f"Source: {source_dir}\n") out.write(f"Generated: {datetime.now()}\n\n") for root, dirs, files in os.walk(source_dir): for name in files: ext = os.path.splitext(name)[1] if ext not in EXTENSIONS: continue full_path = os.path.join(root, name) rel_path = os.path.relpath(full_path, source_dir) out.write(f"\n## {rel_path}\n\n") lang = get_lang(ext) out.write(f"```{lang}\n") with open(full_path, "r", encoding="utf-8", errors="ignore") as f: for line in f: out.write(line) out.write("\n```\n\n") print(f"Done: {output_file}") if __name__ == "__main__": if len(sys.argv) < 3: print("Usage: python repo_to_md.py <sourceDir> <outputFile.md>") sys.exit(1) source = sys.argv[1] output = sys.argv[2] repo_to_markdown(source, output)

Запуск:

bash
python repo_to_md.py "C:\path\to\repo" "C:\path\to\dump.md"

Что можно дальше улучшить под ваши задачи

Для вас, как .NET‑разработчика, логично:

  • расширить список расширений (.csproj, .sln, .razor, .cshtml, .config и т.д.),

  • добавить фильтры:

    • исключить bin/, obj/, .git/, node_modules/, dist/ и т.п.,

  • добавить минимальные метаданные (например, список проектов, дерево папок).

Главное — вы:

  • полностью контролируете формат,

  • избавляетесь от большой шапки Repomix,

  • остаётесь в привычном стекe (C# или Python + VS Code).

Если хотите, можем отдельно усложнить скрипт до почти полного аналога Repomix:
с игнор‑файлами, конфигом, несколькими форматами вывода (Markdown, plain text).

// Регистрация фоновых сервисов (порядок не важен) builder.Services.AddHostedService<PeriodicProcessor>(); builder.Services.AddHostedService<ContinuousListener>(); builder.Services.AddHostedService<StartupInitializer>(); builder.Services.AddHostedService<CronJob>(); Сейчас вошел в свои папки из VS Code У меня в комментариях в начале абзаца, который (абзац) приведен выше КАждое слово в комментриях высвечивается в квадрате желтого цвета. То есть каждое слово комментария в клетке желтого цвета. Как убрать эти клетки ? Слова посадили в Клетки - хорошо звучит, выглядит не очень.

Это не проблема кода, а функция VS Code — подсветка Unicode-символов (желтые квадраты показывают символы, которые могут выглядеть как другие, или относятся к небазовым ASCII).

В комментариях с русским текстом она часто «выделяет» каждый символ отдельным квадратом, выглядит как «слова в клетках» именно так, как вы описали.

Как убрать эти желтые клетки

Вариант 1: через всплывающую подсказку (быстро)

  1. Наведите курсор на любой символ в желтом квадрате.

  2. Появится всплывающая подсказка с объяснением и опцией настройки.

  3. Нажмите на неё и выберите что-то вроде:

    • Disable highlighting of non basic ASCII characters
      или

    • Adjust settings → отключить подсветку.

Это сразу запишет нужный параметр в ваши настройки.

Вариант 2: через настройки вручную

  1. В VS Code открыть настройки:

    • Ctrl + , (Windows/Linux) или Cmd + , (macOS),

    • или File → Preferences → Settings.

  2. В поиске настроек написать: unicodeHighlight.

  3. Найдите и установите в false следующие параметры:

    • Editor: Unicode Highlight: Non Basic ASCII
      (editor.unicodeHighlight.nonBasicASCII)

    • Editor: Unicode Highlight: Ambiguous Characters
      (editor.unicodeHighlight.ambiguousCharacters)

    • Editor: Unicode Highlight: Invisible Characters
      (editor.unicodeHighlight.invisibleCharacters)

Если хотите отключить только русские буквы — достаточно:

json
{ "editor.unicodeHighlight.nonBasicASCII": false }

Вариант 3: в settings.json

Если вы редактируете settings.json напрямую:

  1. Откройте settings.json:

    • Ctrl + Shift + PPreferences: Open Settings (JSON).

  2. Добавьте:

json
{ "editor.unicodeHighlight.nonBasicASCII": false, "editor.unicodeHighlight.ambiguousCharacters": false, "editor.unicodeHighlight.invisibleCharacters": false }

После этого желтые квадраты вокруг букв в комментариях исчезнут.

В комментариях желтые квадраты исчезли, но появились в Логах на словах на русском языке

Да, это всё то же — Unicode Highlight, но теперь в терминалке/в логах (в выводе приложения).
В терминале VS Code тоже применяется эта логика, но настройки терминала/кинша иногда «перебивают» или у них свои флаги.

Как убрать желтые квадраты в логах (в терминале)

Вариант 1: через всплывающую подсказку (внутри терминала)

  1. В окне терминала (в логах) наведите курсор на любую букву в желтом квадрате.

  2. Появится всплывашка с объяснением и опцией:

    • Disable highlighting of non-basic ASCII characters
      или

    • Adjust settings → отключить.

  3. Нажмите на неё.

Это часто меняет именно настройки терминала, а не редактора кода.

Вариант 2: настройки терминала вручную

  1. Ctrl + , → откроются настройки.

  2. Поиск по: unicodeHighlight.

  3. Проверьте и установите в false параметры, относящиеся к терминалу:

    • Terminal: Unicode Highlight: Non Basic ASCII
      (terminal.integrated.unicodeHighlight.nonBasicASCII)

    • Terminal: Unicode Highlight: Ambiguous Characters
      (terminal.integrated.unicodeHighlight.ambiguousCharacters)
      (если такие есть в вашей версии).

Если в списке настроек не видите именно terminal.integrated.unicodeHighlight..., то:

Вариант 3: в settings.json

  1. Ctrl + Shift + PPreferences: Open Settings (JSON).

  2. Добавьте:

json
{ "editor.unicodeHighlight.nonBasicASCII": false, "editor.unicodeHighlight.ambiguousCharacters": false, "editor.unicodeHighlight.invisibleCharacters": false, "terminal.integrated.unicodeHighlight.nonBasicASCII": false, "terminal.integrated.unicodeHighlight.ambiguousCharacters": false, "terminal.integrated.unicodeHighlight.invisibleCharacters": false }

(если terminal.integrated.unicodeHighlight... не поддерживается вашей версией — просто не будет ошибки, настройки редактора всё равно отключат подсветку.)

Вариант 4: добавить русскую локаль как разрешенную (более мягкий способ)

Если хотите оставить подсветку, но для русского текста:

json
{ "editor.unicodeHighlight.allowedLocales": { "ru": true }, "terminal.integrated.unicodeHighlight.allowedLocales": { "ru": true } }

Это отключает выделение кириллицы, но другие символы могут продолжать подсвечиваться.


Если после включения этих настроек в терминале квадраты остались — попробуйте:

  • перезапустить VS Code,

  • или попробовать режим Developer: Reload Window (через Ctrl + Shift + P).

После этого желтые квадраты в логах на русском языке должны исчезнуть.

Follow-ups