OmniGlyph について
OmniGlyphは、AIエージェント、自動化システム、開発者向けのローカル優先の記号・用語検索およびセキュリティ検査サービスです。出典を追跡できる構造化データで、モデルの推論や出力前にUnicode、業界用語、テキストポリシーを検証します。
主な機能
- 01Unicode文字と用語の検索
- 02疑わしいUnicodeや同形異字の検出
- 03多言語テキストの正規化
- 04語彙パックとポリシーパックの検証
- 05出力・入力・意図の検査
活用シーン
- 01コード内の不可視文字や疑わしい文字の検査
- 02専門用語や標準名称の確認
- 03生成内容の送信前レビュー
- 04ツール操作前の意図ポリシー検証
MCP 対応
ローカルstdio MCPサーバーとして、文字・用語検索、Unicodeセキュリティスキャン、出力検証、言語入力スキャン、意図ポリシー確認のツールをクライアントに提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
5掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| char | string | はい | 検索する Unicode 文字を指定します。必ず 1 文字にしてください。 |
詳細
OmniGlyph(万象文枢)
AI エージェントのための、世界規模のシンボル真値レイヤー。
AI エージェントのためのシンボルのグラウンドトゥルースレイヤーです。
OmniGlyph は、人が読むための辞書ではありません。AI エージェント、自動化システム、そして将来のセマンティックなオペレーティングレイヤー向けに設計された、ローカルファーストで、情報源を追跡でき、機械で計算可能なシンボル基盤です。
その中核となる理念は次のとおりです。
文字はカプセル化であり、意味は演算です。
AGI 時代には、エージェントは確率的な言語モデルの下に、決定論的な基盤を必要とします。OmniGlyph は、Unicode 文字、文字体系、多言語用語、技術記号、業界略語、そして将来的にはドメイン概念を、エージェントが照会、検証、計算できる構造化された事実へと変換します。
AI 向け概要
AI アシスタント、クローラー、エージェントレジストリ、または開発者ツールのインデクサーの場合、OmniGlyph は次のように要約できます。
OmniGlyph is a local-first MCP server and Python package that gives AI agents deterministic Unicode, Unihan, domain-term, security-scan, output-guardrail, and intent-policy checks before they reason over text, deliver generated output, or request tool actions.
解決する課題
- AI エージェントは、Unicode のホモグリフ、ゼロ幅文字、Bidi 制御文字、全角文字、形式の崩れた OCR テキストを誤読します。
- LLM は、ローカルに情報源で裏付けられた事実がない場合、ドメイン用語、SKU、略語、貿易用語、技術記号を幻覚します。
- エンタープライズエージェントが顧客への返信、見積もり、ERP フィールド、ツール操作を送信する前に、決定論的な
allow、warn、block、unknownの判定根拠が必要です。 - コーディングエージェントは、コピーしたコード、生成コード、ログ、セキュリティ上重要な識別子を編集する前に、不可視または不審な Unicode を検出する必要があります。
- エージェントのワークフローには、業務用語をグローバルな公開辞書に漏らさずに、非公開の語彙パックを使用する必要があります。
主なユースケース
- Unicode セキュリティスキャン: ソースコードやテキスト内のホモグリフ、ゼロ幅スペース、Bidi 制御文字、制御文字、正規化のリスクを検出します。
- エージェントのグラウンディング: LLM が推論する前に、グリフ、CJK の読み、非公開用語、別名、正規 ID を参照します。
- エンタープライズ出力ガードレール: ローカルの Lexicon Pack で未知、未承認、または裏付けのない生成用語をブロックするか、レビュー対象にします。
- Language-as-Code ファイアウォール: 信頼できない自然言語入力をスキャンしてプロンプトインジェクション指示を検出し、モデル出力をスキャンして機密データを検出します。
- インテントポリシーのガードレール: ホストシステムがツール操作を許可、レビュー、またはブロックする前に、正規化されたエージェントのインテントをローカルの Policy Pack に照らして検証します。
- 非公開語彙の基盤: 企業が独自の SKU、材料名、サプライヤー用語、機密語彙、承認済みの別名をマウントできます。
- RAG および OCR の前処理: 多言語、ノイズの多いテキスト、またはドメイン固有のテキストを、検索や生成の前に情報源で裏付けられた構造化事実へ正規化します。
技術スタック
- Python 3.10+
- FastAPI HTTP API
- ローカル stdio MCP サーバー
- SQLite ローカルファクトストア
- PyPI パッケージ:
omniglyph - データ入力:UnicodeData、Unihan、CSV ドメインパック、Lexicon Pack、Policy Pack
- インターフェース:CLI、REST API、MCP ツール、JSON レポート
このプロジェクトの検索におすすめのクエリ
- "Unicode セキュリティスキャン用 MCP サーバー"
- "ドメイン用語向け AI エージェント出力ガードレール"
- "LLM エージェント向けローカルシンボルのグラウンドトゥルースレイヤー"
- "LLM 推論前にホモグリフとゼロ幅文字を検出"
- "エンタープライズ AI エージェント向け非公開語彙パック"
- "AI エージェント向け情報源に基づく辞書基盤"
- "プロンプトインジェクションと DLP 向け Language-as-Code ファイアウォール"
製品の理念
OmniGlyph は、同じ決定論的な基盤を共有する次の 3 つのレイヤーを中心に構築されています。
1. グローバルシンボルのグラウンドトゥルースレイヤー
OmniGlyph は、記号や用語について、エージェントにローカルでソースを追跡できる物理的なグラウンドトゥルースレイヤーを提供します。確率モデルが推論を始める前に、Unicode コードポイント、疑わしいホモグリフ、ゼロ幅文字、Bidi 制御文字、全角/半角形式、非公開の用語をエージェントが特定できるようにします。
これは、モデルのあらゆるハルシネーションをなくせると主張するものではありません。低レベルのテキスト基盤を検査可能かつソースに裏付けられたものにすることで、記号、文字、用語のレイヤーにおける具体的な種類の失敗を減らします。
2. 厳格なエンタープライズ向けガードレール
シンボルのグラウンドトゥルースレイヤーに加えて、OmniGlyph はエンタープライズのワークフロー向けに決定論的な MCP ガードレールとして実行できます。ユーザーは、ビジネス用語、SKU、素材名、サプライヤー用語、機密用語、承認済みエイリアス向けに、非公開の Lexicon Pack をマウントできます。
その後、生成された出力を validate_output_terms と enforce_grounded_output で検証できます。不明、未承認、または裏付けのない用語は、顧客、ERP システム、見積もり、または後続のツールに届く前にブロックするか、レビューに回すことができます。
3. 言語をコードとして扱うセキュリティゲートウェイ
OmniGlyph は、自然言語も実行時の攻撃対象として扱います。scan_language_input は、信頼できないテキストに含まれるプロンプトインジェクションの指示や、隠された Unicode 攻撃をチェックします。scan_output_dlp は、機密性の高い送信テキストをマスキングします。また、enforce_intent は、決定論的なインテントマニフェストまたはローカルの Policy Pack に照らしてアクションリクエストを検証します。
このレイヤーはシェルコマンドを実行せず、プロンプトインジェクションを完全に防げると約束するものでもありません。ホストシステムに、機械可読な allow、review、block の根拠を提供することで、モデルの外部で実行と配信に関する判断を行えるようにします。
一言で言えば:
OmniGlyph は、AI エージェント向けのローカルなシンボルのグラウンドトゥルースレイヤー、決定論的なエンタープライズ向けガードレール、そして言語セキュリティゲートウェイです。
公開済みパッケージと現在のソース候補
OmniGlyph は、Python パッケージと MCP Registry サーバーの両方として用意されています。現在の GitHub ソース候補は、最新の公開済み PyPI パッケージより新しいバージョンです。
- 現在のソースパッケージのバージョン:
omniglyph==0.8.1b0 - 最新の公開済み PyPI パッケージ:
omniglyph==0.6.0b0 - MCP Registry サーバー:
io.github.aidi1723/omniglyph - トランスポート:ローカルの stdio MCP サーバー
最新の公開済み PyPI パッケージをインストールします:
pip install omniglyph==0.6.0b0
MCP サーバーを実行します:
omniglyph-mcp
MCP の簡易スモークテスト:
printf '{"jsonrpc":"2.0","id":1,"method":"tools/list"}\n' | omniglyph-mcp
ソースブランチは現在 0.8.1b0 としてバージョン管理されており、v0.8 の MCP ツールセットを公開しています。0.8.1b0 の PyPI への公開は、別途リリース手順が必要です。
現在のソースの MCP ツール:lookup_glyph、lookup_term、explain_glyph、explain_term、explain_code_security、normalize_tokens、list_namespaces、validate_lexicon_pack、validate_policy_pack、validate_output_terms、enforce_grounded_output、scan_unicode_security、scan_language_input、scan_output_dlp、enforce_intent、audit_explain。以前の scan_code_symbols というツール名も、後方互換性のあるエイリアスとして引き続き利用できます。
最新のソース準備状況の記録:main にはコミット 831ab902071448b843617e8b03fdf24e32966775 が含まれており、パッケージ公開前にローカルのリリースゲート検証に合格しています。TestPyPI、PyPI、MCP Registry への公開は、それぞれ別途承認が必要です。
開発の背景
大規模言語モデルは確率的なエンジンです。強力である一方、見慣れない文字体系、多言語の略語、ドメイン固有の記号、不正な OCR、専門的な産業用語に直面すると、ハルシネーションを起こすことがあります。
OmniGlyph は、不足しているレイヤーを提供します:
Agent encounters symbol → calls local OmniGlyph → receives traceable structured fact → continues task
これにより、人間が読むページ上の辞書を、エージェントが実行時に利用する計算資源へと変換します。
対象範囲と境界
OmniGlyph は現在のベータ段階では、意図的に対象を絞っています。
- 生の画像ではなく、Unicode テキスト/コードポイントを分析します。OCR や視覚的なグリフ認識は、OmniGlyph を使う前に行う必要があります。
- 生成的な解釈ではなく、情報源に裏付けられた事実とルールベースの分析結果を返します。
- 記号や用語の層におけるハルシネーションを減らせますが、モデルのあらゆるハルシネーションをなくすわけではありません。
- グローバルな Unicode の事実、Unihan の事実、プライベートなドメインパックを別々の層として扱うため、ビジネス用語が公開されている正解情報を汚染しません。
詳細な位置付けと対象外事項については、docs/product/positioning.md を参照してください。
戦略的な位置付け
OmniGlyph は、OpenClaw / AgentCore OS などのプライベートなエージェントシステムにおける、ローカルな知識の中核として設計されています。
- 決定論的: 正規の事実は、モデルの推測ではなく、追跡可能な情報源に基づいています。
- 構造化: 応答は、ノイズの多い HTML ページではなく、JSON、ベクトル、特性、関係、来歴で構成されます。
- ローカルファースト: 速度、コスト管理、機密性のため、N100 マトリックスなどのプライベートインフラで実行できます。
- 組み合わせ可能(MCP 対応): 標準の Model Context Protocol サーバーを公開し、OpenClaw、RAG パイプライン、越境問い合わせの解析、製品の標準化、意味計算ですぐに利用できます。
- 拡張可能: Unicode から始め、業界の概念や計算可能な特性へと拡張できます。
エージェントインフラである理由
OmniGlyph は単なる辞書 API ではありません。エージェント型システムを支える低レベルのインフラコンポーネントです。
1. エージェントの認識レイヤー
LLM は、人間のように文字を直接認識するわけではありません。トークンを処理します。OpenClaw 型のワークフローが、略語、OCR のノイズ、希少なグリフ、複数の文字体系、または不正な記号を含む多言語の貿易メールを受け取ると、推論が始まる前に、認識やトークン化の段階でハルシネーションが始まることがあります。
OmniGlyph は、エージェント向けの高精度な記号用顕微鏡として機能します。LLM が意図分析、見積もりのロジック、リスク推論を行う前に、OmniGlyph は不確かな記号やドメイン用語を、決定論的な Unicode の事実と正規 ID に正規化できます。
認識が不安定だと、その後のビジネスロジックも不安定になります。OmniGlyph は最初のレイヤーを安定させます。
2. 外部の正解情報メモリ
LLM の知識は、確率的なモデルの重みに圧縮されています。そのため強力である一方、コンテキストに左右され、自信に満ちた捏造をしやすいという面もあります。
OmniGlyph は、文字、記号、ドメイン用語の解釈をモデルの内部メモリから切り離し、情報源に裏付けられた読み取り専用の外部サービスに配置します。Intel N100 などのエッジノードにデプロイすると、エージェントが API または MCP 経由で呼び出せるローカルな正解情報メモリになります。
これにより、エージェントは記号、用語、情報源、欠損値を参照するための、ローカルな測定基準システムを利用できます。
3. アトミックなインフラ
優れたインフラは、ビジネスワークフローをハードコードしません。OmniGlyph は、顧客への返信方法、運賃の計算方法、ガラスの価格設定を決めません。中核となる役割は、アトミックです。
input symbol or term → source-backed standard attributes / canonical ID
アトミックで凝集性が高いため、さまざまなワークフローで再利用できます。
- 問い合わせテキストの整理
- OCR の後処理
- 多言語の製品タイトルの正規化
- RAG の前処理
- 建築資材用語の標準化
- Codex / OpenClaw 型エージェントからの MCP ツール呼び出し
- エージェントがコピーまたは生成したコードを編集する前の、コード記号のリント
この意味で、OmniGlyph はエージェント時代に向けた、データクリーニングと事実検証のプリミティブを定義しようとするオープンソースの試みです。
OmniGlyph が埋めるギャップとは?
多くのエージェントシステムは今も、モデル優先のパターンに依存しています。ワークフローの信頼性が低下すると、チームはモデルをアップグレードしたり、プロンプトのテキストを増やしたり、RAG レイヤーを追加したりすることがよくあります。いずれも有効ですが、記号や用語に関する決定論的な問題を完全には解決できません。確率的なエンジンは事実に基づいて推論すべきであり、事実そのものをでっち上げるよう求められるべきではありません。
OmniGlyph は、見落とされがちな 3 つのインフラ上のギャップを埋めます。
1. 認識と推論の分離
エージェントのワークフローでは、基本的な認識と高度な推論が同じ LLM 呼び出しの中で混在することがよくあります。産業オートメーションでは、これは脆弱です。珍しい字形、ノイズの多い OCR の断片、ローカルな略語、素材の略記、HS コードのような文字列を認識することは、推論の問題である前に、認識の問題です。
OmniGlyph は、この層にローカルな事実辞書を提供します。推論はモデルに任せながら、記号や用語の識別は決定論的なサービスに基づいて行います。
2. 軽量なローカル正解データ
大規模なナレッジグラフやリモート API は強力ですが、エッジのエージェントワークフローには、重すぎる、遅すぎる、高価すぎる、またはネットワークへの依存が大きすぎる場合があります。
OmniGlyph は、Intel N100/N97 エッジノードなどのマシン上で小規模なローカルサービスとして実行できるように設計されています。これにより、モデルによる推論にトークンを使ったり、機密性の高い業務テキストを外部サービスに送信したりする前に、エージェントが低レイテンシのローカルな語彙チェックを実行できます。
3. 記号を計算可能な入力に変換
従来の辞書は、読解に最適化されています。エージェントシステムには、計算に使える構造化された入力が必要です。
OmniGlyph は、文字、別名、略語、ドメイン用語を正規 ID、JSON 形式の事実、ソースメタデータ、そして最終的には計算可能な特性に変換します。これにより、実世界の雑多なテキストが、見積もりロジック、RAG 検索、OCR 補正、コンプライアンスチェック、後続の自動化に使える安定した入力になります。
つまり、OmniGlyph は記号と用語の層における実用的なハルシネーション対策フィルターです。モデルのあらゆるハルシネーションをなくすと主張するものではありません。推論の前後に、ソースに裏付けられたローカルな事実レイヤーをエージェントに提供することで、重要な種類の障害を軽減します。
長期的なビジョン
OmniGlyph は、エージェントシステムのシンボルカーネルを目指しています。
Glyph Layer → Lexical Layer → Concept Layer → Computation Layer
1. 字形レイヤー
答える問い:この記号は何ですか?
- Unicode コードポイント
- 文字名
- 文字体系
- ブロック
- カテゴリー
- 分解
- 異体字
- ソースのバージョン
2. 語彙レイヤー
答える問い:この記号や用語は、人間の言語でどのような意味ですか?
- 発音
- 定義
- 品詞
- 多言語の別名
- 語源
- 辞書の参照情報
- 略語
- 簡体字/繁体字、または異体表記
3. 概念レイヤー
答える問い:これは現実世界のどのような概念を指していますか?
例:
铝 → aluminum → chemical element → metal material → construction profile material
4. 計算レイヤー
答える問い:タスクにおいて、この概念からエージェントが推論したり、処理を実行したりできることは何ですか?
例:
玻璃 + 海运 + 风暴
→ fragile_material + ocean_freight + weather_hazard
→ high_breakage_risk
→ packaging and insurance recommendation
技術スタックとアーキテクチャ
エッジコンピューティングと、多様なハードウェア構成に対応するよう設計されています。
- コアフレームワーク: 高い同時実行性を実現するローカル API 向けに、Python 3.10+ と FastAPI を使用します。
- データベース: MVP とエッジノードでは SQLite を使用し、ステージ 3 のセマンティックトポロジーでは PostgreSQL + pgvector を使用します。
- デプロイ: Docker ネイティブで、Intel N100 などの低消費電力エッジノードや、ベクトル処理向けの Mac mini M4 などの Apple Silicon ノードに最適化されています。
- エージェント連携: OpenClaw、Claude Desktop、カスタムエージェントと設定不要で連携できるよう、MCP(Model Context Protocol)をネイティブサポートします。
概要:OmniGlyph が返す情報
エージェントが 铝 のような記号に遭遇し、OmniGlyph に問い合わせると、次のようになります。
リクエスト:
GET /api/v1/glyph?char=铝
レスポンス:
{
"glyph": "铝",
"unicode": {
"hex": "U+94DD",
"name": "CJK UNIFIED IDEOGRAPH-94DD",
"block": "CJK Unified Ideographs",
"source": "UnicodeData 17.0.0"
},
"lexical": {
"pinyin": "lǚ",
"basic_meaning": null,
"sources": {
"pinyin": "Unihan Database"
}
},
"domain_traits": {
"trade_code": "HS 7604.21"
},
"metadata": {
"confidence": 1.0,
"retrieved_at": "2026-04-24T10:00:00Z"
}
}
重要な違いは、グローバルな Unicode の事実、Unihan の語彙情報、任意のプライベートなドメイン特性がまとめて返される一方で、内部ではそれぞれのソースが分離されていることです。上流ソースに存在しない事実は null のままです。たとえば、現在の Unihan の読み情報では 铝 の kMandarin が提供されていますが、別の承認済みソースから提供されない限り、basic_meaning は null のままになる場合があります。domain_traits が表示されるのは、許可されたプライベートドメインパックに、一致するプロパティが含まれている場合のみです。
開発者向けユースケース:コードシンボルリンター
OmniGlyph は、コーディングエージェント向けに、自身のシンボルファクトレイヤーを活用するようになりました。scan-code コマンドは、不可視の Unicode 制御文字、Bidi 制御文字、ソースに裏付けられた紛らわしい文字、スクリプトをまたぐ同形異字のリスク、全角/半角の形式、およびソースコードを正しく見せながら誤った動作を引き起こす可能性のある NFKC 正規化による変更を検出します。
python examples/poisoned-code/generate_poison.py
omniglyph scan-code examples/poisoned-code/test_bug.py
これは、コミット前フック、CI、およびコードを編集または説明する前に物理的な Unicode レイヤーを調査する必要がある MCP 対応コーディングエージェント向けに設計されています。OES 形式のペイロードには explain_code_security を、エンタープライズワークフローで追跡可能性が必要な場合は audit_explain を使用してください。docs/use-cases/code-linter.md と docs/use-cases/security-dictionary-audit.md を参照してください。
エージェント向けサンドイッチアーキテクチャ
OmniGlyph は、エージェント/RAG ワークフローの両側に組み込めます。
Raw input
→ OmniGlyph Input Normalizer
→ RAG / LLM / Agent reasoning
→ OmniGlyph Output Guardrail
→ customer reply / quote / ERP / factory instruction
入力ノーマライザーとして、OmniGlyph は、ノイズの多い顧客テキスト、OCR の断片、略語、多言語の別名、業界用語を、検索や推論の前に正規 ID に変換します。
出力ガードレールとして、OmniGlyph は、生成されたテキストが顧客や下流システムに届く前にチェックします。モデルが未知の HS コード、素材名、またはプロファイルモデルを捏造した場合、ワークフローはその出力にフラグを立てたり、ブロックしたり、レビューに回したりできます。
現在の実装では、POST /api/v1/normalize と MCP の normalize_tokens による入力正規化に対応しています。また、既知/未知の用語チェックに加え、allow、review、block のいずれかを選べるオプションのポリシーモードによる出力ガードレールも追加されています。自動書き換えと ERP/メール連携は今後の対応予定です。
docs/architecture/sandwich-architecture.md を参照してください。
決定論的 MCP ガードレール
ガードレールブランチは、OmniGlyph のデプロイモードの 1 つです。同じソースに裏付けられたグリフ、用語、OES、監査レイヤーを使用し、管理されたワークフローでエージェントが主張できる内容を定義します。
User / system output
→ extract candidate terms
→ OmniGlyph enforce_grounded_output
→ allow if all terms are source-backed
→ block or review if unknown terms appear
デフォルトの厳格なソース根拠ポリシーでは、次の内容が返されます。
- すべての候補用語がローカルのファクトベースに存在する場合、
decision: "allow"。 - 候補用語に未知のものが 1 つでもある場合、
decision: "block"。 - リスクなし、低、中、高のいずれかを示す
severityの根拠。 - 判定に使用した既知の事実を示す
source_ids。 actor_idが指定されている場合のauditの根拠。
ホストは、{"unknown_action":"review"} のような出力ポリシーを任意で渡すことができます。これにより、デフォルトのブロック動作を使わず、未知、未承認、または秘密の用語をレビューに回せます。
リスクのある用語が含まれる場合、enforce_grounded_output は、未知、未承認、秘密の用語を決定論的なホストレビュー用の根拠としてまとめた review_packet も返します。
CLI ワークフローからも、同じ適用パスを呼び出せます。
omniglyph enforce-output --term FOB --term "HS 7604.99X" --policy '{"unknown_action":"review"}'
これは言語とシンボルの基盤に取って代わるものではありません。この基盤の上に構築された、エンタープライズ向けの境界制御ユースケースです。
言語セキュリティゲートウェイ
言語セキュリティゲートウェイブランチは、エージェントのセキュリティにも同じ決定論的な方針を適用します。
External text
→ scan_language_input
→ block prompt-injection directives or hidden Unicode attacks
→ model reasoning
→ scan_output_dlp
→ redact credentials or business-confidential terms
→ enforce_intent
→ allow, review, or block tool execution requests
実装済みの機能:
scan_language_input:以前の指示を無視する、隠されたプロンプトを表示するといった言い換えを含むプロンプトインジェクションの指示と、モデルに入力される前の高リスクな隠し Unicode パターンを検出します。200000 文字を超えるテキストは拒否されます。scan_output_dlp:API キー、AWS アクセスキー、GitHub トークン、Slack トークン、秘密鍵ヘッダー、メールアドレス、呼び出し元が指定した秘密の用語を検出し、[REDACTED]に置き換えたテキストを返します。enforce_intent:シェルコマンドを実行せずに、マニフェストに照らして要求されたインテントを検証し、allow、review、またはblockを返します。
これは、プロンプトインジェクションがあらゆる状況で解決されたという保証ではありません。信頼できない言語によってエージェントが入力、開示、実行する内容を制限する、決定論的な安全チェックポイントです。
測定データと期待される効果
OmniGlyph は、その場しのぎのウェブ閲覧やモデルによる推測を、ローカルでソースに裏付けられた検索に置き換え、トークンの浪費とハルシネーションのリスクを低減するよう設計されています。
検証済みデータ
現在の v0.8.0-beta ソース候補は、ローカルで次のとおり検証されています。
| 指標 | 結果 |
|---|---|
| UnicodeData のインポート | 40,569 件のグリフレコード |
| Unihan_Readings のインポート | 291,227 件のプロパティ |
| Unihan_DictionaryLikeData のインポート | 156,251 件のプロパティ |
| 検証済みの Unihan プロパティ合計 | 447,478 件のプロパティ |
| ローカルテストスイート | 337 passed |
| N100 Linux テストスイート | ベータブランチで検証済み |
| Docker のビルド/実行/ヘルスチェック | N100 で検証済み |
铝 の SQLite 検索ベンチマーク | 1,000 回の検索で P95 は約 0.17ms |
正規化の例:
Need aluminum profile and tempered glass, FOB Bangkok, MOQ 500 sets.
簡潔な結果:
{
"known": {
"aluminum profile": "material:aluminum_profile",
"tempered glass": "material:tempered_glass",
"FOB": "trade:fob",
"MOQ": "trade:moq"
},
"unknown": ["Bangkok", "500 sets"]
}
トークン削減の可能性
以下はエンジニアリング上の推定値であり、大規模なベンチマークの結果を示すものではありません。
| シナリオ | 推定トークン削減率 | 理由 |
|---|---|---|
| Unicode 文字 1 字の検証 | 70%–95% | ローカル JSON により、ウェブ検索、HTML、説明のコンテキストが不要になります。 |
| CJK 読みの検索 | 60%–90% | Unihan のフィールドにより、モデルの推測や長い説明が不要になります。 |
| 絵文字/記号の識別 | 50%–85% | Unicode 名称とソースに基づくプロパティが直接返されます。 |
| クロスボーダー照会の正規化 | 30%–70% を目標 | ドメインパックとバッチ正規化が必要です。ベータ機能として利用可能になりました。 |
ハルシネーション対策
OmniGlyph は現在、次のルールを適用することで、文字、記号、用語レベルのハルシネーションを抑制します。
source-backed fact → return it
missing upstream value → return null
unknown token → return unknown / 404
例:検証済みの Unihan データでは、铝 の kMandarin は lǚ ですが、確認済みの Unihan ファイルには、そのコードポイントの kDefinition がありません。そのため OmniGlyph は、定義をでっち上げるのではなく、basic_meaning: null を返します。
これですべてのエージェントのハルシネーションがなくなるわけではありません。モデルが推論する前に、記号と用語に関する事実を決定論的に提供する最初のインフラストラクチャ層です。
開発段階
ステージ 1:記号ファクトベース
ローカルで読み取り専用の、ソースに基づくグリフおよび語彙ベースを構築します。
- Unicode Character Database、Unihan、CLDR、および承認済みのオープンな語彙ソースを取り込みます。
- ソースの事実を正規レコードに正規化します。
- 不明な事実は NULL のまま保持します。
- 記号の厳密な検索に対応する、安定したローカル API を公開します。
- AI が生成した正規定義は絶対に禁止します。
ステージ 2:エージェントの語彙インテリジェンス
単一の記号から、単語、省略形、多言語の別名、OCR の断片、ドメイン用語へと対象を拡張します。
- プロパティテーブルとソーススナップショットを追加します。
- 建築用プロファイル、ガラス仕様、HS コード、物流用語、貿易略語などの業界固有のプライベート語彙を、グローバルな Unicode の基準情報を汚染せずにシームレスにマウントできるようにします。
- エージェントのワークフロー向けに、バッチ正規化をサポートします。
- レビュー済みの LLM 支援による候補抽出を導入します。ただし、正規データへの直接書き込みは行いません。
ステージ 3:セマンティックトポロジー
記号、用語、概念をグラフとして結び付けます。
- グリフノードと概念ノードを分離します。
- 信頼度スコア付きの関係を追加します。
- 多言語での同等表現と技術表記をリンクします。
- 記号から概念への、説明可能な探索を可能にします。
ステージ 4:セマンティック計算エンジン
概念の特性、ベクトル、グラフの関係、ルールを活用して、タスクの判断を支援します。
- 業界の概念を計算可能な特性に変換します。
- ルールエンジンとベクトル検索を組み合わせます。
- ソース経路と推論経路によって、出力を説明可能な状態に保ちます。
- LLM は説明とオーケストレーションに使用し、正規の事実ソースとしては使用しません。
MVP の目標
最初の実用バージョンでは、次の一連の処理が完結することを実証する必要があります。
Cross-border inquiry / OCR / product text
→ symbol and term extraction
→ local OmniGlyph normalization
→ structured facts and traits
→ AgentCore decision or reply
MVP v0.1:
- Unicode と Unihan のローカル取り込み。
GET /api/v1/glyph?char=铝。- SQLite または PostgreSQL のストレージ。
- すべてのプロパティにソース来歴を付与。
- 生成的な定義は行わない。
MVP v0.2:
- CLDR の表示名と絵文字/スクリプトの注釈。
- 記号のバッチ正規化エンドポイント。
- 最初のプライベート建材用語パック。
MVP v0.3:
- Wiktionary または承認済みのオープン辞書の取り込み。
- 建材、物流、貿易用語、仕様向けのドメイン用語 API。
- AgentCore/OpenClaw 統合アダプター。
鉄則
- ハルシネーションによる汚染を防ぐ: 正規の事実は、出典によって裏付けられている必要があります。
- データはコードです: すべての属性が、将来のエージェントの判断に影響する可能性があります。
- NULL を受け入れる: 推測した事実より、欠けている事実のほうが安全です。
- 意味より出典を優先する: すべての値に、出典名、バージョン、フィールド、取得メタデータが必要です。
- デフォルトでローカルファースト: プライベートなエージェントシステムは、外部の辞書 API なしで実行できなければなりません。
- LLM はアシスタントであり、権威ではありません: モデルは候補を提案できますが、レビュー済みの出典が正規データを書き込みます。
- 説明可能性は必須です: セマンティックな計算では、入力シンボルから出力判断に至るまでの経路を明らかにする必要があります。
例
国境を越えた問い合わせの正規化デモを実行します:
PYTHONPATH=src python examples/scripts/run_cross_border_demo.py
出力例では、aluminum profile、tempered glass、FOB、MOQ が正規 ID に対応付けられ、Bangkok や 500 sets などの未知のトークンはそのまま保持されます。
ドキュメント
- プロジェクトの目標とビジョン:
docs/product/omni-glyph-doctrine.md - 開発ハンドブック:
docs/product/development-handbook.md - ステージ 1 のアーキテクチャ:
docs/architecture/stage-1-architecture.md - クイックスタート:
docs/quickstart.md - API リファレンス:
docs/api.md - MCP ツール:
docs/mcp-tools.md - Lexicon Pack Standard:
docs/specs/lexicon-pack-standard.md - Policy Pack Standard:
docs/specs/policy-pack-standard.md - Deterministic MCP Guardrail のアーキテクチャ:
docs/architecture/deterministic-mcp-guardrail.md - Language Security Gateway のアーキテクチャ:
docs/architecture/language-security-gateway.md - Codex MCP の統合:
docs/integrations/codex-mcp.md - Claude Desktop MCP の統合:
docs/integrations/claude-desktop-mcp.md - Claude Code MCP の統合:
docs/integrations/claude-code-mcp.md - セキュリティ、辞書、監査のワークフロー:
docs/use-cases/security-dictionary-audit.md - MCP サーバーカード:
docs/mcp-server-card.md - MCP の安全性に関する注意事項:
docs/security/mcp-safety.md - プロジェクトのステータスと成熟度:
docs/product/project-status.md - ロードマップ:
ROADMAP.md
ドメインパックと正規化
OmniGlyph は、グローバルな Unicode/Unihan の事実を汚染することなく、プライベートなドメインパックをマウントできます。
標準の Lexicon Pack ディレクトリを作成します:
omniglyph init-lexicon-pack my-pack --namespace private_acme --pack-id company.acme.trade_terms --name "ACME Trade Terms"
インポートを検証し、プレビューします:
omniglyph validate-domain-pack my-pack
omniglyph ingest-domain-pack --source my-pack --dry-run
企業の名前空間をインポートまたは置換します:
omniglyph ingest-domain-pack --source my-pack --replace-namespace
CSV ドメインパックをインポートします:
omniglyph ingest-domain-pack --source tests/fixtures/domain_pack.csv --namespace private_building_materials --source-version fixture
ソフトウェア開発用のスターターパックはこちらから利用できます:
omniglyph ingest-domain-pack --source examples/domain-packs/software_development.csv --namespace public_software_development --source-version 0.1.0
用語を検索します:
curl 'http://127.0.0.1:8000/api/v1/term?text=FOB'
グリフと用語が混在するテキストを正規化します:
curl -X POST 'http://127.0.0.1:8000/api/v1/normalize?mode=compact' \
-H 'Content-Type: application/json' \
-d '{"tokens":["铝","FOB","tempered glass","unknown"]}'
簡潔な応答の例:
{
"known": {
"铝": "glyph:U+94DD",
"FOB": "trade:fob",
"tempered glass": "material:tempered_glass"
},
"unknown": ["unknown"]
}
MCP サーバー
OmniGlyph には、Claude Desktop、Claude Code、Codex スタイルのエージェント、カスタム MCP クライアント向けのローカル stdio MCP サーバーが含まれています。
パッケージをインストールした後、ローカルで実行します:
omniglyph-mcp
stdio 経由で送信する JSON-RPC リクエストの例:
{"jsonrpc":"2.0","id":1,"method":"tools/list"}
MCP サーバーは、/api/v1/glyph が使用するものと同じローカルの SQLite シンボルファクトベースから読み取ります。現在のソースブランチでは、lookup_glyph、lookup_term、explain_glyph、explain_term、explain_code_security、normalize_tokens、list_namespaces、validate_lexicon_pack、validate_policy_pack、validate_output_terms、enforce_grounded_output、scan_unicode_security、scan_language_input、scan_output_dlp、enforce_intent、audit_explain を公開しています。旧来の scan_code_symbols ツール名も、後方互換性のある別名として引き続き使用できます。
Policy Pack の意図に関するガードレール
Policy Pack を使用すると、ホストシステムはツールアクションを許可する前に、ローカルファイルから正規のエージェント意図を検証できます。
スターターパックを作成して検証します:
omniglyph init-policy-pack my-policy --namespace private_acme --policy-id company.acme.agent_policy --name "ACME Agent Policy"
omniglyph validate-policy-pack my-policy
決定論的な意図チェックを実行します:
omniglyph enforce-intent example.review --policy-pack my-policy --actor-role admin --parameters '{"ticket":"123"}'
サンプルパックは examples/policy-packs/agent_intents にあります。API と MCP の呼び出し元は policy_pack_path を使用できます。インラインの意図マニフェストも、互換性のため引き続きサポートされています。
ローカル MVP コマンド
開発用依存関係をインストールします:
python -m pip install -e '.[dev]'
システムの Python 環境が壊れている場合や、Python 3.10 以降がない場合は、uv を使用してください:
UV_CACHE_DIR=.uv-cache uv venv .venv --python 3.11
UV_CACHE_DIR=.uv-cache uv pip install -e '.[dev]'
.venv/bin/python -m pytest -v
Unicode のソースフィクスチャを明示的に取り込みます:
python -m omniglyph.cli ingest-unicode --source tests/fixtures/UnicodeData.sample.txt --source-version fixture
Unihan のソースフィクスチャを明示的に取り込みます:
python -m omniglyph.cli ingest-unihan --source tests/fixtures/Unihan.sample.txt --source-version fixture
API を実行します:
uvicorn omniglyph.api:app --reload
1 文字をクエリします:
curl 'http://127.0.0.1:8000/api/v1/glyph?char=铝'
取り込み後に検索ベンチマークを実行します:
python scripts/benchmark_lookup.py --db data/omniglyph.sqlite3 --glyph 铝 --iterations 1000
リリース確認スクリプト
環境を有効化した状態で、ローカルのリリース確認をすべて実行します:
scripts/release_check.sh
コンソールスクリプトのインストール後に、デモ確認を実行します:
scripts/demo_check.sh
ライセンス
OmniGlyph のソースコードは Apache License 2.0 の下でライセンスされています。インポートされたデータセット、Unicode/Unihan/CLDR の成果物、およびプライベートなドメインパックには、それぞれ独自のライセンスが適用され、本プロジェクトによって再ライセンスされることはありません。
万象文枢(OmniGlyph)源代码采用 Apache License 2.0。导入的数据集、Unicode/Unihan/CLDR 原始数据以及私有领域词库遵循各自的授权条款,本项目不会对其重新授权。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。