Skip to main content
Glama

📜 OpenLore

Release Go Reference

赞助

通过 SSH 向 AI 智能体提供你的文档。

OpenLore 是一个极简、可扩展、面向智能体的知识库,能保持共享上下文始终最新且可查阅。


简介

AI 编程智能体已经知道如何用 lscatgrepfind 以及管道和 shell 循环来探索文件。OpenLore 通过 SSH 为它们提供同样的界面,只不过背后支撑的是你的文档,而不是一台真实的机器。

Agent ──SSH or MCP──▶ OpenLore ──▶ docs, knowledge, and artifacts

它最初以一个单二进制、零配置、只读的文档服务器形式启动。当需要实时知识库时,你还可以添加基于身份范围的访问、受控发布、原子写入、校验以及人工审批,而不会改变智能体读取或浏览内容的方式。

存储并检索 Markdown

将文档、runbook、项目上下文或智能体写作的笔记放入普通的 Markdown 文件中。这里没有摄取管道:把 OpenLore 指向一个目录,它就直接提供现有目录结构。你可以用文件夹组织文档,用标准的 Markdown 链接连接它们,并在不同人或智能体需要不同访问权限时将它们归集成 docset。OpenLore 默认是只读的;当你希望智能体也能创建和更新 Markdown 时再启用写入。

OpenLore Skills import demo

Related MCP server: AgentBase

快速开始

最快的路径是让你的智能体来安装 OpenLore:

# Teach your agent how to install, configure, and bundle OpenLore
ssh openlore.sh teach | your-agent-cli

# Add documentation access instructions to AGENTS.md
ssh openlore.sh agents >> AGENTS.md

或者直接安装并运行它:

go install github.com/aakarim/go-openlore/cmd/openlore@latest

openlore ./docs

ssh -p 2222 localhost
ssh -p 2222 localhost "grep -r 'authentication' /docs"

默认情况下,它会启动:

  • SSH 监听在 localhost:2222

  • 面向人类的 Web 视图在 http://localhost:8080

  • MCP over HTTP 在 http://localhost:8080/mcp

更多安装和打包方式,请参阅 安装

特性

  • 智能体原生检索 —— 智能体使用它们已经掌握的 shell 工具和组合模式,而不是学习一套专门设计的检索 API。

  • 一个知识面,多种传输 —— 通过 SSH、SFTP/SSHFS、MCP 以及一个友好的人类 Web 视图来提供相同的虚拟文件系统。

  • 实时、可治理的知识 —— 保持只读内容、允许作用域发布,或者按 docset 完全启用写操作。写入是原子的,具有冲突感知,并且可以要求人工审批。

  • 身份作用域视图 —— 按角色给予 ropublishrw 授权,应用可用的路径别名,并拥有私有 home 目录,使每个人或每个智能体只需要看到自己需要的 docset。

  • 天然安全 —— shell 是一个内存中的 Go 解释器,而不是真正的操作系统 shell。在常规会话中,不存在转义、任意进程执行或环境网络访问。

  • 可移植的知识包 —— 将文档嵌入到自包含的二进制,通过 GitHub Action 构建跨平台包,或者打包为桌面 MCP 扩展。

  • 结构化知识无需新查询语言 —— 用 lore meta 以 NDJSON 形式检查前言,用 jq 查询,并在接近写入路径的地方校验 Google 的 Open Knowledge Format (OKF) 包和智能体技能。

  • 可扩展, 策略与处理 —— 插件可以增加校验、授权、读写中间件、元数据以及提交后处理,同时还保持相同的文件系统接口。

使用场景

  • 持续学习仓库 —— 将会话和学习内容存储在同一个共享服务器中。添加指标以便优化,同时允许智能体在保持用户隔离的情况下互相分享学习。

  • 团队工件仓库 —— 在保留访问控制的同时共享你构建的 Markdown、HTML、JSON、Excel 等文档。这也比外部系统更自然,比 Confluence/Notion 更智能体原生。

  • 编程智能体的文档 —— 把内部 API 文档、运行手册、产品上下文和架构注释放在类似的、可 grep 的界面后面。

  • 智能体团队的共享实时记忆 —— 给不同智能体提供隔离的或共享的 docset,使它们能够发布结果、交接工作,并在不同会话间积累持久的上下文。

  • 公开文档站 —— 把你的任何文件添加到公开 docset 并启用公共访问,那么任何访问到你网站的 AI 智能体都会看到它。无需修改现有文档即能提升 AEO/GEO。

  • 技能共享 —— 将智能体技能发布到共享集合,以便每个受授权的智能体发现并使用相同的受治理流程。

  • 智能体插件仓库 —— 从 GitHub 版本固定 Agent Plugins 仓库,并把它提供给团队的智能体。采用开放标准打包的技能会自动保持最新。

  • 受治理的知识贡献 —— 允许贡献者发布到收件箱,同时将敏感路径保留给审批人员,并防止意外覆盖。

  • 远程审阅智能体工件 —— 通过浏览器或 SSH 将报告、日志、截图和生成文件展示出来,而无需构建自定义的工件查看器,也无需授予对智能体机器的访问权限。

  • 身份特定的工作空间 —— 通过一个服务器和一套统一授权模型,为每个智能体挂载一个私有 home 目录,再加上团队共享知识。

  • 可移植的客户或项目知识 —— 交付带有所嵌入相关文档的版本化可执行文件,或者作为 MCPB 桌面扩展分发同样的知识。

  • 经过校验的知识目录 —— 强制使用 frontmatter 与包约定,低成本地检查元数据,并在知识进入时终止非规范的错误。

