witty-diagnosis-agent 0.5.0-beta → 0.6.0-beta

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/README.md +75 -18
  2. package/dist/{auto-update-checker-FE7T2BSB.js → auto-update-checker-K5BE2AWY.js} +2 -2
  3. package/dist/{chunk-4QO2HAQQ.js → chunk-35QAD47N.js} +130 -130
  4. package/dist/{chunk-4DUKC3QP.js → chunk-75CKLJGY.js} +52 -52
  5. package/dist/{chunk-YVNTYBPS.js → chunk-NEHRAXKV.js} +1 -1
  6. package/dist/cli.js +81 -80
  7. package/dist/index.js +546 -546
  8. package/dist/{logger-MRHLLIHC.js → logger-CGMKTVZY.js} +1 -1
  9. package/package.json +4 -3
  10. package/skills/process-hang-diagnosis/SKILL.md +478 -0
  11. package/skills/process-hang-diagnosis/references/gdb_commands_for_hang.md +281 -0
  12. package/skills/process-hang-diagnosis/references/lock_analysis_patterns.md +237 -0
  13. package/skills/process-hang-diagnosis/references/pipe_socket_diagnosis.md +209 -0
  14. package/skills/process-hang-diagnosis/references/procfs_cheatsheet.md +246 -0
  15. package/skills/process-hang-diagnosis/scripts/01_baseline_info.sh +174 -0
  16. package/skills/process-hang-diagnosis/scripts/branch_A_futex_wait.sh +70 -0
  17. package/skills/process-hang-diagnosis/scripts/branch_B_deadlock.sh +80 -0
  18. package/skills/process-hang-diagnosis/scripts/branch_C_filelock.sh +82 -0
  19. package/skills/process-hang-diagnosis/scripts/branch_D_pipe_socket.sh +108 -0
  20. package/skills/process-hang-diagnosis/scripts/branch_E_signal_stop.sh +116 -0
  21. package/skills/process-hang-diagnosis/scripts/branch_F_d_state.sh +103 -0
  22. package/skills/process-hang-diagnosis/scripts/branch_G_user_loop.sh +75 -0
  23. package/skills/process-hang-diagnosis/scripts/container_diag.sh +21 -0
  24. package/skills/process-hang-diagnosis/scripts/diag_in_container.sh +76 -0
  25. package/src/xiaoO/README.md +21 -0
  26. package/src/xiaoO/command/baize.md +61 -0
  27. package/src/xiaoO/command/dayu.md +675 -0
  28. package/src/xiaoO/command/fuxi.md +820 -0
  29. package/src/xiaoO/command/kuafu.md +220 -0
  30. package/src/xiaoO/command/xuanyuan.md +79 -0
  31. package/src/xiaoO/config/.gitkeep +0 -0
  32. package/src/xiaoO/config/config.toml +2078 -0
  33. package/src/xiaoO/tools/md_to_html.py +547 -0
  34. package/src/xiaoO/tools/md_to_html.toml +33 -0
  35. package/src/xiaoO/tools/md_to_html_script.js +67 -0
  36. package/src/xiaoO/tools/md_to_html_style.css +397 -0
package/README.md CHANGED
@@ -37,15 +37,15 @@ Witty 智能诊断 Agent 采用“Agent-Skill-工具-知识”四层解耦架构
37
37
  - **Skill 层**:将专家排查流程封装为可复用的诊断技能(如 OOM、死锁排查)。
38
38
  - **知识底座**:内置 openEuler 专属故障模式与因果规则,持续自我进化。
39
39
 
40
- #### 3. 核心诊断场景
40
+ #### 3. 核心诊断能力
41
41
 
42
42
  深度结合 openEuler 操作系统特性,目前已支持:
43
43
 
44
- - **内核级诊断**:自动化采集解析 VMCore,精准回溯系统崩溃(Crash/Panic)调用栈。
45
- - **系统级诊断**:针对磁盘 I/O、网络丢包、内存碎片等资源瓶颈提供多维关联分析。
46
- - **进程级诊断**:深度诊断进程死锁、僵尸进程及服务超时等逻辑异常。
44
+ - **用户态诊断**:诊断进程 coredump、文件描述符泄漏、系统调用异常、IPC/资源耗尽、Unix Socket/Pipe、容器(Docker)、时间同步与安全认证等进程/服务层逻辑异常。
45
+ - **内核级诊断**:自动解析VMCore,精准回溯内核崩溃(Crash/Panic)调用栈;覆盖 OOM、CPU 调度、文件系统(EXT4/XFS/OverlayFS)、Swap 抖动,以及块设备 IO 与网络协议栈等内核子系统故障。
46
+ - **硬件级诊断**:基于 iBMC 带外日志与 OS 信息采集,定位 CPU/内存/磁盘/GPU/NPU/网卡/电源等部件的物理故障(ECC/MCE、坏道、掉卡、链路不稳、供电异常等),并提供磁盘健康预测与 GRUB 启动链故障诊断。
47
47
 
48
- > 💡 **更多基于 OS 全栈(硬件层 -> 内核层 -> 系统服务层)的诊断能力持续演进中...**
48
+ > 💡 诊断能力详情,请参见[功能列表](docs/reference/features.md)。
49
49
 
50
50
  ---
51
51
 
@@ -53,8 +53,7 @@ Witty 智能诊断 Agent 采用“Agent-Skill-工具-知识”四层解耦架构
53
53
 
54
54
  #### 环境要求
55
55
 
56
- - 运行环境:Node.js (>=20.0.0)
57
- - 依赖工具:已安装[OpenCode](https://opencode.ai/)
56
+ - 依赖框架:已安装[OpenCode](https://opencode.ai/)(运行环境:Node.js >= 20.0.0) 或 [xiaoO](https://gitcode.com/openeuler/xiaoO/)(运行环境:Rust 工具链和 Cargo)
58
57
  - 依赖工具:已安装 [Ansible](https://docs.ansible.com/ansible/latest/installation_guide/)(`ansible` 命令须在系统 PATH 中可用,可通过 `ansible --version` 提前验证)
59
58
 
60
59
  > ⚠️ **注意**:执行 `witty-diagnosis-agent install` 前,请确保本地已完成 Ansible 的安装与环境配置,否则安装程序将直接终止。
@@ -80,9 +79,19 @@ cd witty-diagnosis-agent
80
79
  bash install.sh
81
80
  ```
82
81
 
82
+ ##### 方式三:离线包一键安装(适用于离线情况)
83
+
84
+ 如果您已经下载了源代码安装包,可以使用一键安装脚本自动完成环境检查、依赖安装、项目构建及插件配置,以 witty-diagnosis-agent-v0.6.0-beta.tar.gz 压缩包为例:
85
+ ```shell
86
+ tar -xzvf witty-diagnosis-agent-v0.6.0-beta.tar.gz
87
+ cd witty-diagnosis-agent-v0.6.0-beta
88
+ bash install.sh
89
+ ```
90
+
83
91
  ---
84
92
 
85
93
  ### 如何使用
94
+ #### 基于opencode框架启动
86
95
 
87
96
  1. 启动 \*\*OpenCode \*\*。
88
97
 
@@ -104,7 +113,29 @@ bash install.sh
104
113
 
105
114
  <img src="docs/assets/guide_auto_diag_report.png" alt="诊断报告" width="800" />
106
115
 
107
- 如需了解更多操作细节,可查阅[用户手册](docs/guide/MANUAL.md);支持的诊断能力与功能说明详见[功能列表](docs/reference/features.md)
116
+ 如需了解更多操作细节,可查阅[用户手册](docs/guide/MANUAL.md)。
117
+
118
+ #### 基于xiaoO框架启动
119
+ 1. 启动 \*\*xiaoO \*\*。
120
+
121
+ 2. 使用`tab`键,切换`Xuanyuan`Agent。
122
+
123
+ ![选择Xuanyuan Agent](docs/assets/xiaoO_select_xuanyuan.png)
124
+
125
+ 3. 输入故障问题描述,示例:
126
+
127
+ ```shell
128
+ 请诊断2026-03-05 14:31前最近一次硬盘故障,日志路径:/tmp/logs
129
+ ```
130
+
131
+ <img src="docs/assets/xiaoO_guide_auto_diag_start.png" alt="wittywork命令" width="800" />
132
+
133
+ 4. 系统将自动执行**智能诊断**流程。
134
+
135
+ 5. 诊断完成后,系统将生成[HTML](docs/reference/reports/hard_disk_fault_diagnosis_report.html)和[Markdown](docs/reference/reports/hard_disk_fault_diagnosis_report.md)两种格式的诊断分析报告,同时在界面上展示完整报告内容:
136
+
137
+ <img src="docs/assets/xiaoO_guide_auto_diag_report.png" alt="诊断报告" width="800" />
138
+
108
139
 
109
140
  ---
110
141
 
@@ -143,7 +174,7 @@ cat /proc/sys/kernel/core_pattern
143
174
 
144
175
  #### 2. 开发会产生 Core Dump 的示例 C 代码
145
176
 
146
- 创建 `crash_demo.c` 文件:
177
+ 1)创建 `crash_demo.c` 文件:
147
178
 
148
179
  ```c
149
180
  #include <stdio.h>
@@ -161,32 +192,32 @@ int main() {
161
192
  }
162
193
  ```
163
194
 
164
- **安装编译工具和 GDB**:
195
+ 2)安装编译工具和 GDB
165
196
 
166
197
  ```bash
167
198
  sudo apt update && sudo apt install -y gcc gdb
168
199
  ```
169
200
 
170
- **编译(禁用优化,开启调试符号)**:
201
+ 3)编译(禁用优化,开启调试符号):
171
202
 
172
203
  ```bash
173
204
  gcc -g -O0 -o crash_demo crash_demo.c
174
205
  ```
175
206
 
176
- **运行**:
207
+ 4)运行:
177
208
 
178
209
  ```bash
179
210
  ./crash_demo
180
211
  ```
181
212
 
182
- 执行后将触发段错误并产生 core dump 文件:
213
+ 5)执行后将触发段错误并产生 core dump 文件:
183
214
 
184
215
  ```
185
216
  Starting crash demo...
186
217
  Segmentation fault (core dumped)
187
218
  ```
188
219
 
189
- **查看生成的 core 文件**:
220
+ 6)查看生成的 core 文件:
190
221
 
191
222
  ```bash
192
223
  ls -la ./core.*
@@ -194,15 +225,15 @@ ls -la ./core.*
194
225
 
195
226
  #### 3. 在 WSL 中启动 OpenCode 并使用智能诊断 Agent 分析
196
227
 
197
- **启动 OpenCode**:
228
+ 1)启动 OpenCode
198
229
 
199
230
  ```bash
200
231
  opencode
201
232
  ```
202
233
 
203
- **加载 Xuanyuan Agent**:执行 `/agents` 命令,选择 `Xuanyuan` Agent。
234
+ 2)加载 Xuanyuan Agent:执行 `/agents` 命令,选择 `Xuanyuan` Agent。
204
235
 
205
- **输入问题描述**:
236
+ 3)输入问题描述:
206
237
 
