Skip to content
English

Knowledge ​

KIT · constant · 运行时值

导入 ​

ts
import { Knowledge } from '@jangts/agent-core/kits/knowledge';
js
import { Knowledge } from '@jangts/agent-core/kits/knowledge';

其他公开入口:@jangts/agent-core/types、@jangts/agent-core/kits/knowledge、@jangts/agent-core/kits。

定义 ​

成员目录 ​

成员用途
defineKnowledgeCatalog完整输入输出见下方重载。
parseKnowledgeDocument完整输入输出见下方重载。
defineKnowledgePublication完整输入输出见下方重载。

成员详情 ​

defineKnowledgeCatalog ​

ts
Knowledge.defineKnowledgeCatalog(documents: readonly KnowledgeDocument[], options?: KnowledgeCatalogOptions): KnowledgeCatalog

Compile a knowledge catalog from document declarations.

Reads are declarative: document returns the whole text, self returns exactly the named sections and subtree includes their nested sections. Section ids are validated up front, so a typo fails at read time instead of silently returning partial content.

参数类型传递说明
documentsreadonly KnowledgeDocument[]必需—
optionsKnowledgeCatalogOptions可省略—
options 的字段
字段类型必需说明
maxCharsnumber | undefined可省略只读。Maximum characters per read; exceeding it throws a RangeError.
observe((snapshot: KnowledgeSnapshot) => void | Promise<void>) | undefined可省略只读。Observer invoked with every produced snapshot.

返回: KnowledgeCatalog。

返回值结构
字段类型必需说明
sectionIds(documentId: string) => readonly string[]必需Section ids of one document, in declaration order; throws for an unknown document.
assertSelection(read: KnowledgeRead) => void必需Validates a read without producing content; throws when the selection is invalid.
read(read: KnowledgeRead) => KnowledgeSnapshot必需Produces a snapshot for the read; throws for unknown documents, sections or budget excess.
definitionsreadonly Readonly<KnowledgeDocument>[]必需只读。Definitions in registration order; each entry is frozen by the implementation.
ids() => readonly string[]必需Ids in the same order as definitions.
values() => IterableIterator<Readonly<KnowledgeDocument>>必需见类型定义及调用场景。
entries() => IterableIterator<readonly [string, Readonly<KnowledgeDocument>]>必需见类型定义及调用场景。
has(id: string) => boolean必需见类型定义及调用场景。
get(id: string) => Readonly<KnowledgeDocument> | undefined必需Returns the definition or undefined; the caller decides whether absence is an error.
require(id: string) => Readonly<KnowledgeDocument>必需Returns the definition or throws; use when the id is a required reference.

parseKnowledgeDocument ​

ts
Knowledge.parseKnowledgeDocument(input: { id: string; revision: string; text: string; locale?: string; }): KnowledgeDocument

Paired, nestable anchors are one text adapter. Other sources supply the same document contract directly.

参数类型传递说明
input{ id: string; revision: string; text: string; locale?: string; }必需—
input 的字段
字段类型必需说明
idstring必需见类型定义及调用场景。
revisionstring必需见类型定义及调用场景。
textstring必需见类型定义及调用场景。
localestring | undefined可省略见类型定义及调用场景。

返回: KnowledgeDocument。

返回值结构
字段类型必需说明
idstring必需只读。Stable document id; duplicate ids are rejected by the catalog.
revisionstring必需只读。Revision label recorded in every snapshot so a citation names the exact content.
localestring | undefined可省略只读。Locale of the content, when the App maintains translations.
partsreadonly KnowledgePart[]必需只读。Ordered content.

defineKnowledgePublication ​

ts
Knowledge.defineKnowledgePublication<App>(options: KnowledgePublicationOptions<App>): KnowledgePublication<App>

Compile a publication lifecycle over one App-owned atomic record.

Candidate preparation and publication share the same compiler and an App-owned atomic revision. propose compiles and validates a candidate but leaves published documents alone; publish re-verifies sources and the base revision before swapping, so a stale candidate can never overwrite newer content.

类型参数约束默认类型
App——
参数类型传递说明
optionsKnowledgePublicationOptions<App>必需—
options 的字段
字段类型必需说明
storeKnowledgePublicationStore必需只读。见类型定义及调用场景。
requiredReadsreadonly KnowledgeRead[] | undefined可省略只读。Reads that must succeed against every compiled document set, proving sections still exist.
maxReadCharsnumber | undefined可省略只读。Per-read character budget applied by the catalog compiler.
maxCandidatesnumber | undefined可省略只读。Maximum pending candidates retained; defaults to 32 and must be a positive integer.
candidateRetentionMsnumber | undefined可省略只读。Candidate retention window; defaults to seven days.
now(() => number) | undefined可省略只读。Clock override for timestamps and expiry; defaults to Date.now.
authorize(operation: (typeof knowledgePublicationOperations)[number], context: OperationContext<App>) => MaybePromise<void>必需Guards one operation before any read or write.
verifySources(sources: readonly KnowledgeSourceReference[], context: OperationContext<App>) => MaybePromise<void>必需Validate real provenance/revisions/visibility. A model's source list is not a grant.

