Claudian × OpenCode × qwen3-coder-next によるClaude Code代替動作検証(Obsidian統合エージェント実用評価)
✅ 検証済み | 技術 | 優先度:🟠 高
シリーズ: AI・IT実践シリーズ
目的(ゴール)
Obsidian プラグイン Claudian を UI として、OpenCode + qwen3-coder-next(Node4 MoE・総パラメータ 80B / アクティブ 3B)を推論バックエンドとするCC代替スタックが、日常的な Vault オペレーション・コーディングタスクに実用的か検証する。UC260417-001(OpenHands/Aider on Node3 による完全代替)の並列検証として、Obsidian 統合型エージェントアプローチの実用性・コスト効果・safe モード運用可否を評価し、CC との代替比率を定量化する。
アクター
- 著者(Manabazu)
- Claudian(Obsidian プラグイン・UIレイヤー)
- OpenCode(エージェントランタイム・ツール実行層)
- qwen3-coder-next(Node4 LiteLLM 経由・GatedDeltaNet + MoE コーディングモデル)
- Claude Code(対照・品質基準)
- Node4 LiteLLM(モデルルーティング層)
開始条件(起動トリガー)
Claudian の opencode プロバイダーで qwen3-coder-next が選択可能な状態にあり、claudian-safe モードが有効化されているとき。日常的な Vault 作業または CC へのタスク発行の代替として試行する場合。
事前条件
- Node4 LiteLLM が稼働し、
qwen3-coder-nextが/v1/modelsに登録済み - Claudian の
visibleModelsにopenai/qwen3-coder-nextが追加済み claudian-settings.jsonのselectedMode: "claudian-safe"/savedProviderPermissionMode.opencode: "safe"が設定済み
事後条件
- 対象タスク種別において Claudian/OpenCode/qwen3-coder-next スタックが CC と同等以上の品質で処理できることが検証済み、または代替不可の限界が明確化されている
- 評価結果が UC260417-001 の Phase A 比較データとして統合可能な形で記録されている
メインフロー
- Obsidian 上の Claudian を claudian-safe モードで起動し、opencode プロバイダー・qwen3-coder-next を選択する
- CC と同一のタスクセットを Claudian 経由で発行し、成果物・品質・処理速度を記録する
- safe モードの動作(bash/edit への ask 要求)が正常に機能することを確認する
- Vault オペレーション(LabLog 作成・UC 登録・AtomicNote 生成)を Claudian 経由で実行し代替可否を判定する
- コーディングタスクを実行し CC との品質比較スコアを記録する
- 評価結果を UC260417-001 S1〜S4 シナリオの比較データとして統合する
代替フロー
- qwen3-coder-next の品質が不十分な場合: Claudian 内でモデルを切り替え(qwen35-122b-a10b など)て再評価する
- Node4 が停止した場合: ollama/qwen25coder-7b-node1(Node1 ローカル)にフォールバックし、フォールバック品質も記録する
例外フロー
- claudian-safe 設定がセッション再起動で yolo に戻る場合:
savedProviderPermissionMode.opencodeの永続化問題として 20260517-UC260420-001-Claudian-safeモード設定修正 の手順で再設定する
シナリオリスト
- S1 - safe モード統合動作確認
- S2 - コーディングタスク代替(Vault スクリプト修正)
- S3 - Vault オペレーション代替(LabLog・UC登録・AtomicNote)
- S4 - Sandbox 化(検証環境のポータブル化・Node3 Docker 移行)
シナリオ記述
S1: safe モード統合動作確認
トリガー: Claudian の opencode プロバイダーで新規セッションを開始する フロー:
claudian-settings.jsonのselectedMode: "claudian-safe"/savedProviderPermissionMode.opencode: "safe"を確認する- bash コマンドまたはファイル編集を伴うタスクを発行し、Claudian が ask プロンプトを表示することを確認する
- セッション再起動後も safe モードが維持されることを確認する(yolo への自動復帰が発生した場合は設定を再適用する)
S2: コーディングタスク代替
トリガー: 著者が Vault スクリプトまたは設定ファイルの修正タスクを Claudian 経由で発行する フロー:
- qwen3-coder-next が修正案を生成し、OpenCode が safe モードで確認を取りながら適用する
- CC と同一タスクの成果物・品質スコア・処理時間を記録する
- 品質スコアが CC の 80% 以上であれば「代替可」と判定する
S3: Vault オペレーション代替
トリガー: 著者が LabLog 作成・UC 登録・AtomicNote 生成等の定型タスクを Claudian 経由で実行する フロー:
- CLAUDE.md / Vault ルールを context として渡し、qwen3-coder-next に定型タスクを実行させる
- 成果物の整合性(frontmatter・ID 採番・WikiLink 等)を著者がレビューする
- hallucination(架空 ID・日付)の発生率を記録し R260416-001 の証跡データとする
S4: Sandbox 化(検証環境のポータブル化・Node4 Docker 移行)
設計調査: qwen3.6-35b-a3b(スクリプト棚卸し・アーキテクチャ設計)+ qwen3-coder-next(配置判断・計画統合)により実施。評価: 20260522-UC260522-001-S4-Docker化LabLog評価
トリガー: Node1 のみで動作している PowerShell / WSL 検証スクリプトを Docker イメージにまとめ、Node4 上で実行可能にする(Node3 は冗長化予備)
背景: 検証スクリプト(ベンチマーク・Vault 操作等)が Node1 のローカル環境(WSL2・PowerShell)に密結合しており、他ノードから実行できない。また Bitdefender が PowerShell -EncodedCommand をブロックするなど OS 固有の制約もある。
事前条件:
- Node4 Docker 環境が稼働中
- Node4 LiteLLM が稼働中
- GitHub 認証情報がコンテナに渡せる状態
- スクリプト棚卸し完了(13 本・3 グループ確認済み)
スクリプト棚卸し結果(qwen3.6-35b-a3b 調査):
| グループ | パス | 本数 | 主な依存 |
|---|---|---|---|
| A: 中核自動化 | ~/usecases/orchestrator/ | 3 | stdlib, pyyaml |
| B: LLM 評価 | ~/usecases/llm-eval/ | 4 + benchmarks/ | requests, pyyaml |
| C: Vault 内 | Publishing/.../ | 6 | requests, openai, stdlib |
| 合計 | 13 | requests / pyyaml / openai(3 パッケージのみ) |
Python バージョン: 3.11.9(Node1 実測)
設計決定事項:
| # | 項目 | 決定 | 根拠 |
|---|---|---|---|
| 1 | 配置先 | Node4 第一候補・Node3 は冗長化 | LiteLLM 同一ホストでループバック高速、安定基盤 |
| 2 | ベースイメージ | python:3.11-slim | 依存 3 パッケージのみ、軽量 |
| 3 | Vault 同期 | GitHub 経由(コンテナ内 git clone/pull) | 履歴管理・NAS 非依存・Node1 オフライン耐性 |
| 4 | 実行パターン | SSH → docker run —rm(Pattern A) | シンプル・ステートレス |
| 5 | GitHub 認証 | Fine-grained PAT(.env) | セキュリティと運用容易性のバランス |
| 6 | ネットワーク | ai-net(external bridge) | Node3 既存エージェント統一パターン準拠 |
| 7 | Git write-back | コンテナ内 git commit & push(オプション) | Node1/Node5 での結果確認を容易に |
アーキテクチャ:
Node1 / Node5
├── Obsidian + Claudian → OpenCode → Node4 LiteLLM(変更なし)
├── git push → GitHub(Vault 同期)
└── SSH → docker run --rm → Node4(スクリプト実行)
GitHub
├── ← Node1/Node5 push
└── → Node4 コンテナ clone/pull/push
Node4 ★Docker ホスト
├── LiteLLM(変更なし)
└── /data/verification-tool/
└── verification-tool:latest コンテナ
├── scripts/(Group A + B 移植済み)
├── vault-scripts/(Group C 移植済み)
└── → LiteLLM(ループバック)
Node3 ★冗長化予備(後日)
└── 同一イメージをデプロイ(Node4 障害時フォールバック)
ディレクトリ構成(Node4 上):
/data/verification-tool/
├── Dockerfile # python:3.11-slim + git + jq
├── docker-compose.yml # ai-net 参加
├── .env # 認証情報・接続先設定
├── requirements.txt # requests, pyyaml, openai
├── entrypoint.sh # サブコマンドディスパッチ
├── scripts/ # Group A + B(orchestrator / llm-eval)
│ ├── vault_worker.py
│ ├── publishing_ops.py
│ ├── orchestrate.py
│ ├── eval_runner.py
│ ├── report.py
│ └── benchmarks/
└── vault-scripts/ # Group C(Vault 内スクリプト)
├── generate_uc_pages.py
├── generate_risk_pages.py
├── linkify_masters.py
└── JailBreak/
実装フロー:
- Node4 上に
/data/verification-tool/を作成し、Dockerfile / entrypoint.sh / requirements.txt を実装する scripts/に Group A・B のスクリプトをコピーし、vault-scripts/に Group C を抽出するdocker build -t verification-tool:latestでイメージをビルドする- Node1 PowerShell から
ssh <Node4ホスト> docker run --rm verification-tool:latest --helpで疎通確認する - end-to-end テスト: Node1
git push→ GitHub → コンテナ内git pull→ スクリプト実行 →git push→ Node1git pullで成果物確認する - Node5(M1 Mac)からの SSH 接続を確認する
- (オプション)Node3 への同一イメージデプロイで冗長化する
未解決の検討課題:
pull_models.py(Group B)の要否:本番運用では基本不要だが初期セットアップ時に有用か- Node5 → Node4 SSH 鍵設定が未確認
- バッチ向け拡張(Pattern B: git push トリガー)は Pattern A 安定後に検討
評価項目:
- Node1 実行時と同一の出力・品質がコンテナ内で得られるか
- Vault の git sync ラウンドトリップ(push → pull)が実用レイテンシか
- Node1 がオフラインでも Node4 単独でスクリプト実行継続できるか
- Node5(M1 Mac)からの SSH 経由実行が問題なく動作するか
備考
- UC260417-001 との違い:本 UC は「Claudian UI(Obsidian プラグイン)+ OpenCode ランタイム」という特定スタックの評価。UC260417-001 は OpenHands/Aider on Node3 で CC を完全除去するゴール。異なるアプローチの並列検証として独立登録。
- qwen3-coder-next スペック:GatedDeltaNet + MoE・SWE-bench Verified 70.6%・49GB (UD-Q4_K_M)・Node4 128GB 統合メモリ収容済み
- claudian-safe モード定義:
bash: ask,edit: ask,plan_enter: allow(.claudian/opencode/config.json参照)
派生構想:Claudian Sandbox — Docker 自律型エージェント
本UCの評価フェーズから派生して、Claudian の system prompt と OpenCode ランタイムを Docker コンテナにパッケージし、Node3 (Z890) 上で自律動作させるアーキテクチャ構想が具体化した。以下にその設計骨子を記録する。
アーキテクチャ概要
Node1 (Surface Pro / Obsidian) Node3 (Z890)
┌─────────────────────────┐ ┌──────────────────────────────────┐
│ 原稿執筆・git commit │ │ Claudian Sandbox (Docker) │
│ ↓ │ │ ┌────────────────────────────┐ │
│ git push ──────────────┼────────→ │ │ git clone/pull vault │ │
│ ↑ │ │ │ OpenCode → LLM call │──┼──→ GitHub
│ git pull ←─────────────┼───────── │ │ 自律タスク実行・git push │ │
└─────────────────────────┘ │ └────────────────────────────┘ │
└──────────────────────────────────┘
│ Node4 LiteLLM HTTP API
▼
Node4 (EVO-X2)
┌─────────────────────────┐
│ LiteLLM │
│ Ollama :11434 │
│ qwen3-coder-next 他 │
└─────────────────────────┘
アーキテクチャ設計の要点
| 要素 | 設計方針 | 根拠 |
|---|---|---|
| Vault同期 | GitHub 媒介(SMB/NFS不要) | Node1→push, Sandbox→pull/push。履歴管理・ロールバック・競合解決をGitに集約。NAS非依存でシンプル |
| 配置先 | Node3 (Z890) の ~/usecases/codingagent/claudian/ または独立ディレクトリ | 既にOpenHands/Aider/SWE-agentが稼働中。Dockerホストとして実績あり |
| ネットワーク | ai-net (external bridge) に参加 → Node4 LiteLLM に直接アクセス | Node3の既存エージェント全般の統一パターンに準拠 |
| GPU要否 | 不要(CPU-only) | LLM呼び出しは全てNode4へのHTTP API。GPUはNode4が専有 |
| LLM接続先 | Node4 LiteLLM HTTP API | Node4 LiteLLM 経由で qwen3-coder-next 他をルーティング |
| ベースイメージ | nvidia/cuda:12.4.1-base-ubuntu22.04(GPU不要だがCUDAツールキット互換性統一のため) | あるいは ubuntu:22.04 で十分。要検討 |
| エージェントランタイム | OpenCode(CLI) | Claudianの既存プロバイダー設定をそのまま継承 |
| 再起動ポリシー | restart: unless-stopped | Node3の全エージェント統一パターン |
| UID | 1000 (mnbz) | 既存全コンテナと統一 |
S4(構想): 自律型 Claudian Sandbox 動作検証
トリガー: Claudian Sandbox コンテナが Node3 上で起動し、GitHub 経由で Vault を取得する
事前条件:
- Node3 Docker 環境 (
nvidia-container-toolkit+ Docker Compose v2) が稼働中 ai-net外部ネットワークが作成済み(docker network create ai-net)- GitHub 認証情報がコンテナに渡せる状態
- Node4 LiteLLM が稼働中
フロー:
- Sandbox コンテナ起動 → GitHub から Vault リポジトリを
git clone - Claudian の system prompt (
system.md) + 設定 (config.json) を継承 - 自律エージェントが Vault 内の定型タスク(UC登録・LabLog作成・原稿編集)を実行
- 変更を
git add/git commit/git push - Node1 側で
git pull→ 成果物を確認・レビュー - Node1 上での修正 →
git push→ Sandbox がgit pullで同期
評価項目:
- 自律エージェントが Vault の frontmatter / WikiLink / ID採番ルールを遵守できるか
- 長時間セッションでの hallucination 発生率
- GitHub を介した同期レイテンシが実用範圍か
- Node1 がオフラインでも Node3 単独でタスク継続できるか
想定されるユースケース:
- 夜間バッチ的な原稿校正・リンク検証
- 定型タスク(LabLog作成・UC登録・AtomicNote生成)の自動処理
- CC 使用量削減・APIコスト最適化
技術的課題(未解決)
- GitHub 認証情報の受け渡し — Docker secret または
.envでの GITHUB_TOKEN 管理。安全性と運用容易性のバランス要検討 - コンテナライフサイクル管理 —
sleep infinity常駐型 or ジョブ型(タスク実行後に終了)。OpenManus のパターンと比較 - Sandbox内での Git ユーザー設定 — 自律コミットの author 名を
Claudian Bot <claudian@manabazu.example>等に固定 - ワークスペースの永続性 —
git clone先を volume 永続化するか、起動都度クリーン取得するか - 安全機構 — safe モード相当の制御が無人動作で不要か、あるいは制限付きモードを新設するか
関連ファイル(配置予定) ~/usecases/claudian-sandbox/
Dockerfile— ベースイメージ + OpenCode CLI + Git 設定docker-compose.yml—ai-net参加・ボリュームマウント・環境変数config/opencode.jsonc— OpenCode 設定(継承元:.claudian/opencode/config.json)config/system.md— Claudian system prompt(継承元:.claudian/opencode/system.md)config/entrypoint.sh— コンテナ起動時スクリプト(git clone + OpenCode CLI起動)
対応リスク
エージェント評価記録(2026-05-22)
評価概要
Claudian + OpenCode + qwen3-coder-next スタックに、UC 文書更新(本 UC ファイル作成)と LabLog 作成を依頼し、Claude Code(CC)が出力を検査した。
良かった点
- UC ファイル内容の品質は CC と遜色ない — frontmatter 必須キー完備、シナリオ記述済み、アーキテクチャ図・設計要点表・課題整理まで構造化されている
- コミットプレフィックスの使い分けが正確 —
plan:/log:を CLAUDE.md §5 に準拠して使用 - LabLog 本文の可読性 — 表・コードブロックで設計判断が整理されており、後から参照しやすい形式
問題点
| # | 問題 | 重要度 |
|---|---|---|
| 1 | UseCase-Master.md・Risk 逆リンク(3件)がコミットされず working tree に残留 | 高(CLAUDE.md §3 違反) |
| 2 | LabLog frontmatter に不正値:log_type: design(→ planning)・status: draft(→ completed) | 中 |
| 3 | 39236cc のコミットメッセージ「追記」が実態(新規作成)と不一致 | 低 |
| 4 | LabLog の risk_ids: [] が空(関連リスク 3 件を未記載) | 低 |
総評
Vault 文書の内容品質は合格水準。ただし CLAUDE.md §3「UC 登録は 2 ファイルセット必須」ルールを遵守できず、UseCase-Master.md と Risk 逆リンクが未 commit のまま残った。CC による事後検査で補完。
- 代替可否(Vault 文書整備タスク): 条件付き可。CC によるルール遵守確認を組み合わせる運用が現実的。
- 参照 LabLog: 20260522-UC260522-001-Claudian-safeモード設定修正とCC代替評価UC登録