mcpField
C
Cortex RMCP

Cortex RMCP

本地服务
github.com数据与分析44 周前更新

关于 Cortex RMCP

Cortex 是面向家庭实验室和小型私有设备群的可自托管日志分析服务,通过 SQLite 和 FTS5 汇集多类运行证据。它将日志、设备状态和 AI 会话关联为时间线与事件,并提供 MCP、CLI、REST 和浏览器工作区。

主要功能

  1. 01采集 Syslog、Docker 与 OpenTelemetry 数据
  2. 02SQLite 存储与 FTS5 全文搜索
  3. 03跨来源关联、时间线与事件分析
  4. 04设备清单和拓扑图
  5. 05索引 AI 会话及相关事件
  6. 06提供 CLI、REST 和浏览器工作区

适用场景

  1. 01搜索并调查家庭实验室的日志
  2. 02关联日志、设备状态和服务拓扑
  3. 03检查 AI 编码会话及工具事件
  4. 04通过时间线分析运行故障

MCP 相关

通过 MCP 提供操作查询工具、提示词和资源,并支持 MCP Apps 搜索组件。可连接本地数据库的 stdio 模式,或连接常驻服务的 Streamable HTTP 模式。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"ai-dinglebear-cortex": {
"command": "npx",
"args": [
"-y",
"@dinglebear/cortex"
],
"env": {
"CORTEX_HOME": "<CORTEX_HOME>",
"CORTEX_TOKEN": "<CORTEX_TOKEN>",
"CORTEX_API_TOKEN": "<CORTEX_API_TOKEN>",
"CORTEX_RMCP_VERSION": "<CORTEX_RMCP_VERSION>",
"CORTEX_RMCP_REPO": "<CORTEX_RMCP_REPO>",
"CORTEX_RMCP_RELEASE_BASE_URL": "<CORTEX_RMCP_RELEASE_BASE_URL>",
"RUST_LOG": "<RUST_LOG>"
}
}
}
}
启动命令npx -y @dinglebear/cortex
需要配置的环境变量
CORTEX_HOMEOptional Cortex home directory containing configuration and local SQLite data.
CORTEX_TOKEN密钥Optional bearer token for Cortex MCP HTTP mode; also used by some shared configs.
CORTEX_API_TOKEN密钥Bearer token for Cortex REST API routes when running daemon/API mode.
CORTEX_RMCP_VERSIONOptional GitHub release tag override for the downloaded Cortex binary.
CORTEX_RMCP_REPOOptional GitHub owner/repo override for release asset downloads.
CORTEX_RMCP_RELEASE_BASE_URLOptional release download base URL override.
RUST_LOGTracing filter for Cortex logs.

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@dinglebear/cortex3.13.2

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Cortex

CI Release npm crates.io License: AGPL-3.0-only

通过 MCP、CLI 和 REST 提供可自托管的家庭实验室日志智能分析,并使用 SQLite/FTS。

它收集日志和运维证据,将其存储在启用 FTS5 搜索的 SQLite 中,并通过 CLI、REST、MCP 和内置浏览器工作区提供统一的智能分析层。

Cortex 最初是一个 syslog 接收器。如今,它涵盖网络日志、Docker、托管文件、OpenTelemetry 日志、指标和追踪、主机心跳、设备群清单、Shell 和 Agent 活动,以及 Claude、Codex、Gemini CLI 和 Antigravity 的对话记录。它会将这些来源关联起来,生成时间线、事件和有证据支撑的拓扑图,同时不让图成为第二个事实来源。

概览

领域Cortex 提供的功能
数据接入UDP/TCP syslog、OTLP/HTTP 日志、指标和追踪、Docker 日志和事件、托管文件跟踪、主机心跳、AI 对话记录、Shell 历史记录、Agent 命令记录和设备群清单
存储WAL 模式的 SQLite、FTS5 全文搜索、有界元数据、保留策略、存储预算、维护任务、检查点,以及 63 个顺序执行的架构迁移
调查搜索、筛选、上下文、时间线、模式、异常对比、跨来源关联、重复错误特征、确定性事件包和图谱说明
设备群智能分析SSH 和 API 清单收集器、主机状态、服务拓扑、容器和路由关系、经过脱敏的证据,以及可重建的图谱投影
AI 运维Claude、Codex、Gemini CLI 和 Antigravity 会话索引;提取各提供方公开的技能、MCP 和钩子事件;事件聚类;以及受保护的本地大模型评估
接口原生 CLI、一个按操作分派的 MCP 工具、经过身份验证的 REST API、MCP 提示词和资源、MCP Apps 搜索小组件,以及内置调查工作区
运维设置和修复、诊断、Compose 控制、备份、完整性检查、WAL 检查点、清理、更新工作流、Agent 和运行状况端点

重要

Cortex 面向可信的家庭实验室或小型私有设备群。它不是集群日志仓库、通用 SIEM,也不适合在公共互联网上暴露未经过身份验证的管理界面。

目录

快速开始

安装 CLI

首选的引导式流程是:

npx skills add dinglebear-ai/cortex --skill install-cortex

启动一个新的 Agent 任务并调用 $install-cortex。它会选择服务端或仅客户端角色,将任务委派给标准安装/设置引擎,配置身份验证、网络和存储,并验证客户端的实时连接。

npm 启动器仍然是本地 CLI 和 stdio MCP 使用场景中最快的手动方式:

npx -y @dinglebear/cortex --help
npx -y @dinglebear/cortex mcp

使用以下命令永久安装:

npm install --global @dinglebear/cortex
cortex --version

启动器需要 Node.js 18 或更高版本。它会下载经过校验和验证的原生发布二进制文件,适用于 Linux x64、Linux ARM64、macOS ARM64 或 Windows x64。

