mcpField
A
AIContextBuilder

AIContextBuilder

本地服务
github.com开发工具112 天前更新

关于 AIContextBuilder

AIContextBuilder(`aicb`)使用 Roslyn 分析 C# 和 .NET 解决方案,为编码 Agent 提供代码智能。它追踪符号关系,并将任务相关代码整理为受 token 预算约束的 Markdown;提供本地 MCP 服务和命令行工具,另有 Windows 桌面应用用于可视化分析与编辑。

主要功能

  1. 01追踪调用方、实现、测试和依赖
  2. 02分析依赖注入与变更影响
  3. 03在 token 预算内生成任务相关 Markdown
  4. 04分析 XAML 和 AXAML 关系
  5. 05显示不确定性和分析时效信号

适用场景

  1. 01评估修改某个符号可能造成的影响
  2. 02为 Agent 准备精简的代码与测试上下文
  3. 03查找符号对应的实现或测试
  4. 04检查标记绑定和资源用法

MCP 相关

本地 MCP 服务向编码 Agent 提供代码分析和上下文构建工具。每个服务进程维护独立的实时分析会话,并可配置刷新行为。

配置

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

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库
安装包
nugetAIContextBuilder0.5.464.66

工具

还没有获取到工具列表

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

详细介绍

AIContextBuilder(aicb)

NuGet Version NuGet Downloads MCP Registry License M8ven Verified

为编码 Agent 提供准确反映 Roslyn 的 C#/.NET 解决方案地图。 aicb 是一款面向 C# 和 .NET 的代码智能服务:它可以回答有关调用方、实现、依赖注入、测试、副作用和变更影响的问题,然后将相关代码整理为供大模型使用的精简 Markdown。它可在本地作为 MCP 服务和命令行工具运行;Windows 桌面应用还支持可视化上下文选择、分析和编辑。

该软件为闭源软件。此公开仓库包含其文档、许可证和发行版本。个人、教育用途以及未达到许可证门槛的组织均可免费使用。

本页面只是简要介绍,并非参考手册。它介绍了 Agent 默认可见的 54 个工具中的 35 个;三本手册共 35 章,篇幅约为本页面的 39 倍。

看看它如何回答代码问题

向你的编码 Agent 提问:

如果我更改 ColorMixerService,可能会影响哪些内容?使用 AICB。

或者在终端中调用相同的工具:

aicb call impact_of_change --sln C:/repo/App.sln --arg symbol=ColorMixerService

以下是随附的 ColorMixer.SelectionLab 示例的精简输出:

{
  "symbol": "ColorMixerService",
  "resolvedKind": "type",
  "directCount": 1,
  "transitiveCount": 2,
  "risk": "low",
  "productionImpactCount": 2,
  "directImpact": {
    "items": [
      {
        "name": "DemoCompositionRoot",
        "file": "ColorMixer.SelectionLab.ConsoleApp/DemoCompositionRoot.cs",
        "line": 9
      }
    ]
  }
}

桌面应用的 MCP Usage 页面会在本地记录调用,并将引导式拒绝与疑似缺陷分别显示:

AICB MCP Usage 统计信息,显示调用次数、会话数、延迟和最常用的工具

该回答来自 Roslyn 符号图,而不是子字符串搜索。AICB 能区分重载、追踪接口和重写关系、理解分部类型,并记录 DI 构造路径。

构建契合任务的上下文

AICB 不仅能回答单个符号相关的问题。它还可以为 Agent 组装聚焦于特定任务的上下文包,而不是发送未经筛选的源代码转储:

需求工具返回内容
在上下文中读取单个符号get_context符号及其直接依赖项和被调用项
探索命名符号及选定的周边信息explain_symbol调用者、被调用项、实现、测试或其他请求的维度
根据自然语言目标打包上下文pack_for_task目标中提及的符号及其语义邻域
编辑前做好准备prepare_task以目标为中心的上下文,加上覆盖相关代码的测试和可能相关的同类项,例如工厂或验证器
先检查响应成本measure一个或多个计划调用的工具答复的精确令牌数,不返回其大型负载

聚焦上下文工具接受令牌预算,因此上下文包的大小能适应 Agent 可用的空间。你指定的符号会保留;预算紧张时,上下文包会减少这些符号周围的细节,而不会在某个代码块中间截断,并会在开头注明省略了哪些类型、测试或同类项。因此,AICB 可以告知你某个上下文包已缩减或达到上限,但无法保证剩余内容足以正确完成任务。通过流水线配置文件渲染整份文档时,也可以使用相同预算,同时允许超出预算,并可选择报告被删减的内容。

