mcpField
K
knowing

knowing

本地服务
github.com/blackwell-systems开发工具244 周前更新

关于 knowing

knowing 是一个基于内容寻址图的代码智能引擎,为 AI Agent 提供按相关性排序的代码上下文。它将代码关系保存为与 git 提交绑定的 Merkle 树快照,并可生成离线验证的证明。适合需要上下文检索、影响分析和审计的开发与安全团队。

主要功能

  1. 01context_for_task 按预算返回排序后的相关符号
  2. 02blast_radius 分析修改可能影响的调用方与测试
  3. 03基于 Merkle 证明验证代码关系是否存在
  4. 04依据文件变更自动过期陈旧的图谱信息
  5. 05支持 MCP stdio 与 HTTP 两种传输方式

适用场景

  1. 01为编码 Agent 提供按任务排序的代码上下文
  2. 02修改函数前评估影响范围并选择需运行的测试
  3. 03生成代码依赖关系的审计证明

MCP 相关

该项目是一个 MCP 服务,向 MCP 客户端暴露 28 个工具,用于上下文检索、影响分析、测试范围和证明生成等操作。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"blackwell-systems-knowing": {
"command": "npx",
"args": [
"-y",
"@blackwell-systems/knowing"
]
}
}
}
启动命令npx -y @blackwell-systems/knowing

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

安装包
npm@blackwell-systems/knowing0.16.0

工具

还没有获取到工具列表

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

详细介绍

English · 简体中文 · Русский · हिन्दी · العربية

knowing

Blackwell Systems DOI MCP Tools Languages and Formats License


自适应代码智能引擎。它会观察自身的图密度,并自动调整检索策略。支持 38 种边类型、28 个 MCP 工具、263 个等价类和加密证明。规模越大,能力越强,而非越差。


说明

基于已发表的研究构建: 内容寻址:作为软件关系智能的计算原语(DOI:10.5281/zenodo.20342255)

你的架构图显示服务 A 调用服务 B。你能证明吗?

knowing 可以。 它会构建一个内容寻址图,其中包含提取出的代码关系;再将其快照为与 git 提交关联的 Merkle 树,并生成可离线验证的加密证明。Agent 使用它获取排序后的上下文。安全团队使用它进行审计。平台团队使用它将代码与生产跟踪记录进行比较。

每次使用都会变得更好。代码变更时,过时的知识会自动失效。

brew install blackwell-systems/tap/knowing
{ "mcpServers": { "knowing": { "command": "knowing", "args": ["mcp", "--watch"] } } }

就是这样。MCP 服务会在首次启动时自动为你的仓库建立索引。无需下载模型,也无需 API 密钥。你的 Agent 现在可以获取排序后的上下文、影响范围、测试范围,以及在活跃会话期间改善结果的隐式噪声降权。

验证是否正常运行: 向你的 Agent 提问:“使用 context_for_task 工具,查找与你代码中某个已知存在的内容相关的符号。” 你应该会看到来自代码库的排序符号、分数和文件路径。如果结果为空,说明仓库仍在建立索引(首次启动需 10-30 秒)。如果结果似乎不相关,请参阅故障排除。

没有使用 AI Agent? 请跳至下方的 CLI 用法。

你想要……从这里开始
为 AI Agent 提供基于图排序的上下文MCP 集成
从 CLI 探索图CLI 用法
了解检索的工作方式简介
使用加密证明进行审计审计与合规

三大功能,统一架构

knowing 是基于同一基础构建的三个产品(内容寻址图,采用分层 Merkle 树):

1. 面向 AI Agent 的上下文引擎 一次调用即可返回与任务最相关的符号,并根据图中心性、时效性和学习到的实用性排序,同时控制在你的 Token 预算内。263 个框架等价类可弥合词汇差异,弥补关键词搜索的不足。工具调用减少 47%。Token 减少 84%。结果会随着反馈不断改进。