工作原理

OpenLore 在 SSH 传输上基于 Wish 构建。连接完全在一个虚拟文件系统上处理:

  1. 认证 —— 无密钥连接,或者通过 SSH 密钥、证书、通行密钥 / OAuth 登录解析到一个身份。

  2. 构建视图 —— 只挂载该身份被授权的 docset 和路径。

  3. 探索 —— 在该视图上运行以纯 Go 函数实现的和 ls/cat/grep 等命令,或使用等效的 MCP shell 工具。

  4. 安全贡献 —— 如果启用了写入,则对一个整体文件的变更进行授权和验证,然后再原子提交或流转给审批。

OAuth 客户端使用委托身份,因此持久的写入出处区分了由 adil 直接完成与实际以 adil/claude@claude.ai 身份完成的工作。委托的权限不能超过其主体,并可以通过 docset 和能力拒绝列表进一步收窄。CIMD 客户端还可以使用供应商托管的元数据和 private_key_jwt 进行认证;参见 已认证的 OAuth 客户端

常规 shell 不应该执行 bashexeccurl 或任意主机进程。因为在本质上文档只读。被显式信任的身份可以通过 spawn 能力被授予有限范围的异步处理。

受治理的写入

OpenLore 默认是只读的。可写部署保留一条单一、受策略控制的 Write 路径,用于重定向、append、teepatchsed -i、文件移动、发布以及经过批准的外部任务。

echo "# Research" | publish backend findings.md
cat change.diff | patch /backend/api.md
sed -i 's/old/new/g' /backend/runbook.md

写入是整体对象的原子交换。默认开启 Compare-and-swap 保护,拒绝陈旧编辑;docset 的授权数约束了目标,可选路径可以在 /requests 下生成可审查的变更集,而不是直接提交。

更远的读取

可写的 setup

请参见 写入和发布 的面向用户的编排,以及通过 写入系统实现 的实现模型。

安装

通过 Go 安装

需要 Go 1.26 或更高版本:

go install github.com/aakarim/go-openlore/cmd/openlore@latest

从源码构建

git clone https://github.com/aakarim/go-openlore.git
cd go-openlore
go build -o openlore ./cmd/openlore

将文档嵌入到二进制中

将文档放在 assets/lore/ 中,然后构建。最终二进制会包含这些文档,并在后面以 docs 值运行时,以只读方式在 /docs 路径提供:

go build -o my-docs ./cmd/openlore

使用 GitHub Action 构建

生成带有你的文档的跨平台二进制文件:

- uses: aakarim/openlore@v1
  with:
    docs-dir: ./docs
    config: ./openlore.yml

关于 MCP stdio、MCPB 桌面打包、SSHFS 和 Go 库的使用,见 使用 OpenLore 的多种方式

HTTP 收件箱上传

配置 docset 的 inbox 和一个角色,并给它 publish 授权,然后为现有身份创建凭证(服务器配置中必须指定 auth_file,CLI 才能验证它):

openlore inbox token create --identity alice --label webhook --config openlore.yml
curl -H 'Authorization: Bearer olin_ID_SECRET' -H 'Content-Type: text/markdown' \
  --data-binary @note.md 'https://docs.example.com/inbox/docs?name=note.md'

POST /inbox/{docset} 接受 Bearer 凭证,或使用 X-OpenLore-Token-IdX-OpenLore-Signature 进行精确主体的 HMAC。OAuth 访问机关 token 仅用于 POST/GET /inbox/tokensDELETE /inbox/tokens/{id};inbox 凭证是分开的,并且是可撤销的。见 配置与身份.

文档

指南

内容

OpenLore 的用法

SSH、MCP、Web、SSHFS、嵌入二进制、GitHub Action、MCPB 和库用法

命令参考

完整的 shell 写入器、动态递归、发布、命令语法、CLI 命令和标志参考

配置和身份

openlore.yml、认证、角色、docset、别名、home 和主机校核

工作负载身份联合

使用短期外部身份令牌认证构建产物和智能体

编写和发布

写入模式、邮箱、冲突处理、审批和任务

插件和知识格式

插件安装、接口、OKF 验证、lorelore 验证

写入系统内部

文件系统分层、写入分页、变更集、挂钩和异步任务

安全评估

威胁模型和安全属性

安全

  • 命令在一个纯 Go 解释器中运行,而不是通过 os/exec

  • 虚拟文件系统清理路径,并限制在 docset 边界内。

  • 允许的文件模式和忽略目录,防止机密进入视图。

  • RBAC 控制读取、发布、写入、审批及受信任能力。

  • Web 端点可以在 TLS 之上投放 SSH 主机密钥,而不是依靠盲目首次信任;SSH 用户和主机证书也支持。

详见 SECURITY.md 的完整安全评估。

License

MIT —— Adil Karim

OpenLore 捆绑了第三方开源组件。它们的许可证和所需声明,都会承包在构建的二进制中,并通过运行服务 在 /legal 路径提供;完整许可文本列于 assets/legal/THIRD_PARTY_NOTICES.mdassets/legal/licenses/

A
license - permissive license
Not graded
quality - not tested
A
maintenance

Maintenance

Maintainers
Response time
1wRelease cycle
6Releases (12mo)
Commit activity

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • Your company's brain for AI agents. Cited, permission-aware knowledge across every system.

  • Shared knowledge base for AI agents. Semantic search across agents, no setup required — just a URL.

  • Shared, permission-aware company context for AI agents, with provenance, approvals and audit.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/aakarim/OpenLore'

If you have feedback or need assistance with the MCP directory API, please join our Discord server