生成的结果是 AI-Builder-MD:面向大模型的结构化 Markdown,其中包含选定代码,以及符号关系、架构图、语义元数据和来源信息。它可以使用既定的标签表示法或 YAML。请参阅上下文文档指南和任务打包工具。

使用 AI Tags 和语义注释添加明确含义

AICB 无需注释也能工作。如果源代码结构和约定不足以表达意图,开发者可以在 XML 文档中使用可选的 <ai> 标签,明确说明类型或方法的预期作用:

/// <ai
///   role="service"
///   layer="Application"
///   responsibility="Coordinates order validation and submission."
///   stability="Stable"
/// />
public sealed class OrderService

注释可以描述角色、领域、架构层、优先级、稳定性、职责和副作用等语义。显式值优先于启发式推断;none 等哨兵值可以有意禁止对某个字段进行推断。AICB 会保留来源信息,让 Agent 能区分源代码中提取的事实、作者提供的含义和推断出的提示。AI 注释参考介绍了受支持的形式和字段。

加载了解决方案的 AIContextBuilder 桌面应用

分析和记忆的工作方式

.sln / .slnx / .slnf + C# + XAML/AXAML
                 ↓
        MSBuild + Roslyn semantic models
                 ↓
  AICB facts and consolidated semantic indexes
                 ↓
 individual answers or budgeted AI-Builder-MD

AICB 会分析一次解决方案,然后根据学到的信息回答每个问题:谁调用了什么、哪些类型使用或实现了哪些类型、标记指向什么,以及哪些代码会访问程序外部。因此,后续问题的响应会很快,上下文工具也会选取并呈现任务所需的代码部分。这并不意味着所有可能的答案或运行时关系都已预先知晓。

每个 aicb mcp 进程都会维护自己的活动会话;第二个服务进程会独立进行分析。桌面应用、CLI 和 MCP 服务通过同一引擎提供答案,并可通过本地数据库共享配置和已保存的快照,但各自维护独立的活动分析。编辑源文件后,下一次刷新通常只会更新发生变化的部分,而不会重新加载整个解决方案;force: true 则会完整加载。多个调用方同时请求刷新时,会共享同一次刷新。

活动会话、快照和持久化代码库记忆

这些状态用途不同,不应混为一谈:

状态生命周期和用途重要限制
活动 MCP 会话由单个服务进程复用的内存图和 Roslyn 工作区可见已保存的文件,不可见编辑器中尚未保存的缓冲区;另一个服务进程拥有独立会话
已记忆的代码库remember_codebase 会持久化已分析的模型;之后或在另一个进程中可通过 recall_codebase 重新载入,无需运行 Roslyn重新载入的会话没有活动工作区、无法可靠提供行号,且洞察能力范围有所缩减;需要实时精度时,请使用 refresh_remembered
已保存的快照用于 compare_with_previous 和公共契约比较的命名基线是比较基线,不是活动工作区
<Solution>.aicb.json可纳入 Git 跟踪的解决方案配置仅包含规则和选项,不包含分析结果、会话或凭据

remember_codebase、recall_codebase 和 refresh_remembered 是可选工具:没有 MCP 配置文件会公开这些工具,因此启动服务时,请在 AICB_MCP_TOOLS 中指定它们(或使用 AICB_MCP_TOOLS=all)。recall_codebase 会报告持久化模型是否仍与源代码、负载架构和分析器标识相匹配。即使模型已过期,它也会有意返回重新载入的模型,并附上元数据,告知 Agent 何时需要进行实时重新分析。请参阅会话、重新载入和过期状态。

模型能够和不能证明的内容
  • AICB 会分析静态可见的 C#(包括 Razor 生成器从 .cshtml 视图编译出的 C#),以及选定的 Razor、XAML 和 AXAML 关系。仅通过反射、运行时程序集扫描、动态配置或外部使用方访问的代码可能不可见。
  • DI 分析可识别静态可读的 Microsoft-DI 风格注册和 MEF 导出特性; 运行时生成的注册会标记为动态或未知,而不会凭空推断。
  • 只有在确切知道数据类型的情况下,才会检查 XAML 绑定;如果无法确定,则不会对该绑定作出判断,而不会报告其已损坏。
  • 报告的副作用表示该方法自身或通过调用的方法,在代码中会执行此类操作。这只能说明方法可能写入文件,无法说明写入哪个文件或何时写入。
  • 响应会披露过期会话、未解析的项目和数量受限的结果集。将空答案或较短的答案视为证据前,请先查看 staleness、incompleteProjects、totalFound 和 truncated。
Agent 应如何判断答案

AICB 响应既是证据,也有其局限。在根据空结果、简短结果或看似确定的结果采取行动之前,请先检查随附的信号:

