Xenith/_xenith
2026-10-04 14:53:45 +07:00

80 lines
4.4 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# _xenith - Zsh completion function for Xenith
_xenith() {
local curcontext="$curcontext" state line
typeset -A opt_args
local commands=(
'new:создать новую модель из корпуса'
'train:обучить существующую модель'
'gen:сгенерировать текст'
'info:показать конфигурацию модели'
'gradcheck:проверить градиенты численно'
'bench:замерить скорость форварда и шага обучения'
'update:автоматическое обновление с гита'
'tui:графическо-консольный режим (тест)'
)
_arguments -C \
'1: :->command' \
'*:: :->args' && return 0
case $state in
command)
_describe -t commands 'команды Xenith' commands
;;
args)
case $line[1] in
new)
_arguments \
'--corpus[текст для построения словаря]:файл:_files' \
'--out[файл модели]:файл:_files -g "*.xnh"' \
'--vocab[размер словаря]' \
'--embd[размер эмбеддинга]' \
'--layers[число слоёв]' \
'--heads[число голов внимания]' \
'--ctx[максимальный контекст]' \
'--ffn[размер FFN]' \
'--rope[база RoPE]' \
'--seed[зерно инициализации]' \
'--untied[использовать отдельную матрицу выхода]' \
'--view-vocab[вывести словарь нейросети]'
;;
train)
_arguments \
'--corpus[обучающий текст]:файл:_files' \
'--out[куда сохранить]:файл:_files -g "*.xnh"' \
'--steps[количество шагов обучения]' \
'--batch[размер батча]' \
'--block[длина окна контекста]' \
'--lr[скорость обучения]' \
'--wd[weight decay]' \
'--clip[клиппинг нормы градиента]' \
'--warmup[шаги прогрева]' \
'--seed[зерно генератора]' \
'--ckpt-every[сохранять чекпоинт каждые N шагов]' \
'--val-every[валидация каждые N шагов]' \
'--val-tokens[размер валидационной выборки]' \
'--threads[количество потоков (0 = все ядра)]' \
'--resume[продолжить обучение с последнего чекпоинта]' \
'--fast[экспериментальный флаг ускорения forward pass]'
;;
gen)
_arguments \
'--prompt[стартовый текст]' \
'--n[количество генерируемых токенов]' \
'--temp[температура выборки (0 = жадный)]' \
'--top-k[top-k sampling]' \
'--top-p[top-p nucleus sampling]' \
'--seed[зерно генератора]' \
'--no-stream[не печатать токены по мере генерации]' \
'--batch[несколько промптов через ;]' \
'--show-tokens[показывать ID токенов]'
;;
info|gradcheck|bench|update|tui)
_arguments \
'--fast[экспериментальный флаг ускорения]'
;;
esac
;;
esac
}
if [[ "$funcstack[1]" == "_xenith" ]]; then
_xenith "$@"
fi