gbrain v0.18.0 多源大脑(Multi-source Brains)迁移与配置实战:一个数据库承载多个知识仓库
人工智能RAGAgent 记忆MCP 服务知识管理【免费下载链接】gbrainGarrys Opinionated OpenClaw/Hermes Agent Brain项目地址https://gitcode.com/gh_mirrors/gb/gbrain点击查看免费下载本指南以 skills/migrations/v0.18.0.md 迁移文档为核心骨架结合仓库源码src/core/source-resolver.ts、src/commands/sources.ts、src/commands/migrations/v0_18_0.ts与配套实战指南 docs/guides/multi-source-brains.md系统讲解 gbrain 的sources一等公民原语从自动迁移、CLI 命令面、六级解析优先级、联邦federation语义到面向 Agent 的引用契约。读完你将在单个 gbrain 后端上同时运行统一知识大脑与用途隔离大脑并让cd ~/yc-media gbrain query X这类按目录自动定位 source 的体验直接可用。一、v0.18.0 迁移文档讲了什么sources 成为一等公民v0.18.0该迁移说明正文沿用旧版编号内部 schema 迁移为 v16/v17将source提升为数据库中的一等公民原语一个 gbrain 后端可以同时持有多个知识仓库如wiki、gstack、yc-media、garrys-list彼此拥有干净的边界。核心变化有三条行级作用域每一行pages、files、ingest_log都归属于一个sources(id)行。Slug 按 source 唯一slug 不再全局唯一而是(source_id, slug)复合唯一——两个 source 可以各自拥有topics/ai且它们是不同的页面。联邦开关federatedtrue升级后默认 source 的取值加入跨源召回池参与无前缀的默认搜索federatedfalse是隔离态仅在被--source id显式点名时才会被搜到。这同时支撑统一知识大脑wiki gstack 都联邦与用途分离大脑yc-media garrys-list 都隔离两种形态并存于同一数据库。配套的完整用户指南位于 docs/guides/multi-source-brains.md本文以迁移说明为主线同时并入该指南的可操作细节。二、机械迁移自动执行、幂等、无需人工操作迁移说明明确gbrain upgrade会链式调用gbrain apply-migrations --yes随后自动运行两条内部迁移migration v16—— 创建sources表以{federated: true}配置种子化default行并把升级前的sync.repo_path与sync.last_commit继承到default行中。该迁移是纯新增additive-only不破坏任何既有引擎代码。migration v17—— 给pages增加source_id TEXT NOT NULL DEFAULT default REFERENCES sources(id)将全局UNIQUE(slug)约束替换为复合UNIQUE(source_id, slug)同时引擎的 upsert 路径同步改为ON CONFLICT (source_id, slug)保证约束替换与写入路径原子落地。两条迁移均幂等可安全重跑。源码侧src/commands/migrations/v0_18_0.ts 中的编排器将这次升级拆成三个阶段Phase Aschema调用runMigrateOnlyCore()执行迁移链Phase Bstorage backfill检查file_migration_ledger是否存在存在则调用runStorageBackfill按台账重写存储对象PGLite 因无 files 表直接跳过该阶段在 Step 7 存储回填落地前预期可能为skippedPhase Cverify断言sources(default)行存在若已安装pages_source_slug_key复合约束还会校验不存在source_id IS NULL的脏行。最终状态由 schema 与 verify 阶段共同决定complete/partial/failed并写入已完成的迁移记录。迁移文档同时预告了后续小版本的内容v0.17.1 将基于调用方身份原语做 ACL 强制现在已随 JSONB 槽位下发access_policy强制留待身份机制设计完成v0.18.0 会同时落地会话注入.jsonl转录、容量上限提升、session PageType与按 source 的 retention/TTL。三、sourcesCLI 子命令全解迁移文档给出了完整的命令面src/commands/sources.ts 的实现与之对应gbrain sources add id --path p [--name n] [--federated|--no-federated] gbrain sources list [--json] gbrain sources remove id [--yes] [--dry-run] [--keep-storage] gbrain sources rename id new-display-name gbrain sources default id gbrain sources attach id # 在 CWD 写入 .gbrain-source gbrain sources detach # 移除 .gbrain-source gbrain sources federate id gbrain sources unfederate idSource ID 规则迁移文档规定 id 必须匹配a-z0-9?——以小写字母或数字开头结尾、中间可含连字符、最长 32 字符。源码 src/commands/sources.ts 与 src/core/source-id.ts 共享同一正则SOURCE_ID_RE校验失败会抛出可读错误如Invalid source id Wiki. Must be 1-32 lowercase alnum chars...。id 在创建后不可变rename只改显示名它被用作[source:slug]引用中的稳定引用键。list --json会输出每个 source 的页面数与联邦状态对应SourceListEntry的id / name / local_path / federated / page_count / last_sync_at字段。补充配套指南还列出了sources add的另两种形态——--url git-url一键克隆注册远程仓库以及archive / restore / archived / purge软删除 TTL 体系详见后文进阶小节。四、按目录默认.gbrain-source点文件与六级解析优先级迁移文档的核心体验承诺是像 kubectl / terraform / git 一样按上下文定位在~/.gstack/内执行gbrain sources attach gstack会写入一个只含单词gstack的.gbrain-source点文件之后在该目录或其任何子目录运行 gbrain 命令都会自动选中gstack作为默认 source。gbrain sources detach则移除该点文件。任何命令解析目标 source 时的完整优先级为显式--source id标志GBRAIN_SOURCE环境变量CWD 或任一祖先目录中的.gbrain-source点文件向上逐级查找注册 source 中local_path包含 CWD 者最长前缀胜出——嵌套的~/gstack与~/gstack/plans在更深层时解析到plans通过gbrain sources default id设置的脑级默认字面default向后兼容兜底。这套逻辑在源码 src/core/source-resolver.ts 的resolveSourceId中原样落地注释明确写着为 CLI 命令解析 source id该文件头注释标注为 v0.18.0。几个值得注意的实现细节点文件信任校验readDotfileWalk使用lstatSync而非statSync检查点文件防止符号链接被静默跟随isTrustedDotfile拒绝符号链接、他属主与世界可写文件避免多用户主机上共享目录被植入伪造点文件见 src/core/source-resolver.ts。点文件容错非法内容如下划线旧 id、手改带空白静默落入下一级而不是抛错——因为点文件常被运维手改宽容语义能保住解析链其余部分。显式层严格--source与GBRAIN_SOURCE两个显式层则相反非法值会直接抛出SourceTargetError。并发 realpath第 4 级对所有注册local_path与 CWD 做并行 realpath 解析Promise.all避免单个慢路径网络挂载、macOS 按访问安全扫描串行拖垮整个解析层成本上界是最慢的单个 source而非其总和见 src/core/source-resolver.ts。归档优先性第 4 级中活跃 source 优先于已归档 source 参与前缀匹配归档树的更深注册不会遮蔽活跃父级。resolveSourceWithTiersrc/core/source-resolver.ts返回{ source_id, tier, detail }供gbrain sources current在任何破坏性操作前展示解析到了哪个 source、为什么。此外源码还实现了resolveSourceIdEngineFree无引擎的瘦客户端走显式/环境变量/点文件三层与resolveSourceForRepoPath针对sync --repo dir以仓库目录为锚点解析而非调用方 cwd。五、联邦语义跨源召回是显式选择每个 source 行的 JSONB config 中存储federated布尔值语义如下表值含义true参与无前缀gbrain search X的结果默认 source 升级后即为此值false新 source 默认仅当通过--source id或带限定的引用时才会被检索交互式gbrain sources add会提示选择联邦状态非交互模式用--federated/--no-federated。之后可用gbrain sources federate id/unfederate id随时翻转。源码中localFederatedSourceIdssrc/core/source-resolver.ts把这个承诺转成检索作用域给定已解析 source 与命中的 tier返回[已解析source, ...其他联邦source]的展开集合但当调用方显式点名flag/env/dotfile tier或已解析 source 本身被显式隔离federatedfalse时不做展开——隔离源无论在哪个方向都不会被混入跨源读取。相关行为有test/local-federated-search-scope.test.ts与test/recall-federated-search-scope.test.ts覆盖。六、Agent 引用契约[source-id:slug]多源搜索结果天然需要可定位的引用。迁移文档规定当 Agent 拿到多源搜索结果时必须以[source-id:slug]形式引用页面。示例你提到的蒸馏协议——参见 [wiki:topics/ai] 与 [gstack:plans/multi-repo] 的出处。引用键是sources.id不可变绝不使用sources.name可变的显示名。因此即使用户执行gbrain sources rename既有引用依然有效。七、三大典型场景统一、分离与混合迁移文档将完整场景指引指向 docs/guides/multi-source-brains.md其中给出三个规范场景的可复制命令场景 1统一知识召回wiki gstack# 注册 gstack 并联邦使其加入跨源搜索 gbrain sources add gstack --path ~/.gstack --federated # 钉住目录让 gbrain sync 知道在走哪个 source cd ~/.gstack gbrain sources attach gstack # 首次同步 gbrain sync --source gstack # 此后 gbrain search retry budgets 会同时命中 wiki 与 gstack # 每个结果都带 source_id 供 Agent 正确引用结果wiki 页面与 gstack 计划分属不同source_id、不同 slug 命名空间但共享搜索面。场景 2用途分离大脑yc-media garrys-list# 两个 source 都隔离federatedfalse gbrain sources add yc-media --path ~/yc-media --no-federated gbrain sources add garrys-list --path ~/writing --no-federated # 分别钉住各自目录 (cd ~/yc-media gbrain sources attach yc-media) (cd ~/writing gbrain sources attach garrys-list) # 各自独立同步 gbrain sync --source yc-media gbrain sync --source garrys-list效果在两个目录之外搜索只返回default主脑在~/yc-media内搜索只返回 yc-media在~/writing内只返回 garrys-list。联邦是显式选择不会泄漏。需要临时跨源检索时gbrain search tech layoffs --source yc-media,garrys-list场景 3混合wiki 联邦 会话隔离# 联邦 source gbrain sources add gstack --path ~/.gstack --federated # 会话转录走隔离 source避免主导每次搜索结果 gbrain sources add sessions --path ~/.claude/sessions --no-federated八、写入保护无前缀写入默认防错解析器从不在歧义时静默选源——它会以清晰可修的错误终止。迁移配套指南进一步给出无前缀写入的防护在存在至少一个非 default source且default之外页面多于default内页面的脑上无前缀gbrain sync会拒绝执行需--source id重定向gbrain import会警告MCP stdio 在写入实际落到 default 层时打印一次进程内提示。gbrain sync --dry-run只预览不改写并输出同样的路由指引。GBRAIN_ALLOW_DEFAULT_WRITE1是脚本化流水线确需写入default时的逃生舱。源码中的assessDefaultWriteGuardsrc/core/source-resolver.ts正是这一策略的实现当nonDefaultSources 1 nonDefaultPages defaultPages时判定需要守卫deleted_at IS NULL过滤掉软删除页避免墓地分布扭曲判定查询失败则 fail-open守卫绝不能成为合法写入失败的原因。assessDefaultWriteGuardOnce用 WeakMap 按引擎记忆进程内评估结果避免大量无前缀写入反复全表聚合。九、v0.18.0 尚未包含的内容迁移文档明确列出了本次发布范围之外、将随本发布周期后续 Step 落地的能力ingest_log.source_id—— 随 Step 5 同步重写落地links.resolution_type与限定[[source:slug]]wikilink 解析 —— 随 Step 4 链接抽取重写落地files.page_slug → page_id外键重写 file_migration_ledger 存储对象前缀化 —— 随 Step 7 存储回填落地源感知的搜索去重 —— 随 Step 3 落地gbrain sources import-from-github url—— 推迟到管道稳定后的补丁版本。既有调用方继续以defaultsource 工作Agent 无需任何行为变更新能力全部通过新增的sourcesCLI 面以 opt-in 方式使用。十、宿主仓库动作与升级既有脑迁移文档明确宿主仓库无需任何动作。若宿主 Agent 通过标准gbrain sync流程管理大脑它继续作用于 default source行为无变化。要开始使用多源# 注册新 source gbrain sources add gstack --path ~/.gstack --no-federated # 钉住目录免去每次 --source 标志 cd ~/.gstack gbrain sources attach gstack # 摄取 gbrain sync --source gstack配套指南补充了两个易踩的坑git 要求--pathsource 必须是 git 仓库或仓库内子目录且路径下要有已提交的跟踪文件——git init后即使--allow-empty提交也不够注册校验读的是git ls-tree HEAD作用域内的真实跟踪内容。未满足时sources add会直接拒绝并给出可操作错误。--force跳过该校验适用于注册时自动化管道还没 git init的场景gbrain 不会替你自动git init。若同步锚点last_commit因 force-push / 历史重写 / 从零 init 而失效gbrain sync会自动检测并恢复完整重导入或对孤儿书签做树到树 diff无需手工重置。升级既有脑只需两步gbrain sources add gstack --path ~/.gstack --federated与cd ~/.gstack gbrain sources attach gstack gbrain sync——现有defaultsource 完全不受影响。十一、进阶归档、耐久性与更广阔的坐标系配套指南 docs/guides/multi-source-brains.md 还在 sources 之上提供了更多可组合能力按 source 保留/软删除gbrain sources archive id软删除并隐藏于搜索TTL 宽限期内保留数据、archived列出过期项、purge永久删除过期归档仍被 OAuth 客户端引用的 source 会以Blocked:报告需先gbrain auth revoke-client id。一键远端引导gbrain sources add wiki --url git-url --pat-file pat克隆 注册 自动加固auto-harden一次完成本地 auto-push 钩子、scripts/brain-commit-push.sh、AGENTS.md/RESOLVER.md 中的耐久性规则、30 分钟拉取 cron 与仓库级凭证harden/unharden/pull可随时审计与拆除。安全边界推送自动化只装在本机、token 按仓库接线、绝不落入仓库/远端 URL/日志/JSON 报告。坐标系区分source 是数据库内轴若需连接整个独立数据库团队发布、带独立访问策略的脑那是gbrain mounts add的brain轴两轴拓扑见 docs/architecture/brains-and-sources.md。总结v0.18.0 的 multi-source brains 是一套一个数据库、多个知识仓库、干净隔离、显式联邦的完整原语。迁移全自动且幂等CLI 面覆盖注册到耐久性全生命周期六级解析优先级复刻了 kubectl/git 的上下文习惯而[source-id:slug]引用契约保证了 Agent 在多源召回下仍能稳定、可重命名地引用来源。把本文中的命令与源码路径src/core/source-resolver.ts、src/commands/sources.ts、src/commands/migrations/v0_18_0.ts对照阅读即可在既有单源脑上无痛切换到多源拓扑。赞分享人工智能RAGAgent 记忆MCP 服务知识管理【免费下载链接】gbrainGarrys Opinionated OpenClaw/Hermes Agent Brain项目地址https://gitcode.com/gh_mirrors/gb/gbrain点击查看免费下载相关推荐gbrain 多源大脑Multi-Source Brains实战在单一数据库中组织、联邦与隔离多个知识库gbrain 多源大脑Multi Source Brains实战在单一数据库中组织、联邦与隔离多个知识库 gbrain 允许在 一个数据库内 同时管理多个人工智能RAGAgent 记忆MCP 服务知识管理GBrain 知识组织双轴模型Brains 与 Sources 的数据库/仓库路由、拓扑设计与联邦检索实战GBrain 知识组织双轴模型Brains 与 Sources 的数据库/仓库路由、拓扑设计与联邦检索实战 GBrainGarrys Opinionate人工智能RAGAgent 记忆MCP 服务知识管理Nx 多仓库批量迁移实战指南用 nx migrate 编排器与 Agent 一次性升级多个仓库Nx 多仓库批量迁移实战指南用 nx migrate 编排器与 Agent 一次性升级多个仓库 nx migrate 是 Nx 官方提供的一键迁移命令而本仓开发工具构建工具MonorepoCLI上一篇MTKClient项目MT6765设备DAA签名验证失败问题分析与解决下一篇解决Owncast直播平台Logo缓存难题从根源到优化的完整指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Flink Table SQL DELETE 语句完全指南:行级删除、语法与连接器实现机制

