AI 辅助代码阅读与学习

2026-04-05
4 min read

随着大模型和相关技术的发展,AI 已经成为了编程的主力,未来超过 99% 的代码可能由 AI 生成。TDD(Test-Driven Development,测试驱动开发)或称之为面向测试编程可能成为编程领域的主要范式。人类只要提出需求(Spec-Coding)并创建完备的测试集即可,剩下的编码任务将由 AI 完成

除了编码,AI 在很多领域都将是可靠的学习和工作伙伴,比如 AI 可以主导完成翻译和撰写等任务。opencodebookopenclawbook 就是由 AI 辅助完成的书籍

大模型 & 相关技术

OpenCode

OpenCode 是开源的智能编码工具。因为 OpenCode 有 TUI 和 GUI 两种形态,所以其可以应用于编码之外的任务。年初比较火的 OpenClaw,我的感觉相比于 OpenCode,其主要特色是可以和聊天软件交互,我们可以使用手机与其交互,然后完成一些任务。OpenClaw 能做的事情,OpenCode 也一定可以

Agent Skills

Skills 的设计哲学:与其让 LLM 凭记忆回答,不如在需要时给它一份精准的参考手册

智能体技能(Agent Skills)当前就是一个 MarkDown 文档,其中包含了特定领域和任务的知识、流程和验证手段等内容

IT 相关工作,很多都是流程化的,只要有一个人走通了流程,其他人跟着流程操作即可。以前相关流程以文档的形式落地,后续可以将流程 Skill 化,那么 AI 就可以根据这个 Skill 完成特定的任务。当前,我们可以给 AI 一个目标,让 AI 去折腾,AI 完成任务后可以将流程固化形成 Skill。如此,人类探路和固化流程的时间都省了

Skills 已经有了一个标准(https://agentskills.io/home),这个标准最初由 Anthropics 开发,随后开源。当前大部分工具都支持这个标准。开源社区给出了一个工具(skills-ref),可以验证 Skill 是否满足规范

skill-creator 是一个创建 Skill 的 Skill,假设 OpenCode 中已经安装了这个 Skill(可以在沟通窗口中让 AI 自行安装),那么使用下面的提示词,AI 可以创建新的 Skill:

/skill-creator 总结上面的任务,创建 skill 并命名为 xyz-123,将文件保存在 /path/to/skill/dir 中,并验证其有效性

使用 Skill 完成一个任务的时候可能会遇见以前没有遇到过的问题,我们还是需要指导 AI 以正确完成任务。任务正确完成后,可以告知 AI,让其总结经验,进一步优化 Skill,例如:

总结上面任务中的经验,优化当前 Skill,并使用 skill-creator 这个 skill 验证优化后 skill 的有效性

不断迭代和优化的 Skill 文档就像一个不断学习的工程师,其价值不言而喻。未来 Skill 可能是个人和公司重要的资产。当前互联网上已经有了一些 Skill 文档,例如:

  1. https://github.com/anthropics/skills
  2. https://github.com/sickn33/antigravity-awesome-skills
  3. https://github.com/ComposioHQ/awesome-claude-skills
  4. 其他

Doxygen

Doxygen 是常用的代码注释工具。使用 Doxygen 可以生成代码仓库的文档(HTML、Latex、PDF 等格式)。通过 Doxyge 的文档,可以看到类图和函数的调用关系(其他工具:SourcetrailCodeCharta 等),结构良好的 Doxygen 文档对理解代码仓库是很有帮助的。Doxygen 除了生成文档,还可以辅助找到当前代码仓库中缺失注释的类和方法。找到没有注释的类和方法,可以让 AI 帮忙补充注释

Doxygen 配置示例

# https://doxygen.cpp.org.cn/manual/config.html
# 与输入文件相关的配置选项,使用绝对路径,不要使用 ~
INPUT                  = /path/to/codes/path/
# EXCLUDE              = path/to/ignore1 path/to/ignore2
CLANG_ASSISTED_PARSING = YES
RECURSIVE              = YES
CLANG_DATABASE_PATH    = /path/to/codes/build/
# https://doxygen.cpp.org.cn/manual/extsearch.html
SEARCHENGINE_URL       = /path/to/doxysearch.cgi
FILE_PATTERNS          = *.c *.cc *.cxx *.cxxm *.cpp *.cppm *.c++ \
                         *.c++m *.h *.hh *.hxx *.hpp *.h++ 

# FILE_PATTERNS    += *.y *.yy
# EXTENSION_MAPPING = y=C++

# 项目相关选项
PROJECT_NAME          = "ABC"
TIMESTAMP             = YES
ALLOW_UNICODE_NAMES   = YES
OUTPUT_LANGUAGE       = Chinese
SEPARATE_MEMBER_PAGES = YES # 可以减小单个 Page 的尺寸
# 存在大量源文件时,可以设置为 YES,提升磁盘读取速度
CREATE_SUBDIRS        = YES
LOOKUP_CACHE_SIZE     = 4

# 构建相关选项
# EXTRACT_ALL 设置为 NO 寻找没有注释的内容(is not documented)
# # doxygen Doxyfile 2> doxygen.log
# 生成文档的时候使用 YES
EXTRACT_ALL            = YES
EXTRACT_PRIVATE        = YES
EXTRACT_STATIC         = YES
EXTRACT_PRIV_VIRTUAL   = YES
EXTRACT_LOCAL_CLASSES  = YES
EXTRACT_LOCAL_METHODS  = YES
EXTRACT_PACKAGE        = YES
EXTRACT_ANON_NSPACES   = YES
INTERNAL_DOCS          = YES
SHOW_GROUPED_MEMB_INC  = YES
SORT_MEMBERS_CTORS_1ST = YES

# 源代码浏览相关选项
SOURCE_BROWSER         = YES
INLINE_SOURCES         = YES
REFERENCED_BY_RELATION = YES
REFERENCES_RELATION    = YES

# 与警告和进度消息相关的配置选项
QUIET                  = NO
WARN_IF_UNDOCUMENTED   = YES
WARN_LOGFILE           = doxygen.log

# 与预处理器相关的配置选项
ENABLE_PREPROCESSING   = YES
MACRO_EXPANSION        = YES

# 与图生成器工具相关的配置选项
HAVE_DOT               = YES
DOT_NUM_THREADS        = 8
MAX_DOT_GRAPH_DEPTH    = 3
HIDE_UNDOC_RELATIONS   = NO
DOT_IMAGE_FORMAT       = svg
INTERACTIVE_SVG        = YES
# 开启下面选项后,耗时会增加明显
CALL_GRAPH             = YES
CALLER_GRAPH           = YES
# 单 DOT 图最大节点个数为 10000,很大的图会生成环境和浏览器造成渲染压力
# 部分关系图中的红框是因为这个因素造成的,需要更多细节的时可尝试 10000
DOT_GRAPH_MAX_NODES    = 1000
UML_LOOK               = YES
DOT_MULTI_TARGETS      = YES

# Latex 输出选项
GENERATE_LATEX         = NO

# HTML & 搜索功能
SEARCHENGINE           = YES
SERVER_BASED_SEARCH    = YES
EXTERNAL_SEARCH        = YES