Understand 安装

下载与安装

  1. 访问 SciTools 官网下载 Understand 最新版本
  2. 运行安装程序,选择安装路径(默认:C:\Program Files\SciTools
  3. 完成安装后,软件位于:D:\SciTools\bin\pc-win64\understand.exe

HXD 激活

工具准备

激活步骤

Version 6 版本

两种方法:

  1. HxD 修改二进制字节序列
  2. 离线激活 - 用注册机生成 lic 文件
Version 7+ 版本

老方法都失效了:

  • HxD 修改的判定字节序列没了
  • 离线激活按钮被屏蔽了

混合方案(自己摸索的方法):

  1. 使用 HxD 修改字节序列强制进入离线模式
  2. 然后就可以正常使用注册机了

AI 模块配置

配置步骤

  1. 打开 Understand
  2. 进入设置:Tools → Options → Data
  3. 启用 AI
    • 勾选启用 AI
    • 勾选启用思考
  4. 选择模型
    • 有内置本地模型可用
    • 也可以使用在线大模型(需要配置 API token)
    • 配置完后会自动识别可以选择的模型(此时即验证配置正确)
    • 选择后确定即可
  5. 注解背景:选择可以访问整个项目
  6. 注意:如果使用在线大模型,大概率遇到 AsyncGenerator 错误,需要手动修复(详见下一章节)
    • 已给官方提 issue,但还没更新

AsyncGenerator 错误修复

问题描述

启动在线 AI 时会有如下报错:

Undai Server Startup Error Report
Generated: 2026-03-24T11:22:48.066190
Platform: win32
Python: 3.13.12 (tags/v3.13.12:1cbe481, Feb 3 2026, 18:22:25) [MSC v.1944 64 bit (AMD64)]
CWD: C:\Users\14816\Desktop\workspace - 副本\config-server
Settings:
 llm_provider: openai
 llama_model_path: None
 llama_n_ctx: 32768
 llama_n_gpu_layers: -1
 llama_n_threads: 20
 host: 127.0.0.1
 port: 56767

Exception Details:
NameError: name 'AsyncGenerator' is not defined

Traceback:
Traceback (most recent call last):
 File "server.py", line 586, in initialize
 File "providers\factory.py", line 44, in create_provider
 File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
 File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
 File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
 File "pyimod02_importers.py", line 457, in exec_module
 File "providers\openai_provider.py", line 17, in <module>
 File "providers\openai_provider.py", line 114, in OpenAIProvider
NameError: name 'AsyncGenerator' is not defined

问题原因

排查定位 + 问 AI 之后得知:

  • Python 3.10 之后,AsyncGenerator 需要显式从 typing 模块导入
  • Understand 内置使用的是 Python 3.13.12
  • openai_provider.py 的导入方式不对

排错过程

  1. 搜索文件:搜索这个文件没找到,估计是打包起来了

  2. 定位 exe:用 Everything 搜索开头的服务名 "undai",找到一个 undaiserver.exe

  3. 解包尝试:用 pyinstxtractor 解包 exe

  4. 反编译失败:找到了对应的 openai_provider.py.pyc,用 uncompyle 反编译,但是输出不完整,估计是版本差太多了

  5. 最终方案:用 sitecustomize.pyAsyncGenerator 提前导入,重启 Understand 后一切正常

解决方案

在 Understand 内置 Python 的 site-packages 目录创建补丁文件:

文件路径

D:\SciTools\bin\pc-win64\Python\Lib\site-packages\sitecustomize.py

文件内容

# sitecustomize.py
# 修复 Python 3.10+ AsyncGenerator 导入问题

import sys
import typing

# 确保 AsyncGenerator 在全局命名空间中可用
if not hasattr(typing, 'AsyncGenerator'):
    from collections.abc import AsyncGenerator
    typing.AsyncGenerator = AsyncGenerator
else:
    # 如果 typing 中已有 AsyncGenerator,确保它也在 builtins 中
    import builtins
    if not hasattr(builtins, 'AsyncGenerator'):
        builtins.AsyncGenerator = typing.AsyncGenerator

# 可选:添加其他可能缺失的类型注解
if sys.version_info >= (3, 10):
    # 确保常用类型注解都可用
    from typing import (
        AsyncGenerator,
        AsyncIterator,
        Awaitable,
        Coroutine,
    )
    
    # 注入到 builtins,使其在所有模块中可用
    import builtins
    builtins.AsyncGenerator = AsyncGenerator
    builtins.AsyncIterator = AsyncIterator
    builtins.Awaitable = Awaitable
    builtins.Coroutine = Coroutine

print("[sitecustomize] AsyncGenerator 补丁已加载")

验证修复
重启 Understand,应该看到补丁加载信息,不再出现 AsyncGenerator 错误。


基本功能使用

创建项目

  1. 新建项目

    • File → New → Project
    • 选择项目类型(C/C++、Java、Python 等)
    • 设置项目名称和保存路径
  2. 添加源代码

    • 右键项目 → Add Directory Tree
    • 选择源代码根目录
    • 配置文件过滤规则(包含/排除特定文件类型)
  3. 分析代码

    • Project → Analyze
    • 等待分析完成(大型项目可能需要几分钟)
    • 分析完成后可以使用各种代码浏览功能

代码浏览

1. 实体浏览器(Entity Filter)
  • 快捷键Ctrl + B
  • 功能:快速查找类、函数、变量等代码实体
  • 使用方法
    输入关键字 → 选择实体 → 回车跳转
    
2. 引用查找(References)
  • 右键菜单:选中符号 → References
  • 快捷键Ctrl + R
  • 功能:查看函数/变量的所有引用位置
  • 视图类型
    • Called By:谁调用了这个函数
    • Calls:这个函数调用了谁
    • Used By:谁使用了这个变量
    • Uses:这个函数使用了哪些变量
3. 依赖关系图(Dependency Graph)
  • 菜单:Graphical Views → Dependency Graph
  • 功能:可视化文件/模块之间的依赖关系
  • 操作
    • 拖拽节点调整布局
    • 双击节点展开详细信息
    • 右键导出为图片
4. 调用图(Call Graph)
  • 右键菜单:选中函数 → Graphical Views → Call Graph
  • 功能:可视化函数调用关系
  • 视图模式
    • Butterfly:同时显示调用者和被调用者
    • Called By:只显示调用者
    • Calls:只显示被调用者

代码度量(Metrics)

  1. 查看度量数据

    • Metrics → Project Metrics
    • 查看代码行数、复杂度、耦合度等指标
  2. 常用指标

    • CountLine:代码行数
    • Cyclomatic Complexity:圈复杂度
    • MaxNesting:最大嵌套深度
    • CountPath:路径数量
  3. 导出报告

    • Metrics → Export Metrics
    • 支持 CSV、HTML、XML 格式

代码搜索

1. 文本搜索
  • 快捷键Ctrl + Shift + F
  • 功能:全项目文本搜索
  • 选项
    • 正则表达式
    • 大小写敏感
    • 全词匹配
2. 结构化搜索
  • 菜单:Search → Search
  • 功能:基于代码结构的高级搜索
  • 示例
    查找所有未使用的函数
    查找所有全局变量
    查找所有递归函数
    

代码导航

  • 跳转到定义F12Ctrl + 鼠标左键
  • 返回上一位置Alt + ←
  • 前进到下一位置Alt + →
  • 查看声明Ctrl + Shift + D
  • 查看文档Ctrl + Shift + H

代码重构

  1. 重命名

    • 右键符号 → Rename
    • 输入新名称
    • 自动更新所有引用
  2. 提取函数

    • 选中代码块 → 右键 → Extract Method
    • 输入函数名
    • 自动生成函数定义和调用

AI 功能使用

AI 代码解释

解释选中代码

操作步骤

  1. 点击任意代码或对象或分析图节点
  2. 点开右上角 AI 面板
  3. AI 面板自动显示代码解释

AI 对话模式

自由提问

操作步骤

  1. 点击 AI 解释右上角的消息按钮进入 AI Chat 面板
  2. 在输入框输入问题
  3. 按 Enter 发送

工具包:【超级会员V7】通过百度网盘分享的文件:Scitool-…
链接:https://pan.baidu.com/s/1GTlyVikd9q9ESMUNJrFnxg?pwd=b9yi 

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