Flink Table SQL DELETE 语句完全指南:行级删除、语法与连接器实现机制

大数据流处理批处理数据工程 【免费下载链接】flink 项目地址: https://gitcode.com/gh_mirrors/fli/flink 点击查看 免费下载 DELETE 是 Flink Table API & SQL 提供的行级删除语句,用于按照 WHERE 条件批量删除目标表中的数据。本指南以 Flink 官…

2026/9/22 9:57:38 阅读更多 →
Paseo 插件实战:用 Timeline Transformer 把 Agent 推理过程改造成内联思维链渲染

Paseo 插件实战:用 Timeline Transformer 把 Agent 推理过程改造成内联思维链渲染

【免费下载链接】paseo Orchestrate multiple coding agents from desktop and mobile 项目地址: https://gitcode.com/gh_mirrors/pa/paseo 点击查看 免费下载 Paseo 的插件系统允许客户端通过 Timeline Transformer 与 Timeline Renderer 接管 Agent 时间线上任意…

2026/9/21 7:38:43 阅读更多 →
使用 MXNet C++ API 加载预训练模型完成图像分类推理:从模型文件到端到端预测的完整实战

使用 MXNet C++ API 加载预训练模型完成图像分类推理:从模型文件到端到端预测的完整实战

使用 MXNet C API 加载预训练模型完成图像分类推理:从模型文件到端到端预测的完整实战 【免费下载链接】mxnet Lightweight, Portable, Flexible Distributed/Mobile Deep Learning with Dynamic, Mutation-aware Dataflow Dep Scheduler; for Python, R, Julia, Sc…

