AGENTS.md
这个仓库的主要用途是记录和维护个人博客文章,不是一个需要做通用前端、Node.js 或 npm 开发的项目。
在这个仓库里工作的 agent,默认应当优先处理文档编辑、文章结构整理和配图管理。不要因为仓库里存在 Jekyll 主题文件、package.json 或模板脚手架,就主动去做 JS、npm、主题模板相关修改,除非用户明确提出这类需求。
仓库定位
- 主要内容位于
_posts/。 - 大多数用户请求都应优先理解为:修改 Markdown 文章及其引用图片。
_layouts、_includes、_sass、assets、docs、test等目录属于主题或演示环境,通常不要主动修改。
文章规范
- 文章存放路径采用
_posts/YYYY/MM/。 - 文件名格式为
YYYY-MM-DD-slug.md。 - 每篇文章开头使用简洁的 YAML front matter,形式如下:
---
layout: article
title: 文章标题
tags: 标签
---
- 除下述更新日期规则或用户明确要求外,保持现有 front matter 风格。
- 普通文章默认使用
layout: article。 - 中文文章标题直接使用中文,不要无故改成英文。
tags可以是单个标签,也可以是与现有文章一致的空格分隔标签列表。
文章更新日期
- 首次发布时不添加更新日期;发布日期继续由文章日期确定。
- 已发布文章发生实质内容修订时,在 front matter 中新增或更新
last_modified_at: "YYYY-MM-DD",填写修订实际完成的日期(Asia/Shanghai)。仅修正错别字、调整排版或重新构建站点时,不刷新这个日期。 jekyll-sitemap用last_modified_at生成该文章的<lastmod>;文章页脚也优先用它显示“最后更新”并输出dateModified。以后统一维护这个字段,不同时填写不同值的modify_date。- 不根据文件修改时间、Git 提交时间或构建时间自动批量改写旧文章的更新日期;没有可靠修订日期的文章保持原样。
图片规范
- 文章配图优先放在
img/YYYY/MM/DD/下,并与文章日期对应。 - Markdown 图片引用使用站点根路径,例如:

