酗酒者
MSBuild二进制日志(.binlog)分析工具——用于人工智能辅助构建调查的CLI和MCP服务器。
为什么?
MSBuild二进制日志捕获有关构建的所有内容:属性、项、导入、解析包、编译器调用、目标、任务和时间。 但是导航binlog是乏味的——它们可能很大,嵌套很深,充满了无关的噪音。
酗酒者 通过两个接口在binlog上公开结构化查询:
| 接口 | 用例 |
|---|---|
命令行界面 (binlog-insights) | 快速终端调查、脚本编写、CI管道 |
MCP服务器 (binlog-insights-mcp) | VS Code/Copilot聊天中的AI辅助调查 |
MCP服务器特别强大:将Copilot指向一个失败的binlog,让它驱动调查——从概览中进行钻探→ 错误→ 属性→ 导入→ NuGet自动诊断,遵循与构建工程师相同的工作流程。
特性
26个MCP工具/13个CLI命令
建筑调查:
overview--构建状态、持续时间、项目计数、顶级结果errors/warnings--使用项目、文件、行信息进行诊断properties--MSBuild属性值(带可选筛选器)imports--项目的完整进口链items--项目组(包参考、编译等)nuget--NuGet还原诊断compiler--完整的编译器命令行(引用、定义、标志)search--在所有构建消息中进行免费文本搜索projects--项目清单,包括状态和持续时间preprocess--所有导入后的有效项目XMLcompare--区分两个binlog:属性、包、引用
性能分析(仅限MCP):
expensive_projects/project_target_times--最慢的项目及其目标细分expensive_targets/search_targets/project_targets--目标级别定时expensive_tasks/search_tasks/tasks_in_target/task_details--任务级计时expensive_analyzers--Roslyn分析仪性能
评估和文件(仅限MCP):
evaluations/evaluation_properties/evaluation_global_properties--财产/物品处置阶段list_files/get_file--访问binlog中嵌入的源文件
安装
先决条件
- .NET 8 SDK 或更高版本
安装MCP服务器(推荐)
dotnet tool install -g BinlogInsights.Mcp安装CLI
dotnet tool install -g BinlogInsights从源代码构建
git clone https://github.com/SergeyTeplyakov/BinlogInsights.git
cd BinlogInsights/src
dotnet build
# Install the MCP server as a global tool:
./install.ps1VS代码/副本设置
将MCP服务器添加到您的工作区。创建 .vscode/mcp.json:
{
"servers": {
"binlog-insights": {
"type": "stdio",
"command": "binlog-insights-mcp",
"args": []
}
}
}您可以在启动时预加载一个或多个binlog,以便工具调用立即返回:
{
"servers": {
"binlog-insights": {
"type": "stdio",
"command": "binlog-insights-mcp",
"args": ["--binlog", "build.binlog", "--binlog", "other.binlog"]
}
}
}注: 相对路径 --binlog args是根据MCP服务器的工作目录解析的。 如果找不到文件,请使用绝对路径或安装 Binlog分析仪 自动设置工作目录的扩展。配置后,Copilot Chat会自动访问所有26个binlog分析工具。
为团队设置您的仓库
这 samples/repo-setup/ 目录包含可复制的文件。将它们放入您的repo根目录:
your-repo/
├── .vscode/
│ └── mcp.json ← MCP server config
├── .github/
│ ├── instructions/
│ │ └── build-investigation.instructions.md ← auto-activates on build files
│ └── skills/
│ ├── build-tool-setup/
│ │ └── SKILL.md ← install/update the MCP tool
│ ├── build-failure-analysis/
│ │ └── SKILL.md ← error investigation
│ ├── build-performance-analysis/
│ │ └── SKILL.md ← perf bottleneck analysis
│ └── build-comparison/
│ └── SKILL.md ← diff two builds每个文件的作用:
| 文件 | 类型 | 触发器 |
|---|---|---|
mcp.json | MCP配置 | 自动--VS代码在工作区打开时启动服务器 |
build-investigation.instructions.md | 指令 | 自动-当您打开任何 .csproj, .sln, .props, .targets,或 .binlog 文件 |
build-tool-setup/SKILL.md | 技能 | 按需-当工具未安装、安装失败或需要更新时,复制副本会加载 |
build-failure-analysis/SKILL.md | 技能 | 按需-当您询问构建错误、缺少类型、NuGet失败时,复制副本会加载 |
build-performance-analysis/SKILL.md | 技能 | 按需-当您询问构建速度慢、构建持续时间、昂贵的目标时,复制副本会加载 |
build-comparison/SKILL.md | 技能 | 按需-当您比较构建、差异环境或迁移构建系统时,复制副本会加载 |
A. SKILL-TEMPLATE.md 也包括作为创建自己技能的起点。
团队成员只需:
- 安装工具:
dotnet tool install -g BinlogInsights.Mcp - 在VS Code中打开仓库——其他一切都是自动的
用法
生成binlog
在启用二进制日志记录的情况下构建项目:
dotnet build /bl:build.binlog或者对于MSBuild:
msbuild /bl:build.binlogCLI示例
# Build overview
binlog-insights overview build.binlog
# Show errors
binlog-insights errors build.binlog
# Check properties for a specific project
binlog-insights properties build.binlog --project MyApp --filter TargetFramework
# Search build messages
binlog-insights search build.binlog --query "PackageReference"
# Compare two builds
binlog-insights compare before.binlog after.binlog
# NuGet restore diagnostics
binlog-insights nuget build.binlog
# Compiler command line
binlog-insights compiler build.binlog --project MyApp人工智能辅助调查
配置MCP服务器后,询问Copilot Chat:
*“我的构建失败了。请调查build.binlog并告诉我出了什么问题。”*
副驾驶将自动:
- 呼叫
overview检查构建状态 - 呼叫
errors看看失败了什么 - 根据错误类型钻得更深:
- 缺少类型→ items 检查PackageReference - 财产问题→ properties 检查数值 - 进口问题→ imports 追踪链条 - NuGet失败→ nuget 用于恢复诊断
- 使用
search用于自由文本调查 - 使用
compare区分两个版本
*“为什么我的构建速度很慢?分析build.binlog性能。”*
副驾驶将:
- 呼叫
expensive_projects查找最慢的项目 - 使用以下工具深入目标
project_target_times - 检查
expensive_analyzers用于慢速Roslyn分析器 - 通过以下方式识别瓶颈任务
expensive_tasks
*“我有两个来自不同构建配置的binlog。比较它们,告诉我有什么不同。”*
副驾驶将:
- 呼叫
compare到不同的属性、每个项目的包和解决方案范围的包 - 报告属性差异(例如。,
NuGetPackageRoot,SDK路径) - 显示每个项目的包版本不匹配
- 列出解决方案范围内的包差异——所有项目中解析为不同版本的包
- 通过以下方式深入了解细节
properties,items,或compiler解释 *为什么* 版本不同
这对于以下情况特别有用:
- 迁移构建系统 (例如,CoreXT→ stock MSBuild)--验证新生成是否解析了相同的包
- 调试CI与本地 --查找环境之间的属性或包差异
- 变更前/变更后 --确认a
.props或.targets改变达到了预期的效果
建筑
BinlogInsights.Core — Query engine (MSBuild.StructuredLogger)
├── BinlogInsights — CLI tool (System.CommandLine)
└── BinlogInsights.Mcp — MCP server (ModelContextProtocol SDK)- 核心 通过以下方式解析binlog MSBuild。结构化记录器 并公开类型化查询类
- 命令行界面 将查询打包为
System.CommandLine供终端使用 - 主控程序 将查询包装为 模型上下文协议 AI代理工具
许可证
麻省理工学院