信号含义典型应对方式
staleness保存的源代码在分析后发生了变化,或自动刷新已运行或失败保存文件;如果响应不是最新的,则刷新
incompleteProjects 或 verdict: "inconclusive"无法充分解析项目引用,因而无法构建完整的语义图还原依赖或构建,然后调用 refresh_session(force: true)
totalFound 和 truncated存在的匹配项多于返回的匹配项缩小范围、翻页或提高文档中说明的上限
Bundle 清单或开头的省略说明令牌预算移除了周边类型、测试或同级实现提高预算,或明确请求缺失的部分
mergedNamesakes、歧义或多个候选项名称无法唯一解析到某个符号使用限定的符号名称重复查询
confidence、来源信息、动态或未知标记某个值是测量所得、由作者提供、推断所得,或无法通过静态分析获知保留不确定性,并在需要时核实相关运行时配置
origin: "Recalled" 或 lineNumbersAvailable: false答案来自持久化记忆,而非实时 Roslyn 工作区在依赖仅适用于实时环境的详情之前,先使用 refresh_remembered

MCP 配置文件控制自动刷新。Off 仅报告偏差,Reactive 会在读取工具作出响应前刷新,是默认发布的设置;Proactive 则会在保存的编辑稳定后启动分析。自动刷新无法看到尚未保存的编辑器缓冲区。陈旧状态也不同于引用不完整:前者需要刷新;后者通常需要先还原依赖或构建,再强制刷新。

AICB 还会区分未知和已验证不存在。assert_absence 等工具返回 confirmed、refuted 或 indeterminate,而不会将缺失证据变成错误的否定结论。

这份以问题为先的架构、局限与证据指南说明了记忆中保存的内容、刷新与上下文选择的工作方式、哪些声明经过测量,以及已发布的规模基准进展如何。

适用场景

问题工具
谁调用或使用了它?find_usages
更改的影响范围有多大?impact_of_change
在哪里实现或重写了此接口?find_implementations、find_overrides
哪些测试会执行此符号?find_tests_for
这里会注入什么?resolve_injection
哪些代码有副作用或会调用外部 API?find_by_side_effects、calls_external
Agent 执行此任务需要什么上下文?explain_symbol、prepare_task、pack_for_task
在我获取答案之前,答案会有多长?measure
此属性或资源在 XAML/AXAML 中哪里使用?find_binding_usages、find_resource_usages
哪些标记绑定无法安全解析?find_unresolved_bindings
两个分析状态之间有哪些变化?semantic_diff、diff_review
这组更改是否违反策略或公共契约?evaluate_change_set、compare_public_api
声称此符号未使用、未经测试或不存在,是否确有依据?assert_absence、verify_claim
审查者应查看哪些关于这些已更改符号的证据?review_context
并发、资源生命周期或事件订阅风险出现在哪里?find_by_concurrency_risk、find_by_resource_leak、find_by_event_subscription
重复结构、惯例或文档出现偏差的地方在哪里?find_structural_twins、check_pattern_drift、check_doc_drift

默认配置会公开此表中的所有工具,但 semantic_diff、 diff_review、find_by_concurrency_risk、find_by_resource_leak、 find_structural_twins、check_pattern_drift 和 check_doc_drift 需要 Full Select 配置,而 compare_public_api 需选择启用(参见 工具集和 Agent Skills)。

这些工具构成的是更广泛的能力地图,而非扁平的搜索目录:

能力示例
语义导航用法、实现、重写、层次结构、DI 和 XAML
更改安全性影响、测试、诊断、审查上下文和公共 API 比较
运行时风险指标并发、资源、事件、外部调用和副作用
架构与一致性层、循环、结构孪生、模式偏差和文档偏差
验证否定性声明、基线到更改的声明,以及更改集策略
上下文经济性任务打包、测量、令牌预算和压缩

桌面应用会将代码质量、安全、设计和架构方面的发现转化为可执行的审查队列:

AICB Insights 页面,显示按优先级排列的代码质量、安全、设计和架构发现

AICB 最适用于非简单的 C#/.NET 解决方案,以及纯文本搜索无法可靠回答的语义问题。它会分析 C#;选定的 XAML/AXAML 关系会补充该图谱。其他编程语言不在支持范围内。

默认情况下,多目标项目会按每个目标框架各加载一次,而查询接口通常会将其去重为一个逻辑项目。在 <Solution>.aicb.json 中设置 analyzePreferredTfmOnly,可将分析和导出工作缩减至最新的目标框架实例。符号清单仍然可用,但仅存在于其他目标中的入向依赖边可能会消失,因此这是一项有记录的精度与成本之间的取舍,而非透明的优化。

安全的 Agent 工作流

