
【免费下载链接】antivibeLearn what AI writes, not just accept it. A Claude Code skill that turns AI-generated code into educational deep dives.项目地址https://gitcode.com/gh_mirrors/an/antivibe点击查看免费下载AntiVibe 是一个面向 Claude Code 的反 vibe coding学习框架能把 AI 生成的代码变成教学式的深度解析文档。它的核心能力由scripts/目录下的 4 个 Shell 脚本驱动代码结构解析、阶段检测、学习资源匹配和Markdown 输出生成。本文将逐个拆解这 4 个脚本的实现原理带你看懂它如何支持 TypeScript、Python、Go、Rust、Java 等多语言分析以及阶段检测到底是怎么找到 AI 刚写的代码的。一、AntiVibe 是什么解决什么问题⚡痛点AI 写代码开发者直接复制粘贴谁也没有真正学到东西。️解法AntiVibe 在任务完成后自动把AI 写了什么转化为一篇讲清楚What做什么、Why为什么这样写、When何时用、Alternatives还有哪些替代方案的学习指南。安装只需两步# 克隆仓库 git clone https://gitcode.com/gh_mirrors/an/antivibe # 安装为全局 Claude Code 技能 cp -r antivibe ~/.claude/skills/antivibe技能入口定义在 SKILL.md 中通过/antivibe、deep dive、learn from this code等短语触发自动触发配置则在 hooks/hooks.json 里完成。二、4 个 Shell 脚本总览所有脚本都位于 scripts/ 目录各司其职脚本职责一句话原理capture-phase.sh阶段检测用文件修改时间找出最近一小时内AI 改动的代码analyze-code.sh多语言结构解析按扩展名分流 grep正则提取函数/类/接口find-resources.sh学习资源匹配case模式匹配把概念词映射到精选资源generate-deep-dive.sh输出生成用 heredoc 拼接模板产出结构化 Markdown这四个脚本本身是辅助工具SKILL.md 明确说 AI 也可以不依赖它们直接分析代码但它们的实现思路非常值得学习。下面逐一拆解。三、capture-phase.sh阶段检测的实现原理 阶段检测要回答的问题是这一轮任务里AI 到底新写了哪些文件答案藏在 scripts/capture-phase.sh 的三行核心逻辑里。1. 给阶段打时间戳脚本接收一个可选的阶段名参数默认manual并用date生成精确到秒的时间戳PHASE_NAME${1:-manual} TIMESTAMP$(date %Y-%m-%d-%H%M%S)${1:-manual}是 Shell 的默认值展开语法——第一个参数为空时自动回退为manual这让脚本既支持./capture-phase.sh auth-system也支持直接./capture-phase.sh。2. 按修改时间圈定改动范围这是阶段检测最关键的一步scripts/capture-phase.sh#L14find . -type f \( -name *.ts -o -name *.js -o -name *.py -o -name *.go -o -name *.rs -o -name *.java \) -mmin -60 | head -50拆开看有 4 个技巧多扩展名过滤\( ... \) -o把 6 种语言的源文件或起来避免把 README、配置文件混进来-mmin -60只保留最近 60 分钟内修改过的文件——AI 刚刚写完的代码必然满足这个条件这就是阶段边界的朴素但有效的定义2/dev/null静默权限错误保证在受限目录里也能跑通head -50截断输出防止一次改动太多文件时输出爆炸。3. 输出机器可读的标记echo ---PHASE_CAPTURED--- echo phase$PHASE_NAME echo timestamp$TIMESTAMP---PHASE_CAPTURED---是一个哨兵标记sentinel上游程序可以靠它判断捕获成功并解析出阶段名和时间戳。这种人类可读日志 机器可解析标记混排的输出方式是脚本间协作的常见模式。四、analyze-code.sh多语言代码结构解析 scripts/analyze-code.sh 要解决的是拿到一个源码文件如何快速提炼出它的骨架函数、类、导入、导出1. 参数校验先防守再执行脚本开头就做了两层防御scripts/analyze-code.sh#L7-L15没传参数就打印用法并exit 1文件不存在就报错退出。这是 Shell 脚本的fail fast好习惯——尽早失败避免后面跑出一堆空结果。2. 用 Bash 字符串扩展取扩展名EXTENSION${FILE_PATH##*.}${var##*.}是贪婪去掉最短前缀的字符串扩展从最后一个.开始截断app/auth.service.ts得到ts。一行就替代了 Python 里os.path.splitext的工作。3. case 分流按语言选择解析策略核心是一个case $EXTENSION分支scripts/analyze-code.sh#L29-L87每种语言用不同的grep -E正则提取结构语言提取目标正则思路TS/JS函数、类、接口、导入、导出^(export )?(function\|const\|class\|interface\|type)Python类、函数、导入^class、^def、^import \| ^fromGo函数、结构体、接口^func、^type .* structRust函数、结构体、特质^fn、^struct、^traitJava公共类/接口/枚举、方法^public (class\|interface\|enum)其他兜底输出前 30 行head -30做概览三个细节值得注意锚定行首^只匹配顶层定义class出现在注释或缩进里的代码不会被误抓相当于一种零依赖的语法概览head -20截断每个结构类别最多输出 20 条保证输出对 LLM 上下文友好*)兜底分支未知语言不报错而是head -30打印文件头部让调用方AI自己读——优雅降级而非崩溃。 这个设计的本质不追求 100% 精确的 AST 解析而是用便宜且够准的正则给 AI 提供文件骨架地图真正的理解交给大模型。五、find-resources.sh概念到资源的模式匹配 学习指南的价值很大程度取决于资源质量。scripts/find-resources.sh 的做法是离线资源库 case模式匹配而不是每次联网搜索。用法./find-resources.sh react hooks react实现是一个长case语句scripts/find-resources.sh#L20-L92按通配关键词分流匹配模式命中场景输出资源*react*\|hooks\|useStateReact 相关概念React 官方文档、Hooks API*typescript*\|genericsTS 类型/泛型TS 官方文档、Playground*database*\|*postgres数据库概念PostgreSQL/MySQL 文档、SQLBolt*auth*\|jwt\|*oauth认证相关OWASP、JWT 详解、Auth0 文档*design pattern*\|factory设计模式Refactoring Guru 等*)其他概念给出通用搜索建议这种预置高质量链接库的策略呼应了项目的第一原则——Curated resources: Quality links, not random Google results。注释里也诚实地留了扩展点scripts/find-resources.sh#L18生产环境可以接网页搜索或本地数据库。六、generate-deep-dive.sh模板化生成学习文档 scripts/generate-deep-dive.sh 负责把前面的分析结果落盘成一篇结构完整的 Markdown。1. 文件命名与输出目录TIMESTAMP$(date %Y-%m-%d-%H%M%S) OUTPUT_DIRdeep-dive OUTPUT_FILE$OUTPUT_DIR/${PHASE_NAME}-${TIMESTAMP}.md mkdir -p $OUTPUT_DIR[阶段名]-[时间戳].md的命名方式保证多次生成互不覆盖mkdir -p幂等地创建目录想改输出位置只需改OUTPUT_DIR一行见 docs/setup.md#L95-L100。2. heredoc把模板嵌进脚本脚本大量使用cat file EOF ... EOF语法heredoc把 Overview、Code Walkthrough、Concepts Explained、Learning Resources、Next Steps 五大板块直接内嵌在脚本里。单引号包裹的 EOF会禁止变量展开——这正是想要的效果模板里的_Placeholder_原样保留等 AI 后续填充。3. 循环写入每个文件for FILE in ${FILES[]}; do if [ -f $FILE ]; then echo ### $(basename $FILE) $OUTPUT_FILE ... fi done对传入的每个文件做存在性检查只写入真实存在的文件并自动取basename作为小标题。生成的骨架与 templates/deep-dive.md 的正式模板结构一致最后打印一句提示Edit this file to add your specific analysis!——再次体现脚本出骨架AI 填灵魂的分工哲学。七、四个脚本如何协同工作把 4 个脚本串起来就是 AntiVibe 的完整数据流步骤脚本输入 → 输出① 圈定范围capture-phase.sh阶段名 → 最近 1 小时改动的文件清单② 提炼骨架analyze-code.sh单个源文件 → 函数/类/导入的结构摘要③ 匹配资源find-resources.sh概念关键词 → 精选学习资源④ 落盘文档generate-deep-dive.sh阶段名 文件列表 →deep-dive/*.mdcapture-phase.sh ── 文件清单 ── analyze-code.sh逐文件──┐ ├── generate-deep-dive.sh ── deep-dive/xxx.md 概念关键词 ────────── find-resources.sh ────────────┘需要强调的是这套流水线是可选的辅助路径。如 SKILL.md#L102-L110 所述Claude 完全可以直接读代码完成分析脚本更像是把最机械的三步从 token 消耗中剥离出来让大模型专注于它最擅长的部分——解释Why。八、给新手的 4 个可复用思路 ✅读完这 4 个脚本可以带走这些通用技巧时间窗口 阶段边界find -mmin -60是找出最近改了什么的最简方案任何增量分析场景都能套用扩展名分流 行首正则不装任何依赖就能给多语言项目画出结构地图且*)兜底分支保证永不因陌生语言而失败哨兵标记 键值行---PHASE_CAPTURED---这种输出设计让脚本结果既给人看、又能被程序解析heredoc 模板 占位符单引号 heredoc 内嵌模板、运行时只追加动态内容是生成报告类文件最省事的写法。配合 reference/language-patterns.md 中的框架模式参考表你现在已经掌握了 AntiVibe 的完整实现原理——下次 AI 再替你写完一个模块你终于可以说让我看看它为什么这样写。 ️赞分享【免费下载链接】antivibeLearn what AI writes, not just accept it. A Claude Code skill that turns AI-generated code into educational deep dives.项目地址https://gitcode.com/gh_mirrors/an/antivibe点击查看免费下载相关推荐Fasd 代码实现原理深入解析 POSIX shell 脚本的精妙设计Fasd 代码实现原理深入解析 POSIX shell 脚本的精妙设计 Fasd 是一个功能强大的命令行效率工具它通过智能跟踪您访问过的文件和目录让您能够CLI开发工具Laya 多语言支持指南100语言脚本检测与智能路由原理完全解析Laya 多语言支持指南100语言脚本检测与智能路由原理完全解析 Laya 是一个开源的多语言非自回归决策引擎能对 100 种语言的文本在单次前向传播内人工智能NLP强化学习RPCS3模拟器完整上手攻略三步让PS3游戏库在电脑上重获新生RPCS3模拟器完整上手攻略三步让PS3游戏库在电脑上重获新生 我的PS3在一个凌晨毫无征兆地死机了——开机、亮起黄灯、熄灭前后不到五秒。柜子里那二十多张光虚拟化图形学调试器创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考