2026/9/21 7:37:43 阅读更多 →

最新新闻

工厂考勤系统避坑指南:3个致命Bug让你少加班

工厂考勤系统避坑指南:3个致命Bug让你少加班

工厂考勤系统避坑指南:3个致命Bug让你少加班 刚接手工厂考勤模块,控制台全是红字,StackTrace 长得像天书,连哪一行代码报的错都找不到。别慌,这种“报错一堆看不懂…

2026/9/22 9:57:04 阅读更多 →
3天搞定企业公示信息查询系统避坑指南

3天搞定企业公示信息查询系统避坑指南

3天搞定企业公示信息查询系统避坑指南 你是不是也经历过这种绝望:教程刷了几十遍,LeetCode题也刷了几道,真让你独立从零手搓一个项目,脑子一片空白,连数据库表怎么建都犹豫不决?别慌,这正是绝大多数初级开发者的通病。今天这篇避坑指南,不灌…

2026/9/22 9:57:04 阅读更多 →
3个实战项目搞定vipl选型与避坑

3个实战项目搞定vipl选型与避坑

3个实战项目搞定vipl选型与避坑 看了一堆教程还是不会写项目?别急,这怪不了你。很多人卡在“vipl”这个概念上,觉得它高深莫测,其实只要拆解成 实战项目…