Agent 无需记住工具目录即可使用 AICB:

  1. 调用 server_info 验证连接并检测二进制文件或配置是否发生偏移。使用 list_skills 查看完整的功能映射,或使用 docs() 查看内置操作手册。
  2. 开始编辑任务时,调用 prepare_task,在单个预算内收集指定符号、相关上下文、覆盖这些符号的测试以及可能的同类实现。
  3. 修改其他代码会引用的符号前,调用 impact_of_change;如果任务包未提供足够的测试证据,则使用 find_tests_for。
  4. 处理空结果前,先查看不确定性和完整性信号,不要将空结果视为确凿证据。为含义不明确的符号名称补充限定信息;恢复并强制刷新不完整的项目。
  5. 进行并保存更改。然后,在调用 get_diagnostics 之前调用 refresh_session。在正常的 Reactive 配置文件下,这通常是多余的,但在任何模式下都适用,并能明确说明预期的边界。
  6. 如果任务涉及审查或策略方面的断言,请使用 review_context、evaluate_change_set 或 verify_claim;不要仅凭简短的搜索结果推断某项内容不存在。
  7. 最后运行仓库实际使用的构建和测试命令。get_diagnostics 报告的是 Roslyn 编译器诊断,不包括第三方分析器或运行时结果。

对于多个互不相关的只读问题,batch 会复用同一个会话,并返回一个有界响应。如果需要了解可能的响应大小,请先使用 measure。

可复现的分析、CI 和审查

需求AICB 工作流
对可移植的解决方案规则进行版本管理将 <Solution>.aicb.json 提交到解决方案旁边。它可以包含层规则、命名空间排除项、测试定义、抑制项、自动初始化标志和分析范围。每种使用场景只会使用对应文档中说明的配置维度;此旁置文件包含配置,不包含分析结果、会话、快照或凭据。使用 solution_config_status → init_solution_config → apply_solution_config;aicb init 不会创建此文件。
在 CI 中强制执行质量阈值运行 aicb analyze -s App.sln -o context.md --fail-on "critical>0 OR debt>120min"。门禁失败时会返回退出代码 6,并仍会写入上下文文档以供诊断。
将原地修改与基线进行比较修改前调用 save_session,然后调用 refresh_session 和 compare_with_previous;如果关注的契约是公共 API,则使用 diff_public_contract(Full Select 配置文件)。
审查两个实时分析状态semantic_diff 会报告结构变化。diff_review 还会提供影响范围、测试和新引入的问题,并给出策略判定。这两个需要两个会话的工具要求使用 Full Select 配置文件。
在多个进程间复用已分析的模型remember_codebase 会持久化模型,recall_codebase 会在不使用 Roslyn 的情况下加载模型,而 refresh_remembered 会在需要时恢复完整的实时分析。这三个工具均为可选工具(AICB_MCP_TOOLS)。
以可视化方式整理上下文Windows 应用提供解决方案树、手动上下文选择、详细信息和令牌控制、AI-Builder-MD 预览/导出、快照、Insights、LLM 运行和源代码编辑器。

在 GitHub Actions 中,门禁只需一个步骤。本仓库根目录下的 action 会设置 .NET 10 SDK、安装已发布的工具、还原解决方案并运行 aicb analyze;门禁失败时,该步骤会以退出代码 6 失败,但文档仍会 写入:

- uses: gregordadera/[email protected]
  with:
    version: 0.5.505.1
    solution: App.sln
    output: artifacts/context.md
    fail-on: "critical>0 OR debt>120min"

此示例固定了两部分:@v0.5.505.1 固定 action,version 固定它安装的软件包。不指定 version 时,action 会安装最新发布的软件包;使用 @main 时,action 会跟随每次变更,因此两者都不适用于依赖的构建。理论上,发布标签可以被移动;该标签对应的完整 commit SHA 才是不可变形式。其他输入包括用于指定其他 aicb analyze 选项的 dotnet-version、restore 和 args;输出为 output 和 exit-code。请参阅 action.yml。

配置优先级因配置维度和使用场景而异。例如,无头模式下的层映射可以回退到旁置文件,而无头模式下的测试检测目前从数据库或内置规则解析,而非使用旁置文件中的测试配置维度。准确的 对应关系表见配置指南。 运行中的 MCP 会话会保留分析时使用的配置;编辑旁置文件后,应启动新的分析,而不要假定 refresh_session 会重新读取该文件。 抑制项会在支持抑制的读取界面中隐藏已接受的问题,但 solution_metrics 和 CLI 质量门禁仍会将其计入。因此,共享抑制项是明确的审查决定,而不是降低门禁要求的办法。

从语义引擎到人机协作工作区

