opencode-config/docs/handoff/pr-107-dockerfile-memory-deps.md
Sergey 9ebb6d2864
fix(docker): install ripgrep and python deps for memory tools (#107)
* fix(docker): install ripgrep and python deps for memory tools

* docs(handoff): set PR number 107

* docs(project-map): update after dockerfile memory deps changes

* fix(docker): install deps in non-shadow paths /opt/memory and global npm

* docs(handoff): align with /opt/memory and global npm fix

---------

Co-authored-by: opencode-agent <agent@opencode.local>
2026-07-27 02:59:17 +03:00

2.7 KiB
Raw Blame History


pr: 107 title: fix(docker): install ripgrep and python deps for memory tools

Что сделано

Добавлены 2 шага в Dockerfile после npm install -g opencode-ai repomix:

  1. @vscode/ripgrepnpm install -g @vscode/ripgrep (глобально, в /usr/local/lib/node_modules/). Нужен для keyword search в memory-search.ts. Глобальная установка обходит bind-mount ./.opencode:/root/.config/opencode который shadow'ит локальные node_modules.

  2. Python deps (httpx, numpy, tenacity)COPY pyproject.toml uv.lock /opt/memory/ + COPY src/ /opt/memory/src/ + uv sync --no-dev --frozen в /opt/memory/ (вне shadow-пути /root/workspace/). ENV PYTHONPATH=/opt/memory/src + ENV PATH=/opt/memory/.venv/bin:$PATH делают python3 -m src.memory рабочим из любого cwd.

Почему

После удаления плагина @mathew-cf/opencode-memory (PR #103) его deps больше не ставятся в контейнер. Без этого PR:

  • memory-search падает — @vscode/ripgrep не установлен, binary rg отсутствует
  • python -m src.memory падает — import httpx ModuleNotFoundError
  • Память не работает в контейнере вообще

Первая попытка (коммит до 46eb81a) ставила deps в /root/.opencode/ и /root/workspace/ — но volume ./app_data/workspaces:/root/workspace shadow'ит .venv/ и src/, а bind-mount ./.opencode:/root/.config/opencode shadow'ит node_modules. Исправлено: deps в /opt/memory/ (не shadow) + глобальный npm.

Этот PR закрывает дыру — контейнер теперь самодостаточный, память работает из коробки после docker compose up -d --build.

Pending

Watch out

  • npm install -g @vscode/ripgrep — глобальная установка, обходит bind-mount shadow. Binary в /usr/local/lib/node_modules/@vscode/ripgrep-linux-x64/bin/rg.
  • /opt/memory/ — вне volume shadow, переживает пересборку. .venv в /opt/memory/.venv/.
  • PYTHONPATH=/opt/memory/srcimport src.memory работает из любого cwd (TS tools запускают python3 -m src.memory с cwd: context.worktree).
  • PATH=/opt/memory/.venv/bin:$PATHpython3 резолвится в .venv/bin/python3 который видит httpx/numpy/tenacity.
  • uv sync --no-dev --frozen строго по uv.lock — только runtime deps, детерминизм.
  • Closes #108.