开发者
资源
文档评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

使用示例(通过Skill接入第三方Agent)

工作流程

环境准备→ 应用命令收集 → 命令拼接 → 运行和结果收集

工作目录

<dr-check-workspace>/
     ├── devkit/          # DevKit 安装目录(复用)
     ├── downloads/       # 下载缓存目录(复用)
     └── runs/            # 运行目录(每次隔离)
         ├── <时间戳>-<随机>/        # 单应用模式
         │   ├── dr-check-state.yaml
         │   ├── run_command.sh
         │   ├── run.log
         │   └── output/             # 检测报告
         │
         └── <batch时间戳>-<随机>/   # 多应用 batch 模式
             ├── batch_state.yaml
             ├── output/             # 共享输出目录
             ├── task_<应用名1>/
             └── task_<应用名2>/

操作步骤

此处以自行下载DevKit动态内存一致性检测工具,使用OpenCode对MySQL应用进行检测扫描为例。

  1. 已在OpenCode配置好动态内存一致性检测的Skill。

    动态内存一致性的Skill可在开源仓获取,配置方式可参考为第三方Agent配置Skill。

  2. 在对话框中输入对MySQL应用进行检测扫描的意图。
    帮我对MySQL进行动态内存一致性检测

    返回信息如下:

    ┃  [·] 阶段1:环境准备 - 创建 run 目录,初始化 state.yaml
    ┃  [  ] 阶段2:命令收集 - 入口询问(检测模式+应用范围),收集运行命令,环境检查,ELF检查
    ┃  [  ] 阶段3:命令拼接 - 拼接命令并展示给用户确认 
    ┃  [  ] 阶段4:运行和结果收集 - 执行检测,解析结果
  3. Skill启动后将自动按照流程执行。在创建完工作目录后,以下问题需用户进行二次确认:
    1. 检测模式:根据被检测应用的并发模型选择是单进程检测模式或多进程共享内存模式。
      若选择多进程检测模式,需进一步选择是单应用或多应用模式(同时检测多个通过共享内存通信的应用)。检测模式未收集将不会继续执行任务,具体确认内容如下所示。
      工作目录已创建,进入应用信息收集阶段。
      检测模式?
      1. 单进程多线程检测
      2. 多进程共享内存检测
      ┃
      ┃  1
      ┃

      此处以单进程多线程检测为例,请用户根据实际情况输入选择结果。

    2. 应用运行全命令:用户需提供应用启动时的完整命令,包含应用的绝对路径和所有运行参数。
      应用运行全命令未收集将不会继续执行任务,具体确认内容如下所示。
      MySQL 的运行命令是什么?请提供完整的启动命令,如 /path/to/mysqld --defaults-file=/etc/my.cnf。
      ┃
      ┃  /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
      ┃

      此处应用运行全命令以“/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf”为例,请用户根据实际情况进行替换。

    3. 应用结束方式:用于Skill确定检测过程的停止方式。
      若为持续运行型应用,需用户手动终止进程;若为自行退出型应用,则无需人工干预,任务完成后系统将自动生成报告。具体确认内容如下所示。
      该应用是持续运行的服务进程,还是运行后会自行结束?
      1. 持续运行(如 Web 服务、守护进程、长连接应用)
      2. 自行退出(如批处理任务、命令行工具、测试程序)
      ┃
      ┃  1
      ┃

      此处以持续运行为例,请用户根据实际情况输入选择结果。

  4. 根据用户提供的信息,在执行前需要确认最终命令参数是否需要调整。具体确认内容如下所示。
    /root/dr-check-workspace/devkit/DevKit-CLI-x.x.x-Linux-Kunpeng/devkit              
         advisor dr-check \                                                                 
           -f /usr/local/mysql/bin/mysqld \                                                     
           -p="--defaults-file=/etc/my.cnf" \                                                   
           -o /home/reports \                                                            
           -em false \                                                                          
           -r all                                                                         
    
    ┌────────────┬───────────────────────────────────────┬────────────────────┐
    │ 参数       │ 值                                    │ 含义               │
    ├────────────┼───────────────────────────────────────┼────────────────────┤
    │ devkit路径 │ /root/dr-check-workspace/devkit/     │ DevKit CLI绝对路径 │
    │            │ DevKit-CLI-x.x.x-Linux-Kunpeng/   │                    │
    │            │ devkit                               │                    │
    ├────────────┼───────────────────────────────────────┼────────────────────┤
    │ -f         │ /usr/local/mysql/bin/mysqld           │ 被测ELF文件路径    │
    ├────────────┼───────────────────────────────────────┼────────────────────┤
    │ -p         │ --defaults-file=/etc/my.cnf          │ ELF运行参数        │
    ├────────────┼───────────────────────────────────────┼────────────────────┤
    │ -o         │ /home/reports                     │ 检测结果输出目录   │
    ├────────────┼───────────────────────────────────────┼────────────────────┤
    │ -em        │ false                                │ 单进程多线程模式   │
    ├────────────┼───────────────────────────────────────┼────────────────────┤
    │ -r         │ all                                  │ 检测范围           │
    └────────────┴───────────────────────────────────────┴────────────────────┘
    请确认是否执行?
    ┃
    ┃  确认
    ┃

    此处以命令无误为例,请用户根据实际情况进行确认和修改。

  5. 执行扫描任务。
    MySQL为持续运行应用,需手动触发停止操作以结束扫描。
    该应用为持续运行型,检测将持续运行直到您手动停止。如需查看检测状态,
         可随时询问。停止检测只需回复「停止」。
    ┃
    ┃  停止
    ┃

    请用户根据实际情况判断是否需要停止检测,停止检测后将自动生成报告及结果解析。

  6. 查看扫描结果。
    devkit 已完成,报告已生成。正在解析结果...
    
    $ bash /home/dr-check-dev/my-skills/myskills/dynamic-memory-consistency-detection/scripts/parse_result.sh \
        --result-dir /home/reports \
        --workspace /root/dr-check-workspace/runs/20260820-172058-27592 \
        --run-log /root/dr-check-workspace/runs/20260820-172058-27592/run.log
    
    [INFO] Summary: 1272 recommended code lines to modify
    [INFO] Report files:
    [INFO] Multi-thread reports:
    [INFO]   - JSON: /home/reports/dr-check_mysqld_20260820092632_6b99.json
    [INFO]   - HTML: /home/reports/dr-check_mysqld_20260820092632_6b99.html
    [INFO]   - CSV: /home/reports/dr-check_mysqld_20260820092632_6b99.csv
    [INFO] Multi-process report: not generated (-em true not set, or not a shared-library)
    /home/reports/dr-check_mysqld_20260820092632_6b99.html 
    
    检测结果:
    
         - 建议修改的代码行数:1272 行
         - 多线程报告:
           - JSON: /home/reports/dr-check_mysqld_20260820092632_6b99.json
           - HTML: /home/reports/dr-check_mysqld_20260820092632_6b99.html
           - CSV: /home/reports/dr-check_mysqld_20260820092632_6b99.csv
         - 运行日志:/root/dr-check-workspace/devkit/DevKit-CLI-x.x.x-Linux-Kunpeng/
           advisor/logs/affinity/affinity.log

    扫描任务已完成,分析报告已保存到对应的输出目录中。用户可通过详细报告定位可能存在数据竞争的代码,并根据内置修复建议对项目源码进行针对性检查和修正。

输出产物

扫描完成后,工作目录的runs/YYYYMMDD(时间戳)下会生成以下关键产物:

文件

阶段

说明

dr-check-state.yaml

环境检测/命令收集阶段

记录环境和应用运行相关信息

run_command.sh

命令拼接阶段

最终运行检测的脚本

output/<dr-check_xxx>.json/html/csv

检测结果报告

生成的检测结果报告