MCP 服务目前是 AICB 最完善、运营成熟度最高的集成接口。其 82 个已注册工具涵盖语义导航、变更影响分析、依赖注入、测试发现、架构、质量、上下文打包、审查和会话管理。配置文件提供精心筛选的 54 工具默认集,或包含 72 个工具的 Full Select 集;会话、过时信号和有限响应让该接口适用于编码 Agent。这些数字描述的是可用的产品功能范围,并非已发布的 Agent 成果质量基准。

当前启用的 MCP 配置文件还会选择面向任务的切面:每个切面都关联 Agent 指引、上下文模板槽位和对应的工具子集。list_skills 是运行时的事实来源,用于确定哪些工具已公开、哪些工具可调用,以及哪些额外的已注册工具位于当前启用的工具池之外。

Windows 应用通过面向人的可视化工作区,补充面向 Agent 的功能:解决方案导航、手动选择上下文、详情与令牌控制、AI-Builder-MD 预览和导出、快照、Insights、可复用配置以及手动运行大模型。

质量配置文件与解决方案专属分析配置

质量配置文件控制运行哪些洞察生成器及其使用的阈值,例如方法长度、圈复杂度和类大小。它本身不会定义问题严重性或 CLI 质量门禁。

AICB 质量配置文件编辑器,包含生成器开关和阈值

每个解决方案还有三个相互独立的分析维度:

维度回答的问题控制内容
Layer Profile这段代码在架构上属于哪一层?按顺序排列的命名空间模式到层的映射,适用于 Domain、Application 和 Infrastructure 等层。采用第一个匹配的规则。该配置文件还决定检测到跨层违规时应标记为 Advisory(警告)还是 Strict(严重)。
Exclude Namespaces哪些内容应排除在分析之外?分析器跳过的命名空间模式,可使用 Contains、StartsWith、EndsWith 或 Exact 匹配。这可避免已配置的框架或供应商依赖在语义图中占据主导;随附的预设涵盖 BCL 和 SAP Business One。
Test Profile哪些代码算作测试代码?项目名称规则和方法特性标记。内置配置文件可识别 xUnit、NUnit 和 MSTest 约定;面向生产代码的工具默认可排除检测到的测试代码。

桌面应用会在所选解决方案旁并排显示这三个选择器。Settings 页面用于编辑配置库;Workspace 选择器则用于选择适用于特定解决方案的库条目。单个解决方案的选择优先于全局默认值。

AICB Workspace 并排显示 Layer Profile、Exclude Namespaces 和 Test Profile

初始化这三条轴

对于刚注册的解决方案,三个自动初始化标记最初均处于启用状态。下次桌面端 Context Builder 加载该解决方案时,AICB 会尝试初始化所有仍未配置的轴。如果某个 sidecar 已覆盖某条轴,GUI 会提供恢复选项,无需调用模型。否则,如果有可用的默认模型配置文件,系统会发送一次 LLM 请求,根据已声明和已引用的命名空间列表提出层规则和排除项;测试检测则会根据已分析的项目和测试特性在本地完成。确认对话框决定是否应用提案——此时 LLM 请求已经发送。缺少模型配置文件、未检测到测试或拒绝提案,都可能导致某条轴仍未配置。已有选择绝不会被覆盖。

GUI 自动初始化成功后,会将所选配置文件存储在本地数据库中。它不会自动创建 <SolutionName>.aicb.json。使用 Workspace → Profiles → Export Config 写入可移植的 sidecar,然后提交该文件。之后的 GUI 可以从中恢复受支持的轴,无需调用 LLM;无头使用方则会应用配置矩阵中所述的各轴规则。Initialize Now 仅立即恢复 sidecar——不会调用模型,也不会分析解决方案。

Agent 也可以明确引导相同的设置流程:

  1. solution_config_status 会报告哪些轴已初始化,以及其当前值来自本地数据库、sidecar 还是两者皆非。
  2. init_solution_config 会返回提案材料:用于层映射的已声明命名空间、用于排除项的已引用命名空间,以及用于测试配置文件的已检测测试项目和特性。
  3. 审核或调整提案后,apply_solution_config 会创建并激活自定义条目、将各轴标记为已初始化,并在解决方案旁写入本地配置数据库和 <SolutionName>.aicb.json。
  4. 提交 sidecar,让可移植的解决方案配置随代码仓库一起流转。每个使用方都会应用上文所述的受支持轴;不要假定每个界面解析每个字段的方式都相同。之后,check_solution_config_drift 会报告该配置不再覆盖的命名空间或测试项目。

aicb init 是另一项操作:它会将代码仓库连接到 MCP 服务,并安装 Agent 技能和可选的符号保护机制。它不会初始化这三条解决方案轴,也不会创建 <SolutionName>.aicb.json。