2026/9/22 9:57:04 阅读更多 →
小俊面试突击:搞定配置难题,从入门到精通

小俊面试突击:搞定配置难题,从入门到精通

小俊面试突击:搞定配置难题,从入门到精通 刚接手新项目,配置环境就卡半天?这是很多开发者,包括我们团队里的“小俊”,都遇到过的噩梦。依赖冲突、版本不对、环境变量丢失,光看报错信息就能让人头秃。…

2026/9/22 9:56:04 阅读更多 →
别被第二次考试吓退 源码解析助你一次通关

别被第二次考试吓退 源码解析助你一次通关

别被第二次考试吓退 源码解析助你一次通关 看了一堆教程还是不会写项目?这是无数开发者的噩梦。很多人对着文档发呆,觉得理论懂了就等于会了,结果一动手就崩。其实,问题往往出在你对底层逻辑的模糊认知上。今天咱们不聊虚的,直接拆解【第二次考试】背后…

2026/9/22 9:56:04 阅读更多 →
cmd切换目录总报错?3个最佳实践让你告别路径噩梦

cmd切换目录总报错?3个最佳实践让你告别路径噩梦

cmd切换目录总报错?3个最佳实践让你告别路径噩梦 复制来的代码跑不通,报错信息里全是“找不到路径”或“拒绝访问”,你是不是也盯着屏幕发呆,不知道从哪下手调试?别急,这其实是 cmd 切换目录时最典型的坑,尤其是新手在 Windows…

