logic-server について
logic-serverは、AIアプリ向けのコンテキスト・推論エンジンです。会話から事実を抽出し、目標に関係する情報を推論してターン間の差分を返すため、エージェント開発で重複コンテキストを抑え、論理的一貫性を保てます。
主な機能
- 01会話ターンからの事実抽出
- 02目標に基づく後向き連鎖推論
- 03ターン間のコンテキスト差分
- 04事実維持と矛盾処理
- 05Python、TypeScript、REST、CLI、MCPの各インターフェース
活用シーン
- 01LLMに送る会話コンテキストの重複削減
- 02エージェントの現在の目標に関係する事実の整理
- 03ターン間で追加・削除されたコンテキストの追跡
MCP 対応
重要度順の作業セットを取得する `context` ツールを備えた、仕様準拠のMCPサーバーを提供します。HTTPエンドポイントとMCPを併用し、目標に沿ったコンテキスト構築や差分取得ができます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y nocturnusai-mcpNOCTURNUSAI_URLBase URL of the NocturnusAI serverNOCTURNUSAI_API_KEYシークレットAPI key for authenticated accessNOCTURNUSAI_DATABASEDatabase name to useNOCTURNUSAI_TENANTTenant ID for multi-tenant isolationローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
NocturnusAI
AI エージェントのためのコンテキストエンジニアリングエンジン:変更されたものだけを送信します。

