witty-diagnosis-agent 0.3.1-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 +184 -8
- package/dist/{auto-update-checker-SCZAPT6L.js → auto-update-checker-K5BE2AWY.js} +2 -2
- package/dist/{chunk-VGS3BNP5.js → chunk-35QAD47N.js} +142 -137
- package/dist/{chunk-YPQZVQVM.js → chunk-75CKLJGY.js} +54 -52
- package/dist/{chunk-YVNTYBPS.js → chunk-NEHRAXKV.js} +1 -1
- package/dist/cli.js +109 -85
- package/dist/index.d.ts +4 -0
- package/dist/index.js +917 -693
- package/dist/{logger-MRHLLIHC.js → logger-CGMKTVZY.js} +1 -1
- package/dist/witty-diagnosis-agent.schema.json +11 -0
- package/package.json +7 -3
- package/skills/X-diagnosis-io/SKILL.md +124 -0
- package/skills/X-diagnosis-io/references/xdiagnosis_reference.md +96 -0
- package/skills/X-diagnosis-io/scripts/show_location_index.sh +50 -0
- package/skills/X-diagnosis-network-analysis/SKILL.md +63 -114
- package/skills/X-diagnosis-network-analysis/references/xdiagnosis_reference.md +68 -228
- package/skills/X-diagnosis-network-analysis/scripts/show_location_index.sh +86 -0
- package/skills/fault-rca-report-generation/SKILL.md +56 -15
- package/skills/fd-leak-diagnosis/SKILL.md +318 -0
- package/skills/fd-leak-diagnosis/references/fd_diagnosis_commands.md +250 -0
- package/skills/fd-leak-diagnosis/references/fd_leak_patterns.md +155 -0
- package/skills/fd-leak-diagnosis/references/kernel_fd_params.md +182 -0
- package/skills/fd-leak-diagnosis/scripts/01_baseline_info.sh +208 -0
- package/skills/fd-leak-diagnosis/scripts/branch_A_system_fd.sh +101 -0
- package/skills/fd-leak-diagnosis/scripts/branch_B_process_fd.sh +114 -0
- package/skills/fd-leak-diagnosis/scripts/branch_C_close_wait.sh +107 -0
- package/skills/fd-leak-diagnosis/scripts/branch_D_epoll.sh +104 -0
- package/skills/fd-leak-diagnosis/scripts/branch_E_inotify.sh +110 -0
- package/skills/fd-leak-diagnosis/scripts/branch_F_syscall.sh +111 -0
- package/skills/fd-leak-diagnosis/scripts/branch_G_deleted_file.sh +94 -0
- package/skills/fd-leak-diagnosis/scripts/branch_H_mixed.sh +136 -0
- package/skills/linux-oom-analyzer/scripts/collect_basic_info.sh +1 -1
- package/skills/offline-disk-fault-diagnosis/SKILL.md +171 -54
- package/skills/offline-disk-fault-diagnosis/references/disk_health_rules.md +89 -0
- package/skills/offline-disk-fault-diagnosis/scripts/diagnose_health_rules.py +1445 -0
- package/skills/offline-disk-fault-diagnosis/scripts/diagnose_summary.py +7 -0
- package/skills/overlayfs-diagnosis/SKILL.md +383 -0
- package/skills/overlayfs-diagnosis/references/diagnosis_patterns.md +399 -0
- package/skills/overlayfs-diagnosis/references/docker_overlay2.md +257 -0
- package/skills/overlayfs-diagnosis/references/overlayfs_basics.md +268 -0
- package/skills/overlayfs-diagnosis/scripts/01_baseline_info.sh +274 -0
- package/skills/overlayfs-diagnosis/scripts/branch_A_config_error.sh +176 -0
- package/skills/overlayfs-diagnosis/scripts/branch_B_fs_incompatible.sh +140 -0
- package/skills/overlayfs-diagnosis/scripts/branch_C_cross_device.sh +141 -0
- package/skills/overlayfs-diagnosis/scripts/branch_D_opaque_whiteout.sh +161 -0
- package/skills/overlayfs-diagnosis/scripts/branch_E_copyup_perf.sh +163 -0
- package/skills/overlayfs-diagnosis/scripts/branch_F_inotify.sh +182 -0
- package/skills/overlayfs-diagnosis/scripts/branch_G_docker_inode_exhaust.sh +139 -0
- package/skills/overlayfs-diagnosis/scripts/branch_H_docker_diff_bloat.sh +163 -0
- package/skills/overlayfs-diagnosis/scripts/branch_I_redirect_metacopy.sh +180 -0
- package/skills/overlayfs-diagnosis/scripts/branch_J_permission.sh +175 -0
- package/skills/overlayfs-diagnosis/scripts/branch_K_readdir_perf.sh +188 -0
- package/skills/overlayfs-diagnosis/scripts/branch_Z_general.sh +172 -0
- 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/skills/skill-openeuler-info/SKILL.md +87 -0
- package/skills/skill-openeuler-info/scripts/check_system_info.sh +170 -0
- package/skills/strace-syscall-diagnosis/SKILL.md +377 -0
- package/skills/strace-syscall-diagnosis/references/analysis_patterns.md +444 -0
- package/skills/strace-syscall-diagnosis/references/strace_commands.md +143 -0
- package/skills/strace-syscall-diagnosis/references/syscall_reference.md +187 -0
- package/skills/strace-syscall-diagnosis/scripts/01_baseline_info.sh +275 -0
- package/skills/strace-syscall-diagnosis/scripts/branch_A_syscall_error.sh +160 -0
- package/skills/strace-syscall-diagnosis/scripts/branch_B_slow_syscall.sh +176 -0
- package/skills/strace-syscall-diagnosis/scripts/branch_C_library_trace.sh +164 -0
- package/skills/strace-syscall-diagnosis/scripts/branch_D_fd_leak.sh +156 -0
- package/skills/strace-syscall-diagnosis/scripts/branch_E_network_syscall.sh +137 -0
- package/skills/strace-syscall-diagnosis/scripts/branch_F_signal_interrupt.sh +135 -0
- package/skills/strace-syscall-diagnosis/scripts/branch_G_lifecycle.sh +168 -0
- package/skills/strace-syscall-diagnosis/scripts/check_syscall.sh +108 -0
- package/skills/swap-thrashing-diagnosis/SKILL.md +370 -0
- package/skills/swap-thrashing-diagnosis/references/analysis_patterns.md +433 -0
- package/skills/swap-thrashing-diagnosis/references/kernel_swap_params.md +259 -0
- package/skills/swap-thrashing-diagnosis/references/swap_commands.md +171 -0
- package/skills/swap-thrashing-diagnosis/scripts/01_baseline_info.sh +429 -0
- package/skills/swap-thrashing-diagnosis/scripts/02_diagnosis.sh +109 -0
- package/skills/swap-thrashing-diagnosis/scripts/branch_A_swap_exhaustion.sh +228 -0
- package/skills/swap-thrashing-diagnosis/scripts/branch_B_thrashing.sh +303 -0
- package/skills/swap-thrashing-diagnosis/scripts/branch_C_swappiness.sh +159 -0
- package/skills/swap-thrashing-diagnosis/scripts/branch_D_swap_corruption.sh +171 -0
- package/skills/swap-thrashing-diagnosis/scripts/branch_E_ssd_wear.sh +159 -0
- package/skills/swap-thrashing-diagnosis/scripts/branch_F_kswapd_high.sh +185 -0
- package/skills/swap-thrashing-diagnosis/scripts/branch_G_zswap_zram.sh +244 -0
- package/skills/swap-thrashing-diagnosis/scripts/check_thrashing.sh +175 -0
- package/skills/unix-socket-pipe-diagnosis/SKILL.md +350 -0
- package/skills/unix-socket-pipe-diagnosis/references/unix_socket_pipe_commands.md +566 -0
- package/skills/unix-socket-pipe-diagnosis/references/unix_socket_pipe_params.md +183 -0
- package/skills/unix-socket-pipe-diagnosis/references/unix_socket_pipe_patterns.md +162 -0
- package/skills/unix-socket-pipe-diagnosis/scripts/01_baseline_info.sh +191 -0
- package/skills/unix-socket-pipe-diagnosis/scripts/branch_A_uds_backlog.sh +94 -0
- package/skills/unix-socket-pipe-diagnosis/scripts/branch_B_abstract_conflict.sh +121 -0
- package/skills/unix-socket-pipe-diagnosis/scripts/branch_C_passcred.sh +119 -0
- package/skills/unix-socket-pipe-diagnosis/scripts/branch_D_socket_perms.sh +128 -0
- package/skills/unix-socket-pipe-diagnosis/scripts/branch_E_pipe_buf.sh +150 -0
- package/skills/unix-socket-pipe-diagnosis/scripts/branch_F_sigpipe.sh +170 -0
- package/skills/unix-socket-pipe-diagnosis/scripts/branch_G_socketpair.sh +196 -0
- package/skills/vmcore-analysis/SKILL.md +229 -984
- package/skills/vmcore-analysis/references/crash_commands.md +113 -374
- package/skills/vmcore-analysis/references/hardware_analysis.md +162 -0
- package/skills/vmcore-analysis/references/src_analysis_patterns.md +322 -0
- package/skills/vmcore-analysis/scripts/01_baseline_info.sh +279 -0
- package/skills/vmcore-analysis/scripts/branch_A_null_ptr.sh +306 -0
- package/skills/vmcore-analysis/scripts/branch_B_oob.sh +60 -0
- package/skills/vmcore-analysis/scripts/branch_C_uaf.sh +248 -0
- package/skills/vmcore-analysis/scripts/branch_D_stack_overflow.sh +60 -0
- package/skills/vmcore-analysis/scripts/branch_E_mce.sh +60 -0
- package/skills/vmcore-analysis/scripts/branch_F_memory_ue.sh +60 -0
- package/skills/vmcore-analysis/scripts/branch_G_deadlock.sh +202 -0
- package/skills/vmcore-analysis/scripts/branch_H_soft_lockup.sh +60 -0
- package/skills/vmcore-analysis/scripts/branch_I_hard_lockup.sh +60 -0
- package/skills/vmcore-analysis/scripts/branch_J_bug_trigger.sh +60 -0
- package/skills/vmcore-analysis/scripts/branch_K_oom.sh +60 -0
- package/skills/vmcore-analysis/scripts/branch_L_atomic_sleep.sh +60 -0
- package/skills/vmcore-analysis/scripts/branch_M_rcu_stall.sh +60 -0
- package/skills/vmcore-analysis/scripts/branch_N_fs_corruption.sh +60 -0
- package/skills/vmcore-analysis/scripts/branch_O_network.sh +60 -0
- package/skills/vmcore-analysis/scripts/branch_P_storage_io.sh +60 -0
- package/skills/vmcore-analysis/scripts/branch_Q_kvm.sh +60 -0
- package/skills/vmcore-analysis/scripts/branch_R_acpi.sh +60 -0
- package/skills/vmcore-analysis/scripts/branch_S_hotplug.sh +60 -0
- package/skills/vmcore-analysis/scripts/branch_T_driver.sh +60 -0
- package/skills/vmcore-analysis/scripts/branch_U_smep_smap.sh +60 -0
- package/skills/vmcore-analysis/scripts/branch_V_bit_flip.sh +133 -0
- package/skills/vmcore-analysis/scripts/check_bitflip.sh +221 -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/skills/X-diagnosis-network-analysis/references/fault_patterns.md +0 -95
- package/skills/X-diagnosis-network-analysis/scripts/arp_check.sh +0 -61
- package/skills/X-diagnosis-network-analysis/scripts/kernel_drop_counters.sh +0 -70
- package/skills/X-diagnosis-network-analysis/scripts/net_baseline.sh +0 -76
- package/skills/X-diagnosis-network-analysis/scripts/port_listen_check.sh +0 -67
- package/skills/X-diagnosis-network-analysis/scripts/tcp_state_summary.sh +0 -65
- package/skills/vmcore-analysis/references/USAGE_EXAMPLES.md +0 -131
- package/skills/vmcore-analysis/references/analysis_patterns.md +0 -506
- package/skills/vmcore-analysis/references/root_cause_analysis.md +0 -739
- package/skills/vmcore-analysis/references/source_code_structure.md +0 -317
- package/skills/vmcore-analysis/references/struct_analysis.md +0 -140
- package/skills/vmcore-analysis/references/troubleshooting.md +0 -531
- package/skills/vmcore-analysis/scripts/analyze_struct.py +0 -156
- package/skills/vmcore-analysis/scripts/check_environment.sh +0 -104
- package/skills/vmcore-analysis/scripts/crash_config.sh +0 -156
- package/skills/vmcore-analysis/scripts/crash_wrapper.sh +0 -73
- package/skills/vmcore-analysis/scripts/evidence_chain.sh +0 -309
- package/skills/vmcore-analysis/scripts/quick_report.sh +0 -97
- package/skills/vmcore-analysis/scripts/rca_wizard.sh +0 -288
package/README.md
CHANGED
|
@@ -9,6 +9,10 @@ Witty 智能诊断 Agent 基于「假设-验证」(Hypothetico-Deductive)故
|
|
|
9
9
|
- **端到端闭环自愈**:涵盖“现象分析、根因定界、生成报告、执行修复”全链路,提供一站式自动化运维。
|
|
10
10
|
- **严格的安全管控**:诊断排查阶段严格只读,仅修复阶段按需赋予操作权限,且变更必经用户审批确认。
|
|
11
11
|
|
|
12
|
+
<div align="center">
|
|
13
|
+
<img src="docs/assets/sys_crash_diag.gif" alt="系统宕机故障诊断" />
|
|
14
|
+
</div>
|
|
15
|
+
|
|
12
16
|
### 架构与核心能力
|
|
13
17
|
|
|
14
18
|
Witty 智能诊断 Agent 采用“Agent-Skill-工具-知识”四层解耦架构,兼具高灵活性与可扩展性。
|
|
@@ -33,22 +37,23 @@ Witty 智能诊断 Agent 采用“Agent-Skill-工具-知识”四层解耦架构
|
|
|
33
37
|
- **Skill 层**:将专家排查流程封装为可复用的诊断技能(如 OOM、死锁排查)。
|
|
34
38
|
- **知识底座**:内置 openEuler 专属故障模式与因果规则,持续自我进化。
|
|
35
39
|
|
|
36
|
-
#### 3.
|
|
40
|
+
#### 3. 核心诊断能力
|
|
37
41
|
|
|
38
42
|
深度结合 openEuler 操作系统特性,目前已支持:
|
|
39
43
|
|
|
40
|
-
-
|
|
41
|
-
-
|
|
42
|
-
-
|
|
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 启动链故障诊断。
|
|
43
47
|
|
|
44
|
-
> 💡
|
|
48
|
+
> 💡 诊断能力详情,请参见[功能列表](docs/reference/features.md)。
|
|
49
|
+
|
|
50
|
+
---
|
|
45
51
|
|
|
46
52
|
### 快速开始
|
|
47
53
|
|
|
48
54
|
#### 环境要求
|
|
49
55
|
|
|
50
|
-
- 运行环境:Node.js
|
|
51
|
-
- 依赖工具:已安装[OpenCode](https://opencode.ai/)
|
|
56
|
+
- 依赖框架:已安装[OpenCode](https://opencode.ai/)(运行环境:Node.js >= 20.0.0) 或 [xiaoO](https://gitcode.com/openeuler/xiaoO/)(运行环境:Rust 工具链和 Cargo)
|
|
52
57
|
- 依赖工具:已安装 [Ansible](https://docs.ansible.com/ansible/latest/installation_guide/)(`ansible` 命令须在系统 PATH 中可用,可通过 `ansible --version` 提前验证)
|
|
53
58
|
|
|
54
59
|
> ⚠️ **注意**:执行 `witty-diagnosis-agent install` 前,请确保本地已完成 Ansible 的安装与环境配置,否则安装程序将直接终止。
|
|
@@ -74,7 +79,19 @@ cd witty-diagnosis-agent
|
|
|
74
79
|
bash install.sh
|
|
75
80
|
```
|
|
76
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
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
77
93
|
### 如何使用
|
|
94
|
+
#### 基于opencode框架启动
|
|
78
95
|
|
|
79
96
|
1. 启动 \*\*OpenCode \*\*。
|
|
80
97
|
|
|
@@ -96,7 +113,164 @@ bash install.sh
|
|
|
96
113
|
|
|
97
114
|
<img src="docs/assets/guide_auto_diag_report.png" alt="诊断报告" width="800" />
|
|
98
115
|
|
|
99
|
-
如需了解更多操作细节,可查阅[用户手册](docs/guide/MANUAL.
|
|
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
|
+
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
### 进程 CORE 故障诊断示例
|
|
143
|
+
|
|
144
|
+
本节以 WSL2 Ubuntu 系统为例,演示如何使用 Witty 智能诊断 Agent 分析进程 Core Dump 文件。本示例仅用于演示和体验智能诊断 Agent 的分析过程和输出报告。由于示例代码非常简单(空指针解引用),直接使用原生 OpenCode 或任何调试工具也能定位出根因。对于更复杂的生产环境故障,智能诊断 Agent 的系统化排查能力将展现更大优势。
|
|
145
|
+
|
|
146
|
+
#### 1. 修改系统配置以获得进程 Core Dump 文件
|
|
147
|
+
|
|
148
|
+
默认情况下,Linux 系统可能禁用了进程 core dump 功能。请使用 root 用户执行以下步骤启用:
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
# 查看当前 core dump 配置(0 表示禁用)
|
|
152
|
+
ulimit -c
|
|
153
|
+
|
|
154
|
+
# 临时启用 core dump(不限制文件大小)
|
|
155
|
+
ulimit -c unlimited
|
|
156
|
+
|
|
157
|
+
# 永久启用:在 /etc/security/limits.conf 末尾添加
|
|
158
|
+
echo "* soft core unlimited" >> /etc/security/limits.conf
|
|
159
|
+
echo "* hard core unlimited" >> /etc/security/limits.conf
|
|
160
|
+
|
|
161
|
+
# 停用 apport(否则会拦截并吃掉 core 文件)
|
|
162
|
+
sudo service apport stop
|
|
163
|
+
sudo systemctl disable apport
|
|
164
|
+
|
|
165
|
+
# 设置 core dump 文件存放路径和命名格式(当前目录)
|
|
166
|
+
sudo sysctl -w kernel.core_pattern=core.%e.%p
|
|
167
|
+
|
|
168
|
+
# 验证配置
|
|
169
|
+
ulimit -c
|
|
170
|
+
cat /proc/sys/kernel/core_pattern
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
> **说明**:`%e` 为进程名,`%p` 为进程 PID。core 文件将保存在当前工作目录。
|
|
174
|
+
|
|
175
|
+
#### 2. 开发会产生 Core Dump 的示例 C 代码
|
|
176
|
+
|
|
177
|
+
1)创建 `crash_demo.c` 文件:
|
|
178
|
+
|
|
179
|
+
```c
|
|
180
|
+
#include <stdio.h>
|
|
181
|
+
#include <stdlib.h>
|
|
182
|
+
|
|
183
|
+
void trigger_segfault() {
|
|
184
|
+
int *ptr = NULL;
|
|
185
|
+
*ptr = 42;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
int main() {
|
|
189
|
+
printf("Starting crash demo...\n");
|
|
190
|
+
trigger_segfault();
|
|
191
|
+
return 0;
|
|
192
|
+
}
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
2)安装编译工具和 GDB:
|
|
196
|
+
|
|
197
|
+
```bash
|
|
198
|
+
sudo apt update && sudo apt install -y gcc gdb
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
3)编译(禁用优化,开启调试符号):
|
|
202
|
+
|
|
203
|
+
```bash
|
|
204
|
+
gcc -g -O0 -o crash_demo crash_demo.c
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
4)运行:
|
|
208
|
+
|
|
209
|
+
```bash
|
|
210
|
+
./crash_demo
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
5)执行后将触发段错误并产生 core dump 文件:
|
|
214
|
+
|
|
215
|
+
```
|
|
216
|
+
Starting crash demo...
|
|
217
|
+
Segmentation fault (core dumped)
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
6)查看生成的 core 文件:
|
|
221
|
+
|
|
222
|
+
```bash
|
|
223
|
+
ls -la ./core.*
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
#### 3. 在 WSL 中启动 OpenCode 并使用智能诊断 Agent 分析
|
|
227
|
+
|
|
228
|
+
1)启动 OpenCode:
|
|
229
|
+
|
|
230
|
+
```bash
|
|
231
|
+
opencode
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
2)加载 Xuanyuan Agent:执行 `/agents` 命令,选择 `Xuanyuan` Agent。
|
|
235
|
+
|
|
236
|
+
3)输入问题描述:
|
|
237
|
+
|
|
238
|
+
```
|
|
239
|
+
分析/tmp/test目录下的core文件根因。
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
> **提示**:将 `/tmp/test` 替换为示例 C 代码所在的实际目录路径。
|
|
243
|
+
|
|
244
|
+
4)系统将自动执行智能诊断流程,分析进程崩溃原因并输出诊断报告。
|
|
245
|
+
|
|
246
|
+
---
|
|
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
|
+
---
|
|
100
274
|
|
|
101
275
|
### 如何贡献
|
|
102
276
|
|
|
@@ -111,6 +285,8 @@ bash install.sh
|
|
|
111
285
|
- 提交 [issue](https://atomgit.com/openeuler/witty-diagnosis-agent/issues)
|
|
112
286
|
- 发送邮件至 <intelligence@openeuler.org>
|
|
113
287
|
|
|
288
|
+
---
|
|
289
|
+
|
|
114
290
|
### License
|
|
115
291
|
|
|
116
292
|
本项目中部分代码基于 `oh-my-openagent` 修改,这部分代码遵循 **Sustainable Use License Version 1.0**。其他原创及贡献部分代码协议以最终发布版本为准。详情请参阅项目根目录下的 [LICENSE](./LICENSE) 文件。
|
|
@@ -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,
|