2. 面向合规审计的基础组件 图的每个状态都是与 Git 提交关联的 Merkle 根。knowing prove 会生成证明某种关系曾经存在的加密证明。knowing verify 可离线验证。knowing fsck 可在 98ms 内验证整个图。供应链检测会提取凭据访问、进程生成和网络外传等边,从而标记结构上可疑的代码。

3. 会学习的噪声降权机制 Agent 返回但从未使用的符号,在后续查询中会被降权。代码更改时,反馈会自动过期(通过包 Merkle 根验证)。在活跃会话期间,系统会变得更加精准。这正是 knowing 围绕其构建的特性。

这些并非独立的功能。 它们都是内容寻址带来的结构性结果:让上下文可缓存的同一个哈希,也让它可验证;而检测过时内容的同一个 Merkle 根,也会使过时反馈过期。


它能解答什么问题

面向你的 Agent:

  • “我要修改这个函数,会影响什么?”(跨调用方、测试、路由和仓库的影响范围)
  • “为这个任务提供 50,000 个 Token 的上下文。”(按图排序,而非通过 grep 搜索)
  • “应该运行哪些测试?”(调用图遍历,精确率 98%)

面向你的平台团队:

  • “这个路由在生产环境中有人使用吗?”(静态分析 + OTel 运行时跟踪)
  • “特定快照中的服务图是什么样的?”(快照链,每个根都与一个 Git 提交关联)

面向你的安全团队:

  • “证明服务 A 在这个提交中调用了服务 B。”(Merkle 证明,可离线验证)
  • “证明这个依赖不存在。”(通过已排序叶节点提供不存在性证明)
  • “生成合规报告。”(knowing audit -proofs,一条命令即可完成)
  • “这个包会读取凭据并生成进程吗?”(knowing audit-supply-chain --scan-all)

数据

