Skip to content

ホストの設定 ​

アプリで使う memory は、ホストが保存先と権限を設定して作ります。ローカルで試す場合は、次の初期化を memory.mjs として保存してください。

mjs
import { MemoryHost, LocalAuthority } from 'atom-memory';

// Configure the example's local host once; application code imports memory.
const authority = new LocalAuthority();
const auth = authority.issue({
  subject: 'support-app',
  readPolicies: ['notes'],
  writePolicies: ['notes'],
  canIngestSource: true,
});
const host = new MemoryHost({ authority });
export const memory = host.connect({
  auth,
  writePolicy: 'notes',
  actor: { type: 'human' },
});

アプリ側ではこのファイルからクライアントを読み込みます。

ts
import { memory } from './memory.mjs';
(
  await memory.write({
    changes: [
      {
        id: 'atom',
        op: 'create',
        content: {
          text: '招待リンクの有効期限は24時間です。',
          links: [],
        },
        sources: [],
      },
    ],
  })
).changes.atom;

設定するのは次の三つです。

設定この例での意味
LocalAuthority と authsupport-app に notes への読み書きを許可する
MemoryHostプロセス内の保存先を用意する
connectこの許可と、人間の入力という書き手の情報をクライアントに束縛する

notes はアクセス権の名前です。内容を分類するラベルではなく、検索時に指定する必要はありません。認証と書き手はアプリのホストで設定し、モデルには選ばせません。

保存先と書き手を変える ​

ファイルに残すなら SQLiteを設定します。入力アダプターから投入する資料は actor: { type: 'input-adapter' }、モデルが作る説明は actor: { type: 'agent', generatedOrigin: 'organization' } を使います。

同じホストから複数のクライアントを発行できるので、入力アダプターと Writer は同じ記憶を扱えます。Writer の例を参照してください。

候補providerは PinnedRef[] だけを返し、保存本文の再読、スコア、構造伝播はCoreが担当します。embeddingの有無に応じて語彙または語彙+ベクトルの候補入口を選びます。ExactCandidateProvider は小規模な有限走査の基準として必要な箇所で明示します。取得の上限は retrieval、利用状態モデル・増幅・関係重みは activation に設定します。既定モデルは adaptiveUse() です。

アプリの認証につなぐ ​

LocalAuthority はプロセス内の認証を試す実装です。継続運用するアプリでは、ログイン済みユーザーと権限をホスト側の Authorizer へ接続します。再起動をまたいで参照や cursor を使う場合は、安定した認証ハンドルを解決できるようにします。

この初期化を一度済ませたら、アプリは 保存・検索・読取を内容だけで呼べます。

検索評価と保存上限 ​

MemoryHost の activation で adaptiveUse() または独自の AvailabilityModel、最大増幅、関係ごとの方向重みを、retrieval で候補・グラフ探索の上限を設定します。構造ランキングを参照してください。保存処理の上限は limits で指定します。低水準Kernelを注入する設定はありません。

モデルへ返した結果をアプリが成功として受理したら、ホストは host.recordUse(recalled.refs, binding, { eventId }) を自動で呼びます。read・searchの実行やモデルのツール、人の承認だけでは利用を記録しません。モデルIDやパラメータを変えて保存状態が STATE_INVALIDATED になった場合は、対象のscopeで host.resetUse(binding) を明示します。集計を現在の主体・policyから消すときにも同じAPIを使います。

embeddingを使う本番hostは、prepareIndex / updateIndex を提供する全policy scopeでdrainし、各scopeのcheckpointを確認してから意味検索をreadyと扱います。一つのchannelや一回の呼出しの pending: false は全体の準備完了ではありません。

MIT License · TypeScript / Node.js