決定論的コア(Deterministic Core)
システムの計算・判定・不変条件をAIの確率推論ではなく決定的コードに担わせる設計思想。
決定論的コア(Deterministic Core)とは、業務システムの重要な計算・判定・整合性チェック・真偽の境界を、AIの確率的な推論ではなく、通常の決定的なコードで実行する設計思想です。AIは下書き作成や解釈の補助に限定し、記録される事実・数値・法的な区分はコードが責任を持ちます。Kurageの商品群では「AIが入り込む余地を最初から設計で消す」という形で一貫して現れます。
背景
Kurageの商品群はai-modifiable-softwareとしてAIエージェントによる拡張が可能ですが、その一方で「AIに採点させない」「AIが台帳に直接書けない」「判定にLLMを使わない」といった安全設計が繰り返し強調されています。これは、AIの出力は文脈によって変わり得るため、給与計算・予約の二重確保・法令上の区域判定などの不可逆な処理に使うと重大な事故につながるという考えに基づいています。
この思想は、公開リポジトリ群でも商品カタログでも一貫しています。kproofreadは測定値・規格値・合否判定を自動変更せず、決定論的な検査を先に実行してからLLMを矛盾指摘の補助に使います。kfxaiはAI判断レイヤーが注文API・認証情報・注文数量を持たず、最終リスク判定はOSSのボディだけが行います。nofxもGoランタイムが全注文をハードリスク上限でクランプし、モデルは覆せません。kfreqaiでも、取引後のレビューや改善仮説の生成ではコードが実測値を計算し、LLMはそれを解釈するだけに留めます。
LP群・商品カタログでは、この方針がより明確に謳われています。kseoは「判定にLLMを使わない。同じページを2回見て違う答えが出る道具は、監査として売り物にならない」と説明し、app/audit_rules.py は「測って、閾値と比べて、根拠の数字を添える」だけに徹しています。言語モデルを使うのは改善案の文章だけです。kgeoもrobots.txt・llms.txt・JSON-LD・メタ情報などの技術監査を決定論的に実行し、47項目の引用適性を実測値で採点します。
kurage-productsが示す商品カタログ(kurage-app-store)では、価格帯も機能も異なる多数の商品の概要に、ほぼ例外なくこの境界が書き込まれています。無料で提供されるAI相談チャット(kurage-ai-soudan-chat)でさえ「公開情報を規則で絞り込み、その結果をAIが説明する」という順序を守り、口語の相談から直接答えを生成する形にはしていません。
原則
- 計算はコードが行う: 達成率・勤怠照合・空き枠判定など数値や真偽が重要な処理は、決定的アルゴリズムで行います。
- 規則が先に結論を出す: kurage-disaster-judgment-setは「逃げるべきか」の結論を、内閣府「避難情報に関するガイドライン」の警戒レベルに合わせた決まった規則で先に出し、AIはその結論を質問に合わせて言い換えるだけにします。AIが止まっていても規則の答えとカードはすぐ出ます。
- AIは下書きまで: AIの出力は常に人の承認を経て正式データになります(approval-workflow)。url2brainの投稿系APIも
confirm_post=trueを明示しない限り実際には投稿せずdraft_readyを返します。SEO診断の改善案のような文章生成も、実測済みの指摘だけを材料にLLMへ書かせます。 - 判定は一箇所に: 権限判定などはコードの1か所だけに集約し、AIが関与しません(config-declared-scope)。
- AIは解釈のみ、数値を発明しない: 取引後のレビューや仮説生成では、実データをコードが計算し、LLMはそれを解釈するだけに留めます(evidence-traceability)。
- 数値は式ごと示す: knisaは新NISAの枠の残り・売却分の翌年復活・上限超過の指摘を制度どおりに計算し、積立の試算では「配当+企業の利益の伸び−信託報酬」という式そのものを画面に出したうえで、良かった場合・悪かった場合の幅と元本を下回る確率として示します。何を足して何を引いたかが利用者に見える形で残ります。
- 失敗時に捏造しない: AIバックエンドが失敗した場合、テンプレートや別LLMへ黙ってフォールバックせず、明示的なエラーを返す製品もあります(kfxbrain)。
- 不明を不明として返す: 二値の○×に畳まず、「該当」「非該当」「確認できない」「指定対象外」「データなし」を必ず分けて出力します(unknown-vs-outside-distinction、hazard-map-judgment)。空欄や「該当なし」で流すと利用者を誤解させるため、確認できなかった事実を紙の上に残す設計です。
- 推測した値を示さない: 公表されていない締切日や、確認できないデータ時点を推測で補いません。表示できないものは表示せず、「事務局に確認してください」と案内します。
- 知らないことは作らない: kurage-filloutはAIに文章を作らせず、入るのは今日の日付・保存した会社情報・利用者が書いた値の3つだけ。分からない欄は空のまま残します。kshuishoは要約も論評も文章の生成もしません。kurage-light-chatbotも sources/ に置いたMarkdownだけを材料に答え、与えられていない知識を足しません。
- 確からしさを隠さない: 確率的な処理をどうしても残す場合、その不確かさを画面に出します。kconsensusは手元LLMによる意見グループ判定の読み取り精度(75〜85%)と誤読を表示し、票が足りないときは数字を出さずに「足りない」と書きます。
- 状態はフラグで持たず導出する: 対応済みかどうかといった状態を保持フラグに頼らず、入力から決定的に計算し直すことで「返したつもりで放置」を防ぎます。
- 触れられる範囲を宣言で限定する: どの表・列・操作を触らせるかを設定で宣言し、宣言外の操作はブラウザからもコマンドからも実行できません。
例
行政・防災分野
- kurage-chinjo-navi: 陳情の所管委員会をLLMで判定せず、語の一致で選び、どの語で判定したかを画面に出します。当たらなければ「判定できませんでした」と表示し、当てずっぽうで1つ選びません。公表されていない陳情の締切日は表示せず、開会日を示して事務局への確認を促します。
- kurage-juyo-saigai-check: 宅建業法施行規則の災害4項目を、該当/非該当/確認できない/指定対象外/データなしの5つに分けて返します。「確認できない」を「区域外」と書かないことが商品の中身であり、判定結果には根拠条文とデータ時点を添えます。
- kurage-earthquake-map: 「区域外」「判定対象外」「範囲外」を必ず分離。液状化データの28%を占める判定対象外を「液状化しない」と表示しないことを、分布を実測したうえで設計に固定しています。
- kurage-morido-map/kurage-disaster-risk-area-map: 「区域外」と「未指定」「データなし」を区別し、区域外と答える場合も「工事の許可が要る範囲であって災害の危険そのものではない」「浸水の危険が無い意味ではない」と毎回明記します。
- kurage-flood-hazard-map/kurage-tsunami-map/kurage-refuge-map/kurage-landslide-hazard-map: 浸水深は○×ではなく区分と行動指針で返し、未収録・内陸・区域外を区別します。データの更新時点が確認できない場合は判定そのものを行いません。250m以内に区域があるときは「区域外」と言い切らず地番での確認を促します。
- kurage-seido-navi/kurage-facilities: 制度検索・施設検索にLLMを使わず、語の一致とデータで引きます。
- kurage-subsidy-navi/kurage-ai-soudan-chat: 補助金・給付金・入札は、地域・業種・従業員数・状況といった条件を規則で絞り込んだ結果をAIが説明する順序をとります。
- ktoshikeikaku/kminpaku: 用途地域・建ぺい率・容積率や民泊の上乗せ条例は原文のまま引用し、住所を外部のAIやAPIに送りません。
暮らし・手続き分野
- knintei: 要介護認定の認定調査55問を、選択肢・調査項目の定義・選択基準つきで示し、区分の境目には省令の条文を添えます。要介護度そのものは判定しません(推計方法の係数が公開されていないため)。作れないものを作らない、という判断を明示した例です。
- kacnavi: 身内が亡くなったあとの手続き48件を故人の状況37項目で絞り込み、期限はすべてe-Gov法令検索の条文で裏取りし、公開前に34件の引用を検算しています。入力された故人の情報はどこにも送りません。
- kkaigo/kghome/khoudei/kshuro/kgakudo: 近くの事業所は公表データを決定的に引くだけです。空き状況は公表がないため出さず、消えた事業所の理由も公表されていないので「廃止した」とは書きません。学童保育は市区町村名で数字が出ない自治体を「未公表」と書き、推定した数字を出しません。
- kurage-visit-nursing-navi: 同名の事業所(「ひまわり」49軒・「さくら」48軒など)を住所で見分けます。名前の一致という曖昧な手がかりを、決定的な住所で確定させます。
業務システム
- kurage-hr-post: 達成率はコードが決定的に計算し、AIに採点させません。記録は人ではなく職に紐づけ、社員マスタは持たず外部JSONを読むだけなので二重管理になりません。
- kurage-kintai: 顔照合はサーバーの決定的コードが正とします(顔データは同意記録+削除機能つき)。打刻は丸めずに台帳へ載せます。
- kreserve: 空き枠判定と予約書き込みを同じロック内で行い、ダブルブッキングを防止します。
- kurage-ai-mom/kurage-ai-meishi-analysis/kurage-crm-agent: AIは議事録・名刺・商談の下書きを作るだけで、台帳に直接書けません。人が録音や原本画像と見比べて承認したものだけが確定します。AI議事録では「AIは承認できない」関門をコードで強制し、未承認の下書きはmcp経由でも外に出しません。
- kurage-line-crm: 「未対応」をフラグで持たず、新着メッセージが届けば自動で未対応に戻す状態導出により、対応漏れをコード側で防ぎます。返信欄からの送信は通数課金の対象なので、無効化の既定と使用数の表示もコードが管理します。
- kvgwc/kdbagent/kcaldav: 権限判定はコードの1か所に集約し、DB操作は設定で宣言した表・列・操作だけに限定。宣言外の削除等はどの経路からも実行できません。CalDAVサーバーもユーザー・カレンダー・パスワードを設定ファイルで宣言し、宣言外には触れません。
- kpaylink/kbilling/kinvoice: 決済の入金はサーバー側で裏取りしてから記録します。領収書はPDFを添付せず、宛先メールアドレスの確認を通った人だけが受け取れる形にします。kurage-vibe-cartの受注管理も「受注・入金・発送・その他」を個別にチェックする実務的な状態管理です。
開発・診断ツール
- kproofread: 化学試験結果報告書の数値照査は決定論的検査が先で、LLMは根拠・重要度つきで矛盾を指摘するだけ。原本は変更せず、修正版を別ファイルで生成します。
- kseo: 日本語サイトの技術SEO診断は、タイトルの全角文字数・lang属性・文字コード宣言・noindex付け忘れなどを実際にクロールして決定論的に判定。
visible_length()は全角1文字・半角0.5文字として数える日本語言語仕様もコードに組み込まれています。LLMが登場するのは実測値に基づく改善案の文章だけです。 - kgeo: AI検索向け診断も、robots.txt/llms.txt/JSON-LDなどのGEO技術監査は決定論的に実施。AEO採点は日本語専用ルールで独立採点し、スコアと根拠の再現性を確保します。
- kcheckit: RSS・API・HTML差分・SSL期限の4方式で監視し、通知理由をコードが判定します。
- karchitect: 対話から要件JSONとシステム設計書を育てますが、会話も要件も自分のサーバーの中だけに保存され、外部サービスには出ません。
- kcbrain/kfxbrain/ksbrain: 判断APIは渡されたevidence(証拠ID)だけを入力として使い、存在しないIDは除外。データが足りない場合は捏造せず「足りない」と正直に返し、出典とデータ時点を構造化JSONで返します。
- kzabbix: 障害調査では、Zabbix APIからのイベント・ログ・メトリクス収集という証拠収集をコードが実行。ローカルLLMはその一次証拠だけを読んで概要・時系列・原因候補をまとめ、収集されていない事実を付け加えません。
- OSS日本語導入キット(theyworkforyou、alaveteli、fixmystreet、openvpmなど)は、推測した手順ではなく実際に立てて測った結果だけを載せます。TheyWorkForYou日本語版は2026年6月の25会議・1,397発言を取り込んで日本語全文検索できるところまで実測し、素のままでは日本語が1件も引けない理由(Xapianが一文を一語として索引する)とその解き方を記録しています。
金融・トレーディング
- kfxai / kfreqai / nofx: AIは市場判断を提案するが、注文・リスク上限・ポジション管理等はコードが強制します(paper-tradingで検証後も同じ境界)。kfreqaiの改善仮説は、LLMが提案してもバックテスト可能な戦略バリアントへ自動変換され、同じ期間・約160通貨ペアで機械的に判定され、P&Lを改善してドローダウンを悪化させないものだけが採用候補になります。
- url2brain: SNS告知文やブログ記事の生成はLLMが行いますが、投稿は既存ツールへ委譲し、
confirm_post=trueが無ければ下書き確認を返す安全モデルを踏襲します。 - ksbrain: 入力された根拠ID以外を出典として返さないことで、判断の根拠を決定的に追跡可能にします。
関連
- ai-judgment-backend: AI判断の結果をどこまで信用するかの境界
- trust-boundary: 決定論的な部分とAIが触れられる部分の分離(kfxaiの「trust boundary」も参照)
- unknown-vs-outside-distinction: 不明を不明として返すための区分設計
- hazard-map-judgment: 行政データを決定的に判定する応用
- evidence-traceability: 判定の根拠とデータ時点を残す仕組み
- config-declared-scope: 触れられる範囲を宣言で限定する設計
- self-contained-php-app: 決定的コアを実装しやすいシンプルな構成
- self-hosting: 判定を外部サービスに委ねないための前提
- kappstore-ecosystem: この原則を多数の商品として配布する枠組み
- paper-trading: 実資金を動かす前に決定論的リスク制御を検証する仕組み
- kurage-products: 本概念が多数の商品に適用されている事例一覧
- kurage-repos: 公開リポジトリでの実装例
Related Documents
See also: kurage-articles-index
Kurage.AI に質問する