有关优先级、sidecar 架构和完整初始化行为,请参阅配置文件与解决方案配置。

上下文模板和运行模板

这两种模板承担不同的职责:

模板类型用途
上下文模板(Templates)定义导出内容:提示词、Markdown 配置文件、详细程度预设、扩展策略、压缩、质量设置和导出开关
运行模板(Run Templates)定义任务的执行方式:运行类型、所选上下文模板、模型默认设置和运行专属选项

详细程度预设、Markdown 配置文件、扩展策略、压缩规则、流水线配置文件和质量配置文件都是可由上下文模板引用的可复用构件;运行模板则会选择该上下文模板。

AICB 上下文模板编辑器,包含提示词、详细程度和导出配置

产品方向,而非发布承诺

桌面应用的发展方向是一个面向人的编排工作区:开发者选择并限制上下文、检查中间结果、批准决策,并控制 AI 模型接下来运行什么。Manual 是当前已发布的运行类型。Iteration 旨在逐个处理所选节点,Preselection 则旨在让模型在主运行前缩小相关上下文范围;这两者都已在应用中体现,但尚未发布。Pipeline 目前仅作为数据模型中的占位项存在,不会执行任何操作。

安装

每台机器只安装一种形式:

需求安装方式平台
MCP 服务和 CLI.NET 全局工具 aicb-roslyn-mcpWindows、Linux、macOS
桌面应用,以及相同的 MCP 服务和 CLIWindows 安装程序或便携 ZIPWindows

此 .NET 工具需要 .NET 10 SDK。如果没有 .NET 10,它会在机器上安装的下一个更高版本的 .NET 上运行,并需要该版本的 SDK。只有 .NET 8 或 .NET 9 的机器无法启动它。

dotnet tool install -g aicb-roslyn-mcp
aicb --version

在 0.5.465.1 及更早版本中,包名为 AIContextBuilder。更新不会自动完成此更名:请先移除旧包,再按上述方式安装新包。

dotnet tool uninstall -g AIContextBuilder

之后可使用 dotnet tool update -g aicb-roslyn-mcp 更新。对于容器,仓库中的 Dockerfile 会安装相同的 .NET 工具,并通过 stdio 提供 MCP 服务。容器以非 root 用户运行,而分析会将 obj/ 写入挂载的解决方案,因此请以挂载目录所有者的身份运行容器,并先在容器内还原解决方案:

docker run --rm --user "$(id -u):$(id -g)" -v "$PWD:/src" \
  -v aicb-nuget:/home/aicb/.nuget/packages --entrypoint dotnet aicb restore /src/App.sln
docker run --rm -i --user "$(id -u):$(id -g)" -v "$PWD:/src" \
  -v aicb-nuget:/home/aicb/.nuget/packages aicb

Dockerfile 的标头说明了为什么必须在容器内运行还原。

如果工具报告无法注册 MSBuild,说明它运行所在的 .NET 没有找到可用的 SDK:比该 .NET 更新的 SDK 不算可用(例如,.NET 10 运行时旁只有 .NET 11 SDK)。请安装 .NET 10 SDK;在 .NET 10 运行时旁,.NET 8 和 .NET 9 SDK 也可以使用。或者设置环境变量 DOTNET_ROLL_FORWARD=LatestMajor,让工具在最新的 .NET 上运行;如果是预览版 .NET,还需要设置 DOTNET_ROLL_FORWARD_TO_PRERELEASE=1。

Windows 下载包是独立的,但分析解决方案仍需要来自 .NET SDK 或 Visual Studio 的 MSBuild。安装程序和程序均已进行代码签名(发布者:Gregor Dadera);在新版本积累足够的下载记录之前,Windows SmartScreen 仍可能发出警告。每个版本均提供 SHA-256 校验和。

连接编码 Agent

在你希望 Agent 处理的项目中运行:

aicb init

此命令会写入 .mcp.json(Claude Code 读取的 MCP 配置文件)以及 .claude/skills/ 下的 aicb-csharp-context Agent 技能,且不会覆盖现有文件。如果项目使用 Codex 或 OpenCode(存在 .codex/ 或 .opencode/ 文件夹),还会在相应客户端自己的配置中注册服务,并将技能写入 .agents/skills/,供两者读取。如果检测到 Claude Code、Codex 或 OpenCode 项目配置,还会安装符号防护,阻止通过 grep 搜索 C# 符号,并将 Agent 引导至语义工具。这会有意改变 Agent 的行为。可通过以下命令选择退出:

aicb init --hooks none

--hooks none 仅跳过防护;仍会注册服务。若要配置尚不存在其文件夹的客户端,请指定其名称:aicb init --hooks codex 或 aicb init --hooks opencode。

各客户端的状态:

