为你的智能体提供一个可搜索、读取和更新的知识库。
Paul Scanlon·2026年11月4日
·阅读时长 5 分钟
现在,你可以使用 Knowledge为公司范围内的上下文赋能你的智能体,它是一个以页面形式组织的文档、政策或决策的共享存储库。Knowledge 可直接与 signals,Mastra 的上下文工程原语。Signals 将正确的知识带入智能体的上下文,并在智能体运行期间保持其最新。智能体还可以使用工具,在其有权访问的范围内搜索、读取和写入 Knowledge。
LLMs 知道很多,但它们并非无所不知。当智能体被提问时,它们会退回到训练数据——而这些数据往往是错误的。真正的答案通常分散在多个系统中,或者只存在于某个人的脑海里:某个功能为何要以某种方式构建、适用哪项政策,或者团队已经尝试过什么。为智能体提供一个可供阅读和学习的知识库,能让它们更有能力理解和回答与你、你的业务或你的产品相关的具体问题。
你之前已经可以通过指令为智能体提供上下文, RAG, 技能,或者查询 API 和数据库的工具,但它们通常是只读的,而且当信息发生变化时,每个工具都需要人工干预才能更新。借助 Knowledge,智能体不仅能读取信息,还能更新信息,从而使其能够随时间学习和自我改进。
你可以 种子 Knowledge 使用你现有的文档,或通过使用 在 Mastra 平台上。Knowledge 导入器将在下个版本中推出,让你能更轻松地连接 Notion、Confluence、Linear、Zendesk 和 Fireflies 等数据源。开始使用 Knowledge 将信息存储为智能体可读取的具名 markdown 文档,称为页面。每个页面都位于一个 scope 中,由 scope 决定哪些组织、用户或对话拥有读/写权限。终端 note需要 或更高版本,已在 PR #28353 中添加。 创建一个 实例,并用 声明其 scope,这会设置三个 在 Mastra 平台上。Knowledge 导入器将在下个版本中推出,让你能更轻松地连接 Notion、Confluence、Linear、Zendesk 和 Fireflies 等数据源。
开始使用
Knowledge 将信息存储为智能体可读取的具名 markdown 文档,称为 页面。每个页面都位于一个 scope,它决定哪些组织、用户或对话拥有读/写权限。
npm install @mastra/core@latest @mastra/server@latest @mastra/libsql@latest@mastra/core@1.82.0 或更高版本,已在 PR #28353 中添加。 PR #28353.
创建一个 Knowledge 实例,并用以下内容声明其作用域: knowledgeMemoryScopes(),这会设置三个作用域:
org:与组织中的所有人共享。resource:仅对单个用户可见。thread:仅限一个对话。
设置 tools: true 为智能体提供五个 知识工具:
knowledge_search查找与查询匹配的页面和笔记。knowledge_list列出某个 scope 中的页面。knowledge_read读取一个页面。knowledge_page创建或编辑页面。knowledge_note向页面添加一条笔记。
import { Knowledge, knowledgeMemoryScopes } from "@mastra/core/knowledge";
export const companyKnowledge = new Knowledge({
id: "company-knowledge",
scopes: { ...knowledgeMemoryScopes() },
tools: true
});给 Knowledge 实例,使用 knowledge 选项:
import { Agent } from "@mastra/core/agent";
import { companyKnowledge } from "../knowledge/company-knowledge";
export const companyAgent = new Agent({
id: "company-agent",
name: "Company Agent",
instructions: /* ... */,
model: /* ... */,
knowledge: companyKnowledge
});在你的 Mastra 实例上注册该智能体和 Knowledge。Knowledge 存储在你配置的存储提供程序中,该提供程序会添加自己的 mastra_knowledge_* 首次使用 Knowledge 时所需的表:
mastra_knowledge_pages保存每个页面的名称、描述和 markdown 正文。mastra_knowledge_notes保存添加到页面的笔记。mastra_knowledge_mentions记录页面之间的链接。mastra_knowledge_pins保存固定页面。- 更多表格用于跟踪作用域、访问权限和最近活动。
import { Mastra } from "@mastra/core/mastra";
import { LibSQLStore } from "@mastra/libsql";
import { KNOWLEDGE_ROUTES } from "@mastra/server/server-adapter";
import { companyAgent } from "./agents/company-agent";
import { companyKnowledge } from "./knowledge/company-knowledge";
export const mastra = new Mastra({
agents: { companyAgent },
knowledge: { companyKnowledge },
storage: new LibSQLStore({ id: "mastra-storage", url: "file:./mastra.db" }),
server: { apiRoutes: [...KNOWLEDGE_ROUTES] }
});KNOWLEDGE_ROUTES 在 Studio 中打开 Knowledge 页面,该页面会以树状结构显示每个 scope 和页面,旁边还有一张展示页面之间如何链接的图。参见 Studio 中的 Knowledge.
用法
每次调用都会传入其作用域:一个组织、一个用户(resource:),以及一个 thread。
对于一个问题,智能体会在全部三个 scope 中搜索并读取页面:
await companyAgent.generate("What's our refund window?", {
scopes: [`org:${user.orgId}`, `resource:${user.id}`, `thread:${threadId}`]
});对于更新,智能体会将页面写入与请求匹配的 scope。“Save that for the team”会写入 org:
await companyAgent.generate("Our refund window is 30 days. Save that for the team.", {
scopes: [`org:${user.orgId}`, `resource:${user.id}`, `thread:${threadId}`]
});播种知识
智能体只能根据 Knowledge 中的内容作答,因此你通常需要在它们开始工作之前先把内容准备好。有多种方式可以用你现有的内容填充 Knowledge,详见 加载你的内容.
更多信息及完整配置选项,请参见:
Knowledge 处于 alpha 阶段。其 API 可能随版本变化。
分享到 或 LinkedInPaul Scanlon技术产品营销经理Paul Scanlon在 Mastra 负责开发者教育与产品营销之间的工作。此前,他曾在 Neon 担任技术产品营销经理,并在 Gatsby 从事开发者关系工作,负责创建教育内容和开发者体验。Paul Scanlon 的所有文章 →更多关于 Memory所有文章博客2026年10月26日面向公司大脑的自托管工具Mastra Knowledge:为智能体提供持久的公司上下文。现已开放早期访问, 或 LinkedIn
Paul Scanlon技术产品营销经理Paul Scanlon 在 Mastra 负责开发者教育与产品营销之间的工作。此前,他曾在 Neon 担任技术产品营销经理,并在 Gatsby 从事开发者关系工作,负责创建教育内容和开发者体验。
Paul Scanlon 的所有文章 →更多关于 Memory
所有文章博客2026年10月26日面向公司大脑的自托管工具
Mastra Knowledge:为智能体提供持久的公司上下文。现已与设计合作伙伴一起开放早期访问。
博客2026年9月29日推出 Memory Hooks
监控智能体的记忆循环,或拦截它看到和存储的内容。
文章2026年8月4日AI 智能体的长期记忆:它是什么以及如何构建
了解长期记忆对 AI 智能体意味着什么、为什么更大的上下文窗口仍不够用、哪些记忆类型至关重要,以及如何设计持久化检索。