導入前/導入後
# ❌ Without NocturnusAI — replay everything, every turn
messages = system_prompt + full_history + tool_outputs # ~1,259 tokens/turn
response = llm(messages) # $13,600/mo at scale
# ✅ With NocturnusAI — send only what changed
ctx = nocturnus.process_turns(raw_turns) # extract → infer → delta
messages = system_prompt + ctx.briefing_delta # ~221 tokens/turn
response = llm(messages) # $2,400/mo. Same accuracy.
数字で見る
実稼働 API で測定。15 ターンの製品サポート会話。実際の usage.input_tokens 件数です。自分で試す。
| 単純な再送 | RAG 最適化 | NocturnusAI | |
|---|---|---|---|
| ターンあたりのトークン数 | ~1,259 | ~800 | ~221 |
| 月額コスト(1K req/hr、Opus 4、$15/1M) | $13,600 | $12,000 | $2,400 |
| レイテンシ | 高 | 中 | 低 |
| 真実の保持 | いいえ | いいえ | はい |
Claude Opus 4:**5.7×**削減。Gemini 2.0 Flash:10.0×。計算の詳細。
インストール
pip install nocturnusai # Python
npm install nocturnusai-sdk # TypeScript
docker run -p 9300:9300 ghcr.io/auctalis/nocturnusai:latest # Docker
または、セットアップウィザードを使用します:
curl -fsSL https://raw.githubusercontent.com/Auctalis/nocturnusai/main/install.sh | bash
開発者がこのリポジトリにスターを付ける理由
- 再現可能なトークン削減 — リポジトリ内のベンチマーク、公開済みの方法論、自分のワークロードでも実行可能
- 決定論的な推論 — 同じクエリには毎回同じ結果を返します。埋め込みの変動も、コサイン類似度の運任せもありません
- 真実の維持 — 事実を撤回すると、そこから導かれた結論もすべて自動で撤回されます。古いコンテキストも、運用状態に関するハルシネーションもありません
- 既存のスタックに組み込み可能 — LangChain、LlamaIndex、CrewAI、AutoGen、MCP、Vercel AI SDK、OpenAI Agents SDK、Mastra
- 単純な再送とのベンチマークが可能 — 数値は捏造ではなく、導出されたものです。すべての主張はノートブックのセルで検証できます
フレームワーク別クイックスタート
| フレームワーク | 統合 | リンク |
|---|---|---|
| LangChain / LangGraph | そのまま置き換え可能な NocturnusContextProvider、LangSmith トレースのパススルー | ドキュメント |
| CrewAI | エージェントの役割ごとにスコープを設定したタスクコンテキスト | ドキュメント |
| AutoGen | あらゆるエージェントから呼び出せるコンテキストサーバー | ドキュメント |
| MCP | Claude Desktop、Cursor、Continue 向けの仕様準拠サーバー | 設定 |
| OpenAI Agents SDK | コンテキストミドルウェア。ツールの変更は不要 | ドキュメント |
| Vercel AI SDK | Next.js、Nuxt、SvelteKit 向けのエッジ対応アダプター | ドキュメント |
| Python SDK | pip install nocturnusai | ドキュメント |
| TypeScript SDK | npm install nocturnusai-sdk | ドキュメント |
仕組み
毎ターン、次の3つのステップを実行します。
- 抽出 — 生の会話ターン → LLM による抽出で構造化された事実に変換
- 推論 — 後ろ向き連鎖による論理推論で、エージェントの現在の目標から到達可能な事実のみを特定
- 差分を返す — 前回のターン以降に変更された内容だけを含む
briefingDelta
これはベクトル検索ではありません。要約でもありません。論理エンジンによる決定論的な推論です — Hexastore によるインデックス作成、後ろ向き連鎖、そして真理値保全。
作業ループ
自然言語のターンには LLM が必要です。 以下の例では、生のテキストターンを LLM に渡し、構造化された事実を抽出します。LLM プロバイダーなしでサーバーを起動すると、自然言語のターンからは事実が一切返されません。セットアップ方法はクイックスタートを参照するか、LLM を必要としない述語構文(例:
"customer_tier(acme_corp, enterprise)")を使用してください。
1. 最初の削減:POST /context
curl -X POST http://localhost:9300/context \
-H 'Content-Type: application/json' \
-H 'X-Tenant-ID: default' \
-d '{
"turns": [
"user: Customer says they are enterprise and blocked on SLA credits.",
"tool: CRM says account is Acme Corp with a 2M ARR contract.",
"agent: Last week support promised to review SLA eligibility.",
"tool: Billing note says renewal is due next month."
],
"maxFacts": 12
}'
2. 目標駆動の処理:POST /memory/context
curl -X POST http://localhost:9300/memory/context \
-H 'Content-Type: application/json' \
-H 'X-Tenant-ID: default' \
-d '{
"goals": [{"predicate":"eligible_for_sla","args":["acme_corp"]}],
"maxFacts": 12,
"sessionId": "ticket-42"
}'
3. 後続のターン:POST /context/diff
curl -X POST http://localhost:9300/context/diff \
-H 'Content-Type: application/json' \
-H 'X-Tenant-ID: default' \
-d '{"sessionId": "ticket-42", "maxFacts": 12}'
スナップショット間でaddedとremovedの項目のみを返します。
4. スレッドの終了:POST /context/session/clear
curl -X POST http://localhost:9300/context/session/clear \
-H 'Content-Type: application/json' \
-H 'X-Tenant-ID: default' \
-d '{"sessionId":"ticket-42"}'
利用するインターフェースを選択
Python SDK
from nocturnusai import SyncNocturnusAIClient
with SyncNocturnusAIClient("http://localhost:9300") as client:
ctx = client.process_turns(
turns=[
"user: Customer says they are enterprise and blocked on SLA credits.",
"tool: CRM says account is Acme Corp with a 2M ARR contract.",
],
scope="ticket-42",
session_id="ticket-42",
)
diff = client.diff_context(session_id="ticket-42", max_facts=12)
client.clear_context_session("ticket-42")
print(ctx.briefing_delta)
TypeScript SDK
import { NocturnusAIClient } from 'nocturnusai-sdk';
const client = new NocturnusAIClient({
baseUrl: 'http://localhost:9300',
tenantId: 'default',
});
const ctx = await client.processTurns({
turns: [
'user: Customer says they are enterprise and blocked on SLA credits.',
'tool: CRM says account is Acme Corp with a 2M ARR contract.',
],
scope: 'ticket-42',
sessionId: 'ticket-42',
});
const diff = await client.diffContext({ sessionId: 'ticket-42', maxFacts: 12 });
await client.clearContextSession('ticket-42');
console.log(ctx.briefingDelta);
MCP
{
"mcpServers": {
"nocturnus": {
"url": "http://localhost:9300/mcp/sse",
"transport": "sse"
}
}
}
毎ターン、重要度順に並べた作業セットを得るには、context ツールを使用してください。目標駆動のコンテキスト構築や差分が必要な場合は、MCP と HTTP コンテキストエンドポイントを併用してください。
ワークフローを支える機能
バックエンドの仕組みが必要な場合は、NocturnusAI が次の機能を提供します。
- 事実とルールの決定論的な保存
- 証明チェーンを伴う後ろ向き連鎖推論
- 真理値保全と矛盾処理
ttl、validFrom、validUntilを使った時間的事実X-DatabaseとX-Tenant-IDによるマルチテナント対応- 同じエンジンを利用する MCP、REST、Python SDK、TypeScript SDK、CLI の各インターフェース
クイックスタート
Docker(最速)
docker run -d --name nocturnusai -p 9300:9300 \
--restart unless-stopped \
-v nocturnusai-data:/data \
ghcr.io/auctalis/nocturnusai:latest
curl http://localhost:9300/health # Verify it's running
Ollama を使った Docker(自然言語抽出を有効化)
docker run -d --name nocturnusai -p 9300:9300 \
--add-host=host.docker.internal:host-gateway \
-e LLM_PROVIDER=ollama \
-e LLM_MODEL=granite3.3:8b \
-e LLM_BASE_URL=http://host.docker.internal:11434/v1 \
-e EXTRACTION_ENABLED=true \
ghcr.io/auctalis/nocturnusai:latest
このリポジトリから
make up-ollama && make smoke
CLI
nocturnusai # Interactive REPL
nocturnusai -e "context 10" # Salience-ranked working set
nocturnusai -e "compress" # POST /memory/compress
nocturnusai -e "cleanup 0.05" # POST /memory/cleanup
ドキュメント
すべてのドキュメント:nocturnus.ai
| まずはこちら | ターン削減ワークフロー |
| コンテキストワークフロー | 生のターン → 最適化 → 差分 → クリア |
| API リファレンス | REST エンドポイントとレスポンス形式 |
| SDK | Python と TypeScript のクライアントメソッド |
| インテグレーション | LangChain、CrewAI、AutoGen、MCP など |
| ベンチマーク | 実際の API で測定したトークン削減量 |
| 計算 | 導出した数値のすべて |
| 仕組み | 抽出 → 推論 → 差分のパイプライン |
Docker Compose(上級者向け)
git clone https://github.com/Auctalis/nocturnusai.git && cd nocturnusai
make up # Server using .env.example defaults
make up-ollama # + Ollama (reuses host or starts bundled)
make up-monitoring # + Prometheus + Grafana
make smoke # Verify health + context endpoint
ソースからビルド
JDK 17 以降が必要です。
./gradlew :nocturnusai-server:run # HTTP server on :9300
./gradlew :nocturnusai-cli:run # Interactive REPL (JVM)
./gradlew :nocturnusai-cli:nativeCompile # Build native binary
./gradlew test # Full test suite
コントリビュート
CONTRIBUTING.md を参照してください。good first issue ラベルの付いた Issue は、取り組みを始めるのに適しています。
セキュリティ
脆弱性はGitHub Security Advisoriesから非公開で報告してください。SECURITY.md を参照してください。
ライセンス
Business Source License 1.1(SPDX:BUSL-1.1)。自組織内での利用は、内部での本番利用も含めて無料です。NocturnusAIまたはその実質的な機能を、第三者向けの製品またはホステッドサービスとして提供するには、商用ライセンスが必要です([email protected])。2030-02-19にApache 2.0へ移行します。LICENSEとDISCLAIMER.mdをご覧ください。
法的および安全に関する通知
NocturnusAIは決定論的な推論エンジンですが、その出力の信頼性は、提供された事実の信頼性に左右されます。
- 真実性は保証されません。「検証済み」とは推論の論理的整合性を指し、現実世界の主張の正確性を指すものではありません。
- **重大な結果を伴う意思決定の自動化には使用しないでください。**独立した人間による検証を経ずに、監督のない医療、財務、法律、または身体の安全に関する意思決定にこのエンジンを使用しないでください。
- **論理レイヤーのみです。**NocturnusAIは情報と推論を提供しますが、アクションは実行しません。
- 責任を負いません。DISCLAIMER.mdとLICENSEをご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。