关于 se-dev-server-code
SE Dev Server Code Skill 帮助 Space Engineers 服务器开发者检查反编译的 C# 代码和文本服务器内容。它会准备带版本记录的本地数据,并提供搜索 API、代码结构和内容引用的操作。
主要功能
- 01准备反编译服务器源码
- 02搜索类、方法和字段
- 03检查类层次结构
- 04按服务器版本跟踪源码变化
- 05搜索文本内容及代码引用
适用场景
- 01调用或修改 API 前核对实现
- 02比较不同服务器版本的代码
- 03查找 C# 代码引用的内容文件
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ cometworks/ skills --skill se-dev-server-code安装后在 Claude Code 中输入/se-dev-server-code确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
.python-versionAdvanced.mdcheck_index.pycheck_version.pyClean.batclean.shCodeSearch.mdCommandExecution.mdCommandExecutionDetails.mdcommon-posix.shContentTypes.mdcopy_content.pyDecompile.shDecompileDll.shDetectServerRoot.batfix_case_collisions.pyhash_server_files.pyhierarchy_tree.pyHierarchySearch.mdImplementation.mdindex_code.pyindex_content.pyPrepare.batPrepare.mdprepare.shpyproject.tomlactions/bash.mdprepare.mdsearch.mdtest.md详细介绍
SE Dev Server Code 技能
允许读取 Space Engineers Dedicated Server 的反编译 C# 代码。服务器的“游戏逻辑”与游戏(客户端)运行的逻辑大体相同。入口点(主可执行文件)、部分日志记录和配置方面有所不同。此外,服务器不会使用某些库,但它们仍可能存在,以提供必要的数据结构和部分后端功能。
⚠️ 重要:命令在 UNIX shell 中运行。请使用 bash 语法。Windows 上使用 BusyBox;Linux 上使用原生 shell。
示例:
- ✅
test -f file.txt && echo exists - ✅
ls -la | head -10 - ❌
if exist file.txt (echo exists)——此命令无法运行
操作:
- prepare:运行一次性准备步骤(Windows 上运行
Prepare.bat,Linux 上运行prepare.sh) - bash:运行 UNIX shell 命令(Windows 上使用 BusyBox,Linux 上使用原生 shell)
- search:使用
search_server_code.py搜索代码 - test:在 Windows 上运行
test_search_server_code.bat,或在 Linux 上运行test_search_server_code.sh,以测试此技能
路由判定
按以下顺序检查这些模式——匹配到第一项即停止:
| 优先级 | 模式 | 示例 | 路由 |
|---|---|---|---|
| 1 | 空调用或不带参数的调用 | se-dev-server-code | 显示此帮助 |
| 2 | 准备相关关键字 | se-dev-server-code prepare、se-dev-server-code setup、se-dev-server-code init | prepare |
| 3 | Bash/shell 相关关键字 | se-dev-server-code bash、se-dev-server-code grep、se-dev-server-code cat | bash |
| 4 | 搜索相关关键字 | se-dev-server-code search、se-dev-server-code find class、se-dev-server-code lookup | search |
| 5 | 测试相关关键字 | se-dev-server-code test、se-dev-server-code verify、se-dev-server-code check | test |
要求
主机系统的 PATH 中必须包含以下内容:
- Python 3.11 或更高版本
- git 命令行客户端(用于对每个反编译的服务器构建版本进行版本管理)
- dotnet SDK(用于安装
ilspycmd)
入门
⚠️ 重要:运行任何命令之前,请先阅读 CommandExecution.md,以避免导致命令失败的常见错误。
如果此文件夹中缺少 Prepare.DONE 文件,则必须先运行一次性准备步骤。请参阅 prepare 操作。
如果服务器自动检测失败,请在运行准备脚本之前设置 SE_SERVER_ROOT。将其指向专用服务器根目录(在 Linux 上也可以直接指向 DedicatedServer64 目录)。
文件夹布局
准备完成后,技能文件夹中会包含一个 Data junction/符号链接。实际数据存储在技能文件夹之外,因此在 Clean.bat / Prepare.bat / prepare.sh 周期执行期间会保留下来。
skills/se-dev-server-code/
├── Data/ (junction/symlink → per-user persistent server-code data)
│ ├── .git/ local Git repository tracking decompiled sources
│ ├── .gitignore ignores CodeIndex/, graphify-out/, __pycache__, *.py[cod], *.bak, *.log
│ ├── game_version.txt recorded SE_VERSION / CLIENT_BUILD_NUMBER / SERVER_BUILD_NUMBER
│ ├── server_files.json SHA256 of every original server file (committed - diffable)
│ ├── Decompiled/ decompiled C# sources only, organised per assembly (committed)
│ ├── Content/ textual server content (committed - definition changes reviewable)
│ ├── CodeIndex/ CSV indexes (NOT committed - regenerated)
│ └── graphify-out/ Graphify graph of Decompiled/ (NOT committed - regenerated)
├── Bin64/ (junction/symlink → server's DedicatedServer64, removed after preparation)
└── ... skill scripts and documentation
Data 文件夹是指向每用户持久服务器代码数据目录的 junction/符号链接(Windows 上为 %USERPROFILE%\.se-dev\server-code,Linux 上为 ~/.se-dev/server-code)。请像以往一样使用 Data/Decompiled、Data/Content 和 Data/CodeIndex。
Graphify 图
准备过程会为 Data/Decompiled 下的反编译服务器代码单独构建 Graphify 图(或使用 SE_DEV_SERVER_CODE_GRAPH_ROOT 指定的目录)。图会写入经图化的树旁边的 Data/graphify-out(或 SE_DEV_SERVER_CODE_GRAPH_OUT),因此 Data/Decompiled 中只包含反编译后的 C# 代码。Prepare 会在 Python 3.12 上安装 Graphify,并使用快速的原生 Rust Leiden 聚类后端;如果该后端可用(需要 uv),则会在约 1–2 分钟内自动构建图。无法配置快速后端时,会回退到较慢的单核聚类(约 10–30 分钟),并默认保持选择加入状态,需设置 SE_DEV_GRAPHIFY=1(请先询问用户);设置 SE_DEV_GRAPHIFY=0 可禁用。按需阅读以下内容——常规搜索时请跳过:
- 构建 / 健康检查 / 重建:GraphifyPrepare.md
- 查询现有图:GraphifyUsage.md
健康检查和查询测试(仅在已构建图后才有意义):
bash ../se-dev/graphify-check.sh Data --deep # is the graph usable?
./test_graphify_server_code.sh # run a few graph queries
反编译源代码的本地版本控制
Data 文件夹是一个本地 Git 仓库。每次成功准备后,都会为反编译的 C# 源代码创建一次提交,提交信息为服务器版本标签,例如 1.208.015 b4。
这意味着:
- 所有之前反编译的服务器版本都会保存在本地 Git 历史记录中。你可以在
Data/中对任何过去的提交执行git checkout,以检查旧版本或与旧版本进行差异比较。 - 系统会自动检测服务器更新,方法是将二进制文件中嵌入的版本常量与
Data/game_version.txt进行比较。如果两者不同(或文件缺失),Decompiled/、Content/、CodeIndex/、graphify-out/和server_files.json都会被清除,并重新执行反编译。 - 这样一来,便于更新插件、模组和脚本,以兼容新版服务器:比较
Data/中两个提交的相关源代码,即可准确查看发生了哪些变化。
仓库使用内部作者/邮箱(se-dev-skills@localhost),因此即使机器未配置全局 Git 身份信息,也可以正常提交。
原始服务器文件哈希
准备过程中还会记录 Space Engineers Dedicated Server 安装目录中每个文件的 SHA256,并写入
Data/server_files.json(相对于安装根目录的路径 → 小写十六进制摘要,
按字母顺序排序,每行一对),然后使用版本标签创建提交。
比较两个版本提交中的文件即可准确查看游戏更新修改了哪些二进制文件,包括既不是程序集也不是文本的资源;这些文件不会出现在
Data/Decompiled 或 Data/Content 中。
使用 ./verify_server_files.sh(Linux)或
.\VerifyServerFiles.bat(Windows)根据记录的摘要验证安装。文件格式、
差异比较方法和验证输出请参阅 ServerFileHashes.md。
必备文档
- CommandExecution.md - ⚠️ 请先阅读此文 - Windows 命令执行详情;在 Linux 上保留 bash 语法并使用
prepare.sh
代码搜索文档
- QuickStart.md - 更多示例和快速参考
- CodeSearch.md - 搜索类、方法、字段等内容的完整指南
- HierarchySearch.md - 查找类/接口的继承关系和实现
- Advanced.md - 用于复杂搜索的高级技巧
- Troubleshooting.md - 搜索返回 NO-MATCHES 或结果过多时的处理方法
- ServerFileHashes.md - 原始服务器文件的 SHA256 摘要:格式、跨游戏版本差异比较、验证安装
- Implementation.md - 面向技能贡献者的技术细节(可选)
快速搜索示例
# Find class declarations
uv run search_server_code.py class declaration MyCubeBlock
# Find method signatures
uv run search_server_code.py method signature UpdateBeforeSimulation
# Find class hierarchy
uv run search_server_code.py class children MyTerminalBlock
# Count results before viewing (useful for large result sets)
uv run search_server_code.py class usage MyEntity --count
# Limit number of results
uv run search_server_code.py class usage MyEntity --limit 10
# Paginate through results
uv run search_server_code.py class usage MyEntity --limit 10 --offset 0
uv run search_server_code.py class usage MyEntity --limit 10 --offset 20
需要确认确切的 API、方法体或 IL 时,请检查服务器代码,也就是你即将调用或打补丁的代码。若要了解某个系统的整体工作原理,请先阅读 se-dev-server-book 手册(如果已安装);这比搜索更快。如果没有该手册,本技能也可作为这方面的参考。
自定义脚本
如需编写自己的实用脚本来处理索引和反编译代码:
- ScriptingGuide.md - 如何编写 Python 脚本、使用 BusyBox 和处理 Windows 路径
服务器内容数据
服务器 Content 中的文本内容会复制到 Data/Content 文件夹,供全文搜索:
- 语言翻译,包括字符串 ID
- 方块和其他实体定义
- 默认蓝图和场景
- 内容类型的完整列表请参阅 ContentTypes.md
内容索引
Data/CodeIndex/content_index.csv 将每个文本内容文件映射到引用它的反编译 C# 源文件。列包括:rel_path(相对于 Data/Content/ 的路径)和 usage(引用该文件的 Data/Decompiled/ 中 C# 源文件的路径)。每个内容文件会针对每处引用各出现一次,因此可以按 rel_path 筛选和分页,查看加载或引用给定内容文件的所有 C# 代码。没有已知引用的文件只有一行,且 usage 列为空。
运行专用服务器
服务器可执行文件是 DedicatedServer64 文件夹中的 SpaceEngineersDedicated.exe。
无头模式(无 UI)
SpaceEngineersDedicated.exe -console
绕过 Telerik WinForms 配置 UI,直接运行服务器。
配置
服务器通过 XML 文件配置。主要配置文件是服务器 AppData 目录中的 SpaceEngineers-Dedicated.cfg(通常为 %APPDATA%\SpaceEngineersDedicated\)。
主要配置项:
- 服务器设置(名称、世界、模组、最大玩家数)
- 世界设置(游戏模式、物品栏容量、焊接速度)
- 网络设置(端口、公开/私有)
直接编辑 XML 文件进行配置。本技能不提供配置、世界或模组管理工具;如果需要编写此类任务的脚本,请参阅 ScriptingGuide.md。
仅服务器程序集
| 程序集 | 描述 |
|---|---|
SpaceEngineersDedicated | 服务器入口点(取代 SpaceEngineers.exe) |
VRage.Dedicated | 专用服务器框架、生命周期、配置 |
VRage.RemoteClient.Core | 远程客户端支持(类似 RCON 的功能) |
一般规则
- 通常只在
Data/Decompiled文件夹中的 C# 源文件(.cs)内搜索。如果要处理转译器或预加载器补丁,则也搜索 IL 代码(.il)文件(如果准备过程中已生成;默认关闭,参见DecompileDll.sh)。 - 在
Data/Content文件夹中搜索与任务相关的文件。类型列表请参阅 ContentTypes.md。 - 不要在
Data/Decompiled文件夹之外搜索反编译的服务器代码。准备成功后,反编译的服务器源代码树必须位于此处。 - 不要在
Data/Content文件夹之外搜索服务器内容数据。准备成功后,复制的服务器内容必须位于此处。
操作参考
请遵循以下详细说明:
- prepare 操作 - 一次性准备
- bash 操作 - 通过 busybox 运行 UNIX shell 命令
- search 操作 - 执行代码搜索
- test 操作 - 测试此技能
备注
此技能的原始来源:https://github.com/CometWorks/skills