内容
# DevContext — .NET 代码库上下文
[](LICENSE)
[](global.json)
[](https://github.com/shaahink/DevContext2/actions/workflows/ci.yml)
[](src/DevContext.App)
[](src/DevContext.App/src-tauri)
> **指向任何 .NET 仓库,它会为您提供一张地图(这里有什么)和一个跟踪(事物如何连接)—— 为大型语言模型(LLM)提示而定大小,对人类可读,并诚实地说明它是如何到达那里的。**
<p align="center">
<a href="docs/screenshots/01-home.png">
<img src="docs/screenshots/01-home.png" alt="DevContext 首页 — 分析 eShop 微服务后" width="85%">
</a>
<br>
<em>分析一个包含 7 个服务的 eShop 微服务解决方案后的首页 — 身份条带、服务地图、拓扑图块和 onboarding</em>
</p>
## 一个引擎,四个界面
所有功能都由一个分析引擎(`DevContext.Core`)提供支持:只需分析一次解决方案,然后从适合您工作流的界面进行查询。
| 界面 | 用途 | 获取方式 |
|---------|---------------|--------|
| **CLI** (`devcontext`) | 可脚本化的地图/跟踪在您的终端;用于管道的 JSON 输出 | `dotnet tool install -g DevContext.Cli`(需要 [.NET 10 SDK](https://dotnet.microsoft.com/download/dotnet/10.0); Windows 是 CI 验证的平台 — 请参阅 [平台支持](#平台支持)) |
| **桌面应用** | 交互式探索:图、表格镜头、见解、上下文工作室 | 从 [Releases](https://github.com/shaahink/DevContext2/releases) 获取 Windows 安装程序(需要 [.NET 10 运行时](https://dotnet.microsoft.com/download/dotnet/10.0)),或从源代码构建 — 请参阅 [快速入门](#快速入门) |
| **MCP 服务器** (24 个工具) | 让 AI 代理(Claude Code、Cursor、VS Code 等)查询您的代码库 | 构建并注册 — 请参阅 [docs/product/mcp-reference.md](docs/product/mcp-reference.md) |
| **gRPC 服务器** | 一次分析,多次查询的后端,为应用和 MCP 提供支持 | 由应用/MCP 自动启动;独立运行请使用 `dotnet run --project src/DevContext.Server` |
---
## 什么是 DevContext?
DevContext 将任何 .NET 解决方案转换为**结构化的、可查询的代码图** — 不仅仅是语法树,还有架构、线路、入口点、数据流和依赖注入的语义理解。 使用它来:
- **在一分钟内熟悉陌生的仓库**
- **为 LLM 提供精确的上下文** — 不浪费令牌,不产生虚构代码
- **跟踪请求流** 端到端,从 HTTP 端点到处理程序、事件和数据库
- **导出 LLM 就绪的上下文包**,带有范围选择器、令牌预算和意图预设
<p align="center">
<a href="docs/screenshots/02-atlas.png"><img src="docs/screenshots/02-atlas.png" alt="Atlas" width="45%"></a>
<a href="docs/screenshots/03-explore.png"><img src="docs/screenshots/03-explore.png" alt="Explore" width="45%"></a>
<br>
<em>Atlas 一页纸(左侧)和 Explore 工作台,带有入口卡 + 跟踪(右侧)</em>
</p>
---
## 功能
### 🗺 地图和跟踪引擎
分析任何 .NET 解决方案一次,然后以多种方式查询它。 地图显示**仓库中有什么**(架构样式、项目拓扑、入口点、包)。 跟踪显示**事物如何连接** — 从端点到 MediatR 处理程序、MassTransit 消费者、EF Core 实体和 DI 线路。
<p align="center">
<a href="docs/screenshots/04-graph.png"><img src="docs/screenshots/04-graph.png" alt="图视图" width="45%"></a>
<a href="docs/screenshots/05-code-inspector.png"><img src="docs/screenshots/05-code-inspector.png" alt="代码检查器" width="45%"></a>
<br>
<em>交互式图可视化(左侧)和带有 PrismJS 语法高亮的代码检查器(右侧)</em>
</p>
### 🔬 Explore 工作台
Explore 视图是您的中央工作台:一个**入口卡** 显示所有入口点(HTTP 端点、总线消费者、后台服务),一个交互式**跟踪/检查器** 面板,和一个**交互式图**,将调用图渲染为 Cytoscape dagre 布局。 切换到 服务、层、功能 和 流 镜头,以从不同角度理解代码库。
### 📊 表格镜头和见解
**表格镜头** 为您提供一个 CDK-virtualized 电子表格,显示每个入口点,带有原型列,可筛选和排序。 导出到 CSV。 **见解** 页面显示按严重性分组的架构发现 — 依赖冲突、线路间隙、模式偏差。
<p align="center">
<a href="docs/screenshots/06-table-lens.png"><img src="docs/screenshots/06-table-lens.png" alt="表格镜头" width="45%"></a>
<a href="docs/screenshots/07-insights.png"><img src="docs/screenshots/07-insights.png" alt="见解" width="45%"></a>
<br>
<em>表格镜头 — CDK-virtualized 入口审计(左侧)和架构见解(右侧)</em>
</p>
### 🧠 上下文工作室
使用**上下文工作室** 组装 LLM 就绪的上下文包:一个三面板工具:
- **范围选择器** (左侧):浏览服务 → 条目作为树,搜索带有 omnibox,使用诸如 *"我正在更改此端点"* 的预设
- **组成视图** (中心):有序卡片用于流、签名、正文、DI 线路、配置、实体、合约、测试 — 拖动以重新排序,切换正文开启/关闭
- **预算面板** (右侧):令牌预算滑块,带有每个卡片的仪表,意图选择器(跟踪 / 解释 / 审查),格式(markdown / plain),复制 / 保存带有 toast 反馈
每个包都带有标识头(仓库、原型、分析时间、git HEAD),并携带**每个部分的出处** — 每个部分来自哪些文件以及如何解析。
<p align="center">
<a href="docs/screenshots/08-context-studio.png"><img src="docs/screenshots/08-context-studio.png" alt="上下文工作室" width="45%"></a>
<a href="docs/screenshots/09-export.png"><img src="docs/screenshots/09-export.png" alt="导出" width="45%"></a>
<br>
<em>上下文工作室,带有范围选择器 + 组成(左侧)和导出/复制,带有令牌预算(右侧)</em>
</p>
### 🔌 MCP 集成
DevContext 配备了一个内置的 **MCP 服务器**,暴露了 **24 个工具**,用于 AI 代理集成 — 从 `overview` 和 `trace` 到预算定价的 `get_context` 包和 `verify_context` 过时检查。 桌面 UI 提供了一个完整的 MCP 管理页面 — 状态卡、配置片段、会话表、实时日志馈送和 "尝试工具" 沙盒。 设置 + 完整工具目录: [docs/product/mcp-reference.md](docs/product/mcp-reference.md).
<p align="center">
<a href="docs/screenshots/10-mcp.png"><img src="docs/screenshots/10-mcp.png" alt="MCP" width="85%"></a>
<br>
<em>MCP 管理页面 — 状态、配置、会话、实时馈送、尝试工具沙盒</em>
</p>
---
## 它检测到什么
| 检测 | 查找 |
|-----------|-------|
| **端点** | 最小 API、FastEndpoints、MVC 控制器操作 |
| **MediatR 处理程序** | `IRequestHandler<T,Q>`、命令、查询、通知 |
| **消息消费者** | MassTransit `IConsumer<T>`、NServiceBus、内存处理程序 |
| **EF Core 实体** | DbContext、DbSet、`OnModelCreating` 配置、聚合根 |
| **DI 注册** | `AddSingleton`/`AddScoped`/`AddTransient`、工厂委托 |
| **后台工作者** | `IHostedService`、`BackgroundService`、Quartz 作业 |
| **中间件管道** | `Use*` 调用 Program.cs 中的注册顺序 |
| **跨服务链接** | 总线发布(MassTransit/RabbitMQ)、gRPC、服务之间的 HTTP |
| **架构样式** | 基于证据:微服务、CleanArchitecture、NLayer、MinimalApi 等。 |
| **调用图** | Roslyn 语法调用边之间解决方案类型 |
---
## 跟踪引擎的工作原理
跟踪是 **结构化遍历** 在一个有类型的 CodeGraph 上 — 节点和边在分析时通过将检测结果连接成一个连通图而构建。 每个边都带有出处(`file:line`)、解析(`Join`/`Syntactic`/`Semantic`)和置信度。
| 边 | 优先级 | 来自 |
|------|----------|-----------|
| **发送** | 0(最高) | `.Send(new XCommand())` / `.Publish(new XEvent())` |
| **处理** | 1 | MediatR 处理程序连接 |
| **引发** | 2 | `AddDomainEvent(new XEvent())` |
| **消费** | 3 | 事件 → 处理程序连接 |
| **读取写入** | 4 | EF 实体 + 正文引用 |
| **解析** | 5 | DI 注册 + 单个实现者 |
| **包装** | 6 | `IPipelineBehavior` |
| **调用** | 7(最低) | Roslyn 调用图 |
深度限制(默认 6),扇出上限(12),框架边界检测,重新访问防护和循环破坏,以保持跟踪的焦点。 [完整设计 →](docs/product/TRACE-ENGINE-DESIGN.md)
---
## 快速入门
### CLI
```bash
dotnet tool install -g DevContext.Cli
devcontext analyze . # 地图(架构概述)
devcontext analyze . --focus OrderService # 从类型跟踪
devcontext analyze . --focus "GET /api/orders" # 从端点跟踪
devcontext analyze . --depth 6 --detail salient # 完整的跟踪,带有源上下文
devcontext analyze . --stats # 时间、漏斗、缓存
devcontext analyze . --format json --strict # 带有验证的 JSON
```
完整的标志引用: [docs/product/cli-reference.md](docs/product/cli-reference.md) · 配置: [docs/product/configuration.md](docs/product/configuration.md)
### 桌面应用
**安装(Windows):** 从 [Releases](https://github.com/shaahink/DevContext2/releases) 下载安装程序(`DevContext_*_x64-setup.exe`)— 它将分析服务器作为 sidecar 捆绑(安装程序从下一个标签开始附加到发布)。 应用通过 `dotnet` 启动服务器,因此 [.NET 10 运行时](https://dotnet.microsoft.com/download/dotnet/10.0) 必须已安装。
**或从源代码构建** — 需要 .NET 10 SDK,Node 22 + [pnpm](https://pnpm.io),以及(对于原生窗口) [Tauri 2 先决条件](https://v2.tauri.app/start/prerequisites/) 在 Windows 上:
```bash
dotnet build DevContext.slnx
cd src/DevContext.App
pnpm install
pnpm dev:web # 浏览器模式,位于 http://localhost:4200(自动启动服务器)
pnpm dev # 或:原生 Tauri 窗口
pnpm tauri build # 或:自己构建安装程序(捆绑服务器 sidecar)
```
UI 指南: [docs/product/desktop-ui.md](docs/product/desktop-ui.md)
### MCP(AI 代理)
```bash
dotnet build DevContext.slnx
```
然后使用您的 MCP 客户端注册构建的服务器:
```json
{
"mcpServers": {
"devcontext": {
"command": "C:/path/to/DevContext2/src/DevContext.Mcp/bin/Debug/net10.0/devcontext-mcp.exe"
}
}
}
```
MCP 服务器自动启动 gRPC 后端。 所有 24 个工具,会话模型和每个客户端的代码段: [docs/product/mcp-reference.md](docs/product/mcp-reference.md)
### 平台支持
诚实状态,与 CI 实际验证的匹配(而非堆栈可以做的):
| 界面 | Windows | Linux / macOS |
|---------|---------|----------------|
| CLI · 引擎 · MCP · gRPC 服务器 (.NET 10) | ✅ CI 验证(`ci.yml` 引擎作业:构建、测试、防护、CLI 烟雾测试) | ⚠️ 预期运行 — 尽管所有托管 .NET,但 **尚未 CI 验证** |
| Web 应用(Angular) | ✅ | ✅ lint/test/build 在 Linux CI 上运行(`ci.yml` 应用作业) |
| 桌面安装程序(Tauri 2) | ✅ NSIS + MSI 由 [`release.yml`](.github/workflows/release.yml) 构建 | ❌ 今日未构建(Tauri 支持两者;未调度) |
开发人员工具(门电池 `eval/gates.ps1`,`scripts/loom-guards.ps1`)是 Windows PowerShell 5.1 — 贡献者工作流假设 Windows 开发盒,尽管产品 CLI 本身是便携式 .NET。 Linux 引擎 CI 作业是自然的下一步;它需要将少数单元测试夹具中的 Windows 路径假设解开。
---
## 文档
| 文档 | 里面有什么 |
|-----|--------------|
| [docs/product/cli-reference.md](docs/product/cli-reference.md) | 每个 `devcontext analyze` 标志,已验证源代码 |
| [docs/product/configuration.md](docs/product/configuration.md) | `devcontext.json` 模式和优先级 |
| [docs/product/mcp-reference.md](docs/product/mcp-reference.md) | MCP 设置 + 所有 24 个工具 |
| [docs/product/desktop-ui.md](docs/product/desktop-ui.md) | 桌面应用游览,按页面 |
| [docs/product/TRACE-ENGINE-DESIGN.md](docs/product/TRACE-ENGINE-DESIGN.md) | 跟踪引擎内部:边、优先级、帽子 |
| [docs/product/DETECTION-GUIDE.md](docs/product/DETECTION-GUIDE.md) | 每个检测器查找的内容及其出处 |
| [docs/product/examples/](docs/product/examples/) | eShop、DntSite 等的真实地图/跟踪输出 |
| [CONTRIBUTING.md](CONTRIBUTING.md) | 构建、测试、门电池、约定 |
---
## AI 代理上下文
为编码代理(Claude Code、Copilot、Cursor、Cline 等)设计:
| 文件 | 用于 |
|------|-----|
| `AGENTS.md` | **先阅读此文件** — 冷启动顺序、架构、门电池、工作树纪律 |
| `docs/dev/DEVELOPER-PIPELINE.md` | 完整的开发者管道:构建、测试、运行、基准测试、评估 |
| `docs/product/AGENT-REFERENCE.md` | 引擎内部:ANALYZE→RENDER 管道、Graph2、合约 |
| `docs/dev/CODE-MAP.md` | 源代码验证的模块地图 — "我在哪里更改 X?" |
| `proto/devcontext/v1/devcontext.proto` | gRPC 合同 — 服务器 ⇄ 应用 ⇄ MCP 的单一真实来源 |
### 架构
```
DevContext.Core(内核) — 分析管道,Graph2 身份脊柱,BodyFacts,渲染器
├── DevContext.Cli — `devcontext` dotnet 工具
├── DevContext.Contracts — proto → C# gRPC 代码生成
├── DevContext.Server — gRPC-Web 后端(一次分析,多次查询)
├── DevContext.Mcp — MCP 服务器(24 个工具,stdio → gRPC 代理)
DevContext.App(Angular 22) — Tauri 2 桌面,zoneless,signals — 与服务器进行 gRPC-Web 通信
```
### 门电池(每次提交前绿色)
```powershell
dotnet build DevContext.slnx # 0 警告 / 0 错误
dotnet test DevContext.slnx --filter "Category!=Eval" # 快速单元 + 集成测试
dotnet test DevContext.slnx --filter "Category=Truth" # 真相门
powershell -File scripts/loom-guards.ps1 # 禁止模式 + 真相门
cd src/DevContext.App; pnpm check # 应用:lint + 测试 + 构建
```
---
## 开发
```bash
dotnet build DevContext.slnx
dotnet test DevContext.slnx --filter "Category!=Eval"
# 桌面(浏览器模式):
cd src/DevContext.App
pnpm dev:web # Angular @ :4200 + .NET 服务器
# 或使用后台服务(AI 代理友好):
powershell -File scripts/start-dev-bg.ps1
node --experimental-strip-types scripts/capture-readme.mts --no-spawn
powershell -File scripts/start-dev-bg.ps1 -Kill
```
---
## 许可证
MIT
---
<p align="center">
<a href="docs/screenshots/12-home-full.png"><img src="docs/screenshots/12-home-full.png" alt="DevContext — Start" width="50%"></a>
<br>
<em>DevContext 处于休息状态 — 准备分析</em>
</p>
MCP 配置
以下是此 MCP Server 的配置信息,可直接复制到 Cursor 或其他 MCP 客户端中使用。
mcp.json
连接信息
猜你喜欢
暂无推荐服务器