@ fortemi/ 核心
无头浏览器知识管理核心由PGlite,打入的寄存器,语义检索和代理工具帮助器提供动力
构建本地第一知识应用,在用户设备上的浏览器中保留数据——没有服务器,没有账号——与PostgreSQL兼容存储,生产准备库,混合搜索原始,可移植的知识硬体档案,选择带入自有的AI接线,和桥接工具元数据.
pnpm add @fortemi/core
@fortemi/ 核心是
@fortemi/core 是浏览器应用程序的无头 Fortemi 运行时间。 它为您的应用程序提供了一个持久的本地档案, 由 PGlite, 键入寄存器类, 迁移, 事件, 能力管理, KnowledgeShard 导入/导出, 以及工具帮助器支持, 可以从 UI 代码或桥接适配器调用 .
当您希望浏览器拥有用户的工作知识时使用它:注释,链接,标签,收藏,SKOS概念,附件,搜索历史,修订,生成元数据,以及可移植导出. 核心归档路径不需要应用程序服务器,同一套软件包可以使回放,非回放,扩展,或嵌入式主机集成.
为什么Fortemi核心
大多数浏览器注释和知识应用在薄的索引 DB 包装器,主机数据库,或自定义同步协议之间进行选择. Fortemi从不同的前提开始:浏览器可以在当地运行一个真正的PostgreSQL兼容档案,然后通过稳定的打入API和代理可读工具来曝光该档案.
| 需求 | Fortemi提供的东西 |
|---|---|
| 地方第一持久性 | 通过 OPFS、索引DB 或内存模式存储 PGlite |
| 可查询的知识 | SQL 支持的用于注释、链接、标签、收藏、 SKOS 概念、任务和搜索的寄存器 |
| 检索质量 | 全文搜索、 pgvector 后置语义搜索、 混合排序、 片段、 侧面和过滤器 |
| AI-已准备好的工作流程 | 可选嵌入、本地LLM能力发现、工作来源和回落路径 |
| 便携式档案 | Knowledge Shard tar.gz 有设定范围的出口、块状进口、验收和装入BLAKE3 地址为blob的侧车、配置范围符合性能,以及对省略来源身份的打入损失报告 |
| 源头处理摄入量 | 按租户键、存档、取名空间和外部代号对原子批次进行升级,PGlite和RecordStore的重放安全结果 |
| 代理一体化 | 用于桥梁适配器和自动化的明确辅助工具和直接辅助功能 |
| UI 自由 | 从React、另一个框架、浏览器扩展或自定义主机中可以使用的无头软件包 |
你可以构建什么
- 本地第一笔记本、研究工作空间和个人知识库
- 仅浏览器语义搜索用户拥有的注释和导入的知识
- 需要结构化检索、出处和便携式状态的代理商的AI内存层
- 可以从静态主机运行同时仍提供持久本地存储的 Web apps
- 采用 " 知识碎片 " 而不是应用特定备份格式的进出口管道
- 自定义反应、 斯维尔特、 Vue、 扩展或嵌入式 UI 在同一归档模型上方
图像构造
ArchiveManager 打开一个 PGlite 数据库,应用迁移,以及按存档名称进行范围存储。 存储类提供犬科数据访问层. TypedEventBus 保持用户界面和背景工作的同步。 能力服务跟踪可选AI/运行时间特性. 工具帮助器将相同的数据模型暴露在桥梁,本地自动化和代理主机上.
安装
pnpm add @fortemi/core
# or
npm install @fortemi/core
套件安装的运行时依赖性 :
| 依赖性 | 目的 |
|---|---|
@electric-sql/pglite | PostgreSQL 编译到 WASM, 加 pgvector |
@noble/hashes | 用于内容/完整性检查的SHA散列和用于附件块的BLAKE3散列 |
fflate | 知识碎片的塔克/格齐普处理 |
uuid | UUIDv7 标识符 |
zod | 工具助手的运行时间输入验证 |
快速启动
import {
ArchiveManager,
NotesRepository,
SearchRepository,
TypedEventBus,
registerServiceWorker,
} from '@fortemi/core'
const events = new TypedEventBus()
const archiveManager = new ArchiveManager('opfs', events)
const db = await archiveManager.open('default')
const notes = new NotesRepository(db, events)
const search = new SearchRepository(db)
const note = await notes.create({
title: 'Hello',
content: 'First note in the local archive.',
})
const results = await search.search('hello')
// Optional: register standalone service-worker routes.
await registerServiceWorker()
静态 AIWG 索引搜索
静态文档主机可以导入 AIWG 索引助手而无需拉入 PGlite, 工人, 硬盘, 或浏览器存储 :
import { createAiwgIndexController } from '@fortemi/core/aiwg-index'
const controller = createAiwgIndexController()
controller.loadIndex(await fetch('/aiwg-index.json').then((res) => res.json()))
const results = controller.query('deployment', {
types: ['docs.page'],
rank: true,
snippets: true,
limit: 10,
})
使用此子路径用于 Pagenary 风格的命令调色板、 静态文件搜索, 以及
香草JavaScript评论表面. 其发表 dist/aiwg-index.js 文物
不含依赖性,不包含导入语句,并且保存在50 KB以下,所以
无捆绑消费者可以逐字出售.
Knowledge Shard 转换有意生活在以建设为导向的子路径上:
import {
aiwgFortemiIndexFromKnowledgeShard,
aiwgFortemiIndexToKnowledgeShard,
aiwgFortemiIndexToKnowledgeShardWithReport,
} from '@fortemi/core/aiwg-index-shard'
该子路径拥有 计划,焦油/克齐普,校验和,和UUID的依赖性。 这个
顶级 @fortemi/core 仍可全部存档/运行
一体化.
aiwgFortemiIndexToKnowledgeShard 保留可逆图 1.2.0
core-v1 适配器. 原生地转换使用有报表的切入点和
准确 2.0.0/full-v1 拖曳:
const result = await aiwgFortemiIndexToKnowledgeShardWithReport(index)
if (!result.success) {
console.table(result.losses)
throw new Error('AIWG input cannot be represented as full-v1')
}
await importShard(db, result.archive!, { blobStore, conflictStrategy: 'replace' })
完全转换器释放所有33个权威文件 和本地音符,关系,
SKOS, 出处, 嵌入, 和图形记录, 当AIWG 源已完整时
有代表性。 衍生、默认或省略源信息返回
archive: null 键入 losses; 损失输出从未被标签 full-v1。 。 。 .
存档快照和原生还原
importFullV1Snapshot(db, archive, options) 财务报告和审定财务报表
exportFullV1Snapshot(db, blobStore) 正在导出明确的归档操作
以 @fortemi/core保存已验证的 2.0.0/full-v1 逻辑文件
和需要字节,而不是本地寄存器/搜索状态。 导入冲突政策
适用于已存储的归档图案,而不是本地音符ID. counts.notes 遗 物
无; component_counts 描述档案记录。 原生 CRUD 是故意的
排除明确要求的档案导出。 原生分批/进展
选项不是 FullV1SnapshotImportOptions。 。 。 .
公众 importShard 路径恢复 2.0.0/full-v1 记录为本地 PGlite
一个交易中的表格. exportShardWithReport 读取当前本地状态,
从来没有档案快照。 因此,普通寄存器编辑会影响后续
出口。 所有33个文件都是用语义字段/存在/阵列和
附件字节保存;生成的显示时间和生产者身份为
新的,并且只有新要求的出版商签名才会在这些字节上签名.
skip 保留现有身份及其拥有的子女,同时保留新的记录
可参考现有目标. replace 对齐选定的所有者; error
拒绝现有的身份。 交易失败补偿新升级的blobs.
batchSize 默认为 250 个应用组件行; 0 禁用合作
产量。 正在等待回电。 预先承诺召回失败倒计时;
未在犯罪后发出最后通知则产生警告,而不是虚假
导入结果失败 .
每个土著记录都存储着明显的移徙血统。 范围一致的出口
保留其不存在/空白/价值区别;不兼容的选定历史
返回输入的丢失,而不是选择最后一个导入。 选中的虚拟集,
墓碑或非-768维向量也归来
archive: null。需要的附加字节必须可用且有效.
在 # 424 中追踪原始恢复资质; 来源/ 指定检查
不扩大历史出版的包装或支持平台的收据.
PGLITE 广告精确 2.0.0/full-v1 仅仅因为
schemas/knowledge-shard-v2.cross-repository.receipt.json 绑定释放的
PGlite和AIWG的档案 来清理重复的PGlite和Fortemi目的地,
完整的每个细胞语义/拒绝范围、不可改变的包件和权威
身份,并交付CI。 广告从该收据计算
运行时间; 漂移任何绑定的权限、 归档、 执行或 Fortemi
收件会禁用索赔, 而核查者则需要包装的收件
字节来匹配他们宣布的文摘. 记录遗迹 record-v1 只有这个.
该收据没有建立全套件可移植性或完整的备份.
支持的平台兼容性
当局拥有的套房矩阵将Fortemi作为计划/API/运行时间
权力, @fortemi/core 作为可重复使用的符合性消费者,而HotM作为一种
应用消费者. Fortemi 运行
第6393条 通过了
与Linux x86 64,Linux arm64,和macOS arm64相同的收货合同. 内容
反应/核心参与者已承诺
ccf96fad6025025293e40e250c85f088c8999d86, (中文(简体) ),
@fortemi/[email protected],带有tgz SHA-256
e282f504a842261c3f598a7f2ee0d6a85e03dc213ddf545a18daf5f603a742cc
和焦油有效载荷 SHA-256
47482320b543307c2d44f3a87a2268ead6faf265c6bd38cf33011e0ac7f8e77a。 。 。 .
支持的索赔限于所申报的合同表面和准确程度
知识沙德 2.0.0/full-v1 在那些平台的细胞。 视窗残存
推迟到 福特米语Name
1096号。不会
更改Fortemi #1081 NO-GO 审计或证明完整的备份,通用
可移植性、 启动的图形用户界面/ 内存- 对话框行为, 或 RecordStore full-v1。 。 。 .
Knowledge Shard 2.0 处理缺席, null中,空值,非空值为
不同的权威说。 PGLITE 坚持 core-v1 外地存在a
交易的侧车,而 RecordStore 则携带其 record-v1 预测和
在同一批原子中显示状态。 每个阵列跟踪到通配符字段
成员,如 /attachments/0/reason输入拒绝状态
导出时拒绝原有存在的遗留行
无常相. 粘贴的本地矩阵收据是
schemas/knowledge-shard-v2.presence.receipt.json。 。 。 .
AIWG 索引适配器接受两者 aiwg.fortemi.index.export.v1 财务报告和审定财务报表
aiwg.fortemi.index.export.v2 信封 信封 信封 V1记录合同保存
用于过滤和搜索的现有平面字段 : facets, (中文(简体) ), tags, (中文(简体) ), concepts, (中文(简体) ),
relationships,以及 provenance. 提供元数据标签的静态消费者
也可以从完整记录中读取可选的丰富字段 :
skos_concepts: 概念代号外加标签、定义、计划、标记、URI、, 备选标签和元数据.skos_relations数字 :broader, (中文(简体) ),narrower, (中文(简体) ),related,或项目特定 SKOS 概念边缘.provenance_events: W3C PROV风格的活动记录有代理,时间戳, 源路径、信心/隐私和属性.relationships[*].metadata:可选关系标签,自信, 隐私和结构化元数据.
这些字段添加了: aiwg.fortemi.index.record.v1. 第2版记录
也可以携带AIWG移民领域,例如: search, (中文(简体) ), chunks, (中文(简体) ), embeddings, (中文(简体) ),
source.origin, (中文(简体) ), source.generated, (中文(简体) ), source.checksum, (中文(简体) ), source.updated_at, (中文(简体) ),
privacy.locality, (中文(简体) ), operational_state, (中文(简体) ), state_transfer兼容性
元数据。 查询助手使用 v2 search 财务报告和审定财务报表 chunks 旧顶级时的文本
title编号 :text 字段没有.
减少额 core-v1 转换器地图目录前缀
source.repo_relative_path 确定本地收藏和分配
叶子收集的每个音符。 墓碑只来自
明确 state_transfer.deleted_at· ; operational_state 原产地
关于一个观察到的外部系统,绝不意味着删除。 整个来源
记录仍被嵌入注解元数据进行倒转.
现有消费者可以忽略 v2 字段,继续查询平地
字段。 带有投影功能的被扭曲的指数在细节记录中保留了丰富的元数据;
调用 getRecord(id) 在创建元数据面板之前.
大型静态索引可以使用被块化的浏览器路径而不是下载一个
满 aiwg.fortemi.index.export.v1 文档。 主办一个清单加决定部分
文件 :
/search/aiwg-index/manifest.json
/search/aiwg-index/part-0000.json
/search/aiwg-index/part-0001.json
import {
createAiwgFetchChunkLoader,
createAiwgIndexController,
} from '@fortemi/core/aiwg-index'
const controller = createAiwgIndexController()
const manifest = await fetch('/search/aiwg-index/manifest.json').then((res) => res.json())
controller.loadChunkedIndex(
manifest,
createAiwgFetchChunkLoader('/search/aiwg-index/'),
{ maxCachedParts: 3 },
)
const page = await controller.queryChunked('', { offset: 100, limit: 25 })
未过滤浏览请求只获取请求的文件交叉部分
offset 财务报告和审定财务报表 limit。经过过滤或排序的搜索扫描部分文件以精确计算
结果,但控制器只保留有边框的部分缓存,从未设置
实现全导出 getIndex()。 。 。 .
AIWG记录可以使用特定项目的字符串类型,例如: aiwg.skill, (中文(简体) ),
aiwg.agent, (中文(简体) ), aiwg.command, (中文(简体) ), aiwg.rule, (中文(简体) ), aiwg.flow, (中文(简体) ), aiwg.bundle, (中文(简体) ),
aiwg.kb.page, (中文(简体) ), aiwg.memory.entry, (中文(简体) ), aiwg.issue, (中文(简体) ), research.ref,以及
aiwg.research.profile验证仍然执行所需的记录字段,但
它不需要未知的AIWG、研究、KB、内存、发行或文档
要崩溃的域 aiwg.artifact。 。 。 .
对于AIWG指令-palette等同,选择发现排名而不是 默认的判定子字符串搜索 :
const ranked = controller.query('address the open issues', {
searchProfile: 'aiwg-discovery',
rank: true,
includeMatches: true,
})
发现剖面规范了连字符/空间变体,条纹常见的句子, 推动触发器和能力方面,返回UI调试的匹配理由.
被截断的索引还支持不装入完整导出的情况下的图导航 :
const neighbors = await controller.neighbors('aiwg:requirement:search', {
direction: 'both',
relationshipType: 'cites',
relationshipDirection: 'downstream',
})
const graph = await controller.toCommunityGraphChunked()
关系边缘保留 v2 source_path, (中文(简体) ), target_path,以及
direction: 'upstream' | 'downstream' | 'related' 数值。 使用
direction: 'in' | 'out' | 'both' 在节点周围的图形方向和
relationshipDirection aWG 依赖/引用/说明/KB方向
语义. 当扫描部件投影时,关系穿梭扫描部件
和懒惰记录 只有在关系不存在
扫描投影.
静态语义搜索使用可选侧车合同:
import { buildAiwgStaticEmbeddingSet, queryAiwgHybridIndex } from '@fortemi/core/aiwg-index'
const embeddingSet = await fetch('/search/aiwg-index/embeddings.json').then((res) => res.json())
const queryEmbedding = await hostEmbed('workspace health check')
const semanticResults = queryAiwgHybridIndex(index, embeddingSet, 'health check', queryEmbedding)
// Node/CLI generation path. Supply any Node-safe model backend; @fortemi/core
// only writes the shared embedding-set graph format and does not require DOM or WebGL.
const cliEmbeddingSet = await buildAiwgStaticEmbeddingSet(index, {
id: 'aiwg-cli-embeddings',
backend: {
model: 'local-node-embedder',
dimensions: 384,
embed: async (input) => nodeEmbed(input),
},
})
aiwg.fortemi.embedding.set.v1 记录模型、尺寸、颗粒性
(单位:千美元)title-summary, (中文(简体) ), body, (中文(简体) ), chunked-body,或项目值),源记录ID,
和每个飞行器的输入散列。 主机提供查询嵌入; @fortemi/core 已经
不为静态 AIWG 搜索添加模式运行时间依赖 。 建造者使用
与静态搜索相同的记录文本投影,包括附件
extracted_text,并且只记录附件元数据引用,从不记录原始blob
字节.
你得到的东西
| 表面 | 说明 |
|---|---|
| PGlite 存档 | opfs, (中文(简体) ), idb,以及 memory 开放式迁移的持久模式 |
| 仓库 | 笔记、搜索、标签、收藏、链接、 SKOS 概念、附件、嵌入套件、图表助手、工作和出处 |
| 活动总线 | 笔记、工作、存档和能力活动的打印订阅 |
| 能力系统 | 嵌入、本地LLM、GPU检测、本地提供者发现、倒回路由 |
| 任务队列 | 服务器兼容的背景工作流程,用于修改、标题、嵌入、概念和链接 |
| 知识沙德 | Tar.gz 带有验收和的进出口、BLAKE3 处理的blob侧车、进度回调、产生进口、设定范围嵌入出口以及配置范围符合 |
| 生命周期控制 | 福特米语Name source-note-upsert/1.0.0 加号 lifecycle-purge/1.0.0 在 PGlite 和 RecordStore 上, 带有绑定的预览, 可恢复的 BlobStore 清理, 恢复再旧、 日记压缩和免内容收件 |
源头地址的导入是一个活的持久性合同,与知识无关
硬州转会. SourceUpsertRepository.upsertRequest() 财务报告和审定财务报表
upsertRecordStoreRequest() 使用相同的服务器 1.0.0 固定为
定界的原子批次、干燥、检查站、确切的重放和
replace编号 :version编号 :conflict 政策。 当前硬质配置文件省略出源
身份和报告 source-identity-outside-profile他们不提供
源身份备份 .
* 服务-工人帮助 * * 用于独立浏览器集成的路线注册原始资料 * *
搜索与知识模型
Fortemi的档案不止是Note CRUD. 计划包括注释机构、生成标题、修订历史、标记、收藏、间注释链接、SKOS概念计划、附件、工作来源和查询历史。 搜索可以将PostgreSQL的全文排名与pgvector嵌入式组合起来,再将引信分数用于混合结果.
这使产品团队为用户已经期望从严肃的知识软件中获得的特性打下基础:快速召回、相关注释的发现、语义检索、可解释出处、进出口和结构分类学支持.
工具表面
FortemiToolManifest 登记10个桥式可见福特米工具:
capture_knowledge, (中文(简体) ), manage_note, (中文(简体) ), search, (中文(简体) ), get_note, (中文(简体) ), list_notes, (中文(简体) ), manage_tags, (中文(简体) ), manage_collections, (中文(简体) ), manage_links, (中文(简体) ), manage_archive, (中文(简体) ), manage_capabilities。 。 。 .
软件包还输出11个直接帮助器功能 @fortemi/core,包括: manageAttachments 用于附件元数据和blob操作.
import { fortemiManifest } from '@fortemi/core'
const capabilities = fortemiManifest.toBridgeCapabilities()
当一个主机需要向代理运行时间发布Fortemi操作时使用该运算表. 当您自己的代码需要相同的验证操作而不经过桥层时,使用直接帮助器功能.
浏览器存储器
| 模式 | 存储 | 最好还是 |
|---|---|---|
opfs | 来源 私有文件系统访问处理池 | Chrome和Edge生产应用软件 |
idb | 索引DB 支持的 PGlite 数据目录 | 火狐和广泛相容性 |
memory | 内存数据库 | 测试、演示、限制浏览器上下文 |
数据留在所选浏览器存储模式中,除非您的应用程序明确导出,导入,或电线外部提供者. 可选的AI能力是可选入的,可以根据您的产品需求,被路由到本地WASM,本地供应商服务器,OpenAI兼容API,或主机提供的集成. API 密钥只应活在浏览器或机器安全存储中;如果无法安全存储,则不要坚持.
反应绑定
对于反应应用程序,安装 @fortemi/react包起来 @fortemi/core 与 FortemiProvider,上下文访问,工人-模式 PGlite,图形可视化原始,以及反应钩表面.
pnpm add @fortemi/react @fortemi/core react
文档
许可证
AGPL-3.0 -仅限. 见 自由主义。 。 。 .