edk2-opencode
v6.0.22
Published
EDK2 Knowledge Base MCP Daemon - shared offline EDK2 retrieval served over MCP with auto-recovery
Maintainers
Readme
EDK2-OpenCode v6.0.1
EDK2 Knowledge Base MCP Daemon - Dual Data Source
共享式 EDK2 知识库 MCP 服务,支持 TianoCore Wiki + tianocore-docs 双数据源。 知识库运行在独立 daemon 中,通过 MCP 协议为 OpenCode 提供服务。
v6.0.0 架构
┌─────────────┐ ┌────────────────────────────────────────────────┐
│ OpenCode │──▶│ edk2-kb MCP Daemon (HTTP, 动态端口) │
│ (多个实例) │ │ │
│ │ │ watchdog (daemon_runner.py) │
│ │ │ └── FastMCP server (mcp_server.py) │
│ │ │ ├── /mcp (MCP 协议: search_kb...) │
│ │ │ ├── /health (存活 + 就绪) │
│ │ │ └── /search (CLI 便捷端点) │
└─────────────┘ │ └── SearchEngine (ChromaDB, 常驻内存) │
└────────────────────────────────────────────────┘| 数据源 | 内容 | 更新方式 | |--------|------|----------| | TianoCore Wiki | 官网全部页面 | 全站爬取 + 增量更新 | | tianocore-docs | 全部 33 个仓库的 Markdown 文档 | Git 克隆(多仓库)+ 拉取更新 |
特性
- 🗂️ 双数据源:TianoCore Wiki 全站 + tianocore-docs 全部 33 个仓库
- 🧠 MCP 服务:共享 HTTP daemon,OpenCode 通过 MCP 协议远程检索
- 🔌 动态端口:不再固定 9876,多实例永不冲突
- ♻️ 崩溃自愈:watchdog 自动重启崩溃的 server;CLI 按需自愈
- ⚡ 懒加载 + 预热:daemon 秒级启动,索引后台加载并常驻内存
- 📦 完全离线:运行时无需联网,纯本地检索
- 🔧 内置 Skills:edk2-pr-workflow, ovmf-build
快速开始
1. 安装
npx edk2-opencode@latest2. 初始化知识库
全量初始化(首次使用):
npx edk2-opencode --init-edk2-wiki增量更新(后续更新):
npx edk2-opencode --init-edk2-wiki --update预计耗时:
- 全量初始化:10-30 分钟
- 增量更新:5-10 分钟
3. 启动
npx edk2-opencodeCLI 会自动启动(或复用)知识库 daemon,并把当前动态端点写入
opencode.json 的 mcp.edk2-kb 配置,然后启动 OpenCode。
4. 手动管理 daemon(可选)
npx edk2-opencode daemon start # 启动知识库 daemon
npx edk2-opencode daemon status # 查看状态
npx edk2-opencode daemon restart # 重启
npx edk2-opencode daemon stop # 停止
npx edk2-opencode daemon logs # 查看 supervisor 日志5. 直接搜索(可选)
npx edk2-opencode --search "PCD"
npx edk2-opencode --search "INF file syntax"命令说明
| 命令 | 说明 |
|------|------|
| --init-edk2-wiki | 全量初始化知识库 |
| --init-edk2-wiki --update | 增量更新知识库 |
| --status | 查看状态(认证 + 知识库 daemon) |
| --search <query> | 通过 daemon 搜索知识库 |
| daemon start\|stop\|restart\|status\|logs | 管理知识库 MCP daemon |
| --help | 显示帮助 |
| --version | 显示版本 |
检索结果格式
{
"results": [
{
"score": 0.95,
"source": "tianocore-wiki",
"source_display": "TianoCore Wiki (官网)",
"title": "PCD Usage",
"url": "https://...",
"snippet": "..."
},
{
"score": 0.89,
"source": "tianocore-docs",
"source_display": "tianocore-docs (仓库)",
"file": "specs/pcd.md",
"snippet": "..."
}
]
}内置 Skills
edk2-pr-workflow
生产级 EDK II PR 自动化工具,支持:
- 从 Issue 创建 PR
- 从 Review 评论更新代码
- 加载官方 PR 模板
- 英文标题验证
- PatchCheck 合规验证
使用:
从 Issue https://github.com/tianocore/edk2/issues/12766 创建一个 PRovmf-build
OVMF 和 EmulatorPkg 编译运行工具:
- 自动安装 QEMU
- 克隆 EDK2 仓库
- 编译 OvmfPkgX64 / EmulatorPkg
- 运行虚拟固件
使用:
编译 OVMF 固件并在 QEMU 中运行数据源
TianoCore Wiki
- 来源:https://www.tianocore.org/tianocore-wiki.github.io/
- 存储:
~/.edk2-opencode/kb/data/tianocore-wiki/ - 类型:离线 HTML 缓存
tianocore-docs
- 来源:https://github.com/tianocore-docs (全部 33 个仓库,含 Docs、各 EDK II 规范、Training、SecurityAdvisory 等)
- 存储:
~/.edk2-opencode/kb/data/tianocore-docs/repos/ - 类型:Git 仓库克隆(多仓库同步)
ChromaDB 索引
- 存储:
~/.edk2-opencode/kb/data/chroma_db/ - 类型:向量索引文件(daemon 常驻内存)
项目结构
edk2-opencode/
├── bin/
│ └── edk2-opencode.js # CLI 入口(含 daemon 子命令)
├── lib/
│ └── daemon.js # Node daemon 管理器
├── edk2-kb/
│ ├── mcp_server.py # FastMCP HTTP daemon
│ ├── daemon_runner.py # watchdog 守护进程(崩溃自愈)
│ ├── search_engine.py # 可复用搜索引擎(懒加载 + 线程安全)
│ ├── embedded_search.py # CLI 兼容包装
│ ├── fetchers/
│ │ └── init_kb.py # 知识库初始化脚本(含全部 tianocore-docs 仓库)
│ └── requirements.txt # Python 依赖
├── .opencode/skills/
│ ├── edk2-pr-workflow/ # PR 自动化 Skill
│ └── ovmf-build/ # OVMF 编译 Skill
├── opencode.json # 配置文件(CLI 运行时写入 mcp 配置)
├── AGENTS.md # Agent 指令
└── package.json运行期文件(用户目录):
~/.edk2-opencode/
├── auth.json # GitHub 认证
└── kb/
├── data/ # 文档 + ChromaDB 索引
├── daemon.json # daemon 状态(端口/PID/端点)
├── daemon.pid # watchdog PID
├── daemon.stop # 停止标记
├── venv/ # Python 虚拟环境
└── logs/ # supervisor/server 日志系统要求
- Node.js: >= 18.0.0
- Python: >= 3.8
- 操作系统: Windows / Linux / macOS
- 磁盘空间: 约 2GB(文档 + 向量索引)
架构演进
v3.x 多进程 HTTP MCP(旧 - 有问题)
用户 → OpenCode → HTTP (9876固定端口) → Python MCP Server → ChromaDB/WeKnora问题:端口冲突、请求超时、进程崩溃、启动慢、RPC 复杂、WeKnora 不稳定
v5.x 嵌入式(中间方案)
用户 → OpenCode → Node→Python 每请求子进程 → ChromaDB问题:每次搜索都启动 Python 进程,延迟高;无 MCP 标准协议
v6.0.0 MCP Daemon(当前)
用户 → OpenCode → MCP (HTTP, 动态端口) → FastMCP server → ChromaDB(常驻)优势:动态端口无冲突、索引常驻低延迟、watchdog 崩溃自愈、秒级启动、 标准 MCP 协议、多实例共享单一 daemon、仅 ChromaDB 稳定可靠
许可证
MIT License
