BannerlordSage
   
MCP服务器 《山与剑II:旗手》 它提供源代码搜索和数据浏览。
它读取您本地的Bannerlord安装,导入XML,反编译官方DLL,构建SQLite索引,并为AI编码代理公开MCP工具。使用案例:
- 模组开发
- 逆向工程
- 结构化游戏查找
- 读取本地mod源代码
AI辅助安装
要为您安装和配置编码代理(Codex、Claude、Gemini、Copilot等),请执行以下操作:
- 将存储库URL发送给AI
- 让它读
AGENTS.md第一 - 让它跟着
AI_QUICKSTART.md - 提供您的 `` 当被问及
归因
BannerlordSage包括Vortex从RimSage衍生的作品。 该项目仍在MIT许可证下。看 LICENSE.
工具概述
BannerlordSage提供 34工具 跨越两个入口点:
| 入口点 | 工具 | 注释 |
|---|---|---|
bun run start:bannerlord | 32 | 用于查询、分析、mod源代码工作和项目内存的默认工具集 |
bun run start:bannerlord:full | 34 | 添加工作区创建和XSLT补丁生成 |
基本工作流程: 运行安装程序→ 启动MCP→ 让模型调用工具
刀具清单
诊断
| 工具 | 说明 |
|---|---|
bannerlord_doctor | 检查模块运行状况:缺少依赖项、重复DLL、加载顺序问题 |
bannerlord_index_status | 检查BannerlordSage是否已初始化,本地索引是否已准备就绪 |
项目记忆
| 工具 | 说明 |
|---|---|
project_memory_add | 存储一个项目内存条目 |
project_memory_capture_session | 在一次通话中存储会话摘要以及决策、陷阱、偏好、TODO和笔记 |
project_memory_search | 在回答有关过去工作的问题之前搜索项目记忆 |
project_memory_recent | 显示最近的项目内存条目 |
project_memory_wakeup | 在会话开始时加载密钥活动内存 |
project_memory_invalidate | 将旧内存标记为非活动 |
官方来源和XML
| 工具 | 说明 |
|---|---|
search_source | 在反编译的官方源代码中进行全文搜索——当您不知道要查看哪个文件时,请使用此功能 |
read_csharp_type | 按名称读取C#类型的反编译定义 |
read_file | 从已知文件路径读取特定行范围 |
list_directory | 浏览导入的官方资产目录 |
search_xml | 在官方XML文件中搜索ID、字段、令牌或概念 |
resolve_localization | 解决游戏内本地化令牌,如 {=abc123} 到实际文本 |
read_gauntlet_ui | 检查Gauntlet UI文件绑定和交互逻辑 |
结构化游戏查找
| 工具 | 说明 |
|---|---|
trace_troop_tree | 查询部队类型的完整升级路径 |
get_item_stats | 查询武器、装备或铁匠的详细统计数据 |
get_hero_profile | 查询英雄的技能、特征和背景 |
get_clan_summary | 询问氏族或派系的成员、实力和关系 |
get_kingdom_summary | 查询王国的领土、政策和当前状态 |
get_culture_summary | 查询文化的独特单位、奖金和风格 |
get_settlement_summary | 查询城镇、村庄或城堡 |
get_skill_data | 查询技能的属性、奖励和相关福利 |
get_policy_summary | 查询策略的描述、支持信息和交叉引用 |
get_perk_data | 查询福利的技能树、配对福利、角色奖励和描述 |
本地Mod源
这些工具读取您自己的本地mod源代码,而不是官方导入的源代码。
| 工具 | 说明 |
|---|---|
mod_source_status | 检查mod源工作区是否已配置和索引 |
index_mod_source | 索引本地mod源目录以进行搜索和类型查找 |
search_mod_source | 在本地mod源代码中搜索 |
read_mod_file | 从本地mod读取特定的源文件 |
list_mod_directory | 浏览本地mod的目录结构 |
read_mod_type | 按名称从本地mod读取C#类型定义 |
补丁和代码生成
| 工具 | 说明 |
|---|---|
generate_harmony_patch | 使用方法签名提示生成Harmony补丁代码脚手架——参数类型需要手动完成 |
create_mod_workspace ⁺ | 生成一个新的mod项目结构(SubModule.xml、.csproj、C#入口点)——准备就绪 dotnet build;拒绝覆盖非空目录 |
generate_xslt_patch ⁺ | 生成用于修改官方XML的XSLT补丁模板——不验证XPath或片段语法,将其视为起始模板 |
⁺ 仅适用于 start:bannerlord:full.常见工作流
浏览官方来源:
search_source--查找文件read_file--阅读相关章节read_csharp_type--检查类型定义
浏览XML或本地化:
search_xml--查找文件read_file--阅读内容resolve_localization--解析令牌
已知游戏ID,直接查找:
- 直接使用结构化查询工具:
get_item_stats,trace_troop_tree,get_hero_profile等等。
读取本地mod源代码:
mod_source_status--确认工作空间search_mod_source--搜索代码read_mod_file/read_mod_type--阅读详细信息
使用项目记忆恢复工作:
project_memory_wakeup--加载工作区的关键活动上下文project_memory_search--检查是否已经存在类似的决定、陷阱或偏好project_memory_capture_session--在任务结束时存储有用的会话输出
每日MCP使用情况
一旦BannerlordSage安装并连接到您的AI客户端,正常的日常循环是:
- 启动或恢复任务并呼叫
project_memory_wakeup - 探索官方行为
search_source,read_file,以及read_csharp_type - 探索你自己的模组
mod_source_status,search_mod_source,read_mod_file,以及read_mod_type - 当你已经知道游戏id时,使用结构化查询工具
- 在陈述项目历史之前,请致电
project_memory_search - 任务接近尾声时,呼叫
project_memory_capture_session
项目内存工作流
项目记忆是一个局部回忆层。它不会改变模型的上下文窗口。它为代理提供了一个存储决策、陷阱、偏好和后续状态的地方。
这样使用它:
- 使用以下命令启动已恢复的任务
project_memory_wakeup - 在声明项目历史记录之前搜索内存
- 仅存储持久结论
- 更喜欢
project_memory_capture_session接近任务完成 - 当旧记忆不再真实时,使其失效
安装
1.先决条件
- 视窗
- 合法拥有的当地Bannerlord装置
- 包子
- ripgrep
- .NET SDK 8+
- ILSpyCmd
安装所有依赖项的一行代码:
powershell -c "irm bun.sh/install.ps1 | iex"
winget install BurntSushi.ripgrep.MSVC
winget install Microsoft.DotNet.SDK.8
dotnet tool install --global ilspycmd2.安装软件包
bun install3.运行安装程序
bun run setup:bannerlord -- --game-dir ""替换 `` 使用本地Bannerlord安装的绝对路径。第一次跑步需要一段时间;后续运行是递增的。
常见标志:
| 标志 | 描述 |
|---|---|
--dll-scope core | 仅解压缩核心TaleWorlds DLL(最快) |
--dll-scope modding | 核心+模组支持库(Newtonsoft.Json等) |
--dll-scope official | 所有官方模块DLL |
--dll-scope all | 官方+第三方模块DLL(最完整、最慢) |
--xml-scope official | 仅导入官方模块XML |
--xml-scope all | 官方+所有本地安装的第三方模块XML |
--accept-disclaimer | 跳过交互式免责提示 |
--clean | 从头开始擦除并重建索引 |
4.启动MCP
# Default (recommended)
bun run start:bannerlord
# Full toolset
bun run start:bannerlord:fullMCP客户端配置
[mcp_servers.bannerlordsage]
command = "bun"
args = ["run", "src/entrypoints/bannerlord-stdio.ts"]
cwd = ""
enabled = true完整的工具集:
[mcp_servers.bannerlordsage]
command = "bun"
args = ["run", "src/entrypoints/bannerlord-full-stdio.ts"]
cwd = ""
enabled = true替换 `` 在您的计算机上具有此存储库的绝对路径。
环境变量
| 变量 | 描述 |
|---|---|
BANNERSAGE_GAME | 活动游戏配置文件-当前始终 bannerlord |
BANNERSAGE_BANNERLORD_GAME_DIR | 默认Bannerlord安装路径 |
BANNERSAGE_GAME_DIR | 通用默认游戏路径 |
BANNERSAGE_ILSPYCMD_EXE | 覆盖 ilspycmd 可执行路径 |
BANNERSAGE_EULA_ACCEPTED=true | 跳过交互式免责提示 |
脚本
bun run setup:bannerlord -- --game-dir "" # initialize / update index
bun run start:bannerlord # start default MCP
bun run start:bannerlord:full # start full MCP
bun run verify:memory # verify native project-memory tools
bun run index:gameplay # rebuild gameplay index only
bun run index:mod-source -- --source-dir "" # index local mod source
bun run verify:bannerlord -- --game-dir "" # local regression check
bun run smoke:release # quick build validation
bun run report:scopes -- --game-dir "" # output scope report项目结构
| 路径 | 描述 |
|---|---|
src/entrypoints/ | MCP和设置入口点 |
src/scripts/ | 设置、索引、验证和发布脚本 |
src/tools/ | MCP工具实现 |
src/utils/ | 共享运行时和索引逻辑 |
tools/BannerlordSage.CSharpIndexer/ | 基于Roslyn的C#索引器 |
dist/ | 本地生成的运行时数据(未提交) |
AGENTS.md | AI编码代理的安装说明 |
AI_QUICKSTART.md | 为用户复制粘贴安装提示模板 |
免责声明
该项目旨在通过合法拥有的游戏副本进行个人学习、研究和模组开发。
- 该存储库不包括或重新分发Bannerlord游戏资产。
- 用户有责任遵守游戏EULA和适用的当地法律。
- 默认情况下,已解压缩和索引的内容仍然是本地的。