客户端MCP 配置技能与防护
Claude Codeaicb init 写入 .mcp.json已安装技能和可选防护
Codexaicb init 写入 .codex/config.toml;Codex 仅在你已信任的项目中读取该文件.agents/skills/ 中的技能和可选防护已安装
OpenCodeaicb init 写入 opencode.json.agents/skills/ 中的技能和可选防护已安装
Cursor / Cline / 其他 stdio 客户端添加命令 aicb,参数为 mcp如果客户端支持 Agent Skills,请使用已发布的技能

为读取该文件的客户端手动配置 .mcp.json:

{
  "mcpServers": {
    "aicb": {
      "command": "aicb",
      "args": ["mcp"]
    }
  }
}

让客户端调用 server_info,以验证连接。每个分析工具都接受绝对路径 .sln、.slnx 或 .slnf 作为会话,因此无需单独执行分析步骤。有关配置、初次提问和故障排除,请参阅五分钟指南。

工具集和 Agent Skills

集合数量用途
默认 MCP 配置54 个工具精选的语义和结构工具,适用于常规 Agent 工作
Full Select 配置72 个工具默认集合加上经过评估的长尾工具
完整服务端功能82 个工具Full Select 加上可选的会话记忆、数据库和 API 比较工具

本 README 列出了 54 个默认工具中的 35 个;下方的参考文档介绍了全部工具。 使用 aicb mcp --mcp-profile mcp-profile/full 启动 Full Select 配置。设置 AICB_MCP_TOOLS=all 还可添加可选工具。生成的工具参考记录了默认工具集;MCP 服务手册 介绍了全部 82 个工具及其参数,也涵盖会话和过期状态、配置、工具池和功能分面,以及 aicb init 写入的内容——共 12 章 Markdown 文档,可在浏览器中阅读,也便于 Agent 使用;此外还提供了 PDF。

这三个已公布的数量只是起点,并非固定版本。在桌面应用的 MCP 配置编辑器中,你可以创建或复制配置,只启用所需任务功能分面,并选择单个核心工具和功能分面工具。除锁定的诊断工具 server_info 外,所有核心工具都可以移除,因此甚至可以创建非常精简、针对特定任务的 tools/list。服务的固定开场内容是面向 Agent 的指导,而非另一个可选工具组。对于无头配置,AICB_MCP_TOOLS=methods:<tool>,<tool>,... 会准确公开指定的函数;也支持类列表、lean 和 all。配置和环境变量的更改会在下次启动服务时生效。list_skills 会显示池内和池外工具的最终状态。请参阅配置、工具池和功能分面。

skills/ 中附带了四个 Agent Skills:

  • aicb-csharp-context 将 C# 语义问题路由到合适的工具。
  • aicb-code-review 检查已完成的更改是否正确。
  • aicb-code-simplifier 查找不必要的复杂性。
  • aicb-usage-check 报告此服务实际被用于哪些用途。

最后三个为可选项:aicb init --skills=all。

规模、发行版与兼容性

