機能
@nocobase/app-plugin-knowledge は、スペース、フォルダー、Markdown の記事、ファイル、バージョン、検索、変更の提案を提供します。基本的なナレッジの管理には、エージェントもセマンティックなインデックスも必要ありません。
基本的なナレッジの管理はエージェントやセマンティックなインデックスとは独立しており、スペースの所有とアクセスはアプリが定めます。
シナリオと例
例:チームのナレッジの変更をレビューする
- チームのスペースと、閲覧、提案、編集の権限を設定します。
- メンバーが記事の更新を提案し、編集者がその差分と基準のバージョンをレビューします。
- 受け入れるか却下します。受け入れると新しいバージョンが作られます。
- 履歴、検索、権限のないユーザーからの分離を検証します。
knowledge.proposals: false にすると、過去の記録は残したまま、提案の流れが無効になります。直接の編集では、引き続き権限のチェックが行われます。ユーザーの代わりに動作する実行者は、直接編集したり、提案を判断したりはできません。
開発用のプロンプト(アプリのディレクトリで作業するコーディングエージェント向け):
Knowledge を使って、チームのスペースとドキュメントの変更のレビューを追加してください。
チームから見えるスペースと、read/propose/edit/manage のアクセスのために KnowledgeAccessResolver を
結び付けてください。メンバーの提案と、基準のバージョンに照らした編集者のレビューには、
そのページかビューを再利用してください。セマンティックなモデルや OCR を前提にせず、テキスト検索から
始めてください。チームの分離、編集の競合、受け入れられた提案、解析の失敗をテストしてください。完了の条件メンバーが変更を提案でき、受け入れると新しいバージョンが作られ、ほかのチームはページや検索からその内容を読めないこと。
主な仕組みと実装
以下は、この例での組み込みの領域と、想定される画面の変化です。開発作業を記述したもので、実際のファイル構成はアプリに合わせてください。
| 組み込みの領域 | コードまたは設定の変更 | 画面と動作の変化 |
|---|---|---|
| サーバーのアクセスのリゾルバー | knowledgeAccessToken を結び付け、スペースとノードのアクセスを解決する | ユーザーに認可されたチームのスペースが表示される |
| クライアントのルートまたは業務のページ | ページを登録するか、KnowledgeView を埋め込む | ドキュメント、フォルダー、バージョン、提案を追加する |
| 任意のインデックスの設定と Jobs | インデックスとその管理の付与を別に組み込む | 基本のテキスト検索を残したまま、セマンティックな検索を追加する |
スペースと権限
両方のランタイムを登録し、マイグレーションを適用します。/server/tokens の knowledgeAccessToken で KnowledgeAccessResolver を結び付け、有効なスペース、継承、閲覧者のアクセスを定義します。リゾルバーがないと、スペースは利用できません。
スペースは scope と scopeId を使います。アプリは、絞り込まれていないデータベースの一覧を公開するのではなく、認可されたスペースを列挙します。
| レベル | できること |
|---|---|
read | 許可されたドキュメントとファイルを読む |
propose | 変更をレビューに提出する |
edit | 内容を編集し、資格のある提案を判断する |
manage | スペースとノードの権限を管理する |
ノードは、アクセスを継承することも、独自の権限を使うこともできます。ページへのアクセスがあっても、すべてのスペースへのアクセスが付与されるわけではありません。
ページと内容
knowledge() は既定で /knowledge を登録し、path と space を受け付けます。業務のビューに埋め込むには、knowledge({ routes: false }) を使い、/client/pages の KnowledgePage または KnowledgeView を組み立てます。
ユーザーは、フォルダーと Markdown を管理し、バージョンを確認し、内容を元に戻せます。更新は期待するバージョンを伴い、競合は最新の内容に照らして解決します。
アップロードには、さらに Files と Drive が必要です。対応しているファイルからはテキストが抽出され、解析の状態が表示されます。OCR はないため、画像やスキャンしたドキュメントから検索できるテキストが得られるとは限りません。
検索とセマンティックなインデックス
基本の検索は、現在のドキュメントと抽出されたテキストに一致します。セマンティックな検索は任意です。Knowledge は独自のグローバルなインデックスを所有し、Agents は Embedding のゲートウェイを提供できますが、Agents のベクトルのコレクションは共有しません。
/config の defineKnowledgeConfig() を組み込み、インデックスのインスタンス、モデルへのアクセス、ホストの Jobs を設定してから、インデックスの操作を組み込みます。管理には、スペースの管理だけではなく、独立した settings:kb.indexing の権限を使います。インデックスが利用できない間や再構築中も、テキスト検索は使えます。
分離、バージョンの競合、解析の失敗、提案のレビュー、検索の境界を検証します。関連:エージェント、ファイル、プラグインを管理する。
AI 開発の制約と検証
プラグイン固有の開発の制約
- スペースの一覧、ドキュメント、検索にアクセスの境界を適用してください。ページへのアクセスで、すべてのスペースが公開されるわけではありません。
- バージョンのチェックを無効にするのではなく、期待するバージョンを送り、競合を解決してください。
- 提案の資格、スペースをまたぐ検索、解析の失敗を検証してください。対応していないスキャンした内容を、抽出に成功したと表示しないでください。
これらはあなたの組み込みの検収の要件であり、実機での検証が完了したことを示すものではありません。実際の変更、実行したチェック、未検証の項目をエージェントに報告させてください。プロジェクトのガイダンス、スキル、共通のチェックについては アプリの開発を続ける と テスト を参照してください。
出典:公開のプラグインの入口と実装。