Domdrag123/datahub-context-capsule

GitHub: Domdrag123/datahub-context-capsule

该项目将 DataHub 实时元数据编译为有边界的 AI Agent 上下文包,并通过哈希隔离机制防御目录文本中的 prompt 注入风险。

Stars: 0 | Forks: 0

# DataHub Context Capsule DataHub Context Capsule 将实时的 DataHub 元数据转换为面向 AI agent 的、有边界且确定性的上下文包。它使用官方开源的 DataHub MCP server,拒绝变更工具,对完整的证据集进行哈希处理,并在类似指令的目录文本进入 agent prompt 之前将其隔离。 这是 DataHub Agent Hackathon **MCP Tools & Agents** 类别的一个参赛项目。它有意与 Lineage Sentinel(生产风险监控)和 DAG Forge(元数据感知的 Airflow 代码生成)区分开来。 ## 为什么它很重要 数据目录包含有用的 schema 和血缘事实,但其中的描述、标签、字段名和历史查询属于不受信任的输入。将这些材料直接复制到 AI agent 的上下文中会带来 prompt 注入和上下文溢出风险。Context Capsule 在目录和 agent 之间建立了一个基于证据寻址的边界。 ## DataHub 集成 实时模式通过 stdio 启动 `mcp-server-datahub@latest`,并需要以下官方只读工具: - `search` - `get_entities` - `list_schema_fields` - `get_lineage` - `get_dataset_queries` `TOOLS_IS_MUTATION_ENABLED=false` 在子环境中被强制启用。任何不受支持或变更工具都会在本地被拒绝。 ## 快速演示 需要 Python 3.11 或更高版本。 ``` python -m venv .venv ./.venv/Scripts/activate pip install -e . context-capsule --fixture demo/catalog.json --query customer --output output ``` 测试夹具的数据集描述中包含故意的 prompt 注入。生成的 Markdown 会将其替换为经过 SHA 寻址的隔离标记,同时保留有用的结构化元数据。 已提交的 [`examples/context-capsule.md`](examples/context-capsule.md) 和 [`examples/manifest.json`](examples/manifest.json) 展示了确切的安全 输出,且无需 DataHub 租户。 实时 DataHub MCP 用法: ``` set DATAHUB_GMS_URL=https://your-datahub.example/api/gms set DATAHUB_GMS_TOKEN=your-token context-capsule --query "customer revenue" --output output ``` 凭据由官方 MCP server 读取,且绝不会写入 capsule。 ## 安全属性 - 只读 MCP 允许列表及禁用变更的环境标志。 - 限制为五个实体、两跳、4 MB 证据,并具有可配置的字符限制。 - 针对缺失的有效 URN 或格式错误查询的 fail-closed(失败即关闭)行为。 - 带有单向哈希的 prompt 注入隔离,而不是直接回显恶意文本。 - 确定性的证据和上下文哈希,用于可重现的 agent 运行。 - 原始目录证据被特意排除在紧凑的输出清单之外。 ## 测试 ``` python -m unittest discover -s tests -v ``` 测试涵盖了注入隔离、确定性、预算截断、缺失搜索结果、变更拒绝以及输出最小化。 ## 许可证 Apache-2.0。
标签:AI代理, DataHub, Python, 上下文管理, 提示词注入防御, 数据目录, 无后门, 逆向工具