项目结果
跨系统检索P@10=0.330 冷启动(302 个任务,17 个仓库,8 种语言)
与竞品相比比 codegraph(19K 星)高 3.79 倍,比 GitNexus 高 6.00 倍,比 Gortex 高 6.35 倍,比 grep 高 22.0 倍
等价类277 个人工整理的类 + 根据使用情况学习得到的类,用于弥合词汇与符号之间的差异(P@10 提升 57%)
噪声降权按集群进行隐式反馈:召回率@10 提升 5.2%,MRR 提升 12.6%(Django,5 轮)
节省的工具调用减少 47%(一次上下文调用可替代反复 grep+read)
Token 节省减少 84% 的 Token(GCF 线格式)
重复查询速度快 93 倍(基于 Merkle 键的子图缓存)
Merkle 差异比较在 100K 条边时,比完整边扫描快 517 倍
测试范围精确率 98%,召回率 82%
图完整性检查98ms(24,936 条边)
证明生成生成耗时 72us,验证耗时 1.2us
反馈过期代码更改时 100% 过期,开销 11%
索引吞吐量约 60s 内处理 16 个仓库(8 种语言)
语言覆盖16/16 个仓库通过(Go、Python、TS、Rust、Java、C#、Ruby、多语言)
边类型38 种(包括供应链类型:reads_env、executes_process)

所有基准测试均可复现。跨系统基准测试(P@10=0.330)使用固定到确切提交的 17 个仓库,并提供语料清单和设置脚本,以便从头完整复现。有关协议详情,请参阅 METHODOLOGY.md。


快速开始

路径 A:MCP 服务(推荐用于 AI Agent)
# 1. Install
brew install blackwell-systems/tap/knowing
# Or: npm install -g @blackwell-systems/knowing
# Or: pip install knowing
# Or: go install github.com/blackwell-systems/knowing/cmd/knowing@latest

# 2. Add to your agent config (.mcp.json, Claude Code settings, etc.)
#    See "MCP Integration" below for the config block.
#    The server auto-indexes your repo on first launch. Done.
路径 B:CLI 用法(自行探索图)
# 1. Install (same as above)
brew install blackwell-systems/tap/knowing

# 2. Index your repo
knowing add .

# 3. Verify the index worked
knowing stats
# You should see node and edge counts. A healthy TypeScript repo with 50K LOC
# typically produces 2K-10K nodes and 5K-30K edges. If you see very few edges,
# the extractors may not have found your code (check language support below).

# 4. Get context for a task
knowing context -task "refactor auth middleware" -format gcf

# 5. Check graph integrity
knowing fsck
验证设置

索引完成后,运行以下命令确认一切正常:

# Show node/edge counts, repos, snapshots
knowing stats

# Search for a symbol you know exists in your code
knowing query "MyKnownFunction"

# Check graph integrity (should report 0 errors)
knowing fsck

# If results seem wrong, check if the graph is stale
knowing stale

如果 knowing stats 显示零个节点或边很少,请参阅下方的 故障排除。

更多 CLI 命令
# Find affected tests
knowing test-scope -files internal/auth/middleware.go

# Explain why a symbol ranked where it did
knowing why -task "refactor auth" -symbol "SessionHandler"

# Prove a relationship exists (cryptographic Merkle proof)
knowing prove -source "AuthService" -target "SessionStore"

# Verify offline (no database needed)
knowing verify proof.json

# Check if the graph is stale (CI gate: exits 1 if stale)
knowing stale

# Supply chain audit (scan all files for suspicious patterns)
knowing audit-supply-chain --scan-all

# Remove a repo (evicts all data: nodes, edges, snapshots, feedback)
knowing remove ./path/to/repo

完整的命令参考请参阅 CLI 参考。

MCP 集成

将 MCP 服务添加到你的 Agent。配置在所有地方都相同,只有文件路径不同。

Agent配置文件
Claude Code.mcp.json(项目根目录)或 ~/.claude/mcp.json(全局)
Cursor.cursor/mcp.json
Windsurf~/.codeium/windsurf/mcp_config.json
VS Code(Copilot、Continue、Cline、Roo).vscode/mcp.json
Zed~/.config/zed/settings.json 中的 "context_servers"
Codex(OpenAI)codex.json 或 --mcp-config 标志
JetBrainsSettings > Tools > MCP Servers
{
  "mcpServers": {
    "knowing": {
      "command": "knowing",
      "args": ["mcp", "--watch"],
      "transport": "stdio"
    }
  }
}

--watch 标志会在文件发生更改时重新索引。你的 Agent 始终查询最新数据。无需手动运行 knowing index,也无需指定数据库路径:MCP 服务会在首次启动时自动索引 git 仓库,并将其注册到列表中,供后续会话使用。

嵌入默认关闭(冷启动基准测试确认其效果中性)。如果想要试验,可使用 --embeddings 启用。图结构和等价类决定了检索质量。

你的 Agent 能获得什么: 关键工具是 context_for_task。当你的 Agent 使用任务描述调用它时,knowing 会返回经过排序的相关代码符号,并将其打包到令牌预算中。这取代了 grep-read 循环。其他实用工具包括:blast_radius(如果我更改这个,会有什么内容受影响?)、test_scope(应该运行哪些测试?)、explain_symbol(为什么这个符号会排在这里?)。所有 28 个工具请参阅 MCP 工具参考。

验证是否正常工作:

  1. 与你的 Agent 启动一个会话
  2. 提问:“使用 context_for_task 工具查找与你代码中的[某个具体内容]相关的符号”
  3. 你应该会看到来自代码库的排序符号、分数和文件路径

如果结果为空:仓库可能仍在索引中(首次启动需要 10-30 秒)。如果结果看起来不相关:在任务描述中使用具体的符号名称(例如,“查找 AuthMiddleware 处理程序”,而不是“查找身份验证代码”)。你也可以通过 CLI 验证:

knowing stats          # should show nodes and edges
knowing query "MyFunc" # should find symbols you recognize

对于 HTTP 传输(多 Agent、守护进程模式):

knowing serve -addr :8100 .
{
  "mcpServers": {
    "knowing": {
      "url": "http://localhost:8100",
      "transport": "streamable-http"
    }
  }
}

为什么有效

Git 对文件进行版本控制。knowing 对代码的理解进行版本控制。

整个系统基于一个理念构建:内容寻址标识。每个符号、关系和快照都经过 SHA-256 哈希处理。这个简单的选择带来了以下优势:

  • 免费检测过时内容。 文件更改 = 新哈希 = 无需扫描即可知道哪些边已过时。
  • 免费缓存。 相同的包根 = 相同的结果。未更改查询的速度提升 93 倍。
  • 免费完整性验证。 验证所有已存储的哈希和快照链的连续性。耗时 98 ms。
  • 免费保留历史记录。 每个快照都是与 git 提交关联的 Merkle 根。可以沿链遍历。
  • 免费让反馈过期。 反馈会存储包的 Merkle 根。代码更改 = 根更改 = 旧反馈不可见。
  • 免费提供证明。 从叶节点到根节点的 Merkle 路径是自包含的加密证明。
Gitknowing
版本控制的对象文件内容代码关系及其含义
存储单元blob节点 + 边 + 来源信息 + 置信度
标识sha256(content)sha256("node\0" + repo + package + name + kind)
快照blob 树分层 Merkle:repo -> package -> edge-type -> leaf
差异哪些行发生了更改哪些包发生了更改、有什么内容损坏、有什么内容是新增的
历史记录代码过去的样子代码库对自身的理解

工作原理

+------------------------------------------------------------------+
|                         knowing daemon                            |
+----------------+------------------------+--------------------------+
|   Indexer      |     Graph Store        |      MCP Server          |
|                |                        |                          |
| 23 extractors  | Content-addressed      | 28 tools + 8 resources   |
| tree-sitter    | SQLite + Merkle tree   | stdio / HTTP (1.8s index)|
| LSP + SCIP     | 38 edge types          | GCF / GCB / JSON         |
| OTel traces    | Subgraph cache (93x)   | PackRoot dedup (99%)     |
|                | Embedding vector cache | Embedding re-ranker      |
|                | Community detection    | Supply chain audit       |
+----------------+------------------------+--------------------------+

两个平面:

  • **执行:**为仓库建立索引、提取符号和关系、摄取跟踪记录、存储快照。
  • **智能:**基于存储的图计算影响范围、上下文包、测试范围、反馈和社区。

这一边界至关重要:智能功能读取图并生成派生结果,无法破坏图中的事实。糟糕的排名会导致糟糕的建议,但无法使证明失效。


功能

语言和格式
语言/格式提取器框架/模式检测
Gotree-sitter + go/packages + SCIPnet/http、gin、echo、chi、gorilla/mux
TypeScript/JavaScripttree-sitterExpress.js、Fastify、Hono、NestJS、Next.js
Pythontree-sitterFlask、FastAPI、Django
Rusttree-sitterActix、Axum、Rocket
Javatree-sitterSpring 注解
C#tree-sitterASP.NET 属性
Protocol Bufferstree-sitterservice、message、enum、RPC 声明
Terraform (HCL)tree-sitterresource、data、module、variable 声明
SQLtree-sitter表、视图、函数、过程、FK 边
Kubernetes YAMLyaml.v3部署、服务、configmap、标签选择器边
CloudFormation/SAMyaml.v3资源、!Ref/!GetAtt/!Sub 交叉引用
Docker Composeyaml.v3服务、端口、网络、depends_on 链接
GitHub Actionsyaml.v3工作流、作业、步骤、操作引用
Serverless Frameworkyaml.v3函数、事件、资源引用
CSS/SCSStree-sitter选择器、自定义属性、var() 依赖
事件/MQ 模式多语言Kafka、NATS、SQS、RabbitMQ 发布/订阅
OpenAPI/JSON Schemajson/yaml端点、模型、$ref 解析
Dockerfile解析器FROM 基础镜像、COPY --from 多阶段依赖、EXPOSE 端口
Makefile解析器目标依赖、include 指令、变量引用
Helm Chartsyaml.v3Chart 依赖、模板引用、values 注入
GitLab CIyaml.v3作业 needs、extends 模板、include 文件、制品
package.json (npm)jsondependencies、devDependencies、peerDependencies、scripts
GraphQL解析器类型定义、字段类型引用、接口实现
Rubytree-sitter类、模块、方法定义、require 边
.env 文件解析器环境变量声明、跨文件引用

所有提取器都会通过多路分发按文件触发;结果随后合并。Tree-sitter 生成置信度为 0.7 的边(ast_inferred);go/packages 和 SCIP 生成置信度为 0.95-1.0 的边(ast_resolved、scip_resolved)。

MCP 工具
工具用途
index_repo、graph_query、repo_graph构建和检查图
cross_repo_callers、blast_radius、trace_dataflow、flow_between了解影响和路径
snapshot_diff、semantic_diff、pr_impact、stale_edges比较图状态并审查变更
runtime_traffic、dead_routes、trace_stats查询运行时观测到的关系
context_for_task、context_for_files、context_for_pr、explain_symbol为 Agent 提供排名后的上下文
ownership、ownership_query、test_scope、communities、plan_turn、feedback分配工作、查询代码所有者/作者、选择测试、改进排名
prove、prove_absent、fsck加密证明、缺失证明、完整性验证
untrack_repo清除某个仓库的所有数据(节点、边、文件、快照、反馈、任务记忆、图备注)

MCP 提示词:refactor_safely、review_pr、investigate_dead_code。

MCP 资源

8 个只读资源,无需调用工具即可帮助 Agent 熟悉环境:

资源返回内容
knowing://report图谱大小、主要类型、热点数量、快照时间
knowing://schema节点类型、边类型、来源层级、哈希格式
knowing://stats按仓库、类型和边类型统计的数量
knowing://repos所有已跟踪仓库及其数量和最后索引时间
knowing://session上下文调用次数、已提供的符号数、缓存命中/未命中次数、运行时间
knowing://index-health健康/过期/损坏状态、完整性检查
knowing://communities社区列表,包含凝聚度和 Merkle 根
knowing://community/{id}单个社区详情(资源模板)

线格式

格式用途相较 JSON 的节省量
GCF(Graph Compact Format)供大模型使用:按行排列、字段按位置组织Token 数减少 84%
GCB(Graph Compact Binary)服务传输和缓存:变长整数、长度前缀字节数减少 74%
JSON人工调试、通用使用方基准

GCF 使用以 | 分隔的字段和本地 ID($1 -> $3),而非反复出现的限定名称。它可供大模型解析,并能在相同 Token 预算下容纳多 5 倍的图谱上下文。基于会话状态的去重可将重复符号减少 47%。


当前边界

  • 静态影响范围沿 calls 边追踪;其他边类型用于提供上下文,而不用于遍历。
  • 运行时工具需要摄取 OpenTelemetry 跟踪;没有跟踪数据时,这些工具无法获得观测结果。
  • LSP 增强支持:Go、TypeScript、Python、Rust、Java、C#。根据项目标记自动检测。其他语言则回退到 tree-sitter。
  • 默认关闭嵌入(经确认,在冷启动基准测试中效果中性,第 23 次会话)。使用 --embeddings 可选择启用。

文档

文档内容
简介工作原理、检索流程说明、5 分钟快速演示
架构系统设计、架构模式、内容寻址、守护进程模型
功能实现清单、入口点、限制
审计与合规Merkle 证明、fsck、快照链、CI 门禁
CLI 参考命令、标志、示例、故障排除
MCP 工具工具架构模式、参数、返回格式
边类型关系语义和来源
上下文打包RWR、HITS、排序、Token 预算
嵌入重排序器本地推理、向量缓存、延迟概况
运行时跟踪OTel 摄取和运行时置信度
线格式GCF、GCB、JSON 格式和基准测试
路线图已完成的工作流和下一步优先事项
基准测试可复现的价值基准测试及性能契约
研究knowing 所依据的论点:将内容寻址作为计算原语(DOI:10.5281/zenodo.20342255)
HooksClaude Code Hook 集成

许可证

Apache-2.0 (c) 2026 Dayna Blackwell / Blackwell Systems。请参阅 LICENSE 和 NOTICE。

评论

支持 Markdown

第一次接触 MCP?

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

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