使用当前稳定版 Rust 工具链从源代码构建:

git clone https://github.com/dinglebear-ai/cortex.git
cd cortex
mise install       # optional, but pins the repository tools
just build
./.cache/cargo/debug/cortex --version
启动本地服务

完整守护进程会启动 UDP 和 TCP syslog 接收器以及共享 HTTP 服务。请使用独立的 MCP 和 REST 令牌:

mkdir -p "$HOME/.cortex/data"
export CORTEX_DB_PATH="$HOME/.cortex/data/cortex.db"
export CORTEX_TOKEN="$(openssl rand -hex 32)"
export CORTEX_API_TOKEN="$(openssl rand -hex 32)"

cortex serve mcp

默认值:

  • Syslog:UDP 和 TCP 使用 0.0.0.0:1514
  • HTTP:127.0.0.1:3100
  • MCP:http://127.0.0.1:3100/mcp
  • REST:http://127.0.0.1:3100/api/*
  • 调查工作区:http://127.0.0.1:3100/app

在另一个终端中验证:

curl -fsS http://127.0.0.1:3100/health
logger -n 127.0.0.1 -P 1514 --tcp "cortex quickstart from $(hostname)"

export CORTEX_API_TOKEN="the-same-api-token"
cortex tail --limit 10

对于受管理的本地部署,cortex setup repair 会创建或修复 Cortex 主目录、Compose 资源和数据路径,并补齐缺失的 64 字符 MCP 和 REST 令牌,而不会替换现有令牌值。

连接 MCP 客户端

仅查询的 stdio 模式会读取已配置的本地数据库,且不会启动网络监听器:

{
  "mcpServers": {
    "cortex": {
      "command": "npx",
      "args": ["-y", "cortex-rmcp", "mcp"],
      "env": {
        "CORTEX_DB_PATH": "/absolute/path/to/cortex.db"
      }
    }
  }
}

Streamable HTTP 模式会连接到持久运行的守护进程:

{
  "mcpServers": {
    "cortex": {
      "url": "http://127.0.0.1:3100/mcp",
      "headers": {
        "Authorization": "Bearer your-cortex-token"
      }
    }
  }
}

一个实用的首次调用是:

{"action":"status"}

然后,使用更广泛的分析操作之前,可通过 tail、errors、search、timeline 或 context 缩小调查范围。

Cortex 的构建方式

Cortex 是一个具备多种运行模式的 Rust 二进制文件。同一个应用和服务层为 CLI、REST 处理程序和 MCP 处理程序提供支持,因此验证、限制、身份解析、脱敏和业务规则并不专属于某一种传输方式。

                         INGESTION

  Syslog UDP/TCP       OTLP signals       Docker agent / pull
  Managed file tails  Heartbeats         Claude / Codex / Gemini / Antigravity
  Shell history       Agent commands     Fleet inventory
          \               |                    /
           \              |                   /
            +---- bounded parsing and enrichment ----+
                              |
                    scrub, normalize, batch
                              |
                    SQLite WAL + FTS5
                              |
             +----------------+----------------+
             |                                 |
    authoritative records             derived accelerators
    logs, heartbeats,                 rollups, signatures,
    inventory, sessions              graph projections
             |                                 |
             +----------------+----------------+
                              |
                     shared service layer
                              |
          CLI       REST       MCP       Web workspace

守护进程通过协作式取消来监管接收器和后台服务。关闭时会排空 HTTP 请求,给维护任务 10 秒完成,之后执行中止并等待;给摄取流程 5 秒进行刷新,然后尝试执行 WAL 检查点。已经运行的阻塞式 SQLite 调用无法由 Tokio 取消。

后台服务包括:

  • 保留策略和存储预算的执行
  • WAL 和 FTS 维护
  • Docker 摄取监管
  • 文件尾随监管
  • 错误签名扫描
  • 通知评估、分发和摘要调度
  • 清单刷新和回填
  • 图投影刷新
  • AI 会话和时间线汇总
  • 数据库优化和维护作业

繁重的分析读取和维护作业采用独立的并发控制,避免某项高开销调查耗尽摄取路径的资源。

数据摄取

所有类似日志的来源都会规范化为相同的持久化日志模型,在确保安全的情况下进行丰富处理,按配置进行清理,并通过有界批处理路径写入。

通过 UDP 和 TCP 使用 Syslog

Cortex 在同一个可配置端口上监听 UDP 和 TCP Syslog。它会解析常见的 RFC 3164 和 RFC 5424 格式,保留原始帧,记录发送方身份,规范化严重性和设施,并丰富已知的应用程序格式。

相关默认值:

  • 绑定地址:0.0.0.0:1514
  • 最大消息大小:8 KiB
  • 最大并发 TCP 连接数:512
  • TCP 空闲超时:300 秒
  • 写入批次:100 条记录或 500 毫秒
  • 写入队列容量:10,000 条记录

Syslog 没有应用层身份验证。若监听器可从可信网络之外访问,请使用网络控制和 CORTEX_ALLOWED_SOURCE_CIDRS 限制发送方。

内置丰富处理可识别 AdGuard、Authelia、Docker 生命周期事件、fail2ban、Linux 内核和 OOM 事件、SWAG、反向代理日志,以及主机本地 Cortex Docker Agent 元数据中的有用信号。来源门控可限制丰富处理对未经过身份验证的 syslog 正文中标记的信任。

OpenTelemetry 接入

Cortex 会在共享 HTTP 监听器上接受 protobuf OTLP/HTTP 导出请求。日志使用 POST /v1/logs,请求体上限为 4 MiB,并流经常规写入器。指标使用 POST /v1/metrics,追踪使用 POST /v1/traces;二者的请求体上限均为 8 MiB,并使用专用存储。指标请求最多允许 5,000 个数据点,并且还会限制规范化后的负载大小。