2026/9/22 9:56:04 阅读更多 →

日新闻

3台商务办公笔记本实测:手写实现环境配置,告别卡半天

3台商务办公笔记本实测:手写实现环境配置,告别卡半天

3台商务办公笔记本实测:手写实现环境配置,告别卡半天 配置环境就卡半天?别怪机器慢,多半是你没选对工具链。在Java、Go或Python的项目现场, 手写实现…

2026/9/22 0:00:41 阅读更多 →
剑帝加点速查手册:3分钟搞懂核心逻辑

剑帝加点速查手册:3分钟搞懂核心逻辑

剑帝加点速查手册:3分钟搞懂核心逻辑 面试被问原理答不上来,是不是常态?别慌。很多开发者对着 GitHub 开源仓库里的代码发呆,看似简单实则暗藏玄机。今天这份【剑帝加点】速查手册,直接带你拆解核心实现,把面试必考的原理讲透。…

2026/9/22 0:00:41 阅读更多 →
手写实现图片压缩网站核心:搞定WebP转换与质量调优

手写实现图片压缩网站核心:搞定WebP转换与质量调优

手写实现图片压缩网站核心:搞定WebP转换与质量调优 复制来的代码跑不通不知道怎么调?别慌,这种“复制粘贴地狱”在开发圈太常见了。尤其是做 图片压缩网站…

2026/9/22 0:00:41 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/22 4:32:41 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/22 4:38:57 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/22 8:51:04 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/21 15:36:51 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/21 15:36:51 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/22 2:43:42 阅读更多 →