返回: KnowledgePublication<App>。

返回值结构
字段类型必需说明
read(context: OperationContext<App>) => Promise<KnowledgePublicationRecord>必需Returns the current record, with expired candidates already pruned.
propose(request: { revision: number; document: KnowledgeDocument; sources: readonly KnowledgeSourceReference[]; }, context: OperationContext<App>) => Promise<KnowledgePublicationRecord>必需Adds a candidate based on revision; fails when the record moved on.
publish(request: { revision: number; candidateId: string; }, context: OperationContext<App>) => Promise<KnowledgePublicationRecord>必需Publishes one candidate and removes it from the pending list.
reject(request: { revision: number; candidateId: string; }, context: OperationContext<App>) => Promise<KnowledgePublicationRecord>必需Discards one candidate without touching the published documents.

使用示例 ​

先读取一份普通对象资料 ​

入门 · Node.js

ts
import { Knowledge } from '@jangts/agent-core/kits/knowledge';
const catalog = Knowledge.defineKnowledgeCatalog([
  { id: 'manual', revision: '1', parts: ['Agent Core 支持普通 Workflow 节点。'] },
]);
const snapshot = catalog.read({ documentId: 'manual', selection: { mode: 'document' } });
console.log(snapshot.content, snapshot.revision);
js
import { Knowledge } from '@jangts/agent-core/kits/knowledge';
const catalog = Knowledge.defineKnowledgeCatalog([
    { id: 'manual', revision: '1', parts: ['Agent Core 支持普通 Workflow 节点。'] },
]);
const snapshot = catalog.read({ documentId: 'manual', selection: { mode: 'document' } });
console.log(snapshot.content, snapshot.revision);

在相同 read 上增加章节与预算 ​

配置 · Node.js

ts
import { Knowledge } from '@jangts/agent-core/kits/knowledge';
const catalog = Knowledge.defineKnowledgeCatalog([
  { id: 'manual', revision: '2', parts: [
    { id: 'start', parts: ['先运行一个节点。', { id: 'advanced', parts: ['再增加模型和工具。'] }] },
  ] },
], { maxChars: 2000 });
console.log(catalog.sectionIds('manual'));
const snapshot = catalog.read({ documentId: 'manual', selection: { mode: 'subtree', sectionIds: ['start'] } });
console.log(snapshot.content, snapshot.id);
js
import { Knowledge } from '@jangts/agent-core/kits/knowledge';
const catalog = Knowledge.defineKnowledgeCatalog([
    { id: 'manual', revision: '2', parts: [
            { id: 'start', parts: ['先运行一个节点。', { id: 'advanced', parts: ['再增加模型和工具。'] }] },
        ] },
], { maxChars: 2000 });
console.log(catalog.sectionIds('manual'));
const snapshot = catalog.read({ documentId: 'manual', selection: { mode: 'subtree', sectionIds: ['start'] } });
console.log(snapshot.content, snapshot.id);

换成文本适配器,后续目录与读取完全相同 ​

扩展 · Node.js

成对锚点必须匹配;标记仅是文本适配器的一种输入,Core 不要求资料必须存成 Markdown。

ts
import { Knowledge } from '@jangts/agent-core/kits/knowledge';
const document = Knowledge.parseKnowledgeDocument({
  id: 'manual', revision: '3',
  text: ['<!-- agent-section:start -->', '先运行一个节点。', '<!-- /agent-section:start -->'].join('\n'),
});
const catalog = Knowledge.defineKnowledgeCatalog([document], { maxChars: 2000 });
const read = { documentId: 'manual', selection: { mode: 'self' as const, sectionIds: ['start'] } };
catalog.assertSelection(read);
console.log(catalog.read(read).content);
js
import { Knowledge } from '@jangts/agent-core/kits/knowledge';
const document = Knowledge.parseKnowledgeDocument({
    id: 'manual', revision: '3',
    text: ['<!-- agent-section:start -->', '先运行一个节点。', '<!-- /agent-section:start -->'].join('\n'),
});
const catalog = Knowledge.defineKnowledgeCatalog([document], { maxChars: 2000 });
const read = { documentId: 'manual', selection: { mode: 'self', sectionIds: ['start'] } };
catalog.assertSelection(read);
console.log(catalog.read(read).content);

相关策略源码 ​

相关定义 ​

接口参考、使用示例与开发指南。