Skip to content

refactor(docs): Option C IA 大重组 — learn/career/community/projects 四大区#307

Merged
longsizhuo merged 7 commits intomainfrom
feat/docs-reorg-rag-projects
Apr 18, 2026
Merged

refactor(docs): Option C IA 大重组 — learn/career/community/projects 四大区#307
longsizhuo merged 7 commits intomainfrom
feat/docs-reorg-rag-projects

Conversation

@longsizhuo
Copy link
Copy Markdown
Member

@longsizhuo longsizhuo commented Apr 18, 2026

背景

Admin 反馈"目录结构要重新设计,很多内容过时"。经 owner 拍板用 Option C(按读者意图分类),全站 docs 在本 PR 里一次到位,避免分多 PR 把 contributors review 路径切碎。

新 IA

/docs/
├── learn/                  (系统学习)
│   ├── ai/                   AI 全栈主题(原 ai/)
│   └── cs/                   CS 基础 + 系统(原 computer-science/)
├── career/                 (求职)
│   ├── interview-prep/       刷题 BQ OA VI(原 jobs/interview-prep/ + CommunityShare/Leetcode/)
│   └── events/               Coffee Chat / Mock Interview(原 jobs/event-keynote/)
├── community/              (社区内容)
│   ├── dev-tips/             开发技巧(原 CommunityShare/Geek/)
│   ├── tools/                工具推荐(Amazing-AI-Tools + perplexity-comet + swanlab)
│   ├── papers/               论文摘要(leworldmodel + prompt-repetition)
│   ├── language/             语言学习(原 CommunityShare/Language/)
│   ├── life/                 留学生活
│   └── mental-health/
├── projects/               (开源项目)
│   ├── ai-town.mdx
│   └── multimodal-rl.mdx
└── (archive/ 预留,等 owner 标记过期内容)

变更规模

类别 数量
git mv 文件 ~280 份(全站大搬家,绝大多数含 .en 翻译)
新 index.mdx 3 份(learn / career / projects)
docId 守恒 全部 ~145 个 docId 原样保留
301 redirects 31 条statusCode: 301
Hard-coded URL 修正 Hero / Footer / layout / source.ts / SectionIndex 等
data/event.json 3 条 playback URL 更新到新路径

Reviewer subagent 审后修正(全部采纳)

级别 问题 修正
P0 Footer /docs/career 404 新建 career/index.mdx
P0 data/event.json playback 旧路径 sed 批量替换
P0 coffee-chat.md 内链用 vercel.app 子域 + 旧路径 统一 involutionhell.com + 新路径
P1 learn/projects/ 无 index 分别补 index.mdx
P1 /docs/all-projects 裸路径无 redirect 补规则
P2 SectionIndex / page.tsx / umami_tracking 注释旧术语 一齐刷新

与 sync-uuid 的协调

sync-uuid.yml 只在 main / feat/contributor 触发,feature 分支零风险(DB 不动)。merge 后 CI 自动跑 backfill:

  • 老贡献者 contributions 不变(老 commits 都在 lastContributedAt 之前,增量累加跳过)
  • owner 本轮 rename commit 在每个 docId 上 +1
  • generated/doc-contributors.json 里每个 docId 的 path 字段更新到新位置

合并前 contributors baseline 存在 /tmp/contributors-baseline-before-merges.txt

合并后我会 watch sync-uuid workflow 跑完,逐 docId 对照 baseline 生成完工报告。

