shiwani42/Mike
GitHub: shiwani42/Mike
一个 Splunk 原生的机构记忆智能体,将 SOC 分析师的告警处置推理过程转化为可持久化、可查询的知识图谱,解决高级分析师离职导致的心智模型和上下文流失问题。
Stars: 0 | Forks: 0
# 机构记忆智能体 (`ima`)
一个 Splunk 原生的智能体,能够将 SOC 分析师的推理过程转化为可查询的机构知识图谱,并可通过 SPL、Python CLI 和 Model Context Protocol 服务器进行访问。
## 缘由
现有的 SIEM 工具只会捕获*事件*,但没有人去捕获*分析师的推理过程*。当高级 SOC 分析师离职时,他们的心智模型——哪些告警是由定时批处理作业产生的、哪些高管在国际旅行、哪些子网在进行授权的渗透测试——也随之被带走。`ima` 会监控分析师的决定及其原因,通过针对安全领域微调的 LLM 对这些决定进行聚类,并将生成的机构记忆作为 Splunk 内部的一等数据界面提供服务。
## 具体功能
```
analyst closes alert → ima asks "why?" (10-second prompt)
↓
annotation lands in KV Store (ima_annotations)
↓
| imabuild → clusters by (event_type, disposition)
and calls Foundation-Sec-1.1-8B
↓
structured knowledge entry in ima_knowledge
↓
new analyst asks → | imaquery question="finance Monday"
"what do we know → returns: "Finance batch job triggers failed-auth
about X?" bursts every Monday 6am." conf=1.0 ×3 evidence
```
## 快速开始(协作者 - 请先阅读此内容)
**前置条件**:Python 3.10+,在本地 `:8089` 端口运行的 [Splunk Enterprise](https://www.splunk.com/en_us/download/splunk-enterprise.html),用于本地 LLM 的 [Ollama](https://ollama.com)。
```
git clone
cd Splunk_agentic_ops
.\bootstrap.ps1 # Windows. macOS/Linux: ./bootstrap.sh
notepad .env # paste your SPLUNK_TOKEN (see below)
.\.venv\Scripts\Activate.ps1
ima auth check
ima kv init
ima demo seed --clear
ima knowledge build # ~3 min on CPU
ima knowledge query "finance"
```
获取 Splunk 身份验证 token:Splunk Web → **Settings → Tokens → New Token**。User:`admin`,audience:任意,expires:90 天以上。
引导脚本会创建 `.venv`,以可编辑模式安装 CLI,将 `.env.example` 复制为 `.env`,并在尚未安装的情况下拉取 Ollama 模型。
## 安装 Splunk 应用
CLI 是开发测试工具。Splunk 原生部署位于 `splunk_app/ima/`。有一个辅助脚本可以一步完成提权、复制和重启操作——打开 **Administrator** PowerShell,`cd` 进入该仓库,然后运行:
```
.\install_splunk_app.ps1
```
(如果你愿意,手动操作的等效命令为:`Copy-Item -Recurse -Force ".\splunk_app\ima" "C:\Program Files\Splunk\etc\apps\"; & "C:\Program Files\Splunk\bin\splunk.exe" restart`)
重启后,打开 Splunk Web → Apps → **Institutional Memory Agent** 查看仪表板,并直接尝试自定义搜索命令:
```
| imaquery question="finance"
| imaaboutasset asset="acct-prod-01"
| imaannotate alert_id="NOTABLE-2024-09-21" disposition="false_positive" `
reason="Finance batch job again, Monday 6am" `
asset="acct-prod-01" event_type="failed_auth_burst"
| imabuild
```
## 仓库布局
```
.
├── ima/ # Python CLI (dev tool)
│ ├── cli.py # Typer entrypoint
│ ├── config.py # .env loader
│ ├── splunk_client.py # splunk-sdk Service
│ ├── kvstore.py # KV Store helpers
│ ├── llm/foundation_sec.py # Ollama / Splunk-hosted client
│ └── commands/ # auth, kv, alerts, knowledge, demo
├── splunk_app/ima/ # Splunk app (production deployment surface)
│ ├── bin/ # 3 custom search commands
│ ├── default/ # collections, commands, transforms, dashboard XML
│ └── README.md
├── bootstrap.ps1 / bootstrap.sh # one-command collaborator setup
├── pyproject.toml # installs the `ima` console script
├── .env.example # config template; .env is gitignored
├── ARCHITECTURE.md # data model, design choices, why-not-SOAR
├── LICENSE # MIT
└── README.md # this file
```
## 将 IMA 暴露给外部 AI 智能体 (MCP)
同样的知识图谱也可作为 Model Context Protocol 工具使用,因此任何 MCP 客户端——Claude Desktop、SAIA Agent Mode、自定义智能体——都可以原生查询机构记忆。
暴露了四个工具:`query_knowledge(question)`、`record_annotation(alert_id, disposition, reason, ...)`、`list_recent_annotations(limit)`、`build_knowledge()`。
**作为 stdio 服务器运行**(适用于 Claude Desktop / IDE 客户端):
```
ima mcp serve
```
**作为 HTTP 运行**(适用于远程自主智能体):
```
ima mcp serve --http --port 8765
```
**Claude Desktop 配置** - 编辑 `%APPDATA%\Claude\claude_desktop_config.json` 并添加:
```
{
"mcpServers": {
"ima": {
"command": "C:\\Users\\shmishra\\Documents\\Splunk_agentic_ops\\Splunk_agentic_ops\\.venv\\Scripts\\python.exe",
"args": ["-m", "ima.cli", "mcp", "serve"]
}
}
}
```
重启 Claude Desktop;IMA 工具即可在任何对话中使用。询问智能体“SOC 对 acct-prod-01 了解多少?”,它就会为你调用 `query_knowledge`。
## 它如何使用 Splunk 的 AI 技术栈
| Splunk 界面 | `ima` 如何使用它 |
|---|---|
| **KV Store** | 三个集合——`ima_annotations`、`ima_knowledge`、`ima_assets`——在 `splunk_app/ima/default/collections.conf` 中声明,用作知识图谱的持久化层。 |
| **Custom Search Commands** (Python SDK 3.0) | `\| imaannotate`、`\| imabuild`、`\| imaquery`——一等 SPL 命令,因此任何保存的搜索、仪表板或分析师都可以触发 IMA。 |
| **Foundation-Sec-1.1-8B** | 抽取 prompt + JSON schema 指向 Splunk 托管的 Foundation-Sec 模型。本地开发在 Ollama 托管的 Llama-3.1-8B 替代品上运行(开发机上没有 GPU);只需修改一行 `.env` 即可切换到 Splunk 托管的端点。 |
| **Simple XML 仪表板** | `ima_overview.xml` 为 SOC 提供了一个统一面板:贡献者统计、处置分布、知识表格以及交互式的“询问智能体”输入框。 |
| **MCP Server** | 位于 `ima/mcp_server.py` 的独立 Python MCP 服务器暴露了四个工具(`query_knowledge`、`record_annotation`、`list_recent_annotations`、`build_knowledge`)。使用 `ima mcp serve` 运行——Claude Desktop、SAIA Agent Mode 以及任何 MCP 客户端都可以原生查询机构记忆。 |
有关完整的设计,请参阅 **[ARCHITECTURE.md](ARCHITECTURE.md)**。
## 为什么这不是一个 SOAR 剧本
SOAR 用于自动化*操作*——封禁此 IP,隔离此 endpoint。IMA 用于捕获和查询*推理过程*——*为什么高级分析师上个季度将此类告警作为误报关闭了?* 它们是互补的界面,而不是替代品。
## 作者
- **Shiwani Mishra**
- **Saurabh Gupta**
两人对设计和实现做出了同等贡献。
## 许可证
MIT - 请参阅 [LICENSE](LICENSE)。
标签:AI风险缓解, DLL 劫持, MCP, SOC分析, 大语言模型, 安全管理, 逆向工具