「送られてきた 5層マッピングを見て、 当初の想定より 状況は 良いです。 (1) 実行層 が すでに厚い (系統A 14 + 系統B 12 kinds)、 (2) 安全層 に 土台がある (3-stage lifecycle / whitelist / DANGEROUS_PATTERNS / dryRun default)、 (3) 判断層 の ギャップが 正確に 特定されている。 したがって Phase 1 は 「全面書き換え」 ではなく 判断層 に interface を 1 枚差し込み、 安全層 に 3 つ足す という 限定作業 に なります。 想定より 軽い。 但し 順序だけは 譲れません: 判断層 interface → 安全層 → その他。」
| Q | chat-Claude 回答 | 核 rationale |
|---|---|---|
| Q1 dormant bridge | retain-as-archive + 依存グラフから外す (`archive/` 移動) | 境界確定前に直すと 二重投資、 Phase 1 完了後 再訪 |
| Q2 daily.ts 位置 | 実行層 tool | 「daily = 時間トリガー」 判断でない、 Phase 3 常駐化で スケジューラプラグイン 昇格 |
| Q3 plugin API 境界 | 二層 (対外 MCP + 対内 EventBus)、 hypervisor+RuntimeBus 非公開 | MCP = 業界標準 + 学習コスト 0、 内部固定 = 自殺行為、 MCP 別プロセス = plugin=派生でない 主張の 技術的裏付け (Q5 と噛み合う) |
| Q4 provider scope | 4 minimum (Claude + GPT + Gemini + local Ollama)、 数より interface 完全性 | 2 で 足りて 3 で 破綻 4 で 境界正しくなる、 local Ollama が 抽象化の穴を 暴く 4 番目 最重要 |
| Q5 License | AGPL + Commercial dual 統一 + 「plugin=派生でない」 明文 | AGPL 単体は plugin 作者恐怖でエコシステム殺、 Linux kernel syscall exception 参照、 MCP 別プロセス が 技術的裏付け |
| Q6 配布 scope | 現状維持、 Phase 2 プラグイン API 公開 と 同時に 拡大 | Phase 0-1 の 破壊的変更を 外部 user に 晒さない、 「まだ 固まっていない API」 依存者 発生 防止 |
設計方針: 最小公倍数方式 でなく superset + capability flags (全 provider 機能の 和集合 + 各 provider 「自分に 何ができるか」 宣言)。 最小公倍数だと vision + tool calling 使えず Rei-Automator 中核 死ぬ。
export interface ModelCapabilities {
toolCalling: boolean;
parallelToolCalls: boolean;
vision: boolean;
structuredOutput: boolean; // JSON schema ネイティブ強制
streaming: boolean;
maxContextTokens: number;
maxOutputTokens: number;
}
export type ContentBlock =
| { type: 'text'; text: string }
| { type: 'image'; mimeType: string; data: string } // base64
| { type: 'tool_use'; id: string; name: string; input: unknown }
| { type: 'tool_result'; toolUseId: string; content: string; isError?: boolean };
export interface Message {
role: 'user' | 'assistant';
content: ContentBlock[];
}
export interface ToolSpec {
name: string;
description: string;
inputSchema: object; // JSON Schema
}
export interface ReasoningRequest {
system?: string;
messages: Message[];
tools?: ToolSpec[];
maxOutputTokens?: number;
temperature?: number;
responseSchema?: object;
signal: AbortSignal; // ★必須。 kill switch 実効性 依存
}
export interface ReasoningResponse {
content: ContentBlock[];
stopReason: 'end' | 'tool_use' | 'max_tokens' | 'aborted' | 'refusal';
usage: { inputTokens: number; outputTokens: number };
raw?: unknown; // 脱出ハッチ。 カーネル 絶対に読まない
}
export interface ReasoningProvider {
readonly id: string; // 'anthropic' | 'openai' | 'google' | 'local'
readonly capabilities: ModelCapabilities;
complete(req: ReasoningRequest): Promise<ReasoningResponse>;
stream?(req: ReasoningRequest): AsyncIterable<StreamEvent>;
countTokens?(req: ReasoningRequest): Promise<number>;
}
raw を 絶対に読まない — 読んだ瞬間 抽象化 死ぬ、 lint ルールで 機械的禁止 が 確実同一タスクを 4 provider で 実行し、 raw を除いた 出力の 「形」 が 完全に一致すること。
具体: スクリーンショット 1 枚 + tool 1 個 呼ぶ タスクで、 4 provider の content ブロック構成 + stopReason + usage 型 が 揃うことを 自動 test で 確認。 通らない箇所 = 抽象化の 穴。
| 段階 | 動作 | 用途 |
|---|---|---|
pause | 現ステップ完了後に停止 | 通常中断、 状態が 綺麗に残る |
abort | 進行中操作を AbortSignal で中断 | 誤動作 気づいた時 |
halt | プロセス即時終了 + 未完了操作を記録 | 暴走時の 最終手段 |
実装 要点:
AbortController、 全 provider 呼び出し + 全 実行層操作 に signal 伝播.rei-halt 出現) + シグナル (SIGINT/SIGTERM) + IPC。 UI が固まっていても 止められること が 要件DANGEROUS_PATTERNS + Theory#196 判定 ロジックは、 そのまま 「abort 不可区間の 入口 マーカー」 として 再利用可能。 新規 危険操作リスト 作る必要なし。
{ dryRun: true | false } を 必ず 明示 (default 依存禁止)| execution-log | audit log | |
|---|---|---|
| 目的 | デバッグ | 説明責任 |
| 消去 | してよい | してはいけない |
| 形式 | 任意 | 追記専用 |
{"ts":"...","actor":"...","action":"file_delete","target":"...","approved_by":"...","prev":"sha256:..."}
Phase 4 で 法人向け 出す時 後から遡って 作れない 種類 の データ。 今から 溜め始める 価値あり。
| 層 | 指示 |
|---|---|
| 認識層 | DOM / event stream 統一 正規化は Phase 2。 判断層 interface 確定後、 ContentBlock に 合わせる 設計 で 手戻りなし |
| 実行層 | 現状 最も 厚い、 Phase 1 では 触らない。 macro record/replay + plugin sandbox は Phase 2 |
| 記憶層 | 長期メモリは Phase 3。 但し Phase 1 内 に 「保存先 dir 構造」 だけ 決めておく (markdown 保持 = OpenClaw pattern 踏襲) |
ReiAutomatorBridge を archive/ へ移動、 build 対象から 除外 (Q1)AbortController を カーネル root に 設置、 上記 1 箇所に signal 通すDANGEROUS_PATTERNS から extract、 list 化C:\Users\user\Downloads\rei-automator-inventory-for-chat-claude.md (15.2 KB / 200 行 / 9 section) は 未受領」 と 明示、 「chat 側に 直接添付 いただければ、 実ファイル・実関数単位 での 仕分けと 既存 LLM 呼び出し箇所 の 具体的な 置換パッチまで 踏み込めます」 と request。