当前 OTLP 支持范围有意保持精简:

  • 支持通过 HTTP/protobuf 传输日志、追踪和指标。
  • 尚未实现 OTLP/gRPC。

这三个 OTLP 端点都使用 CORTEX_TOKEN 进行身份验证——与保护 POST /mcp 的静态 MCP bearer 令牌相同;在已部署的主机上,该令牌从 ~/.cortex/.env 读取。它不是 CORTEX_API_TOKEN(REST /api/*),也不是 CORTEX_API_ADMIN_TOKEN。回环和可信网关策略会跳过此检查。仅使用 OAuth 且未设置静态令牌的部署会直接拒绝 OTLP,因为机器导出器没有 OAuth 流程。因此,除非设置了 CORTEX_TOKEN,否则启动时会拒绝非回环的仅 OAuth OTLP 暴露配置。

Docker 日志和事件

Cortex 支持两种 Docker 采集方式:

  1. 主机本地 Agent,多主机环境下的首选方式。主机本地的 cortex agent 会读取本地 Docker socket,将日志和生命周期事件转换为有界记录,并转发到服务端,而无需更改 Docker 的守护进程日志驱动程序。
  2. 中央拉取兼容模式,一种可选的服务端采集器,可用于显式配置的 Docker Engine 或 docker-socket-proxy HTTP 端点。它会记录每个容器的检查点,并通过有界指数退避机制重新连接。

中央拉取默认处于禁用状态。CORTEX_DOCKER_HOSTS 简写会将主机扩展为不安全的 http://host:2375 端点,因此只应在严格受控的专用网络上使用。主机文件支持显式指定基础 URL 和更安全的端点配置。

受管文件尾随

受管文件尾随源会持久化在注册表中,并由守护进程负责监管。可通过 CLI、REST 或 file_tails MCP 管理操作添加、移除、列出和检查源。

路径策略会拒绝不安全的目标,包括配置根目录之外的路径、符号链接逃逸、非普通文件和敏感挂载。容器部署会显式提供只读文件尾随根目录,而非整个主机文件系统。

主机心跳

主机 Agent 可以向 POST /v1/heartbeats 发送有界 JSON 快照。心跳包含主机状态信息,例如负载、内存、磁盘、网络、进程和容器摘要。这些信息为 host_state、fleet_state 和 correlate_state 提供支持。

心跳请求体上限为 256 KiB。心跳数据采用较短的运维保留期限,与主要日志保留策略分开。

AI 转录记录

Cortex 会索引本地和转发的转录数据,来源包括:

  • ~/.claude/projects 下的 Claude Code 项目
  • ~/.codex/sessions 和 ~/.codex/worktrees 下的 Codex 会话和工作树
  • ~/.gemini/tmp 下的 Gemini CLI 聊天数据
  • ~/.gemini/antigravity/brain/<session>/.system_generated/logs/transcript.jsonl 下的 Antigravity 桌面版脱敏转录投影
  • ~/.gemini/antigravity-cli/brain/<session>/.system_generated/logs/transcript.jsonl 下的 Antigravity CLI 脱敏转录投影

Antigravity 适配器只读取上述范围有限的脱敏 JSONL 投影,不会扫描对话数据库或其他 brain 产物。扫描器支持增量检查点、解析错误记录、有界数据块、宽泛路径拒绝,以及对已更改文件的安全恢复。它会提取规范化的转录行,以及专用的技能、MCP 工具调用和钩子事件(前提是提供方架构中包含相应通道),并如实报告不支持的通道。

卫星 Agent 可以将已解析的记录发送到 POST /v1/ai-transcripts,这样转录采集就不必依赖于 AI 客户端所在主机上的数据库。

Shell 和 Agent 活动

卫星 Agent 可以向共享服务器转发其他运行证据:

  • POST /v1/agent-commands 用于去重后的 Agent 命令暂存记录
  • POST /v1/shell-history 用于解析后的 Bash、Zsh 扩展历史记录和 Atuin 记录

这些记录采用与 Cortex 其余部分相同的存储和关联模型,因此,Agent 变更或 Shell 命令会与随后发生的服务故障并列显示。

设备群清单

清单收集会根据本地文件、SSH 探测、Docker 端点和可选服务 API,构建经过脱敏的设备群快照,然后将安全的关系投影到调查图谱中。

调查和情报

Cortex 提供范围受限的工作流,而不是原始 SQL 控制台。

搜索和上下文
  • FTS5 全文搜索,支持按主机、应用、严重性、来源、项目、会话和时间筛选
  • 仅针对索引字段的结构化筛选检索
  • 最新记录尾部和单行检索,附带原始帧证据
  • 某个日志 ID 或时间戳附近的上下文
  • 主机、应用和源 IP 清单
  • 使用事件时间戳和接收时间戳测量时钟偏差
时间和容量分析
  • 分桶时间线
  • 接收速率和队列压力状态
  • 近重复消息模式聚类
  • 与基线相比的近期异常检测
  • 并排比较时间范围
  • 静默主机和静默数据流检测
  • 数据库、存储和运行时统计信息
关联
  • 围绕某个时间戳进行跨主机关联
  • 将 AI 会话锚点与基础设施日志关联
  • 在构建时间线前,通过实体图谱解析主题
  • 跨日志、心跳和清单进行主机状态关联
  • 使用 FTS5 查找历史事件相似项
  • 附带范围受限证据的确定性事件上下文包
重复错误

可选的后台扫描器会将重复出现的错误签名归组为持久化记录。运维人员可以检查尚未处理的签名、确认签名、撤销确认,并将签名与日志和图谱证据关联。

错误检测默认处于禁用状态。启用后,它会扫描范围受限的批次,不会为较低严重性的重复错误触发告警,并且只有达到配置的严重性下限时才会发送通知。

设备群清单和图谱

清单收集器

原生清单子系统可以收集并规范化以下来源的证据:

  • 本地和远程 Compose、反向代理及 AdGuard Home 配置
  • 本地进程、存储、项目和原始配置清单
  • 到远程设备群主机的 SSH 会话
  • 本地和远程 Docker 端点
  • Tailscale
  • UniFi
  • Unraid
  • 媒体栈服务及相关 API

SSH 收集采用严格的主机密钥验证、有限并发、超时和重试退避策略。敏感字段会在持久化前进行脱敏。

缓存默认位于 ~/.cortex/inventory,其中包括:

  • normalized/homelab.json:类型化的规范设备群快照
  • collection-state.json:收集器健康状态、耗时和警告状态
  • raw/<run-id>/...:原始但经过脱敏的辅助材料

map 操作会读取规范化缓存,不会触发收集,也不会返回原始配置正文或包含凭据的 URL。

派生调查图谱

该图谱连接以下规范实体:

  • 主机和源身份
  • 逻辑服务和具体服务实例
  • 应用和容器
  • 域名、路由和端点
  • AI 项目和会话
  • 错误特征和运维发现

关系包含置信度、信任度、原因代码、时间戳和有界证据引用。该图谱支持实体解析、邻域查询、拓扑问题、证据查找和解释路径。

该图谱是可重建的投影。原始日志、心跳、资产记录、错误特征和 AI 会话数据仍是权威数据源。重建投影时会使用暂存表,并执行一次短暂的串行化切换,同时记录水位线和指标;若刷新失败,则保留明确的降级状态。

AI 会话智能

Cortex 将 AI 转录内容视为运维证据,而不只是聊天存档。

确定性会话分析

共享服务层可以:

  • 按项目列出并搜索会话
  • 按五小时使用时段衡量活动
  • 汇总项目上下文
  • 列出观察到的工具和项目
  • 检测挫折或滥用信号
  • 将这些信号归类为带评分的事件
  • 将 AI 活动与非 AI 基础设施日志关联起来
  • 提取技能调用
  • 提取 MCP 服务和工具调用事件
  • 提取钩子配置和运行时事件
  • 构建以技能、MCP 和钩子为首的调查资料包

确定性查询和事件工作流可通过 CLI、REST 和 MCP 使用。

受控的本地评估

基于 LLM 的评估刻意限制为仅在本地运行。它们通过 cortex assess 执行,不会作为 MCP 操作或 REST 路由公开,因为它们会生成本地提供方子进程。

CORTEX_LLM 为所有 LLM 操作选择提供方和可选模型:包括技能、MCP、钩子和滥用评估,以及试运行审计元数据。设置 CORTEX_LLM=codex(默认值,使用 Codex app-server)或 CORTEX_LLM=gemini(Gemini CLI)。要全局固定模型,请使用 CORTEX_LLM=codex/gpt-5.5 或 CORTEX_LLM=gemini/gemini-3.1-flash-lite-preview。如果 CORTEX_LLM 中指定了显式模型,则优先于 --model;否则,现有标志可为单次调用选择模型。选择器为空或不受支持时会失败,不会回退到其他提供方。

该选择器也适用于受管理的 ~/.cortex/.env;进程环境变量优先。配置加载后会保留设置。

旧变量 CORTEX_CODEX_MODEL 和 CORTEX_HEADLESS_GEMINI_MODEL 会被忽略。命令和认证主目录的覆盖项仍属于安装设置,而非提供方选择器。--no-llm 无需提供方配置或凭据。

共享 LLM 运行器会强制执行:

  • 全局熔断开关
  • 全局和按操作划分的并发限制
  • 按分钟和按小时的速率限制
  • 按操作划分的熔断器和冷却时间
  • 调用超时
  • 提示词和输出字节上限
  • 默认禁用的显式后台增强开关
  • 成功、失败、超时和策略拒绝的持久化审计记录

默认防护值允许同时执行 1 次调用;每项操作每分钟 3 次、每小时 30 次;超时时间为 120 秒;提示词上限为 1 MiB,输出上限为 256 KiB。

默认启用提示词清理。技能、MCP 和钩子事件的提取会在经过清理的转录文本持久化之前进行,因此无需存储原始提示词即可保留结构化运维信号。

警报和通知

通知为可选功能,默认禁用。启用后,Cortex 使用 Apprise 作为发送桥接,并使用持久化的 SQLite 待发箱进行重试、去重和死信处理。

内置评估器涵盖:

  • OOM 终止
  • 容器以非零状态退出
  • fail2ban 封禁
  • Authelia MFA 失败
  • 磁盘填满和存储护栏压力
  • 采集队列压力
  • 采集完全静默
  • 心跳静默
  • 此前活跃的持续流静默

通知子系统包括:

  • 可配置的评估器运行周期
  • 按规则启用或禁用及设置阈值
  • 去重时间窗口
  • 按故障期间划分的静默键
  • 有界重试和死信状态
  • 最近触发历史记录
  • 测试通知
  • 定时每日摘要

默认情况下,持续流静默跟踪涵盖 UDP/TCP syslog、Agent Docker、Docker 流和事件记录,以及受管文件尾随。转录和 shell 历史等零星来源会有意排除。

接口

CLI

运行 cortex --help 和各命令的 --help,查看生成的命令树。

分组用途
search、filter、tail日志检索
hosts、apps、entity、graph发现和拓扑
analysis、correlate、state、stats、timeline调查和分析
sessions、assessAI 会话查询和本地受保护的评估
alerts错误特征、确认和通知历史
ingest、heartbeat采集器、Agent、文件尾随、清单和心跳
serve、mcp完整守护进程和仅查询的 stdio MCP 模式
doctor、status、db、compose诊断和维护
setup、update、config、completions生命周期和运维工具

示例:

cortex search "oom killer" --host devhost --since 1h
cortex filter --severity err --since 6h
cortex timeline --since 24h
cortex sessions search "migration failure"
cortex graph explain --help
cortex alerts errors list
cortex ingest inventory refresh --json
cortex ingest filetail list
cortex status
cortex doctor

CLI 支持直接/本地运行和 HTTP 运行。REST 后端模式是常规远程路径,使用 CORTEX_URL 和 CORTEX_API_TOKEN。

MCP

Cortex 提供一个名为 cortex 的 MCP 工具。必填的 action 字段从唯一权威的 Rust 注册表中选择一个操作。通过机械生成的当前数量已发布在实时覆盖率清单中。

当前范围划分如下:

  • 53 个需要 cortex:read 的读取操作
  • 6 个需要 cortex:admin 的管理操作:artifact_evidence_record、ack_error、unack_error、file_tails、notifications_test 和 llm_invocations
  • 1 个信息类操作 help;挂载身份验证时需要经过身份验证的上下文,但不需要读取/管理范围
完整 MCP 操作目录
领域操作
日志检索search、filter、tail、errors、get、context
发现和运行状况hosts、apps、source_ips、status、stats、ingest_rate、silent_hosts、clock_skew
分析和关联timeline、patterns、anomalies、compare、correlate、topic_correlate、similar_incidents、recurring_error_comparison、incident_context
集群和拓扑map、host_state、fleet_state、correlate_state、graph、compose_status、compose_doctor
AI 会话和限定范围的证据sessions、search_sessions、session_investigate、evidence_scope、abuse、abuse_incidents、abuse_investigate、ai_correlate、usage_blocks、project_context、list_ai_tools、list_ai_projects
AI 运维事件skill_events、skill_incidents、skill_investigate、mcp_events、mcp_incidents、mcp_investigate、hook_events、hook_incidents、hook_investigate
错误和管理unaddressed_errors、ack_error、unack_error、notifications_recent、notifications_test、file_tails、llm_invocations、artifact_evidence_record
参考help

运行时架构包含各操作的标志、默认值、示例、相对成本元数据和验证规则。参数参考请参阅 docs/mcp/SCHEMA.md。

MCP 提示词

Cortex 提供 12 个可复用的基础设施提示词:

  • infra.incident-triage
  • infra.host-health
  • infra.service-outage
  • infra.security-auth-review
  • infra.noise-reduction
  • infra.agent-change-correlation
  • infra.docker-container-regression
  • infra.network-dns-failure
  • infra.storage-pressure
  • infra.auth-bruteforce
  • infra.syslog-forwarding-gap
  • infra.after-deploy-check

参数和输出预期请参阅 docs/mcp/PROMPTS.md。

MCP 资源和 UI

MCP 服务提供:

URI用途
cortex://schema/mcp-tool动态 JSON 架构,用于按操作分发的工具
cortex://schema/prompt-output结构化事件风格提示词输出的架构
ui://cortex/query-widget独立的 MCP Apps 搜索小组件

查询小组件属于渐进式增强。支持 UI 的 MCP 宿主可以渲染它;普通 MCP 客户端则会继续收到常规文本和结构化 JSON 结果。

REST

经过身份验证的 JSON 路由位于共享 HTTP 监听器下的 /api/*。这些路由涵盖与 MCP 相同的主要查询领域,并增加了用于会话检查点、解析错误、数据库完整性任务、备份、检查点和清理的操作员工作流。

版本化调查 API 位于 /api/v1/* 下,为内置浏览器工作区提供 Ask Cortex 以及图实体、邻域、说明和证据端点。

REST 需要 CORTEX_API_TOKEN。特权维护和文件尾部读取工作流也可能需要 CORTEX_API_ADMIN_TOKEN。

路由和响应参考请参阅 docs/api.md。

浏览器调查工作区

守护进程在 /app 和 /app/investigate 提供内置工作区。它包含:

  • 运行时和架构状态
  • 服务器集群和数据摄取摘要
  • Ask Cortex 调查请求
  • 交互式 Cytoscape 图画布
  • 证据检查
  • 最近日志时间线

该应用嵌入 Rust 二进制文件中,无外部运行时依赖,采用严格的内容安全策略,并且仅在内存中保存输入的 REST bearer token。当前 UI 将自身定位为调查预览,而非通用的完整仪表板。

Claude Code 插件

.claude-plugin/plugin.json 将 Cortex 打包为 Claude Code 插件。它声明了恰好三个界面以及配置:

键指向
mcpServersplugins/cortex/mcp.json — 使用 ${user_config.server_url}/mcp 的 HTTP 传输,并带有 Bearer ${user_config.api_token} 标头
skillsplugins/cortex/skills/ — 12 个技能
userConfig服务端与客户端模式、server_url、api_token、身份验证模式和 OAuth 字段、syslog/MCP 绑定主机和端口、保留和存储预算、Docker 数据摄取以及服务器集群主机

这 12 个技能分别是 cortex、frustration-assessment、hook-friction-assessment、incidents、logs、mcp-friction-assessment、report、searching-sessions、skill-improvement-assessment、topology、troubleshoot 和 version-check。

该插件不注册任何 Claude Code 生命周期钩子——没有 hooks 键,也没有 hooks.json。设置需要显式执行:安装、升级或重新配置后,运行 cortex setup pluginhook(或使用 plugins/cortex/scripts/plugin-setup.sh 适配器)。just validate-plugin 和 scripts/validate-marketplace.sh 会断言 hooks 键始终不存在,而 cargo xtask check-version-sync 会断言清单中没有顶层 version。

设置生命周期请参阅 docs/plugin/HOOKS.md,清单参考请参阅 docs/plugin/PLUGINS.md。

健康检查端点
  • GET /health:为容器和代理提供精简的、未经身份验证的存活状态响应
  • GET /health/full:详细的健康状况和数据摄取可观测性;挂载的身份验证需要 CORTEX_TOKEN(仅使用 OAuth 不足以通过验证)。显式环回和可信网关策略会绕过此检查。

配置

macOS 心跳 Agent 快速入门

从已登录的桌面会话中:

cortex setup heartbeatagent install
cortex setup heartbeatagent check

请先设置 CORTEX_HEARTBEAT_TARGET 和摄取凭据。 CORTEX_API_TOKEN 仅可用于查询,不能用于 Agent 摄取身份验证。有关功能、路径、 登录语义、迁移、恢复、移除和交付证明,请参阅权威的 macOS 心跳 Agent 运维契约。

Cortex 按以下顺序加载配置,后加载的层级优先:

  1. 内置默认值
  2. 当前工作目录中的部分 config.toml
  3. 受管理的 $CORTEX_HOME/.env 文件,通常为 ~/.cortex/.env
  4. 进程环境变量
重要默认值
设置默认值
Syslog 绑定地址0.0.0.0:1514,UDP 和 TCP
HTTP 绑定地址127.0.0.1:3100
数据库路径/data/cortex.db,除非由设置或环境变量覆盖
SQLite 连接池大小8 个连接
SQLite 页面缓存预算总计 128 MiB
SQLite mmap 目标256 MiB
高负载读取并发数1
WAL 检查点阈值256 MiB
日志保留期90 天
逻辑数据库上限1,024 MiB
恢复阈值900 MiB;上限大幅提高时会自动调整
清理间隔60 秒
通知已禁用
重复错误扫描器已禁用
集中式 Docker 拉取已禁用
提示词清理已启用
后台大模型增强已禁用

常用环境变量包括:

变量用途
CORTEX_HOME受管理的配置和运维主目录
CORTEX_DB_PATHSQLite 数据库路径
CORTEX_RECEIVER_HOST、CORTEX_RECEIVER_PORTSyslog 监听器
CORTEX_ALLOWED_SOURCE_CIDRS可选的 Syslog 发送方允许列表
CORTEX_HOST、CORTEX_PORT共享 HTTP 监听器
CORTEX_TOKENMCP、OTLP、心跳和转发使用的静态令牌 bearer token
CORTEX_API_TOKENREST bearer token
CORTEX_API_ADMIN_TOKEN必要时使用的额外 REST 管理员令牌
CORTEX_AUTH_MODE静态令牌或 OAuth 身份验证模式
CORTEX_PUBLIC_URL用于 OAuth 和暴露验证的公共 URL
CORTEX_ALLOWED_HOSTS、CORTEX_ALLOWED_ORIGINSHost 标头和 CORS 策略
CORTEX_RETENTION_DAYS日志保留期
CORTEX_MAX_DB_SIZE_MB逻辑数据库存储预算
CORTEX_MIN_FREE_DISK_MB可选的外部可用空间写入保护
CORTEX_FILE_TAIL_ALLOWED_ROOTS受管理的文件尾读根目录允许列表
CORTEX_DOCKER_INGEST_ENABLED启用集中式 Docker 拉取兼容模式
CORTEX_SCRUB_PROMPTS尽力清除 AI 提示词中的凭据
CORTEX_NOTIFICATIONS_ENABLED启用通知服务
CORTEX_LLM共享的提供商/模型选择器:codex[/MODEL] 或 gemini[/MODEL];默认值为 codex
CORTEX_LLM_ENABLED本地评估全局紧急关闭开关
RUST_LOG跟踪过滤器

完整参考和验证规则请参阅 docs/CONFIG.md。

身份验证与信任边界

Cortex 有意区分传输凭据和功能权限。

MCP
  • CORTEX_TOKEN 用于验证静态令牌 HTTP MCP 调用。
  • 静态令牌调用方默认获得 cortex:read 权限。
  • 仅当该令牌也应获得 cortex:admin 权限时,才设置 CORTEX_STATIC_TOKEN_ADMIN=true。
  • OAuth 模式通过共享身份验证层支持显式的读取和管理员作用域。
  • 除非配置了明确的可信网关模式,否则会拒绝绑定到非回环地址且未启用身份验证的请求。
REST
  • CORTEX_API_TOKEN 与 CORTEX_TOKEN 分开。
  • 未设置 API 令牌时,REST 不会挂载。
  • 敏感的维护和文件尾读操作可能要求除常规 REST bearer token 外,还提供 CORTEX_API_ADMIN_TOKEN。
接收端点
  • Syslog 本身不进行身份验证。请使用 CIDR 和网络控制。
  • OTLP 日志、指标和追踪,以及心跳、AI 逐字稿、Shell 历史记录和 Agent 命令转发,在配置后会使用 Cortex bearer token 策略。
  • 未经身份验证的转发端点仅限回环访问,除非运维人员明确建立了其他受信任边界。
数据处理
  • 默认启用 AI 提示词清理。
  • 清单在进入规范化缓存前会进行脱敏。
  • MCP 和 REST 返回有界的证据,而不是包含原始凭据的配置文件。
  • 文件尾部读取范围受配置的根目录限制,并会拒绝路径越界。
  • Docker 端点和 SSH 密钥被视为特权基础设施访问权限。
  • 容器示例挂载专用的最小权限 SSH 目录,而不是用户完整的 ~/.ssh。

在向回环地址或受信任网关之外公开 Cortex 之前,请阅读 docs/SECURITY.md、docs/GUARDRAILS.md 和 docs/OAUTH.md。

存储与维护

SQLite 模型

Cortex 使用 SQLite,并具备以下特性:

  • WAL 模式
  • 有界的 r2d2 连接池
  • FTS5 外部内容索引:使用 logs_fts 索引完整日志语料库,并使用仅包含逐字稿的 ai_logs_fts 投影索引消息文本及提供方范围,以便搜索 AI 会话
  • 面向常见筛选条件和时间线的覆盖索引与复合索引
  • 事务性批量写入
  • 持久化的源检查点和解析错误
  • 维护作业跟踪
  • 在线备份支持
  • 完整性检查、检查点和清理工作流

当前架构历史包含 63 个连续迁移。CI 根据 KNOWN_SCHEMA_VERSION 和迁移注册表计算此分母。迁移 63 添加了索引化设备归属信息,以及有界、可恢复的后台历史处理流程,同时保留原始身份验证和会话身份信息。迁移 60 引入了仅包含逐字稿的 ai_logs_fts 投影。迁移 61 使用提供方范围重建该派生索引,并添加仅供 AI 使用的 (timestamp, ai_tool) 索引,以便有时间范围限制的会话搜索能在 FTS 扫描常见词项之前推导出安全的 rowid 下限。在大型逐字稿历史记录中,这些一次性的派生索引重建可能会在填充索引期间持有启动写事务。后续逐字稿插入和删除会增量维护 ai_logs_fts,而全局 logs_fts 仍是完整语料库的搜索索引。服务端转发回执的重放期限为七天;删除其规范证据时,回执也会一并删除。发送端暂存区的保留时间更短且有明确上限:单个来源最多保留 1,024 条记录或 1 MiB,并淘汰超过一天的记录;整个暂存区最多保留 4,096 条记录或 4 MiB。淘汰时会删除原始负载,并保留待处理的间隙标记,以便仍能看到证据丢失情况。超过服务端回执期限后的重试会被视为一次新的接收尝试。

权威数据与派生数据

权威记录包括:

  • 规范化日志和原始帧
  • 主机和源身份
  • 逐字稿来源、检查点、导入和解析错误记录
  • 心跳和组件快照
  • 清单快照和采集器状态
  • 错误签名和确认事件
  • 技能、MCP 和钩子事件
  • 通知发件箱和触发历史
  • 大模型调用审计记录

派生加速数据包括:

  • AI 会话汇总
  • 每小时的时间线汇总
  • 清单统计信息
  • 流的最后出现状态
  • 实体图表及证据关系

派生数据可以根据权威证据刷新或重建。

存储保护措施

守护进程会按数据块实施保留策略和逻辑数据库容量限制。在失控增长损害主机之前,它可以进入写入阻止状态,并在达到恢复阈值后恢复运行。可选的最低可用磁盘空间保护措施可防范 Cortex 数据库之外的数据造成的磁盘压力,而不会仅仅因为其他应用占满文件系统就删除 Cortex 数据。

运维命令:

cortex db status
cortex db integrity
cortex db checkpoint
cortex db backup --help
cortex db vacuum --help

维护操作(包括同步和后台完整性检查)共用一个进程级单飞门控,并与重型读取查询分别限流。并发尝试会收到可重试的忙碌响应。

部署与分发

当前标识
工件当前标识
规范源代码仓库dinglebear-ai/cortex
原生二进制文件和 CLIcortex
npm 启动器@dinglebear/cortex
MCP Registry 服务名称ai.dinglebear/cortex
已发布的 OCI 镜像ghcr.io/dinglebear-ai/cortex:v<version>

源代码仓库及其已发布的工件均归 dinglebear-ai 组织所有。旧版 jmagar 命名空间已弃用:scripts/check-public-identity.sh 会在任何受跟踪文件重新引入该命名空间时导致构建失败;发布工作流则会从推送所用的同一组 REGISTRY/IMAGE_NAME 推导 MCP Registry OCI 标识符,因此两者不会再次出现不一致。

迁移前发布的容器镜像仍可通过旧版命名空间读取,以支持仍固定使用旧镜像的部署,但不会再向该命名空间推送新内容。

原生版本和 npm
  • 仓库提供 Linux x86_64、Linux aarch64、macOS arm64 和 Windows x86_64 发布工件。
  • npm 启动器支持 linux/x64、linux/arm64、darwin/arm64 和 win32/x64,并会验证发布校验和。
  • 源码构建使用 Rust edition 2024,以及 CI 中当前稳定版工具链。
Docker Compose

仓库包含:

  • 用于从检出代码本地构建的 docker-compose.yml
  • 用于已发布镜像的 docker-compose.prod.yml
  • 用于非 root Debian 运行时镜像的 config/Dockerfile

手动使用 Compose 部署时,需要一个名为 cortex 的外部 Docker 网络,除非由 DOCKER_NETWORK 覆盖:

docker network inspect cortex >/dev/null 2>&1 || docker network create cortex
cp .env.example .env
bash scripts/prepare-compose-dirs.sh
docker compose up -d
curl -fsS http://127.0.0.1:3100/health

预检会使用 Docker Compose 自带的解析器解析 /backups 绑定挂载,并以 0700 权限创建默认目录或 CORTEX_BACKUP_DIR 覆盖目录。Compose 配置为不会隐式创建此主机路径,以防止备份目录归 root 所有或权限过于宽松。

Compose 文件:

  • 通过 UDP/TCP 1514 发布 syslog
  • 默认将 HTTP 发布到主机回环地址
  • 将数据库持久化到稳定的命名卷或配置的绑定挂载中
  • 以非 root UID/GID 运行
  • 以只读方式挂载清单 SSH 凭据和工作区数据
  • 以只读方式挂载专用的文件尾部读取根目录
  • 默认内存限制为 2 GiB,可按主机配置
  • 包含健康检查和有界容器日志

如需托管式安装和修复:

cortex setup check
cortex setup repair
主机 Agent

Cortex 提供卫星采集的设置和运行时支持,包括:

  • 心跳 Agent
  • Docker 流 Agent
  • AI 会话监控服务和计时器
  • Shell 历史记录转发
  • Agent 命令转发
  • 补全和调试封装程序

使用 cortex setup --help、cortex ingest --help 和 cortex heartbeat --help 查看准确的平台专属命令树。

运维

常用运维命令:

# Health and diagnostics
cortex status
cortex doctor
cortex doctor binary

# Managed setup
cortex setup check
cortex setup repair

# Database operations
cortex db status
cortex db integrity
cortex db checkpoint
cortex db backup --help
cortex db vacuum --help

# Compose lifecycle
cortex compose status
cortex compose doctor
cortex compose pull
cortex compose up
cortex compose restart
cortex compose logs

# Collection and inventory
cortex ingest inventory status --json
cortex ingest inventory refresh --json
cortex ingest filetail list
cortex sessions doctor

# Updates and configuration
cortex update --help
cortex config list
cortex completions zsh

守护进程提供精简和完整的健康状态响应,记录数据库维护作业,报告投影和采集器降级情况,并通过 CLI、REST 和 MCP 展示摄取队列与写入阻止状态。

开发与验证

工具链

该仓库使用:

  • Rust edition 2024
  • mise 管理固定版本的开发工具
  • just 执行常见工作流
  • cargo-nextest 运行隔离的 Rust 测试套件
  • cargo-llvm-cov 生成覆盖率
  • cargo-deny 执行依赖策略
  • Lefthook 和 cargo xtask 执行本地发布和推送前检查
  • 自定义的、由 soldr 支持的 Rust 编译器包装器,用于加快本地和 CI 构建
常用命令
mise install
just dev
just build
just check
just lint
just fmt
just test
just test-doc
just coverage
just coverage-html
just test-live
just validate-plugin
cargo xtask pre-push

just test-live(也可以使用 just live-smoke)是标准的、失败时默认拒绝的拉取请求测试子集。它会在由本次运行管理的拓扑中测试真实 HTTP JSON-RPC、UDP 和 TCP syslog 接收、CLI/REST 行为、浏览器路由,以及受管理的文件尾随行为。运行 just live-mcp 可测试每个已注册的 MCP 操作;定时运行的聚合测试会组合所有权威所有者配置文件。专项配置文件见实时资格验证指南。Docker 收集有独立的 Agent 部署测试,以及用于中央拉取的模拟 Docker HTTP 固定装置。

CI 门禁包括:

  • 格式检查
  • 启用警告拒绝的 Clippy 检查
  • Nextest 和 doctest
  • 版本和发行版标识同步
  • MCP 集成
  • npm 启动器检查
  • 密钥扫描
  • cargo-deny
  • 覆盖率生成
  • 仓库模块大小策略

有关隔离 CI 与实时集群验证的划分,请参阅 tests/TEST_COVERAGE.md 和 docs/RELEASE.md。

文档

代码所维护的注册表和运行时架构是命令名称、操作、路由、作用域、默认值和验证规则的权威依据。人工编写的文档说明如何使用这些功能。

文档用途
AGENTS.md跨 Agent 的权威说明;Claude/Gemini 别名为符号链接
CONTRIBUTING.md检出、验证和贡献工作流
docs/README.md文档索引和权威性说明
docs/ADDING_SOURCES.md源/提供方扩展及覆盖语义
docs/repo/DOCUMENTATION.md文档归属和偏差预防
docs/SETUP.md安装和部署指南
docs/CONFIG.md完整配置参考
docs/CLI.mdCLI 参考
docs/api.mdREST API 参考
docs/architecture.md运行时和数据流架构
docs/mcp/SCHEMA.mdMCP 操作和参数架构
docs/mcp/PROMPTS.md提示词目录
docs/SECURITY.md汇总的信任模型
docs/OAUTH.mdOAuth 配置
docs/INVENTORY.md组件和功能面清单
docs/RELEASE.md发布和验证门禁
CHANGELOG.md发布历史

带日期的设计计划和会话日志用于记录工程历史,并非当前公共接口的权威依据。操作手册属于运维指南,除非明确标注为历史文档;请对照当前源代码和配置进行核实。

当前边界

Cortex 有意采用明确的设计取舍:

  • 它是单节点 SQLite 服务,而非分布式数据采集集群。
  • 支持通过 HTTP/protobuf 接收 OTLP 日志、指标和追踪数据。目前尚未实现 OTLP/gRPC。
  • Syslog 不会对发送方进行身份验证。网络和 CIDR 控制十分重要。
  • 图谱是推导出的证据,并非权威配置状态。
  • MCP 和 REST 提供有界操作,不支持任意 SQL 或未经审计的日志修改。
  • 基于 LLM 的评估仅在本地运行,且需要由操作员控制、针对 CORTEX_LLM 所选提供商安装的程序。
  • 集中式 Docker 拉取需要对 Docker 端点具有特权读取权限,且默认禁用。
  • 资产清单的质量取决于采集器访问权限、SSH 信任、可选 API 凭据以及缓存时效。
  • 随附的浏览器应用是调查工作区预览版,并非完整的监控仪表板。
  • Cortex 面向家庭实验室或小型可信设备群。面向互联网或多租户部署时,必须在二进制文件之外增加隔离和策略控制。

许可证

本项目中由 Dinglebear 创作的原始部分采用 AGPL-3.0-only 许可。对于需要 AGPL 之外许可条款的组织,可提供单独的商业许可。第三方材料仍遵循其原始许可证。请参阅 LICENSING.md。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。