mirror of
https://github.com/alibaba/arthas.git
synced 2026-10-20 00:17:01 +00:00
3.4 KiB
3.4 KiB
AGENTS.md
本仓库是 Arthas,包含 JVM 诊断工具的 Java 多模块源码、Web 控制台和 VuePress 文档站。以下约定适用于整个仓库。
工作原则
- 从第一性原理出发:先明确要解决的问题、输入输出和必须保持的约束,再定位相关实现与测试。
- 选择能完整满足当前需求的最小实现。优先直接的控制流和已有能力;新增抽象、依赖或配置必须有具体收益。
- 修复根因,避免用多层兜底、静默吞错、伪造默认值或反复重试掩盖错误。兼容与恢复逻辑只服务于已知场景,并明确触发条件、失败结果和终止条件。
- 在输入和系统边界校验,内部依赖明确的契约,避免层层重复防御。
- 保持修改聚焦,沿用附近代码的风格。保留用户已有改动,不顺带重构、格式化或清理无关文件。
工程入口
core/:诊断命令、字节码增强、会话与结果渲染;命令实现在core/src/main/java/com/taobao/arthas/core/command/。boot/、agent/、spy/:启动与 attach、类加载隔离、插桩回调。arthas-mcp-server/:MCP 接口;tunnel-client/、tunnel-server/:远程连接。web-ui/arthasWebConsole/:Vue Web 控制台。site/docs/doc/、site/docs/en/doc/:中英文用户文档;site/docs/.vuepress/:站点配置、导航、主题和静态资源。- 各模块的
src/test/放单元测试;arthas-mcp-integration-test/、arthas-external-command-integration-test/和integration-test/放集成测试。
必须保持的约束
- Java 默认兼容 JDK 8,模块覆盖设置以对应
pom.xml为准。JDK 17+ 构建会额外启用 Tunnel Server、MCP 和外部命令集成测试模块;构建行为以根pom.xml和.github/workflows/test.yaml为准。 - Arthas 运行在目标 JVM 内。诊断异常不能影响业务线程;保留必要的异常隔离和类加载隔离,确保监听器、增强和线程等资源在结束或取消时正确释放。
- 命令沿用现有 Command → Model → View 分工,保持结果数据与终端渲染分离;修改输出时检查 HTTP/MCP 等调用方的兼容性。
- 命令行为、参数或输出变化时,同步相关测试和中英文文档。增删文档页面时检查导航与相对链接。
- 修改源码,不手工编辑
target/、node_modules/、VuePress 的.temp/、.cache/、dist/等生成内容。
验证与交付
按改动选择能证明行为正确的最小验证范围;修复缺陷时优先补能复现问题的回归测试。跨模块或打包变更再扩大验证范围。
以下命令在仓库根目录执行:
# Java 模块测试:将 core 替换为受影响的模块
./mvnw -pl core -am test
# MCP 集成测试:需要 JDK 17+ 和 bash,verify 阶段才执行集成测试
./mvnw -pl arthas-mcp-integration-test -am verify
# 完整构建与测试
./mvnw clean install -P full
# 文档站构建:先按 site/README.md 安装依赖
npm --prefix site run docs:build
- 文档改动检查示例、链接和页面构建;纯说明文字调整无需运行全量 Java 测试。
- 提交前检查
git diff --check和变更范围。只格式化修改涉及的文件,避免全仓库格式化。 - 交付时简要说明改了什么、验证结果及未验证项。环境或依赖阻塞时报告具体原因,不通过增加兜底或跳过检查来伪装成功。