DeepSeek через deepseek-api; память шагов переехала из чата в стенограмму
Транспорт: был дочерний процесс ask.mjs из ollama_orchestro с обменом через временные файлы, стал POST /api/chat к сервису deepseek-api. Он держит вкладку браузера и отдаёт наружу протокол Ollama, поэтому здесь про браузер больше не знают: ушли проверка существования моста, временные файлы шагов вместе с флагом --keep-temp и четыре осиротевших импорта. Главное не в транспорте. Раньше шаги 2..N уходили с флагом --new, и ход разговора помнил сам чат DeepSeek. Сервис памяти не имеет принципиально: каждый запрос он кладёт в чат целиком, затирая прошлый. Поэтому стенограмму ведём здесь — growTranscript подклеивает к отправленному тексту прошлый ответ модели между метками === ТВОЙ ПРЕДЫДУЩИЙ ОТВЕТ === и === END ===, и следующим шагом уезжает всё сразу. Так надёжнее, чем было: видно в одном месте, что именно уедет модели, а чужой потребитель, вклинившийся между нашими шагами, ничего не портит — мы всё приносим заново. Плата — вопрос растёт на длину прошлого ответа. --check теперь различает три состояния: сервис отвечает и браузер поднят; сервис жив, но браузера ещё нет; сервис не запущен. Плашка в ui.html тоже. Настройки: bridge/chat/cdpPort заменены на deepseekHost и deepseekModel. Проверено живым многошаговым прогоном: шаг 1 — 2094 символа, ответ NEED: deepwork.mjs; шаг 2 — 28 447 символов стенограммы, ответ дословно верный и по вопросу из ПЕРВОГО сообщения, то есть память шагов работает. Два шага за 17 с. --selftest пройден, --check зелёный. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
3586e32a89
commit
44f07c8af9
@@ -1,6 +1,6 @@
|
||||
# deepwork
|
||||
|
||||
Цикл с инструментами поверх моста `ollama_orchestro/ask.mjs`.
|
||||
Цикл с инструментами поверх сервиса [deepseek-api](https://git.08h.ru/alex/deepseek-api).
|
||||
|
||||
DeepSeek через веб-чат видит только то, что положили ему в вопрос. Здесь у него
|
||||
появляется обратное направление: он возвращает блок-запрос, программа его
|
||||
@@ -45,23 +45,21 @@ node c:\#Projects\deepwork\deepwork.mjs ui тот же пульт вру
|
||||
|
||||
## Как устроено
|
||||
|
||||
Мост **не импортируется и не копируется**. `ask.mjs` разбирает `process.argv`
|
||||
и исполняет команду на верхнем уровне — `import` немедленно запустил бы её.
|
||||
Поэтому мост вызывается подпроцессом теми флагами, которые у него уже есть:
|
||||
У веб-версии DeepSeek нет API — только вкладка в браузере. Разговором с ней
|
||||
занимается отдельный сервис `deepseek-api`, а нам показывает протокол Ollama.
|
||||
Здесь про браузер не знают вовсе: обычный `POST /api/chat`.
|
||||
|
||||
```
|
||||
node ask.mjs ask --chat think --file step1.txt --out ans1.txt --quiet
|
||||
node ask.mjs ask --chat think --new --file step2.txt --out ans2.txt --quiet
|
||||
```
|
||||
**Разговор помним мы, а не DeepSeek.** Сервис без памяти: каждый запрос он
|
||||
кладёт в чат целиком, затирая прошлый. Поэтому стенограмма растёт здесь —
|
||||
`growTranscript` подклеивает к отправленному тексту прошлый ответ модели
|
||||
(между метками `=== ТВОЙ ПРЕДЫДУЩИЙ ОТВЕТ ===` и `=== END ===`) и результаты
|
||||
запросов, и следующим шагом уезжает всё сразу.
|
||||
|
||||
Шаг 1 идёт без `--new`: мост правит первое сообщение, и чат остаётся из одного
|
||||
обмена. Шаги 2..N — с `--new`, обычной отправкой: только так DeepSeek помнит
|
||||
предыдущий шаг. Цена — переподключение к браузеру на каждом шаге, 1–2 секунды.
|
||||
Взамен `ollama_orchestro` не меняется ни на строку, а его правки прилетают сюда
|
||||
даром.
|
||||
|
||||
Чат берётся тот же, что у orchestro (`think` из его `chats.json`). Своя роль не
|
||||
заводится: `chats.json` принадлежит мосту.
|
||||
Раньше эту роль играл флаг `--new` у моста, и помнил всё сам чат. Своя
|
||||
стенограмма надёжнее: видно в одном месте, что именно уедет модели, а чужой
|
||||
потребитель, вклинившийся между нашими шагами, ничего не портит — мы всё
|
||||
приносим заново. Плата — вопрос растёт на длину прошлого ответа; при `steps: 4`
|
||||
это единицы килобайт против 22 КБ первого сообщения.
|
||||
|
||||
Цикл останавливается, когда запросов в ответе нет, когда кончились шаги или
|
||||
когда пришёл тот же самый запрос второй раз подряд (петля).
|
||||
@@ -71,20 +69,35 @@ node ask.mjs ask --chat think --new --file step2.txt --out ans2.txt --quiet
|
||||
`config.json` (в репозиторий не попадает, образец — `config.example.json`):
|
||||
|
||||
```json
|
||||
{ "bridge": "C:/#Projects/ollama_orchestro/ask.mjs", "chat": "think", "steps": 4 }
|
||||
{ "deepseekHost": "http://localhost:11500", "deepseekModel": "deepseek:think", "steps": 4 }
|
||||
```
|
||||
|
||||
Без файла мост ищется рядом: `../ollama_orchestro/ask.mjs`.
|
||||
Без файла берётся `http://localhost:11500`.
|
||||
|
||||
## Проверка
|
||||
|
||||
```
|
||||
node deepwork.mjs --selftest внутренние проверки, ничего не отправляют
|
||||
node deepwork.mjs --check мост на месте, вкладка жива
|
||||
node deepwork.mjs --check сервис на месте, вкладка жива
|
||||
```
|
||||
|
||||
Браузер должен быть запущен `start-browser.cmd` из `ollama_orchestro` —
|
||||
с отладочным портом 9333.
|
||||
`--check` различает три состояния: сервис отвечает и браузер поднят; сервис
|
||||
жив, но браузера ещё нет (встанет на первом же вопросе); сервис не запущен.
|
||||
|
||||
Запускается сервис своим `start.cmd` в папке `deepseek-api` — браузер он
|
||||
поднимает сам.
|
||||
|
||||
## Переезд на deepseek-api (26.08.2026)
|
||||
|
||||
Транспорт сменился: был дочерний процесс `ask.mjs` из `ollama_orchestro`
|
||||
с обменом через временные файлы, стал `POST /api/chat` к сервису
|
||||
`deepseek-api`. Заодно ушли временные файлы шагов (и флаг `--keep-temp`),
|
||||
проверка существования моста и запуск браузера — всё это теперь не наша забота.
|
||||
|
||||
Память шагов переехала из чата DeepSeek в `growTranscript` (см. «Как устроено»).
|
||||
Проверено живым прогоном: шаг 1 — 2094 символа, ответ `NEED: deepwork.mjs`;
|
||||
шаг 2 — 28 447 символов стенограммы, ответ дословно верный и по вопросу
|
||||
из ПЕРВОГО сообщения. Два шага за 17 с.
|
||||
|
||||
## Что проверено
|
||||
|
||||
|
||||
Reference in New Issue
Block a user