- 为某篇文章新增图片时,优先复用该文章对应日期目录。
- 不要主动重构旧图片目录,除非用户明确要求整理。
自制配图与附属文件
- 正文只展示最终图片和必要的图解,默认不放 TeX、PDF、SVG 或其他制作文件的下载链接。
img/YYYY/MM/DD/只放实际用于正文展示的版本,默认使用白底 PNG。 - 可编辑源码与制作产物统一放在
_article_assets/YYYY/MM/YYYY-MM-DD-slug/,目录名与对应文章文件名(去掉.md)一致,便于识别归属和二次修改。多张图使用有含义的独立文件名。 - 附属目录采用以下结构:
_article_assets/YYYY/MM/YYYY-MM-DD-slug/
├── README.md # 对应文章、文件用途、依赖、重建命令与来源
├── source/ # 唯一的可编辑绘图源文件及必要输入
├── exports/ # PDF、SVG、透明 PNG 等可复用导出版本
├── build/ # 编译中间文件、日志和排版检查图片
├── render.py # 或适合该绘图工具的重建脚本
└── .gitignore # 排除 /build/
- 源码、导出文件与重建脚本保存在博客仓库中;中间文件留在附属目录的
build/,由 Git 忽略。不要把临时目录作为唯一制作源,也不要维护多份相互漂移的源码。 - 重建脚本根据自身位置解析路径,生成导出版本并更新正文图片,不依赖某次会话的临时路径。
README.md说明如何修改与重建,使用相对路径关联文章和图片。 _article_assets/保持为 Jekyll 默认不发布的下划线目录,不将其加入include或配置为 collection。为文章制作和维护配图时,可以直接维护该目录,无需因其位于_posts/外另行确认。- 默认不添加署名、作者名、水印或品牌标记,包括“五道口纳什”;只有用户明确要求时才添加。
- 多排或多阶段的图必须明确衔接关系:用连接箭头和简短标注说明中间结果如何延续、循环何时结束,以及箭头表示计算、搬运还是同一状态的延续,避免看起来像独立流程。
- 正文围绕图解释符号、阶段关系和关键限制。区分逻辑张量形状与物理存储/线程布局,技术细节保留必要来源,不把示意图当成实际硬件布局或性能测量。
- 修改后重新渲染并目检最终图片,检查公式、形状、连接线、文字遮挡和裁切,同时验证正文图片引用有效。同步更新导出版本;不自动提交或发布。
编辑原则
- 优先做小范围、局部性的文章修改。
- 在没有明确要求重写的情况下,尽量保持作者现有的结构、术语和表达风格。
- 如果要优化文章,优先关注这些方面:
- 错别字和明显病句
- 表达是否更清楚
- 小节结构是否更顺
- 公式和配图说明是否完整
- 文中图片引用是否一致
- 不要引入与当前文章无关的重构。
- 不要主动修改站点主题、npm 工具链或 Jekyll 配置,除非用户明确要求。
默认行为
- 在需求不明确时,默认把任务理解为“文档相关任务”。
- 优先修改 Markdown 文章和补充图片引用,而不是改模板或构建链路。
- 如果一个请求存在歧义,在动
_posts以外的渲染或构建文件前,先确认是否真的需要修改那些内容。
Git push 的等待经验
2026-09-22 推送 CodeMidas 章节编号修改(02548c2)时,首次 push 被沙箱网络权限拦截;获得权限后的 git push origin main 长时间没有输出,但原进程最终正常退出,返回 22ec852..02548c2 main -> main,推送成功。当时本机 SSH 配置将 GitHub 连接指向 ssh.github.com:443。
- 无输出不代表失败。 工具返回运行中的 session ID 时,继续等待该 session 的最终输出和退出码。此仓库的 GitHub SSH 推送曾出现超过一分钟无输出后成功的情况,不要仅因短时间沉默就中断或重复 push。
- 等待时每次约 10–30 秒轮询原进程,避免每几秒反复查询;持续等待期间约每 60 秒向用户说明“仍在等待连接或推送结果”,不要提前报告失败。
- 原 push 仍在运行时,不并发发起第二次 push,也不要急于改用很短的连接超时。确需重试时,先确认原进程已经结束;若结果不明确,先核对远端分支是否已包含目标提交。
- 区分明确的权限错误与连接等待:
Operation not permitted等沙箱拒绝需要按当前环境权限规则处理;单纯无输出则先等待。不要把一次会话的权限限制当成仓库长期需要额外授权的要求。 - 以退出码和远端更新结果确认成功;向用户汇报时明确区分“首次失败”“后续仍在等待”和“最终成功”。
中文技术博客的写作偏好
用户在 2026-09-19 选定 Zartbot、苏剑林、BBuf 作为写作参考。允许借鉴三者的通用叙述方法,保持自己的表达,不复刻标志性措辞或冒充作者。
参考目录:/Users/yxc/code/own_log/2026/09/19-ai-infra-writing-references/README.md。目录内有三位作者的阅读摘记、原文链接、短摘录,以及 SM120 的三份评审样稿。先读与当前题目相关的一份,无需每次全部读取。
- Zartbot:适合 GPU、网络、系统架构与产品取舍。以工作负载或反常现象引出观点,再解释设计和代价。
- 苏剑林:适合优化器、Attention、算法细节与公式。围绕一个具体疑问逐步推导,符号和公式随问题引入,用算例落地。
- BBuf:适合 CUDA、Triton、框架与源码笔记。从代码现象或真实 trace 入手,沿关键调用关系解释原因,避免无关代码堆积。
默认组合:用 BBuf 式源码推进组织工程文章,用问题与推导连接关键数字,架构延伸采用工作负载视角。用户指定某种侧重时优先遵循;不要每篇都硬套三种方法。
具体写法:
- 从代码、实际问题或疑问开篇,直接进入主题。允许自然口语和有依据的个人判断。
- 用连贯段落把前因后果讲出来。小标题只服务于明显转折,避免每两三句话一节、层层 A/B/C 编号、不断列表总结。
- 已经解释过的结论不再换成表格、流程图、加粗句反复讲;表格只留给真正需要并排比较的数据。
- 核实与阅读可以严格,成文不必像评审报告。重要前提在相关处交代一次,减少“不能据此断言”“不等价于”“最终仍需”等反复打断阅读的措辞。
- 源码、公式和性能结论仍需核实并保留必要来源;“不那么严谨”指行文自然,不是允许技术错误。
- 区分实测、手算、资料结果与推断,但不要每段都附免责声明。不得虚构作者的实验、工作经历、团队内部资料或厂商设计动机。
- 新的风格试写先保留原稿,候选版本放在 own_log 的 review 目录。除非用户要求,不把多个候选都放入
_posts/,不自动提交或发布。