Commit 梳理

  1. df8df19 Phase 1:RAG + ai-town 初版迁移
  2. 7977987 redirects 从 308 改 301
  3. 0c7c981 Phase 2:leworldmodel / perplexity-comet / prompt-repetition / ppo
  4. 878afb1 tag-one 占位符清理 54 文件 (cherry-pick from closed chore(docs): 清理 tag-one 占位符 → 真实内容标签(54 文件) #308)
  5. 00477dc ppo revert (cherry-pick from closed chore(docs): 清理 tag-one 占位符 → 真实内容标签(54 文件) #308)
  6. dd7bf83 cpp_backend kebab-case (cherry-pick from closed refactor(docs): cpp_backend 目录树规范化 — 下划线/大驼峰 → kebab-case #309)
  7. 5cd9d2e Option C IA 大重组(本轮)

遗留(另开 PR)

  • Leetcode 50+ 题解文件名规范化(走 pinyin 路由)
  • frontmatter status 字段(active/deprecated/archived)机制
  • archive/ 治理——等 owner/admin 标具体哪些过期

背景:Scan 发现 3 处目录语义错配,这批修掉:
- CommunityShare/RAG/{rag,embedding,context-engineering-intro}
  实际上是 AI 核心基础设施(检索增强、向量嵌入、上下文工程),
  放社区分享目录既不好发现也语义错位 → ai/foundation-models/rag/
- all-projects/ai-town 是 AI 多智能体模拟项目,不应和通用项目混
  → ai/projects/

本 PR 也作为 sync-uuid 跨路径贡献者追踪机制的大规模验证。
Workflow 只在 main / feat/contributor 触发,feature 分支零风险
(DB 不动),merge 后在 main 自动跑一次 backfill 核对。

变更点:
1. git mv 4 份原文 + 4 份翻译(.en.mdx / .en.md)= 8 个文件
   - rag.mdx (+.en)      → ai/foundation-models/rag/
   - embedding.mdx (+.en) → ai/foundation-models/rag/
   - context_engineering_intro.md (+.en) → 同上(顺便 rename
     下划线 → kebab-case 统一命名规范)
   - ai-town.mdx (+.en)  → ai/projects/
2. 所有 docId 原样保留(验证 grep "^docId:" 通过,8 份一致)
3. placeholder 标签 tag-one / ai-project 替换成真实内容标签:
   - rag: rag-system / retrieval-augmented-generation / vector-search
   - embedding: embedding-models / vector-representation / rag-system
   - context-eng: context-engineering / prompt-engineering / llm-fundamentals
   - ai-town: ai-agent-simulation / multi-agent-systems /
     generative-agents / godot-engine
4. next.config.mjs 新增 async redirects(),所有老 URL 301 跳新
   canonical,保护 SEO 权重 + 外链 + 用户收藏

验证预期(合 main 后 sync-uuid workflow 跑完):
- 涉及 4 个 docId 的老贡献者 contributions 保持不变
- longsizhuo 本次 rename commit 在每个 docId 上 +1
- generated/doc-contributors.json path 字段更新为新位置

剩余工作(独立 PR):
- 其余 78 份文档的 tag-one 占位符清理
- 文件名命名规范化批量(下划线 → kebab-case)
Copilot AI review requested due to automatic review settings April 18, 2026 08:14
@vercel
Copy link
Copy Markdown

vercel Bot commented Apr 18, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
involutionhell-github-io Ready Ready Preview, Comment Apr 18, 2026 4:42pm
website-preview Ready Ready Preview, Comment Apr 18, 2026 4:42pm

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR reorganizes documentation paths to better reflect IA/semantics (RAG docs under AI foundation models; AI Town under AI projects), updates a handful of docs’ placeholder tags to meaningful semantic tags, and adds Next.js permanent redirects to preserve SEO and existing inbound links.

Changes:

  • Move/rename docs into new canonical locations under app/docs/ai/... (including a snake_case → kebab-case filename normalization).
  • Replace placeholder tags with content-accurate semantic tags for the affected documents.
  • Add next.config.mjs permanent redirects from old doc URLs to the new canonical routes.

Reviewed changes

Copilot reviewed 7 out of 9 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
next.config.mjs Adds permanent redirects for the moved docs to protect SEO/backlinks.
app/docs/ai/projects/ai-town.mdx Replaces the old placeholder/project tag with more specific project tags.
app/docs/ai/projects/ai-town.en.mdx Same tag update as the zh version for consistency.
app/docs/ai/foundation-models/rag/rag.mdx Replaces placeholder tag with RAG-specific semantic tags.
app/docs/ai/foundation-models/rag/rag.en.mdx Same tag update as the zh version for consistency.
app/docs/ai/foundation-models/rag/embedding.mdx Adds/relocates embedding fine-tuning doc (needs tag alignment + minor typo fix).
app/docs/ai/foundation-models/rag/embedding.en.mdx Adds/relocates English translation (needs tag alignment).
app/docs/ai/foundation-models/rag/context-engineering-intro.md Replaces placeholder tag with context/prompt/LLM fundamentals tags.
app/docs/ai/foundation-models/rag/context-engineering-intro.en.md Same tag update as the zh version for consistency.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread next.config.mjs Outdated
Comment on lines +26 to +33
* 文档目录重组产生的老 URL → 新 canonical URL 的 301 重定向。
*
* 为什么需要:站点上线一段时间后,原路径被 Google 索引 + 被用户收藏 / 外链引用。
* 目录重组(比如把 CommunityShare/RAG/* 搬到 ai/foundation-models/rag/*)
* 必然改 URL;不加 301 的话老链接一律 404,SEO 权重流失 + 用户体验断裂。
*
* permanent=true 下发 308(Next.js 特性:permanent 对应 308,保留原 method;
* 普通文件重定向 308 和 301 对爬虫基本等价),浏览器 / 爬虫会缓存跳转关系,
Copy link

Copilot AI Apr 18, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

这里注释写的是“301 重定向”,但这些规则都设置了 permanent: true,Next.js 会返回 308 而不是 301。建议把措辞统一成“permanent redirect(308)”或“永久重定向”,避免读者误以为是 301。

Suggested change
* 文档目录重组产生的老 URL canonical URL 301 重定向
*
* 为什么需要:站点上线一段时间后,原路径被 Google 索引 + 被用户收藏 / 外链引用。
* 目录重组(比如把 CommunityShare/RAG/* 搬到 ai/foundation-models/rag/*
* 必然改 URL;不加 301 的话老链接一律 404,SEO 权重流失 + 用户体验断裂。
*
* permanent=true 下发 308(Next.js 特性:permanent 对应 308,保留原 method;
* 普通文件重定向 308 301 对爬虫基本等价),浏览器 / 爬虫会缓存跳转关系,
* 文档目录重组产生的老 URL canonical URL 的永久重定向(308)
*
* 为什么需要:站点上线一段时间后,原路径被 Google 索引 + 被用户收藏 / 外链引用。
* 目录重组(比如把 CommunityShare/RAG/* 搬到 ai/foundation-models/rag/*
* 必然改 URL;不加永久重定向的话老链接一律 404,SEO 权重流失 + 用户体验断裂。
*
* permanent=true 下发 308(Next.js 特性:permanent 对应 308,保留原 method;
* 普通文件重定向里 308 301 对爬虫基本等价),浏览器 / 爬虫会缓存跳转关系,

Copilot uses AI. Check for mistakes.
Comment thread next.config.mjs
Comment on lines +46 to +61
{
source: "/docs/CommunityShare/RAG/embedding",
destination: "/docs/ai/foundation-models/rag/embedding",
permanent: true,
},
{
// 文件名也规范化成 kebab-case:context_engineering_intro → context-engineering-intro
source: "/docs/CommunityShare/RAG/context_engineering_intro",
destination: "/docs/ai/foundation-models/rag/context-engineering-intro",
permanent: true,
},
{
source: "/docs/all-projects/ai-town",
destination: "/docs/ai/projects/ai-town",
permanent: true,
},
Copy link

Copilot AI Apr 18, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

当前 redirects 只覆盖了无语言后缀的旧路径(例如 /docs/CommunityShare/RAG/rag),但这些文档同时存在 .en 版本(例如旧路径很可能还会被访问到 /docs/CommunityShare/RAG/rag.en、/embedding.en、/context_engineering_intro.en、/all-projects/ai-town.en)。建议补齐对应的 .en 重定向规则,避免英文旧链接直接 404。

Suggested change
{
source: "/docs/CommunityShare/RAG/embedding",
destination: "/docs/ai/foundation-models/rag/embedding",
permanent: true,
},
{
// 文件名也规范化成 kebab-case:context_engineering_intro → context-engineering-intro
source: "/docs/CommunityShare/RAG/context_engineering_intro",
destination: "/docs/ai/foundation-models/rag/context-engineering-intro",
permanent: true,
},
{
source: "/docs/all-projects/ai-town",
destination: "/docs/ai/projects/ai-town",
permanent: true,
},
{
source: "/docs/CommunityShare/RAG/rag.en",
destination: "/docs/ai/foundation-models/rag/rag",
permanent: true,
},
{
source: "/docs/CommunityShare/RAG/embedding",
destination: "/docs/ai/foundation-models/rag/embedding",
permanent: true,
},
{
source: "/docs/CommunityShare/RAG/embedding.en",
destination: "/docs/ai/foundation-models/rag/embedding",
permanent: true,
},
{
// 文件名也规范化成 kebab-case:context_engineering_intro → context-engineering-intro
source: "/docs/CommunityShare/RAG/context_engineering_intro",
destination: "/docs/ai/foundation-models/rag/context-engineering-intro",
permanent: true,
},
{
source: "/docs/CommunityShare/RAG/context_engineering_intro.en",
destination: "/docs/ai/foundation-models/rag/context-engineering-intro",
permanent: true,
},
{
source: "/docs/all-projects/ai-town",
destination: "/docs/ai/projects/ai-town",
permanent: true,
},
{
source: "/docs/all-projects/ai-town.en",
destination: "/docs/ai/projects/ai-town",
permanent: true,
},

Copilot uses AI. Check for mistakes.
此前 Next.js permanent:true 下发的是 308 Permanent Redirect,和 PR 描述
/ commit message 里写的 "301" 对不上。虽然 SEO 语义上 308 和 301 等价
(Google 都认永久跳转),但:
- 301 是最老最广为人知的"永久跳转"语义,老爬虫/老工具识别最稳
- Google Search Console 报告显式认 301
- 代码实际行为和文档口径对齐,避免后续阅读混淆

statusCode 与 permanent 互斥,优先级更高。这里显式用 statusCode:301
覆盖默认的 308 行为。

验证:node 直接 eval next.config.mjs 的 redirects() 返回 4 条全部带
statusCode:301,pnpm typecheck 通过。
longsizhuo pushed a commit that referenced this pull request Apr 18, 2026
背景:站点早期模板带 "tag-one" 占位符作为 frontmatter.tags 默认值,
contributors 撰文时没覆盖,30 份文档仍带占位符。tags 字段影响 sidebar
显示、未来可能接入的 tag 筛选 UI、SEO 结构化数据。批量清理。

作用域:
- 28 份原文 + 26 份 .en/.zh 翻译 = 54 个文件
- 跳过 PR #307 已在处理的 4 份(rag, embedding, context-eng, ai-town),
  由那个 PR 负责清理,合并顺序无关
- 纯文本改动,零 URL 变化,无需 301 redirects

内容标签分类覆盖:
- CommunityShare/Geek: image-hosting / self-hosting / cdn / git-workflow
- CommunityShare/Life: unsw / university-benefits / australia-study
- CommunityShare/Personal-Study-Notes: reinforcement-learning / ppo / gae
- ai/Introduction-of-Multi-agents-system: multi-agent-systems / agent-framework
- ai/MoE: mixture-of-experts / model-architecture
- ai/Multi-agents-system-on-Code-Translation: code-translation / llm-application
- ai/ai-math-basics: math-textbooks / learning-resources / book-recommendations
- ai/misc-tools: ml-experiment-tracking / swanlab
- ai/recommender-systems: 6 份王树森笔记统一 recommender-systems 前缀 +
  各章节专属标签(feature-crossing / retrieval / cold-start / ranking 等)
- computer-science/cpp_backend: 8 份统一 cpp-backend 前缀 + 子主题
  (threadpool / memory-pool / build-system / gcc / cmake / vcpkg)
- jobs: career / interview-preparation / internship / australia-job-market

流程:
1. Scan + 自己起草 tag 提案
2. 派 reviewer subagent 读每份文档前 50 行审标签(9 处被挑出修正全部采纳)
3. Python 脚本原子替换 frontmatter 里 "  - tag-one" → 多行新 tags
4. grep 校验残留:仅剩 PR #307 的 4 个文件

docId 全部原样保留,sync-uuid 合并后不会误判为新文档。
longsizhuo pushed a commit that referenced this pull request Apr 18, 2026
背景:Involution Hell 文档站全站命名约定是 kebab-case,但 cpp_backend 整棵
子树残留早期混用风格:
- 下划线目录:cpp_backend / easy_compile
- 大驼峰目录:Handwritten_pool_components
- 下划线 + 大驼峰文件名:1_Handwritten_threadpool.md / 3_Make.md 等

批量规范化成 kebab-case,保留数字前缀以维持 sidebar 阅读顺序
(Fumadocs 按文件名字母序排 sidebar,去掉前缀会打乱 1→5 的教学顺序)。

变更:
- 3 个目录 rename
- 8 份原文 + 7 份 .en.md 翻译 = 17 个文件 git mv
- next.config.mjs 新增 async redirects(),8 条老 URL → 新 canonical 301 映射
  使用 statusCode:301(不是 permanent:true 的 308),两者 SEO 等价,选 301
  因识别最稳、和 PR 描述口径一致。Next.js 源码 allowedStatusCodes 里合法。

验证:
- git status 显示全部 R (rename),相似度 100%
- docId 守恒:grep "^docId:" 对照 8 个 docId 全部原样保留
- pnpm typecheck 通过
- node 实测 next.config.mjs 的 redirects() 返回 8 条全 statusCode:301

合并顺序:和 PR #307 / #308 独立,互不冲突(改动在完全不同的目录)。

流程:
1. 建分支 feat/docs-filename-kebab-case
2. mkdir 新目录 + git mv 17 个文件
3. rmdir 旧空目录
4. 加 301 redirects
5. reviewer subagent 审稿:误报 1(statusCode 实测 OK)+ 非阻塞 1
   (generated/ JSON 由 sync-uuid CI 自动 regen,不应手动改)
6. 采纳 reviewer 关于注释措辞的建议,修掉 "HTTP/1.0" 这个不准的词
延续 PR 初版的语义化重组思路,继续把散落在 CommunityShare 下的纯 AI 内容
移到 ai/ 主目录对应主题下。新增 4 个 docId 的迁移:

- CommunityShare/Geek/leworldmodel (JEPA 世界模型论文摘要)
    → ai/foundation-models/world-models/leworldmodel
- CommunityShare/Amazing-AI-Tools/perplexity-comet (AI 浏览器介绍)
    → ai/misc-tools/perplexity-comet
- CommunityShare/Amazing-AI-Tools/prompt-repetition-improves-non-reasoning-llms
  (arXiv prompt 技巧论文摘要) → ai/foundation-models/prompt-engineering/
- CommunityShare/Personal-Study-Notes/Reinforcement-Learning/ppo
    → ai/reinforcement-learning/ppo

新增 3 个 ai/ 下子目录:world-models / prompt-engineering / reinforcement-learning

顺手收拾的:
- ppo.md 原本是 tag-one 占位符 → [reinforcement-learning, ppo, policy-gradient, gae]
  (和 PR #308 里对 ppo 的 tag 选择完全一致,merge 顺序无所谓)
- leworldmodel 原本 tag 是中文 "世界模型" → kebab-case 英文
  [world-models, jepa, representation-learning, embodied-ai]
- 清理空目录 CommunityShare/Personal-Study-Notes/Reinforcement-Learning/
  和 Personal-Study-Notes/

next.config.mjs 补 4 条 301,累计 8 条。statusCode:301 继续用显式 301
(和 PR / commit 口径一致)。

与 PR #308 (feat/docs-tag-cleanup) 的冲突风险:
本 PR 已经移走 ppo.md 并应用了和 PR #308 完全相同的 tag 更新。merge 顺序:
- 若本 PR 先合:PR #308 rebase 时会发现 ppo 老路径不存在,它对 ppo 的
  tag 修改会变 "deleted by us / modified by them" 冲突,需要 drop
  PR #308 中 ppo 那条 hunk(因为本 PR 已处理)
- 若 PR #308 先合:本 PR rebase 时 ppo 在老路径已有新 tags,git mv
  自然工作,无冲突

推荐:**本 PR 先合**,然后 PR #308 rebase 时丢掉 ppo 相关改动。

docId 守恒(4 份原文 + 3 份翻译 = 7 个文件全部 grep 对齐):
- boo70qqm8nos8b0q9h7zjrki (leworldmodel)
- eej2awin6irhbdgcy8vvs3xb (perplexity-comet)
- l6eepr5ctjgrhdgupy3twr1t (prompt-repetition)
- zf8zk108oqbsg56xjyqb5txk (ppo)

Reviewer subagent LGTM,无阻塞问题。
longsizhuo pushed a commit that referenced this pull request Apr 18, 2026
背景:PR #307 (feat/docs-reorg-rag-projects) 的 phase 2 新增把
CommunityShare/Personal-Study-Notes/Reinforcement-Learning/ppo.md
移到 ai/reinforcement-learning/ppo.md 并同步更新 tags。

两个 PR 改同一个文件在同一行(tag-one → 真 tags)会 rebase 冲突。
本 PR 主动剔除对 ppo 的修改,由 PR #307 独占处理,merge 顺序无关。

其他 53 个文件(27 原文 + 26 翻译)的 tag 清理不受影响。
@longsizhuo
Copy link
Copy Markdown
Member Author

📢 Phase 2 更新 (commit 0c7c981)

根据 owner 反馈 "CommunityShare 内部结构进一步主题细分",在本 PR 基础上追加 4 个 docId 的迁移——继续把 CommunityShare 下的纯 AI 内容归并到 ai/ 主题目录。

追加的 4 份文档迁移

docId 源路径 目标路径
boo70qqm8n... CommunityShare/Geek/leworldmodel ai/foundation-models/world-models/leworldmodel
eej2awin6i... CommunityShare/Amazing-AI-Tools/perplexity-comet ai/misc-tools/perplexity-comet
l6eepr5ctj... CommunityShare/Amazing-AI-Tools/prompt-repetition-improves-non-reasoning-llms ai/foundation-models/prompt-engineering/prompt-repetition-improves-non-reasoning-llms
zf8zk108oq... CommunityShare/Personal-Study-Notes/Reinforcement-Learning/ppo ai/reinforcement-learning/ppo

新增 3 个 ai/ 子目录:world-models/ / prompt-engineering/ / reinforcement-learning/

顺手的 tag 修正

累计变化

  • 12 份文件 git mv(7 份原文 + 5 份 .en/.zh 翻译)
  • 8 条 301 redirects(原 4 + 新 4)
  • 3 个新 ai/ 子目录
  • 清理空目录 CommunityShare/Personal-Study-Notes/

与 PR #308 的协调

本 PR 已对 ppo.md 做了和 PR #308 完全相同的 tag 更新。为避免 rebase 冲突,已在 PR #308 分支 commit fa2fdce 里主动 revert ppo 部分(由本 PR 独占)。merge 顺序无所谓,两 PR 现在完全独立。

docId 守恒(7 个文件,4 个 docId 全对齐)

  • leworldmodel(原文 + .zh.md):boo70qqm8nos8b0q9h7zjrki
  • perplexity-comet(原文 + .en.md):eej2awin6irhbdgcy8vvs3xb
  • prompt-repetition(原文 + .zh.md):l6eepr5ctjgrhdgupy3twr1t
  • ppo(单文件,无翻译):zf8zk108oqbsg56xjyqb5txk

Reviewer subagent 已审,LGTM。

背景:站点早期模板带 "tag-one" 占位符作为 frontmatter.tags 默认值,
contributors 撰文时没覆盖,30 份文档仍带占位符。tags 字段影响 sidebar
显示、未来可能接入的 tag 筛选 UI、SEO 结构化数据。批量清理。

作用域:
- 28 份原文 + 26 份 .en/.zh 翻译 = 54 个文件
- 跳过 PR #307 已在处理的 4 份(rag, embedding, context-eng, ai-town),
  由那个 PR 负责清理,合并顺序无关
- 纯文本改动,零 URL 变化,无需 301 redirects

内容标签分类覆盖:
- CommunityShare/Geek: image-hosting / self-hosting / cdn / git-workflow
- CommunityShare/Life: unsw / university-benefits / australia-study
- CommunityShare/Personal-Study-Notes: reinforcement-learning / ppo / gae
- ai/Introduction-of-Multi-agents-system: multi-agent-systems / agent-framework
- ai/MoE: mixture-of-experts / model-architecture
- ai/Multi-agents-system-on-Code-Translation: code-translation / llm-application
- ai/ai-math-basics: math-textbooks / learning-resources / book-recommendations
- ai/misc-tools: ml-experiment-tracking / swanlab
- ai/recommender-systems: 6 份王树森笔记统一 recommender-systems 前缀 +
  各章节专属标签(feature-crossing / retrieval / cold-start / ranking 等)
- computer-science/cpp_backend: 8 份统一 cpp-backend 前缀 + 子主题
  (threadpool / memory-pool / build-system / gcc / cmake / vcpkg)
- jobs: career / interview-preparation / internship / australia-job-market

流程:
1. Scan + 自己起草 tag 提案
2. 派 reviewer subagent 读每份文档前 50 行审标签(9 处被挑出修正全部采纳)
3. Python 脚本原子替换 frontmatter 里 "  - tag-one" → 多行新 tags
4. grep 校验残留:仅剩 PR #307 的 4 个文件

docId 全部原样保留,sync-uuid 合并后不会误判为新文档。
背景:PR #307 (feat/docs-reorg-rag-projects) 的 phase 2 新增把
CommunityShare/Personal-Study-Notes/Reinforcement-Learning/ppo.md
移到 ai/reinforcement-learning/ppo.md 并同步更新 tags。

两个 PR 改同一个文件在同一行(tag-one → 真 tags)会 rebase 冲突。
本 PR 主动剔除对 ppo 的修改,由 PR #307 独占处理,merge 顺序无关。

其他 53 个文件(27 原文 + 26 翻译)的 tag 清理不受影响。
背景:Involution Hell 文档站全站命名约定是 kebab-case,但 cpp_backend 整棵
子树残留早期混用风格:
- 下划线目录:cpp_backend / easy_compile
- 大驼峰目录:Handwritten_pool_components
- 下划线 + 大驼峰文件名:1_Handwritten_threadpool.md / 3_Make.md 等

批量规范化成 kebab-case,保留数字前缀以维持 sidebar 阅读顺序
(Fumadocs 按文件名字母序排 sidebar,去掉前缀会打乱 1→5 的教学顺序)。

变更:
- 3 个目录 rename
- 8 份原文 + 7 份 .en.md 翻译 = 17 个文件 git mv
- next.config.mjs 新增 async redirects(),8 条老 URL → 新 canonical 301 映射
  使用 statusCode:301(不是 permanent:true 的 308),两者 SEO 等价,选 301
  因识别最稳、和 PR 描述口径一致。Next.js 源码 allowedStatusCodes 里合法。

验证:
- git status 显示全部 R (rename),相似度 100%
- docId 守恒:grep "^docId:" 对照 8 个 docId 全部原样保留
- pnpm typecheck 通过
- node 实测 next.config.mjs 的 redirects() 返回 8 条全 statusCode:301

合并顺序:和 PR #307 / #308 独立,互不冲突(改动在完全不同的目录)。

流程:
1. 建分支 feat/docs-filename-kebab-case
2. mkdir 新目录 + git mv 17 个文件
3. rmdir 旧空目录
4. 加 301 redirects
5. reviewer subagent 审稿:误报 1(statusCode 实测 OK)+ 非阻塞 1
   (generated/ JSON 由 sync-uuid CI 自动 regen,不应手动改)
6. 采纳 reviewer 关于注释措辞的建议,修掉 "HTTP/1.0" 这个不准的词
@longsizhuo longsizhuo changed the title refactor(docs): 语义化重组 — RAG 归 AI 基础模型,AI 项目归 AI 目录 refactor(docs): 全站文档整理 — 语义化重组 + tag 清理 + 命名规范化(统一 PR) Apr 18, 2026
…cts 四大区

Admin 反馈"目录结构要重新设计,很多内容过时"。经 owner 拍板选方案 C(按
读者意图分类),全站 docs 在本 PR 内一次到位,避免分多个 PR 把 contributors
的 review 路径切碎。

# 顶层结构(Before → After)

- ai/                   → learn/ai/           (AI 学科知识)
- computer-science/     → learn/cs/           (CS 基础 + 系统)
- jobs/interview-prep/  → career/interview-prep/  (刷题 BQ OA VI)
- jobs/event-keynote/   → career/events/      (Coffee Chat / Mock Interview)
- CommunityShare/Leetcode/  → career/interview-prep/leetcode/  (50+ 题解归求职刷题)
- CommunityShare/Amazing-AI-Tools/perplexity-comet   → community/tools/        (工具推荐)
- CommunityShare/Amazing-AI-Tools/prompt-repetition  → community/papers/       (论文摘要)
- CommunityShare/Geek/leworldmodel                   → community/papers/       (JEPA paper)
- CommunityShare/Geek/*(其他)        → community/dev-tips/   (开发技巧)
- CommunityShare/Language/             → community/language/
- CommunityShare/Life/                 → community/life/
- CommunityShare/MentalHealth/         → community/mental-health/
- CommunityShare/Personal-Study-Notes/Reinforcement-Learning/ppo
                                       → learn/ai/reinforcement-learning/ppo
- all-projects/ + ai/projects/ → projects/(项目文档顶层化)

# 变更清单

1. 新增 4 个顶层区 index.mdx (learn / career / community 原有 / projects)
   加上 SectionIndex 作为品类着陆页
2. 31 条 301 redirects(statusCode:301),覆盖所有老 URL
   - 特殊文件级(RAG / leworldmodel / perplexity-comet / prompt-repetition /
     ppo / swanlab / cpp_backend 老名字 / all-projects/ai-town 等)排前
   - Wildcard 顶层区(/docs/ai/:path* / /docs/computer-science/:path* /
     /docs/jobs/{interview-prep,event-keynote}/:path* / /docs/all-projects/:path* /
     CommunityShare/{Leetcode,Language,Life,MentalHealth,Geek,Amazing-AI-Tools}/:path*)
     排后做兜底
3. Hard-coded URL 修正:Hero.tsx / Footer.tsx / layout.tsx / source.ts /
   SectionIndex.tsx / [...slug]/page.tsx 注释 / dev_docs/umami_tracking.md
4. data/event.json 三条 playback URL + coffee-chat.md 内链域名统一成
   involutionhell.com + 路径指向新位置
5. SectionIndex root props 更新:
   - community/index.mdx:  root="community"
   - career/interview-prep/leetcode/index.mdx:  root="career/interview-prep/leetcode"
6. lib/source.ts pinyin transformer 前缀匹配更新

# docId 守恒

所有 289 个 .mdx/.md 文件的 docId 原样保留,sync-uuid workflow 合 main
后 backfill 按 docId 聚合,老贡献者 contributions 不变,longsizhuo 本轮
rename commit 在每个涉及的 docId 上 +1。

# reviewer subagent 审后修正

reviewer 审出 3 条 P0 死链 + 4 条 P1 index 缺失 + 3 条 P2 陈旧注释,全部
采纳并修完:
- P0 Footer /docs/career 404   → 新建 career/index.mdx
- P0 event.json playback 旧路径 → sed 批量替换
- P0 coffee-chat 内链 vercel.app + 旧路径 → 统一 involutionhell.com + 新路径
- P1 learn/ 和 projects/ 无 index → 新建 index.mdx
- P1 /docs/all-projects 裸路径无 redirect → 补 redirect 规则
- P2 SectionIndex / page.tsx / [...slug] / umami_tracking 注释旧术语 → sed 更新

# 后续工作

- Leetcode 50+ 题解文件名规范化(走 pinyin 路由,URL 规则特殊)
- frontmatter status 字段(active/deprecated/archived)机制接入
- archive/ 过期内容治理(本 PR 暂未创建目录,等 owner/admin 标记具体哪些过期)
@longsizhuo longsizhuo changed the title refactor(docs): 全站文档整理 — 语义化重组 + tag 清理 + 命名规范化(统一 PR) refactor(docs): Option C IA 大重组 — learn/career/community/projects 四大区 Apr 18, 2026
@longsizhuo longsizhuo merged commit 6684884 into main Apr 18, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants