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.
- package/README.md +75 -18
- package/dist/{auto-update-checker-FE7T2BSB.js → auto-update-checker-K5BE2AWY.js} +2 -2
- package/dist/{chunk-4QO2HAQQ.js → chunk-35QAD47N.js} +130 -130
- package/dist/{chunk-4DUKC3QP.js → chunk-75CKLJGY.js} +52 -52
- package/dist/{chunk-YVNTYBPS.js → chunk-NEHRAXKV.js} +1 -1
- package/dist/cli.js +81 -80
- package/dist/index.js +546 -546
- package/dist/{logger-MRHLLIHC.js → logger-CGMKTVZY.js} +1 -1
- package/package.json +4 -3
- package/skills/process-hang-diagnosis/SKILL.md +478 -0
- package/skills/process-hang-diagnosis/references/gdb_commands_for_hang.md +281 -0
- package/skills/process-hang-diagnosis/references/lock_analysis_patterns.md +237 -0
- package/skills/process-hang-diagnosis/references/pipe_socket_diagnosis.md +209 -0
- package/skills/process-hang-diagnosis/references/procfs_cheatsheet.md +246 -0
- package/skills/process-hang-diagnosis/scripts/01_baseline_info.sh +174 -0
- package/skills/process-hang-diagnosis/scripts/branch_A_futex_wait.sh +70 -0
- package/skills/process-hang-diagnosis/scripts/branch_B_deadlock.sh +80 -0
- package/skills/process-hang-diagnosis/scripts/branch_C_filelock.sh +82 -0
- package/skills/process-hang-diagnosis/scripts/branch_D_pipe_socket.sh +108 -0
- package/skills/process-hang-diagnosis/scripts/branch_E_signal_stop.sh +116 -0
- package/skills/process-hang-diagnosis/scripts/branch_F_d_state.sh +103 -0
- package/skills/process-hang-diagnosis/scripts/branch_G_user_loop.sh +75 -0
- package/skills/process-hang-diagnosis/scripts/container_diag.sh +21 -0
- package/skills/process-hang-diagnosis/scripts/diag_in_container.sh +76 -0
- package/src/xiaoO/README.md +21 -0
- package/src/xiaoO/command/baize.md +61 -0
- package/src/xiaoO/command/dayu.md +675 -0
- package/src/xiaoO/command/fuxi.md +820 -0
- package/src/xiaoO/command/kuafu.md +220 -0
- package/src/xiaoO/command/xuanyuan.md +79 -0
- package/src/xiaoO/config/.gitkeep +0 -0
- package/src/xiaoO/config/config.toml +2078 -0
- package/src/xiaoO/tools/md_to_html.py +547 -0
- package/src/xiaoO/tools/md_to_html.toml +33 -0
- package/src/xiaoO/tools/md_to_html_script.js +67 -0
- 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
|
-
-
|
|
45
|
-
-
|
|
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
|
-
> 💡
|
|
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
|
|
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)
|
|
116
|
+
如需了解更多操作细节,可查阅[用户手册](docs/guide/MANUAL.md)。
|
|
117
|
+
|
|
118
|
+
#### 基于xiaoO框架启动
|
|
119
|
+
1. 启动 \*\*xiaoO \*\*。
|
|
120
|
+
|
|
121
|
+
2. 使用`tab`键,切换`Xuanyuan`Agent。
|
|
122
|
+
|
|
123
|
+

|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
213
|
+
5)执行后将触发段错误并产生 core dump 文件:
|
|
183
214
|
|
|
184
215
|
```
|
|
185
216
|
Starting crash demo...
|
|
186
217
|
Segmentation fault (core dumped)
|
|
187
218
|
```
|
|
188
219
|
|
|
189
|
-
|
|
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
|
-
|
|
228
|
+
1)启动 OpenCode:
|
|
198
229
|
|
|
199
230
|
```bash
|
|
200
231
|
opencode
|
|
201
232
|
```
|
|
202
233
|
|
|
203
|
-
|
|
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-
|
|
11
|
-
import "./chunk-
|
|
10
|
+
} from "./chunk-35QAD47N.js";
|
|
11
|
+
import "./chunk-NEHRAXKV.js";
|
|
12
12
|
export {
|
|
13
13
|
checkForUpdate,
|
|
14
14
|
createAutoUpdateCheckerHook,
|