AICB 没有公布硬性的项目数量上限。初始成本和峰值内存因解决方案而异,并会随加载的项目、文档、目标框架实例和图密度而增长。首次分析可能需要几秒到几分钟;后续问题会复用预热后的图,而符合条件的已保存源文件编辑则使用增量刷新路径。对于超大型代码库,可使用 .slnf 减少 MSBuild 加载的内容,也可以设置 analyzePreferredTfmOnly,避免分析每个目标框架实例。summaryOnly、查询范围和令牌预算可以减少响应量,但不一定会减少底层解决方案分析的工作量。桌面应用的 load-perf.log 和 MCP usage_report 可提供本地阶段及延迟测量结果。我们已在架构与证据指南中发布针对三个公开 .NET 解决方案(约 25k、约 55k 和约 1.8M 行 C# 代码)的标准化冷启动/热启动时间和内存基准;这些控制措施仍不能构成通用的性能承诺,但现在已有经过测量的边界。

当前公开发行版没有声明 LTS 支持期限、响应时间 SLA,也不保证所有 MCP 响应和持久化架构在不同版本间保持不变。我们明确提供以下运维保障:变更日志会记录发行版;server_info 会报告版本、构建信息和配置漂移;持久化分析会记录负载架构和分析器标识,不兼容时会回退到实时分析;桌面应用会拒绝写入由更新架构创建的数据库。数据库迁移可能是单向的,因此要可靠回滚,应在更新前备份,并使用单独的迁移前数据库或恢复迁移前数据库后再运行旧版本。必要时,可通过商业协议约定更完善的支持、响应时间和版本维护承诺;请参阅支持。

CLI 概览

aicb init      Connect a project to the MCP server and install the agent skill.
aicb analyze   Analyze a solution and emit context Markdown.
aicb export    Re-render Markdown from an existing session database.
aicb import    Import a constellation JSON.
aicb list      List built-in and custom profiles and presets.
aicb mcp       Start the stdio MCP server.
aicb call      Invoke one MCP tool without an MCP client.

运行 aicb <command> --help 查看选项。

默认在本地运行

  • CLI 和 MCP 服务不具备出站网络功能,也不会修改其分析的源代码。
  • 不存在出站遥测、分析、更新检查、账户或许可证服务。MCP 服务会在本地记录工具调用,供 usage_report 和桌面应用的 MCP 使用情况页面使用;这些日志不会离开设备。
  • 桌面应用只会联系你配置的大模型端点,用于手动运行、模型配置文件连接测试,或在相应自动初始化标志已启用时,为 Layer Profile 和 Exclude Namespaces 提供首次加载建议。该端点可以是本地模型。Details 选项卡也是一个真正的编辑器,只有在你明确选择 Save 时才会保存文件。
  • 打开解决方案时,会运行其中的 MSBuild 逻辑来解析引用;构建其编译时,会运行项目引用的源生成器,这与 IDE 或 dotnet build 的行为相同。只分析你信任的解决方案。AICB 不会运行第三方 Roslyn 分析器,但有一个可选例外:使用 runSuppressors: true 调用 get_diagnostics 时,会运行项目的诊断抑制器,就像实际构建时一样。

少数明确列出的工具可以写入配置或导出内容;其工具说明会对此作出说明。完整的威胁模型和私密报告渠道见 SECURITY.md。

许可概览

以下情况可免费使用:

  • 自然人用于个人、爱好和教育用途,
  • 经认证的教育机构用于教学、学习和非商业研究,
  • 未达到以下任何一项门槛的组织:100 名员工、年营业额 1,000 万欧元、21 名开发人员。

这些门槛适用于你的组织,而非你的客户。首次达到任意一项门槛后,你有 90 天时间达成商业许可协议;在此期间仍可免费使用。这 90 天仅为合同条款:AICB 不会启动许可计时器,不会发送门槛或期限数据,不会屏蔽任何功能,也不会在期限结束时从技术上停止运行。商业许可起价为每位获许可开发人员每月 25 欧元;确切价格和范围取决于用户数量、所需支持级别,以及就改进请求商定的优先级。商业协议可包含支持、明确的响应或维护承诺、优先考虑或实施改进——例如,让具有普遍用途的分析器更准确地处理客户代码中出现的模式。此类工作会改进 AICB 通用产品;不会创建客户专属分支,也不会使 AICB 专门适配某个代码库。客户代码绝不会被自动收集或用于改进;要检查客户代码,必须由客户主动提供材料或访问权限,并另行约定范围和保密要求。确切的交付成果、优先级和保证仅在写入个别协议后方为有效。允许通过 AICB 文档所述的接口将其连接到 MCP 客户端、Agent 运行环境、脚本、构建系统和 CI。不得重新分发、修改、重新打包、转售 AICB 二进制文件,也不得将其作为托管服务提供。请联系 [email protected]。请参阅通俗易懂的指南、LICENSE.txt以及完整的双语EULA.md。

支持与持续开发

AICB 正在积极开发中:变更日志记录了每次发布,已发布的版本可在发布页面查看。

支持服务遵循许可协议:

免费商业协议
对象低于门槛的所有人达到或超过任一门槛的组织,或希望获得更强保障的任何人
渠道GitHub Discussions、Issues直接联系,另加公开渠道
响应目标尽力而为≤ 2 个工作日
安全修复通过公开发布提供已确认漏洞的修复目标为 ≤ 10 个工作日
版本维护当前版本单独约定维护期限
改进请求由社区推动优先考虑;约定的优先事项会写入合同
源代码访问无可约定在 NDA 下进行代码审查

表中的目标为个人协议中可能包含的常见数值;只有写入协议后才具有约束力,单纯付款不会产生任何未明示的 SLA。价格请参阅许可概览。请联系 [email protected]。

欢迎在 GitHub Discussions中提出问题和功能请求。请通过 GitHub Issues报告错误,并附上 aicb --version;如果是 MCP 问题,还请附上 server_info 的输出。请按照 SECURITY.md中的说明私下报告安全问题。

文档

以上只是简要介绍。以下三份手册提供完整参考——共 35 章,每份手册 70,000 到 88,000 个单词,合计约为本 README 篇幅的 39 倍。

“AIContextBuilder”和“AIContextBuilder for .NET”是 Gregor Dadera 使用的产品名称;未声称已注册商标。

评论

支持 Markdown

第一次接触 MCP?

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

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