作成日: 2026-03-08
更新日: 2026-03-19
ステータス: Active
Phase 0〜5 完了。Redmine 連携実験(目標 A)完了。
基盤改造トラック(LangGraph / Windmill / Burr)は有効だが、直近は凍結。
当面の方針: 既存 Butler の capability を実務で使えるレベルまで育てる。
read_from_redmine で get_current_user / list_projects / get_issue 等が動作docs/history/Redmine連携戦略たたき台_目標A完了.mdrecord_to_redmine で Issue の CRUD + ライフサイクル管理を安定させる。
確認済み操作:
create_issue — 成功update_issue(status / assignee / done_ratio)— 成功add_issue_note — 成功close_issue_with_note — 成功delete_issue — 成功move_issue — 成功update_issue_watchers — 成功2026-03-19 live 再確認:
watcher_user_ids=[] による watcher 除去が反映されることを確認project_id="butler_done" へ更新し、project id が 9 -> 10 に変化することを確認完了条件:
上記 2 条件は満たしたため、Phase 6-2 は Butler 実装として完了扱いにする。
Brain と人間の共同作業を Redmine Issue で管理する高レイヤー capability。
ユースケース:
設計上の注意:
create_issue_with_subtasks 等)と、gather_issue_context 等)を分離する前提条件:
docs/ ディレクトリに設計・仕様文書がある解決策: git subtree による統合リポジトリ
Gitea に knowledge-base リポジトリを作り、各プロジェクトの docs/ を git subtree で取り込む。
Wiki.js はこの統合リポジトリをバックエンドとして接続する。
knowledge-base リポジトリ(Gitea / Wiki.js バックエンド)
├── butlerlayer/ ← ButlerLayer の docs/ を subtree で取り込み
├── docker-setup/ ← docker_setup の docs/ を subtree で取り込み
├── keinasystem/ ← keinasystem の docs/ を subtree で取り込み
└── cross-project/ ← プロジェクト横断の知識(Wiki.js 上で直接編集)
Wiki.js からのアクセスパス例:
/butlerlayer/マスタードキュメント/docker-setup/wikijs/README/cross-project/情報配置ルール同期: Butler または手動で git subtree pull を実行して各プロジェクトの最新 docs/ を取り込む。
Redmine との結合:
情報の配置ルール:
| 情報の性質 | 正本の置き場所 | 閲覧手段 |
|---|---|---|
| プロジェクト固有の設計・仕様 | プロジェクト内 docs/ |
Wiki.js(subtree 経由で自動反映) |
| プロジェクト横断の知識 | knowledge-base リポジトリの cross-project/ |
Wiki.js(直接編集) |
| 共同作業の履歴・進捗 | Redmine Issue | Redmine(Wiki.js からリンク) |
| 一時的なメモ・下書き | Trilium | Trilium |
wiki.keinafarm.net)knowledge-base リポジトリ)目的: 上記の全体設計が実際に動くことを検証し、Butler から自動化できるようにする。
検証(完了):
knowledge-base リポジトリを作成(https://gitea.keinafarm.net/akira/knowledge-base.git)docs/ を git subtree で取り込み(butlerlayer/ プレフィックス)/butlerlayer/* パスで全ドキュメントが閲覧可能検証時の手順メモ(Butler スキル実装の参考):
# 1. プロジェクト側: docs/ だけのブランチを作る
cd <プロジェクトディレクトリ>
git subtree split --prefix=docs -b docs-only
# 2. knowledge-base 側: プロジェクトをリモートとして追加し subtree で取り込む
cd <knowledge-base ディレクトリ>
git remote add <プロジェクト名> <プロジェクトのパスまたはURL>
git subtree add --prefix=<プロジェクト名> <プロジェクト名> docs-only --squash
# 3. Gitea に push(Wiki.js が 5 分ごとに自動同期)
git push origin main
# 更新時(既に追加済みのプロジェクト):
cd <プロジェクトディレクトリ>
git subtree split --prefix=docs -b docs-only # ブランチ更新
cd <knowledge-base ディレクトリ>
git subtree pull --prefix=<プロジェクト名> <プロジェクト名> docs-only --squash
git push origin main
Butler スキル化(完了):
add_project_to_wiki — 新しいプロジェクトの docs/ を knowledge-base に追加(known_only handler)sync_wiki — 既存プロジェクトの docs/ を最新に同期(known_only handler)knowledge-base に home.md(トップページ)を作成 → Wiki.js /home で反映docs/README.md に Wiki.js リンクを追記butler/capabilities/wiki/handler.pyBUTLER_KNOWLEDGE_BASE_PATH(デフォルト C:\Users\akira\Develop\knowledge-base)運用上の注意(検証で判明):
/butlerlayer → 404、/butlerlayer/README → OK)sync_wiki 後の push 先は knowledge-base リポジトリ(プロジェクト本体ではない)残りの検証:
add_project_to_wiki)経由で追加(live テスト)sync_wiki の live テスト(Butler 経由で ButlerLayer docs/ を同期)cross-project/ に直接ページを作成し、Wiki.js ↔ Gitea 双方向同期を確認cross-project/ に置き、何をプロジェクト内 docs/ に残すか)read_from_wiki / record_to_wiki intent を追加git subtree pull)を Butler のスキルとして実装するPhase 6-7 が安定した後に再検討する。詳細は docs/vision/01_黒執事を進化させる案_01.md を参照。
deploy / restart を butler.db に登録mcp_executor.py は Bearer 認証固定MCP_AUTH_TYPE 環境変数で切り替える設計agent_executor.py の内部を差し替え可能にするQwenAgentBackend → LangGraphAgentBackend の選択式docs/vision/01_黒執事を進化させる案_01.md セクション 12WindmillExecutionBackend は実装済み(flow は未作成)docs/vision/00_ビジョン定義書.mddocs/vision/01_黒執事を進化させる案_01.mddocs/reference/01_アーキテクチャ定義書.mddocs/reference/03_実行SOP仕様書.mddocs/history/Phase0-5_実装完了記録.mddocs/history/Redmine連携戦略たたき台_目標A完了.md