[{"data":1,"prerenderedAt":846},["ShallowReactive",2],{"navigation":3,"doc-/architecture/ai-subsystem":217,"docs-all-paths":791},[4,19,39,63,87,111,127,195,211],{"title":5,"path":6,"stem":7,"children":8},"Welcome","/welcome","01.welcome",[9,11,15],{"title":5,"path":6,"stem":10},"01.welcome/index",{"title":12,"path":13,"stem":14},"Astar とは（5分）","/welcome/product-in-5-min","01.welcome/01.product-in-5-min",{"title":16,"path":17,"stem":18},"事業文脈","/welcome/business-context","01.welcome/02.business-context",{"title":20,"path":21,"stem":22,"children":23},"Getting Started","/getting-started","02.getting-started",[24,27,31,35],{"title":25,"path":21,"stem":26},"はじめかた","02.getting-started/index",{"title":28,"path":29,"stem":30},"リポジトリ取得と環境構築","/getting-started/repo-setup","02.getting-started/01.repo-setup",{"title":32,"path":33,"stem":34},"日々の開発ループ","/getting-started/dev-loop","02.getting-started/02.dev-loop",{"title":36,"path":37,"stem":38},"検証の 4 層","/getting-started/verification-tiers","02.getting-started/03.verification-tiers",{"title":40,"path":41,"stem":42,"children":43},"Architecture","/architecture","03.architecture",[44,47,51,55,59],{"title":45,"path":41,"stem":46},"アーキテクチャ","03.architecture/index",{"title":48,"path":49,"stem":50},"マルチテナンシーと RLS","/architecture/multi-tenancy-rls","03.architecture/01.multi-tenancy-rls",{"title":52,"path":53,"stem":54},"認可モデル","/architecture/authorization","03.architecture/02.authorization",{"title":56,"path":57,"stem":58},"AI サブシステム","/architecture/ai-subsystem","03.architecture/03.ai-subsystem",{"title":60,"path":61,"stem":62},"データモデル","/architecture/data-model","03.architecture/04.data-model",{"title":64,"path":65,"stem":66,"children":67},"Backend","/backend","04.backend",[68,71,75,79,83],{"title":69,"path":65,"stem":70},"バックエンド","04.backend/index",{"title":72,"path":73,"stem":74},"層構造","/backend/layering","04.backend/01.layering",{"title":76,"path":77,"stem":78},"規約","/backend/conventions","04.backend/02.conventions",{"title":80,"path":81,"stem":82},"テスト","/backend/testing","04.backend/03.testing",{"title":84,"path":85,"stem":86},"マイグレーション","/backend/migrations","04.backend/04.migrations",{"title":88,"path":89,"stem":90,"children":91},"Frontend","/frontend","05.frontend",[92,95,99,103,107],{"title":93,"path":89,"stem":94},"フロントエンド","05.frontend/index",{"title":96,"path":97,"stem":98},"モジュール内部構造","/frontend/module-anatomy","05.frontend/01.module-anatomy",{"title":100,"path":101,"stem":102},"API アクセスの一本道","/frontend/api-access-chain","05.frontend/02.api-access-chain",{"title":104,"path":105,"stem":106},"i18n","/frontend/i18n","05.frontend/03.i18n",{"title":108,"path":109,"stem":110},"デザインシステム","/frontend/design-system","05.frontend/04.design-system",{"title":112,"path":113,"stem":114,"children":115},"Go Agent And Cli","/go-agent-and-cli","06.go-agent-and-cli",[116,119,123],{"title":117,"path":113,"stem":118},"Go agent と CLI","06.go-agent-and-cli/index",{"title":120,"path":121,"stem":122},"Go agent","/go-agent-and-cli/go-agent","06.go-agent-and-cli/01.go-agent",{"title":124,"path":125,"stem":126},"CLI","/go-agent-and-cli/cli","06.go-agent-and-cli/02.cli",{"title":128,"path":129,"stem":130,"children":131},"Modules","/modules","07.modules",[132,135,139,143,147,151,155,159,163,167,171,175,179,183,187,191],{"title":133,"path":129,"stem":134},"モジュール","07.modules/index",{"title":136,"path":137,"stem":138},"テーブル","/modules/table","07.modules/01.table",{"title":140,"path":141,"stem":142},"ドキュメントツリー","/modules/document","07.modules/02.document",{"title":144,"path":145,"stem":146},"AIチャット","/modules/ai","07.modules/03.ai",{"title":148,"path":149,"stem":150},"認証・権限","/modules/auth","07.modules/04.auth",{"title":152,"path":153,"stem":154},"AI取込","/modules/organize","07.modules/05.organize",{"title":156,"path":157,"stem":158},"ストレージ","/modules/storage","07.modules/06.storage",{"title":160,"path":161,"stem":162},"NAS同期","/modules/sync","07.modules/07.sync",{"title":164,"path":165,"stem":166},"ワークスペース","/modules/workspace","07.modules/08.workspace",{"title":168,"path":169,"stem":170},"テナントとメンバーシップ","/modules/tenant-membership","07.modules/09.tenant-membership",{"title":172,"path":173,"stem":174},"検索","/modules/search","07.modules/10.search",{"title":176,"path":177,"stem":178},"表示ビュー","/modules/display","07.modules/11.display",{"title":180,"path":181,"stem":182},"テンプレート","/modules/template","07.modules/12.template",{"title":184,"path":185,"stem":186},"メール","/modules/mail","07.modules/13.mail",{"title":188,"path":189,"stem":190},"電話","/modules/phone","07.modules/14.phone",{"title":192,"path":193,"stem":194},"リアルタイム","/modules/realtime","07.modules/15.realtime",{"title":196,"path":197,"stem":198,"children":199},"Infra And Deploy","/infra-and-deploy","08.infra-and-deploy",[200,203,207],{"title":201,"path":197,"stem":202},"インフラとデプロイ","08.infra-and-deploy/index",{"title":204,"path":205,"stem":206},"環境の種類","/infra-and-deploy/environments","08.infra-and-deploy/01.environments",{"title":208,"path":209,"stem":210},"セルフホスト構成","/infra-and-deploy/self-host","08.infra-and-deploy/02.self-host",{"title":212,"path":213,"stem":214,"children":215},"docs-map","/docs-map","09.docs-map/index",[216],{"title":212,"path":213,"stem":214},{"id":218,"title":56,"body":219,"description":785,"extension":786,"meta":787,"navigation":788,"path":57,"seo":789,"stem":58,"__hash__":790},"docs/03.architecture/03.ai-subsystem.md",{"type":220,"value":221,"toc":773},"minimark",[222,226,235,239,246,317,324,335,338,437,449,460,466,475,554,577,581,599,621,625,632,695,699,732,735,740,751,754],[223,224,56],"h1",{"id":225},"ai-サブシステム",[227,228,229,230,234],"p",{},"Astar の AI は単発の補完機能ではなく、",[231,232,233],"strong",{},"エージェント基盤","として実装されています。設計原則は一貫していて、Anthropic 公式や Claude Code と機能で競合しないことです。差別化軸は組織レイヤー（RLS・権限・MCP・コンテキスト保持）だけに絞っています。",[236,237,238],"h2",{"id":238},"マルチプロバイダー",[227,240,241,245],{},[242,243,244],"code",{},"AIProviderType"," は1つの enum に統一されていて、実運用で使うのは主に次の4系統です。",[247,248,249,265],"table",{},[250,251,252],"thead",{},[253,254,255,259,262],"tr",{},[256,257,258],"th",{},"プロバイダ",[256,260,261],{},"認証",[256,263,264],{},"特徴",[266,267,268,280,295,306],"tbody",{},[253,269,270,274,277],{},[271,272,273],"td",{},"Google Vertex AI / Azure OpenAI / AWS Bedrock / Anthropic Direct / OpenAI Direct",[271,275,276],{},"プラットフォーム側の資格情報",[271,278,279],{},"本番の主経路",[253,281,282,285,288],{},[271,283,284],{},"OpenRouter",[271,286,287],{},"Astar 自身のキー（BYOK ではない）",[271,289,290,291,294],{},"GLM/Kimi 等の厳選された open-weight モデルへのゲートウェイ。ZDR（データ保持なし）を組織設定 + リクエストごとの ",[242,292,293],{},"zdr"," フラグの二重で強制",[253,296,297,300,303],{},[271,298,299],{},"Claude Code local / Codex local",[271,301,302],{},"ユーザー自身のサブスクリプション",[271,304,305],{},"Go Agent 経由でユーザーの端末上の CLI を直接動かす。バックエンドから API キーは送らない",[253,307,308,311,314],{},[271,309,310],{},"STT (Gemini / Azure Whisper / ElevenLabs Scribe)",[271,312,313],{},"プラットフォーム側",[271,315,316],{},"音声・通話の文字起こし。ElevenLabs は話者分離 (diarization) 用",[227,318,319,320,323],{},"ローカル CLI プロバイダ（Claude Code / Codex）は ",[242,321,322],{},"LocalCliOrchestrator"," がイベントを 1:1 で SSE ストリームに転送する形で、通常のプラットフォームプロバイダとは別の実行経路を持ちます。ツール実行は CLI サブプロセス側で完結します。",[325,326,328],"callout",{"type":327},"info",[227,329,330,331,334],{},"dev/local 環境では実プロバイダへの課金呼び出しは既定でブロックされています（",[242,332,333],{},"DevExternalLlmGuard","）。検証は scripted LLM や seed データが基本です。",[236,336,337],{"id":337},"エージェントループとオーケストレーション",[247,339,340,350],{},[250,341,342],{},[253,343,344,347],{},[256,345,346],{},"構成要素",[256,348,349],{},"役割",[266,351,352,364,375,394,411,426],{},[253,353,354,361],{},[271,355,356,357,360],{},"エージェントループ (",[242,358,359],{},"AgentLoopRunner",")",[271,362,363],{},"マルチターンのツール実行・結果解釈を反復する中核",[253,365,366,372],{},[271,367,368,369,360],{},"Plan Mode (",[242,370,371],{},"PlanModeOrchestrator",[271,373,374],{},"計画生成 → 人の承認 → 実行",[253,376,377,387],{},[271,378,379,380,383,384,360],{},"サブエージェント (",[242,381,382],{},"SubAgentExecutionService"," / ",[242,385,386],{},"AgentOrchestrator",[271,388,389,390,393],{},"並列 AI ワーカーへのタスク委譲。ツールループを回す唯一の choke point で、単発 LLM 呼び出し（ツールを回さない）は代わりに ",[242,391,392],{},"AiSkillExecutor"," が担う",[253,395,396,408],{},[271,397,398,399,383,402,383,405,360],{},"メモリ (",[242,400,401],{},"AiMemoryService",[242,403,404],{},"MemoryFlushService",[242,406,407],{},"MemoryConsolidationService",[271,409,410],{},"個人/組織 2層の永続記憶。夜間統合が既定 ON",[253,412,413,423],{},[271,414,415,416,419,420,360],{},"スキル (",[242,417,418],{},"SkillRegistry"," + ",[242,421,422],{},".astar/skills",[271,424,425],{},"単発 LLM 作業の統一実行系。テナントごとに上書き可能",[253,427,428,434],{},[271,429,430,431,360],{},"自動化 (",[242,432,433],{},"core/automation/",[271,435,436],{},"イベント/スケジュール駆動ルール。ルール単位で AI メンバーを割り当てられる",[227,438,439,442,443,445,446,448],{},[231,440,441],{},"AI ディスパッチは常にスキル/サブエージェント経由","で、ツールやサービスに埋め込まれたその場限りの LLM 呼び出しは規約違反です。モデルを呼び出す側は「ツールを呼ばない1回きりの呼び出しか」「モデル自身がツールを呼んで反復するか」で ",[242,444,392],{}," と ",[242,447,382],{}," のどちらを使うかを選びます。",[236,450,452,455,456,459],{"id":451},"astar-ワークスペース-claude-code-の-claude-に相当",[242,453,454],{},".astar"," ワークスペース — Claude Code の ",[242,457,458],{},".claude/"," に相当",[227,461,462,463,465],{},"各テナントは非表示のワークスペース ",[242,464,454],{}," を自動で持ちます。AI ハーネス資産（スキル・サブエージェント・自動化・AI 自身のメモリ）を置く場所で、コード内のコメントがその意図をそのまま言い表しています。",[467,468,469],"blockquote",{},[227,470,471,472,474],{},"\"This workspace is the destination for AI harness assets ... it is Astar's analogue of Claude Code's ",[242,473,458],{}," directory.\"",[247,476,477,487],{},[250,478,479],{},[253,480,481,484],{},[256,482,483],{},"パス",[256,485,486],{},"内容",[266,488,489,499,520,530,540],{},[253,490,491,496],{},[271,492,493],{},[242,494,495],{},".astar/skills/{slug}",[271,497,498],{},"INLINE スキル定義（呼び出し元エージェントがその場で指示として実行）",[253,500,501,506],{},[271,502,503],{},[242,504,505],{},".astar/agents/{slug}",[271,507,508,509,512,513,512,516,519],{},"DELEGATED サブエージェント定義（新しい実行コンテキストを生成し、",[242,510,511],{},"allowedTools","/",[242,514,515],{},"maxToolCalls",[242,517,518],{},"timeoutSeconds"," をサーバー側で強制）",[253,521,522,527],{},[271,523,524],{},[242,525,526],{},".astar/automations/*",[271,528,529],{},"JS/TS スクリプト本体",[253,531,532,537],{},[271,533,534],{},[242,535,536],{},".astar/automation-rules/{slug}.json",[271,538,539],{},"自動化ルール設定（トリガー + 呼び出し先）",[253,541,542,551],{},[271,543,544,547,548],{},[242,545,546],{},".astar/ai/memory/",", ",[242,549,550],{},".astar/ai/wiki/",[271,552,553],{},"AI 自身が学習・記録した内容。専用ツール経由でのみアクセス",[227,555,556,557,560,561,564,565,568,569,572,573,576],{},"スキルとサブエージェントは同じデータ構造（",[242,558,559],{},"SkillDefinition","）で、フォルダ配置（",[242,562,563],{},"skills/"," か ",[242,566,567],{},"agents/"," か）だけが実行モードを決めます。並行するフラグは存在しません。カスタマーの端末で実際の Claude Code CLI にエクスポートするときは、",[242,570,571],{},"INLINE → .claude/skills/{slug}/SKILL.md","、",[242,574,575],{},"DELEGATED → .claude/agents/{slug}.md"," と、Claude Code 自身のオンディスク規約にマッピングされます。",[236,578,580],{"id":579},"mcp-ツール群","MCP ツール群",[227,582,583,586,587,590,591,594,595,598],{},[242,584,585],{},"core/mcp/"," に 250+ ツール（37 グループ）が定義されています。この MCP ツール定義が ",[231,588,589],{},"AI（内製・BYO 問わず）と astar CLI の両方が乗る、唯一の統一 API 面","です。ツール名は ",[242,592,593],{},"{group}_{resource}_{action}","（snake_case）で、astar CLI からは ",[242,596,597],{},"astar group resource action"," としてそのまま叩けます。",[227,600,601,602,419,605,608,609,612,613,616,617,620],{},"新しいツールを追加するときは ",[242,603,604],{},"@Tool",[242,606,607],{},"@McpTool","（capability: READ_ONLY / SIDE_EFFECTING の宣言）+ ",[242,610,611],{},"McpToolsConfig"," への登録の3点セットが必要です。ノード型の作成ツールは個別に増やさず、",[242,614,615],{},"node_create --type X"," に一元化されています。詳しい規約は ",[242,618,619],{},"backend/CLAUDE.md"," の MCP Tool Convention 節を参照してください。",[236,622,624],{"id":623},"tool-承認ゲート","tool 承認ゲート",[227,626,627,628,631],{},"副作用のあるツール呼び出しは、既定では ",[231,629,630],{},"人間の確認","を経由します。",[633,634,635,647,662],"ul",{},[636,637,638,639,642,643,646],"li",{},"ツールは ",[242,640,641],{},"confirm: Boolean?"," パラメータと ",[242,644,645],{},"changePreview: ChangePreview?"," を持ち、プレビューはツール自身が組み立てます",[636,648,649,650,653,654,657,658,661],{},"astar CLI からの直接呼び出し（",[242,651,652],{},"POST /api/v1/cli","）は Unix の ",[242,655,656],{},"rm"," と同じ発想で ",[242,659,660],{},"autoConfirm=true"," を自動注入します。AI agent 経路は手動確認のままです",[636,663,664,665,668,669,672,673,676,677,680,681,684,685,383,688,383,691,694],{},"DELEGATED スキル（",[242,666,667],{},"sideEffectsAllowed=true","）や Code Mode スクリプト（",[242,670,671],{},"autoCommitMutations=true","）から呼ばれた確認必須ツールは ",[242,674,675],{},"confirm"," が自動注入されますが、",[242,678,679],{},"alwaysConfirmTools","（",[242,682,683],{},"bot_message_send"," などの外部プラットフォームへの送信、",[242,686,687],{},"skill_create",[242,689,690],{},"automation_create",[242,692,693],{},"automation_bundle_import_apply"," のようなスキル/自動化自体を無人で自己増殖させ得るツール）だけは例外で、必ずプレビューのみの応答に落ちます",[236,696,698],{"id":697},"ai-コード実行サンドボックス","AI コード実行サンドボックス",[227,700,701,704,705,708,709,572,712,715,716,719,720,723,724,727,728,731],{},[242,702,703],{},".astar/automations/"," のスクリプトや対話的な code-exec は、ロックダウンされた GraalVM JS ",[242,706,707],{},"Context"," 上で in-process 実行されます（",[242,710,711],{},"allowHostAccess(EXPLICIT)",[242,713,714],{},"allowIO(NONE)","、スレッド/プロセス生成不可、環境変数アクセス不可）。実システムへの唯一の出口は ",[242,717,718],{},"astar.*"," ブリッジ（",[242,721,722],{},"SandboxToolCallBridge","）で、すべての呼び出しは通常のエージェントツール呼び出しと同じ ",[242,725,726],{},"ToolExecutionService"," を経由します——",[242,729,730],{},"@PreAuthorize","・RLS・監査/クレジットフックがすべて同じように効きます。",[227,733,734],{},"この JS サンドボックスの脅威モデルは明示的に定義されています。",[467,736,737],{},[227,738,739],{},"\"Trust model: this is a SOFT boundary (same JVM/heap), suitable for TRUSTED code — i.e. the AI member running under its own identity. Untrusted/customer code needs a hard boundary (separate process / Cloudflare Dynamic Workers) behind this same port.\"",[227,741,742,743,746,747,750],{},"つまり、このサンドボックスは「テナント自身の AI がテナント自身の権限を誤用する」という",[231,744,745],{},"バグ","に対する防御であり、赤の他人が任意コードを実行する敵対的シナリオ向けのハードバウンダリではありません。より隔離度の高い実行が必要な場面（顧客提供コードの実行など）向けには、別途コンテナベースの AI ランタイム（",[242,748,749],{},"docker/ai-runtime/","）があり、こちらは独立プロセス + seccomp プロファイルでより強い分離を持ちます。",[236,752,753],{"id":753},"レイテンシ予算",[227,755,756,757,760,761,764,765,768,769,772],{},"AI チャットは ",[242,758,759],{},"first_event","（ユーザー入力 → 最初の SSE イベント）を p95 15秒未満に抑える設計目標を持ち、読み取り専用ツールのファンアウトは並列実行が必須です（",[242,762,763],{},"coroutineScope { ... }.awaitAll()","、逐次 ",[242,766,767],{},"forEach"," は禁止）。詳細な設計ルールとインシデント経緯は ",[242,770,771],{},"docs/ai/latency-budget.md"," を参照してください。",{"title":774,"searchDepth":775,"depth":775,"links":776},"",2,[777,778,779,781,782,783,784],{"id":238,"depth":775,"text":238},{"id":337,"depth":775,"text":337},{"id":451,"depth":775,"text":780},".astar ワークスペース — Claude Code の .claude/ に相当",{"id":579,"depth":775,"text":580},{"id":623,"depth":775,"text":624},{"id":697,"depth":775,"text":698},{"id":753,"depth":775,"text":753},"マルチプロバイダー、エージェントループ、MCP ツール群、tool 承認ゲート、AI コード実行サンドボックス。Astar が「AI そのもの」ではなく「AI が活きるための組織レイヤー」である理由。","md",{},{"title":56},{"title":56,"description":785},"z1wZwg2-Z3ix6DudvoICB-JNrd5jUTBPwbgPDiMcuRI",[792,794,795,797,798,799,800,801,802,803,804,805,807,808,809,810,811,813,814,815,816,817,819,821,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,841,842,843,844],{"path":13,"title":793},"Astar とは何か（5分で）",{"path":17,"title":16},{"path":6,"title":796},"ようこそ",{"path":29,"title":28},{"path":33,"title":32},{"path":37,"title":36},{"path":21,"title":25},{"path":49,"title":48},{"path":53,"title":52},{"path":57,"title":56},{"path":61,"title":60},{"path":41,"title":806},"システムアーキテクチャ",{"path":73,"title":72},{"path":77,"title":76},{"path":81,"title":80},{"path":85,"title":84},{"path":65,"title":812},"バックエンドガイド",{"path":97,"title":96},{"path":101,"title":100},{"path":105,"title":104},{"path":109,"title":108},{"path":89,"title":818},"フロントエンドガイド",{"path":121,"title":820},"Go agent — NAS 同期エージェント",{"path":125,"title":822},"astar CLI",{"path":113,"title":117},{"path":137,"title":136},{"path":141,"title":140},{"path":145,"title":144},{"path":149,"title":148},{"path":153,"title":152},{"path":157,"title":156},{"path":161,"title":160},{"path":165,"title":164},{"path":169,"title":168},{"path":173,"title":172},{"path":177,"title":176},{"path":181,"title":180},{"path":185,"title":184},{"path":189,"title":188},{"path":193,"title":192},{"path":129,"title":840},"モジュール索引",{"path":205,"title":204},{"path":209,"title":208},{"path":197,"title":201},{"path":213,"title":845},"docs/ 地図",1785452454961]