转载地址:https://linux.do/t/topic/2254867
原贴已删,具体作者因为无法再次查看原贴已不可查,这里作为参考留存,侵删。
测试目标:
Linux 内核源码
20 个测试项:
| 编号 | 查询主题 | 预期相关区域 |
|---|---|---|
| 1 | 驱动 probe 失败后如何按相反顺序释放已经初始化的资源 | drivers/base、drivers/net、drivers/pci |
| 2 | 设备移除时如何取消定时器、延迟工作队列,避免卸载后的回调访问已释放对象 | drivers/net、kernel/workqueue.c、include/linux/timer.h |
| 3 | 使用引用计数管理内核对象生命周期,最后一个引用释放时执行清理 | lib、include/linux/kref.h、kernel |
| 4 | 使用 RCU 保护读路径,更新路径删除对象后延迟释放内存 | kernel/rcu、include/linux/rcupdate.h、net |
| 5 | 中断处理程序只完成快速确认,耗时工作交给线程化中断处理 | kernel/irq、drivers |
| 6 | 网络驱动的 NAPI 轮询如何根据 budget 处理接收队列并重新打开中断 | net/core、drivers/net、include/linux/netdevice.h |
| 7 | DMA buffer 的分配、映射、同步和释放流程 | kernel/dma、drivers/dma、include/linux/dma-mapping.h |
| 8 | 块设备驱动如何处理请求超时、完成请求和错误上报 | block、drivers/block |
| 9 | 文件系统元数据更新如何使用日志事务,并在失败时回滚或中止事务 | fs |
| 10 | 顺序读取文件时如何触发预读并填充 page cache | mm/readahead.c、mm/filemap.c、fs |
| 11 | 内存压力下子系统如何注册 shrinker 并回收缓存对象 | mm、fs、include/linux/shrinker.h |
| 12 | 页面分配如何考虑 NUMA 策略、节点回退和内存区域限制 | mm/page_alloc.c、mm/mempolicy.c |
| 13 | 调度器在任务唤醒时如何选择 CPU 并把任务放入运行队列 | kernel/sched |
| 14 | CPU 热插拔时子系统如何初始化和销毁每 CPU 状态 | kernel/cpu.c、include/linux/cpuhotplug.h |
| 15 | 设备挂起和恢复过程中如何协调系统睡眠、电源域和 runtime PM | drivers/base/power、include/linux/pm.h |
| 16 | 内核启动参数如何被解析并影响早期初始化行为 | init、kernel/params.c |
| 17 | LSM 如何在文件打开、权限检查或进程操作中插入安全决策 | security、include/linux/lsm_hook_defs.h |
| 18 | eBPF verifier 如何检查指针运算、边界和 helper 调用安全性 | kernel/bpf、tools/testing/selftests/bpf |
| 19 | 用户空间输入通过 copy_from_user 进入内核后如何进行长度校验和错误返回 | fs、kernel、include/linux/uaccess.h |
| 20 | 内核代码如何通过锁顺序、lockdep 标注或专用锁类避免死锁 | kernel/locking、include/linux/lockdep.h |
四工具统一结果汇总
总览
测试对象为 Linux 内核稀疏检出源码,20 个主题均来自真实内核开发场景。四个工具都完成了 20 主题测试,没有命令级失败。
| 工具 | 完成数量 | 查询耗时合计 | 平均单条耗时 | 主要定位 |
|---|---|---|---|---|
fast-context |
20/20 | 205s | 10.3s | 自然语言开发场景检索,整体最稳定 |
CodeGraph |
20/20 | 20s | 1.0s | 结构化符号检索很强,自然语言 context 较弱 |
Ace |
20/20 | 188s | 9.4s | 候选文件召回丰富,排序需要人工筛选 |
Semble |
20/20 | 2843s | 142.2s | 主题命中波动大,部分底层主题准确,但成本最高,由于是内存索引,每次查询都要索引,对于大型代码库耗时几乎不可接受 |
Semble 全量测试累计出现 120 次 Recursion depth exceeded in chunk,每个主题 6 次;命令仍返回成功。fast-context 按每次查询后等待 15 秒执行,满足每分钟最多 4 次的限速要求。
四工具索引与耗时对比
| 工具 | 索引机制 | 首次索引或冷启动成本 | 20 主题查询耗时 | 平均单条查询耗时 | 索引是否可复用 | 备注 |
|---|---|---|---|---|---|---|
CodeGraph |
显式本地索引,命令为 codegraph index |
7m 11s | 20s | 1.0s | 是 | 初次索引成本最高之一,但索引完成后查询最快;适合符号、调用关系和影响范围分析 |
fast-context |
无显式本地索引;每次查询构建上下文并调用 Windsurf Devstral | 无单独索引阶段 | 205s | 10.3s | 不适用 | 20 主题测试中每次查询后额外等待 15s 控制速率;205s 不包含等待时间 |
Ace |
search-context 自动索引并缓存到 .ace-tool/ |
首次完整查询约 4m 31s | 188s | 9.4s | 是 | 冷启动会包含上传、索引或缓存构建;后续全量查询明显变快 |
Semble |
每次 semble search 启动时构建内存索引 |
无可复用持久索引;成本并入每次查询 | 47m 23s | 142.2s | 否 | 当前 CLI 不提供独立持久索引流程;20 条查询相当于重复构建检索上下文 |
关键结论
| 结论项 | 排序 |
|---|---|
| 一次性索引后查询速度 | CodeGraph 最快,明显优于其他工具 |
| 冷启动自然语言检索成本 | fast-context 较稳定;Ace 首次较慢但可缓存;Semble 每次都重建成本最高 |
| 适合频繁全量回归 | CodeGraph、Ace、fast-context、Semble |
| 适合一次性语义探索 | fast-context、Ace、Semble |
| 适合已知符号结构分析 | CodeGraph |
口径说明
CodeGraph的 7m 11s 来自本次对 Linux 稀疏检出源码执行codegraph index的实际输出。Ace的 4m 31s 来自首次 NAPI 主题查询,后续 20 主题全量测试使用已有缓存,耗时 188s。fast-context全量测试严格串行,并在每次查询后等待 15s;表中 205s 是查询本身耗时合计,不含 19 次等待。Semble全量测试耗时 47m 23s,且每条查询都出现 6 次Recursion depth exceeded in chunk警告;命令仍成功返回。
结论
| 场景 | 建议工具顺序 | 原因 |
|---|---|---|
| 不知道入口文件,使用自然语言描述开发任务 | fast-context、Ace、Semble |
fast-context 命中核心路径最稳定;Ace 召回丰富;Semble 波动大 |
| 已知函数、结构体、宏或需要调用关系 | CodeGraph、rg |
CodeGraph 的符号定位和结构化关系检索优于自然语言搜索 |
| 需要快速获得候选文件列表 | Ace、fast-context |
Ace 缓存后速度较好,结果覆盖面大 |
| 需要对结果做严格代码阅读入口 | fast-context、CodeGraph |
fast-context 返回范围更贴近开发任务;CodeGraph 可补符号定义和关系 |
| 完整回归测试 | fast-context 全量、Ace 全量、CodeGraph 符号基线、Semble 抽样 |
Semble 全量成本过高,不适合频繁复跑 |
质量标记
高:前列结果直接命中核心文件或关键实现。中:返回相关区域,但排序、范围或主题覆盖需要人工筛选。低:返回弱相关、噪声较多或自然语言理解明显偏离。
| 编号 | 主题 | fast-context | CodeGraph context | Ace | Semble | 建议优先 |
|---|---|---|---|---|---|---|
| 1 | probe 失败资源回滚 | 高 | 中 | 高 | 低 | fast-context、Ace |
| 2 | remove 阶段取消 timer 和 workqueue | 高 | 低 | 中 | 低 | fast-context |
| 3 | 引用计数生命周期 | 高 | 低 | 高 | 低 | fast-context、Ace、CodeGraph 符号查询 |
| 4 | RCU 读路径和延迟释放 | 高 | 中 | 中 | 高 | Semble、fast-context、CodeGraph 符号查询 |
| 5 | 线程化中断处理 | 高 | 低 | 高 | 低 | fast-context、Ace |
| 6 | NAPI budget 轮询 | 高 | 中 | 高 | 高 | fast-context、Ace、Semble |
| 7 | DMA buffer 映射和同步 | 高 | 低 | 高 | 中 | fast-context、Ace |
| 8 | 块层请求超时和完成 | 高 | 低 | 中 | 低 | fast-context、Ace |
| 9 | 文件系统日志事务 | 高 | 低 | 高 | 低 | fast-context、Ace |
| 10 | 顺序读预读和 page cache | 高 | 低 | 高 | 中 | fast-context、Ace |
| 11 | shrinker 缓存回收 | 高 | 高 | 高 | 高 | 四者均可,优先 fast-context 或 Ace |
| 12 | NUMA 页面分配 | 高 | 中 | 高 | 中 | fast-context、Ace |
| 13 | 调度器唤醒和入队 | 高 | 低 | 中 | 低 | fast-context、CodeGraph 符号查询 |
| 14 | CPU 热插拔状态 | 高 | 中 | 高 | 中 | fast-context、Ace |
| 15 | 系统睡眠和 runtime PM | 高 | 低 | 中 | 中 | fast-context、Ace |
| 16 | 启动参数解析 | 高 | 低 | 高 | 低 | fast-context、Ace |
| 17 | LSM 安全钩子 | 高 | 中 | 高 | 高 | fast-context、Ace、Semble |
| 18 | eBPF verifier 检查 | 高 | 低 | 中 | 中 | fast-context、CodeGraph 符号查询 |
| 19 | copy_from_user 输入校验 | 高 | 高 | 高 | 中 | fast-context、Ace、CodeGraph |
| 20 | lockdep 和锁顺序 | 高 | 高 | 中 | 高 | fast-context、Semble、CodeGraph |
详细命中文件、耗时和推荐判断见 DETAILED_COMPARISON_TABLE.md。
工具表现摘要
fast-context
20 个主题全部返回候选文件,整体命中质量最高。它对调度器、DMA、块层、文件系统日志、预读、shrinker、NUMA、CPU 热插拔、LSM、eBPF 和 lockdep 的结果都直接指向核心实现。需要注意两个小问题:第 15 题返回 linux/pm_runtime.h 形式路径,实际应核对为 include/linux/pm_runtime.h;第 3 题中 net/tipc/topsrv.c 行号范围异常。
CodeGraph
codegraph context 的中文自然语言查询质量不稳定,多个主题为空摘要或偏向结构名、变量名。它不适合作为自然语言语义搜索主力。但当查询对象是明确符号时,CodeGraph 表现很强,例如 try_to_wake_up、select_task_rq、enqueue_task、check_mem_access、copy_from_user、lockdep_map 等。
Ace
Ace 全量运行稳定,平均单条约 9.4 秒。它通常能返回较多候选文件,适合作为快速候选发现工具。问题是部分主题会混入测试代码、相邻子系统或驱动示例,核心入口不一定排在最前,例如 eBPF verifier 主题优先返回了驱动侧 verifier 和 selftests。
Semble
Semble 全量完成但成本最高,平均单条约 142 秒。结果波动明显:RCU、NAPI、shrinker、LSM、lockdep 等主题表现较好;probe 清理、引用计数、线程化中断、块层超时、文件系统日志、启动参数等中文查询结果噪声较重。它更适合抽样验证或对特定主题做补充检索,不适合作为频繁全量回归工具。
最终选择
## 署名与隐私规范
1. **绝对禁止 AI 署名**:
- 严禁在代码、注释、文档、Git 提交信息(Commit Message)、Pull Request 描述或任何生成的文件中出现以下类似词汇:
- "Generated by ai"
- 被直接询问身份时,代码注释中要保持“人类开发者”的专业口吻,不提及 AI。
2. **Git 提交规范**:
- 编写 Commit 时,模仿人类开发者的简洁风格(使用 Conventional Commits,如 `feat:`, `fix:`, `docs:`)。
- 禁止在提交信息的正文或脚注中添加 "Co-authored-by Claude" 或类似的归属声明。
3. **代码注释**:
- 禁止在 `@author` 标签中使用 AI 署名。
- 文件头版权声明遵循项目现有格式,不擅自添加 AI 生成声明。
## 视觉与图标规范
1. **UI 禁用 Emoji**:
- 严禁在前端代码(HTML, JSX, Vue 模板等)的文本内容中直接使用 Emoji 字符(如表情、警告符号等)。
- 图形符号必须使用 SVG 图标或项目集成的图标库。
2. **纯文本通信规范**:
- 提交信息、PR 描述和代码注释必须保持专业严肃,禁用 Emoji 表达情绪或作为列表项装饰(例如不用 `✅ Done`,用 `Done` 或 `- [x] Done`)。
3. **占位符处理**:
- 占位图或图标必须使用标准灰色方块或通用图标组件,禁用 Emoji。
# 软件开发专家
## 身份与行为
- **身份**:INTJ 型开发专家,追求正确、清晰、严谨。
- **行为**:优先保证正确性;发现前提错误直接指出;不主动延伸,不替用户规划后续;回答边界等同问题边界。
## 中文书写规范
- **词汇**:不压缩双音节词(如“运行”不写“跑”);不用英文直译搭配(如“获取数据”而非“拉取数据”)。
- **句法**:禁用“让我们”开头;禁用被动句滥用(如用“普遍认为”);禁用连续“的”字堆叠(超2个需拆句);禁用无主语前缀(如“值得注意的是”)。
- **语气**:严禁虚假共情(如“完全理解”)、居高临下(如“其实是想”)、虚假谦逊(如“仅供参考”)、情感操控(如“放心”)。
- **结构**:首句含实质信息直奔主题;完毕即止,无客服式结尾;无逻辑必要不分步。
- **其他**:禁止自造术语(如用“理解难度”);禁用无必要中英混搭;禁用网络流行语;禁用虚假因果关系(应用“可能与……有关”)。
## 自检
- 输出前确认:无单音节压缩、不自然搭配、翻译腔、虚假共情、居高临下、过度延伸、模板化起尾、未经论证结论。
## 代码检索规范
- 不知道文件位置、用自然语言定位功能实现:优先使用 `fast-context`;若认证、限流或失败,改用 `semble-
search`。
- 使用 `fast-context` 时请 在命令中载入 `$WINDSURF_API_KEY` 变量
- 只需要快速获取候选文件:使用 `ace-codebase-search`,但结果需二次筛选。
- 已知函数、类型、组件、符号名,或需要调用关系、影响范围、从 A 到 B 的流程追踪:优先使用 `CodeGraph MCP`。
- 查找精确字符串、错误文本、日志内容、配置键:使用 `rg`,不要使用语义搜索。
- 推荐流程:`fast-context` 或 `semble-search` 定位入口文件,再用 `CodeGraph MCP` 追踪结构关系,最后只读取
少量目标文件确认细节。
- 请减少使用先全仓读取或全仓 grep, 少用grep 重复验证 CodeGraph 已返回的结构化结果。
<!-- CODEGRAPH_START -->
## CodeGraph 规范
CodeGraph 是基于 AST 解析的符号关系知识库,专用于获取结构化信息。
### 检索选择指南
- **结构化问题**:优先使用 CodeGraph(找符号定义、查询调用关系、链路追踪、影响分析)。
- **字面量检索**:使用 Grep/Read(搜索特定字符串、注释、日志或已打开的文件)。
| 查询目标 | 推荐工具 |
|---|---|
| 查找符号 X 的定义位置 | `codegraph_search` |
| 查询谁调用了函数 Y | `codegraph_callers` |
| 查询函数 Y 调用了哪些方法 | `codegraph_callees` |
| 追踪从 X 到 Y 的调用路径 | `codegraph_trace` |
| 修改 Z 可能会影响哪些地方 | `codegraph_impact` |
| 查看 Y 的函数签名、源码或文档 | `codegraph_node` |
| 获取特定任务/区域的聚合上下文 | `codegraph_context` |
| 一次性查看多个相关符号的源码 | `codegraph_explore` |
| 列出指定路径下的文件 | `codegraph_files` |
| 检查索引是否健康 | `codegraph_status` |
### 核心原则
- **直接解答,禁止冗余检索**:对于架构或逻辑流问题,应结合 `codegraph_context`/`codegraph_trace` 和 `codegraph_explore` 快速获取结果。禁止通过多次 search 和 callers 自行重建路径,禁止派生不必要的文件读取子任务。
- **信任结果**:结果来自 AST 解析,禁止用 Grep 进行二次验证。
- **按名检索**:按名称搜索符号时优先用 `codegraph_search`,不要先用 Grep。
- **善用聚合工具**:获取上下文使用 `codegraph_context`,不要链式调用 `codegraph_search` + `codegraph_node`;批量查看源码使用 `codegraph_explore`,禁止循环调用 `codegraph_node`。
- **索引延迟**:文件写入后有约 500ms 索引延迟,修改文件后不要立即重新检索。
### 未初始化处理
- 若 `.codegraph/` 不存在,则自动创建, 如果在git仓库中 则自动添加相关忽略规则”
<!-- CODEGRAPH_END -->
附录:
四工具详细对比表
说明
高:前列结果直接命中核心文件或关键实现。中:返回相关区域,但排序、范围或主题覆盖需要人工筛选。低:返回弱相关、噪声较多或自然语言理解明显偏离。- Semble 每条查询都有 6 次
Recursion depth exceeded in chunk警告,表中不再逐行重复。
| 编号 | 主题 | fast-context | CodeGraph context | Ace | Semble | 推荐判断 |
|---|---|---|---|---|---|---|
| 1 | probe 失败资源回滚 | 高,16s:drivers/base/devres.c;drivers/net/can/m_can/m_can_platform.c;drivers/virtio/virtio_rtc_driver.c |
中,1s:probe in drivers/block/aoe/aoecmd.c;drivers/net/wireless/purelifi/plfxlc/usb.c;drivers/net/wireless/zydas/zd_usb.c |
高,21s:drivers/pci/probe.c;drivers/base/dd.c;drivers/pci/pcie/portdrv.c |
低,163s:kernel/trace/trace_probe.h;kernel/trace/trace_probe.c;fs/afs/vl_probe.c |
优先 fast-context;Ace 可补驱动核心框架 |
| 2 | remove 阶段取消 timer 和 workqueue | 高,10s:drivers/virtio/virtio_mem.c;drivers/virtio/virtio_balloon.c;drivers/net/ethernet/intel/igc/igc_main.c |
低,1s:无有效摘要 | 中,7s:drivers/pci/remove.c;net/ncsi/ncsi-manage.c;drivers/base/devcoredump.c |
低,154s:drivers/net/dsa/lantiq/mxl-gsw1xx_pce.h;drivers/net/dsa/lantiq/lantiq_pce.h;drivers/net/ethernet/microchip/vcap/vcap_ag_api.h |
优先 fast-context;必要时用 rg cancel_work_sync 精确补充 |
| 3 | 引用计数生命周期 | 高,9s:include/linux/kref.h;include/linux/refcount.h;kernel/irq/manage.c |
低,0s:无有效摘要 | 高,11s:lib/kobject.c;kernel/fork.c;fs/cachefiles/interface.c |
低,139s:include/linux/mfd/mc13783.h;fs/ext4/extents_status.h;lib/crypto/arm/sha512-armv4.pl |
优先 fast-context 和 Ace;已知符号用 CodeGraph 查 kref、refcount |
| 4 | RCU 读路径和延迟释放 | 高,12s:kernel/rcu/update.c;kernel/rcu/tasks.h;kernel/rcu/tree.c |
中,1s:kernel/rcu/rcutorture.c;include/linux/rcu_sync.h;kernel/rcu/rcutorture.c |
中,8s:mm/kfence/core.c;lib/kobject.c;lib/radix-tree.c |
高,140s:kernel/rcu/update.c;kernel/rcu/tree.h;include/linux/rcupdate.h |
Semble 与 fast-context 都可用;CodeGraph 适合查 call_rcu、kfree_rcu |
| 5 | 线程化中断处理 | 高,14s:kernel/irq/manage.c;kernel/irq/handle.c;include/linux/interrupt.h |
低,0s:无有效摘要 | 高,8s:kernel/irq/manage.c;kernel/irq/handle.c;kernel/irq/spurious.c |
低,143s:include/linux/mfd/mt6323/registers.h;drivers/net/ethernet/spacemit/k1_emac.h;include/dt-bindings/clock/mediatek,mt7981-clk.h |
优先 fast-context 或 Ace;CodeGraph 查 request_threaded_irq |
| 6 | NAPI budget 轮询 | 高,10s:net/core/dev.c;drivers/net/virtio_net.c;drivers/net/ethernet/xilinx/xilinx_axienet_main.c |
中,1s:include/net/gro.h;include/linux/netdevice.h;include/linux/netdevice.h |
高,15s:drivers/net/ethernet/wangxun/libwx/wx_lib.c;drivers/net/ethernet/fungible/funeth/funeth_rx.c;drivers/net/ethernet/renesas/rswitch_main.c |
高,141s:include/trace/events/napi.h;drivers/net/ethernet/amazon/ena/ena_netdev.c;net/core/dev.c |
三个语义工具都可用;核心框架优先 fast-context |
| 7 | DMA buffer 映射和同步 | 高,9s:kernel/dma/mapping.c;include/linux/dma-mapping.h;include/linux/dma-map-ops.h |
低,3s:drivers/block/aoe/aoe.h;drivers/net/ethernet/xscale/ixp4xx_eth.c;drivers/net/ethernet/xscale/ixp4xx_eth.c |
高,11s:kernel/dma/mapping.c;kernel/dma.c;kernel/dma/direct.c |
中,142s:include/linux/iio/buffer-dma.h;include/linux/dma-buf.h;include/uapi/linux/dma-buf.h |
优先 fast-context 和 Ace;Semble 偏向 dma-buf |
| 8 | 块层请求超时和完成 | 高,9s:block/blk-mq.c;block/blk-timeout.c;block/blk-settings.c |
低,0s:无有效摘要 | 中,10s:drivers/block/nbd.c;drivers/block/brd.c;drivers/block/zloop.c |
低,144s:include/uapi/drm/xe_drm.h;include/dt-bindings/clock/hi3559av100-clock.h;include/dt-bindings/clock/loongson,ls2k-clk.h |
优先 fast-context;Ace 可补驱动实例 |
| 9 | 文件系统日志事务 | 高,10s:fs/jbd2/journal.c;fs/jbd2/transaction.c;fs/jbd2/commit.c |
低,0s:无有效摘要 | 高,8s:fs/btrfs/tree-mod-log.c;fs/ubifs/file.c;fs/xfs/xfs_log.c |
低,143s:include/scsi/viosrp.h;drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c;drivers/net/ethernet/microchip/vcap/vcap_ag_api.h |
优先 fast-context;Ace 可横向比较多个文件系统 |
| 10 | 顺序读预读和 page cache | 高,9s:mm/filemap.c;mm/readahead.c;mm/internal.h |
低,2s:fs/smb/client/cached_dir.h;include/linux/cacheinfo.h;fs/smb/client/dfs_cache.c |
高,7s:fs/mpage.c;mm/readahead.c;fs/nfs/read.c |
中,143s:mm/page_frag_cache.c;include/linux/page_frag_cache.h;fs/netfs/fscache_cache.c |
优先 fast-context;Ace 可补 VFS 与文件系统读路径 |
| 11 | shrinker 缓存回收 | 高,10s:mm/shrinker.c;include/linux/shrinker.h;mm/slab_common.c |
高,1s:include/linux/shrinker.h;include/linux/shrinker.h;include/linux/shrinker.h |
高,9s:mm/shrinker.c;fs/super.c;fs/f2fs/shrinker.c |
高,142s:mm/shrinker.c;include/linux/shrinker.h;mm/shrinker_debug.c |
四者均可;优先 fast-context 或 Ace |
| 12 | NUMA 页面分配 | 高,10s:mm/page_alloc.c;mm/mempolicy.c;include/linux/mempolicy.h |
中,1s:include/linux/numa_memblks.h;include/linux/numa_memblks.h;include/linux/sched/numa_balancing.h |
高,9s:mm/mempolicy.c;mm/percpu.c;mm/numa_emulation.c |
中,143s:mm/numa_emulation.c;mm/numa_memblks.c;arch/x86/include/asm/numachip/numachip_csr.h |
优先 fast-context 和 Ace;CodeGraph 查具体符号 |
| 13 | 调度器唤醒和入队 | 高,10s:kernel/sched/core.c;kernel/sched/sched.h;kernel/sched/fair.c |
低,0s:include/linux/cpu.h;arch/x86/boot/cpuflags.c;arch/x86/boot/cpuflags.h |
中,8s:kernel/sched/rt.c;kernel/sched/stop_task.c;kernel/sched/sched.h |
低,140s:kernel/cpu.c;include/linux/cpumask.h;kernel/bpf/cpumask.c |
优先 fast-context;已知符号用 CodeGraph 查 try_to_wake_up |
| 14 | CPU 热插拔状态 | 高,9s:kernel/cpu.c;include/linux/cpuhotplug.h |
中,1s:include/linux/cpu.h;arch/x86/boot/cpuflags.c;arch/x86/boot/cpuflags.h |
高,7s:kernel/cpu.c;kernel/cpu.c;kernel/cpu.c |
中,138s:include/linux/cpumask.h;kernel/cpu.c;drivers/base/cpu.c |
优先 fast-context 和 Ace |
| 15 | 系统睡眠和 runtime PM | 高,10s:drivers/base/power/main.c;kernel/power/suspend.c;drivers/base/power/common.c |
低,1s:net/sched/sch_hfsc.c;include/linux/perf_event.h;arch/x86/include/asm/pgtable_64_types.h |
中,7s:drivers/net/wwan/iosm/iosm_ipc_protocol.c;kernel/power/suspend.c;kernel/power/autosleep.c |
中,138s:include/linux/pm_runtime.h;drivers/base/power/runtime-test.c;drivers/base/power/runtime.c |
优先 fast-context;Ace 和 Semble 可补 runtime PM |
| 16 | 启动参数解析 | 高,10s:init/main.c;kernel/params.c |
低,1s:无有效摘要 | 高,9s:init/main.c;init/main.c;arch/x86/kernel/setup.c |
低,138s:include/linux/mfd/mc13783.h;include/dt-bindings/clock/intel,lgm-clk.h;lib/crypto/arm/sha512-armv4.pl |
优先 fast-context 和 Ace |
| 17 | LSM 安全钩子 | 高,9s:security/security.c;include/linux/lsm_hook_defs.h;security/landlock/fs.c |
中,0s:include/linux/lsm_hooks.h;include/uapi/linux/lsm.h;include/linux/lsm_hooks.h |
高,8s:security/apparmor/lsm.c;security/safesetid/lsm.c;tools/testing/selftests/bpf/progs/lsm.c |
高,138s:security/lsm_init.c;security/lsm.h;kernel/bpf/bpf_lsm.c |
优先 fast-context 和 Ace;Semble 可补 LSM 初始化 |
| 18 | eBPF verifier 检查 | 高,10s:kernel/bpf/verifier.c;kernel/bpf/states.c |
低,3s:kernel/bpf/btf.c;fs/unicode/mkutf8data.c;net/netfilter/nf_conntrack_ftp.c |
中,7s:drivers/net/ethernet/netronome/nfp/bpf/verifier.c;tools/testing/selftests/bpf/progs/verifier_linked_scalars.c;kernel/trace/bpf_trace.c |
中,139s:include/uapi/linux/bpf.h;kernel/bpf/log.c;kernel/bpf/verifier.c |
优先 fast-context;已知函数用 CodeGraph |
| 19 | copy_from_user 输入校验 | 高,10s:include/linux/uaccess.h;include/asm-generic/access_ok.h;kernel/fork.c |
高,2s:include/linux/uaccess.h;arch/x86/include/asm/user_32.h;arch/x86/include/asm/user_64.h |
高,9s:lib/usercopy.c;lib/strncpy_from_user.c;security/landlock/syscalls.c |
中,138s:arch/x86/lib/copy_mc.c;include/linux/instrumented.h;include/linux/uaccess.h |
fast-context、Ace、CodeGraph 都可用 |
| 20 | lockdep 和锁顺序 | 高,9s:kernel/locking/lockdep.c;kernel/locking/lockdep.h;kernel/workqueue.c |
高,1s:include/linux/lockdep_types.h;include/linux/lockdep_types.h;kernel/locking/lockdep_internals.h |
中,9s:net/core/sock.c;fs/locks.c;kernel/locking/Makefile |
高,137s:include/linux/lockdep.h;kernel/locking/lockdep.c;kernel/locking/lockdep_internals.h |
优先 fast-context 和 Semble;CodeGraph 查 lockdep 符号 |
简要排序
| 维度 | 排序 |
|---|---|
| 自然语言开发场景准确性 | fast-context > Ace > Semble > CodeGraph context |
| 查询速度 | CodeGraph > Ace ≈ fast-context > Semble |
| 候选文件覆盖面 | Ace > fast-context > Semble > CodeGraph context |
| 已知符号定位 | CodeGraph > rg > 语义搜索工具 |
| 全量回归可复跑性 | CodeGraph > Ace > fast-context > Semble |
附件
- 原贴链接:code-search-tools-bundle.7z (3.1 MB)
- 转载链接:code-search-tools-bundle.zip
(删除了一些依赖、文件,不然死活上传不了)
GitHub Links
fast-context: https://github.com/oulkurt/fast-context-skillfast-contextupstream core: https://github.com/SammySnake-d/fast-context-mcpsemble-search: https://github.com/MinishLab/sembleace-codebase-search: https://github.com/jswysnemc/ace-tool-rsCodeGraph MCP: https://github.com/colbymchenry/codegraph