Классическая проблема кодинг-агентов: модель видит файл, хочет поправить строку — и промахивается. str_replace ломается на дублирующихся блоках, diff-патчи съезжают после правок.
Плагин для OpenCode, который решает это в лоб.
Каждая строка файла получает детерминированный хэш-тег:
#HL 1:a3f|function hello() {
#HL 2:f1c| return "world";
#HL 3:0e7|}
Агент говорит не "замени вот этот кусок" — а "замени строку `2:f1c`". Точно. Без неоднозначностей.
Бенчмарк (60 фикстур React-кода):
hashline — 60/60 (100%)
str_replace — 58/60, 4 неоднозначных случая
Под капотом:
— FNV-1a хэш от индекса + содержимого строки
— Адаптивная длина хэша (2–4 hex-символа)
— LRU-кэш аннотированных файлов
— Хуки OpenCode: аннотирует чтение, стирает префиксы перед записью
— Кастомный tool hashline_edit — правки по хэш-референсам без old_string
Оверхед ~40% по токенам. Для файла в 200 строк — ~600 токенов. В 200K-контексте незаметно.
npm install -g opencode-hashline
GitHub: https://github.com/izzzzzi/opencode-hashline
PR приветствуются.
#opensource