207
238
  ```
208
239
  分析/tmp/test目录下的core文件根因。
@@ -210,10 +241,36 @@ opencode
210
241
 
211
242
  > **提示**:将 `/tmp/test` 替换为示例 C 代码所在的实际目录路径。
212
243
 
213
- 系统将自动执行智能诊断流程,分析进程崩溃原因并输出诊断报告。
244
+ 4)系统将自动执行智能诊断流程,分析进程崩溃原因并输出诊断报告。
214
245
 
215
246
  ---
216
247
 
248
+ ### 硬盘故障诊断示例
249
+
250
+ #### 1. 环境准备
251
+
252
+ 1. 下载测试用例日志logs.zip(链接: https://pan.baidu.com/s/1-VlfKy5sx7LR-_tXkJ1G1A?pwd=bykf 提取码: bykf);
253
+ 2. 将logs.zip拷贝到/tmp目录下并解压;
254
+
255
+ #### 2. 使用智能诊断 Agent 分析
256
+
257
+ 1)启动 OpenCode:
258
+
259
+ ```bash
260
+ opencode
261
+ ```
262
+
263
+ 2)加载 Xuanyuan Agent:执行 `/agents` 命令,选择 `Xuanyuan` Agent。
264
+
265
+ 3)输入问题描述:
266
+
267
+ ```
268
+ 请诊断2026-03-05 14:31前最近一次硬盘故障,日志路径:/tmp/logs
269
+ ```
270
+
271
+ 4)系统将自动执行智能诊断流程,分析硬盘故障原因并输出诊断报告。
272
+
273
+ ---
217
274
 
218
275
  ### 如何贡献
219
276
 
@@ -7,8 +7,8 @@ import {
7
7
  isDistTag,
8
8
  isPrereleaseOrDistTag,
9
9
  isPrereleaseVersion
10
- } from "./chunk-4QO2HAQQ.js";
11
- import "./chunk-YVNTYBPS.js";
10
+ } from "./chunk-35QAD47N.js";
11
+ import "./chunk-NEHRAXKV.js";
12
12
  export {
13
13
  checkForUpdate,
14
14
  createAutoUpdateCheckerHook,