Task: Goose情報収集→llmwiki ingestの配管と、embeddingsのローカル分離

背景

decisions/0004の役割分担で、 Goose(情報収集Recipe)が返したingest候補をllmwiki ingestへ渡す配管が最後の 未実装ピースだった。また、OpenCode Goに/embeddingsがないため、embeddingsを Mac mini等のローカル推論へ分離する経路を確立したい。

目的

goose run --recipeのJSON出力から候補URLを取り出してllmwiki ingestへ流す スクリプトが動き、embeddingsをローカルのOpenAI互換エンドポイントへ向ける設定が 検証済みである状態を作る。

受け入れ条件

実施記録(2026-07-05、Fable 5)

  • make ingest TOPIC="..."をMakefileに追加。実行例: LLMWIKI_PROJECT=~/knowledge/llm-wiki/projects/main-wiki LLMWIKI_CMD="micromamba run -n node24 llmwiki" python3 scripts/ingest-candidates.py --topic "個人情報保護条例と匿名加工情報"
  • 実測: 3候補中2件ingest成功、1件失敗(e-Gov法令ページはJS SPAでReadability抽出 不可)。失敗は候補単位で分離され、サマリと終了コードに反映された。
  • 知見: e-Gov法令URL(laws.e-gov.go.jp/law/...)はllmwiki ingestで取り込め ない。法令本文はhouki-egov-mcpのMarkdown出力をSOURCES_CONTRACT.md形式で sources/に直接書く経路が必要(今後の課題)。
  • embeddings分離は検証用OpenAI互換シム(127.0.0.1:8765、scratchpad内・非commit) で実証: OPENAI_EMBEDDINGS_BASE_URL指定で「Skipped embeddings update: 404」が 「Embeddings updated (4 pages, 26 chunks)」になり、.llmwiki/embeddings.jsonmodel: test-embedで保存された。設計はdecisions/0005 に記録。
  • 副次的観測: 新規2ソースは「no concepts — will retry」でconcept抽出が空だった (ソースの本文品質またはモデル起因。モデル品質比較の課題に含める)。うち1件は タイトル抽出に失敗しuntitled.mdになった。

変更範囲

  • 変更してよいファイル: Makefiledocs/配下
  • 新しく作ってよいファイル: scripts/ingest-candidates.pydocs/decisions/0005-*.md
  • 変更しないもの: agent/recipes/の既存Recipe、AGENTS.md

確認方法

python3 scripts/ingest-candidates.py --topic "テスト" --dry-run
make check