From df8df19a07e0484cc3e443a4db37f0bf3c4d1227 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 18 Apr 2026 08:13:44 +0000 Subject: [PATCH 1/7] =?UTF-8?q?refactor(docs):=20=E8=AF=AD=E4=B9=89?= =?UTF-8?q?=E5=8C=96=E9=87=8D=E7=BB=84=20=E2=80=94=20RAG=20=E5=BD=92=20AI?= =?UTF-8?q?=20=E5=9F=BA=E7=A1=80=E6=A8=A1=E5=9E=8B=EF=BC=8CAI=20=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E5=BD=92=20AI=20=E7=9B=AE=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 背景: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) --- .../rag/context-engineering-intro.en.md} | 4 +- .../rag/context-engineering-intro.md} | 4 +- .../foundation-models/rag}/embedding.en.mdx | 0 .../foundation-models/rag}/embedding.mdx | 0 .../foundation-models/rag}/rag.en.mdx | 4 +- .../RAG => ai/foundation-models/rag}/rag.mdx | 4 +- .../projects}/ai-town.en.mdx | 5 ++- .../{all-projects => ai/projects}/ai-town.mdx | 5 ++- next.config.mjs | 39 +++++++++++++++++++ 9 files changed, 59 insertions(+), 6 deletions(-) rename app/docs/{CommunityShare/RAG/context_engineering_intro.en.md => ai/foundation-models/rag/context-engineering-intro.en.md} (97%) rename app/docs/{CommunityShare/RAG/context_engineering_intro.md => ai/foundation-models/rag/context-engineering-intro.md} (97%) rename app/docs/{CommunityShare/RAG => ai/foundation-models/rag}/embedding.en.mdx (100%) rename app/docs/{CommunityShare/RAG => ai/foundation-models/rag}/embedding.mdx (100%) rename app/docs/{CommunityShare/RAG => ai/foundation-models/rag}/rag.en.mdx (98%) rename app/docs/{CommunityShare/RAG => ai/foundation-models/rag}/rag.mdx (98%) rename app/docs/{all-projects => ai/projects}/ai-town.en.mdx (97%) rename app/docs/{all-projects => ai/projects}/ai-town.mdx (97%) diff --git a/app/docs/CommunityShare/RAG/context_engineering_intro.en.md b/app/docs/ai/foundation-models/rag/context-engineering-intro.en.md similarity index 97% rename from app/docs/CommunityShare/RAG/context_engineering_intro.en.md rename to app/docs/ai/foundation-models/rag/context-engineering-intro.en.md index 2291bcfb..17c6aabf 100644 --- a/app/docs/CommunityShare/RAG/context_engineering_intro.en.md +++ b/app/docs/ai/foundation-models/rag/context-engineering-intro.en.md @@ -3,7 +3,9 @@ title: A Quick Introduction to Context Engineering description: "" date: "2025-10-03" tags: - - tag-one + - context-engineering + - prompt-engineering + - llm-fundamentals docId: wdqqrepoy43jiieyyjmaekk1 lang: en translatedFrom: zh diff --git a/app/docs/CommunityShare/RAG/context_engineering_intro.md b/app/docs/ai/foundation-models/rag/context-engineering-intro.md similarity index 97% rename from app/docs/CommunityShare/RAG/context_engineering_intro.md rename to app/docs/ai/foundation-models/rag/context-engineering-intro.md index dc4d966c..bad5519b 100644 --- a/app/docs/CommunityShare/RAG/context_engineering_intro.md +++ b/app/docs/ai/foundation-models/rag/context-engineering-intro.md @@ -3,7 +3,9 @@ title: context engineering 快速了解 description: "" date: "2025-10-03" tags: - - tag-one + - context-engineering + - prompt-engineering + - llm-fundamentals docId: wdqqrepoy43jiieyyjmaekk1 --- diff --git a/app/docs/CommunityShare/RAG/embedding.en.mdx b/app/docs/ai/foundation-models/rag/embedding.en.mdx similarity index 100% rename from app/docs/CommunityShare/RAG/embedding.en.mdx rename to app/docs/ai/foundation-models/rag/embedding.en.mdx diff --git a/app/docs/CommunityShare/RAG/embedding.mdx b/app/docs/ai/foundation-models/rag/embedding.mdx similarity index 100% rename from app/docs/CommunityShare/RAG/embedding.mdx rename to app/docs/ai/foundation-models/rag/embedding.mdx diff --git a/app/docs/CommunityShare/RAG/rag.en.mdx b/app/docs/ai/foundation-models/rag/rag.en.mdx similarity index 98% rename from app/docs/CommunityShare/RAG/rag.en.mdx rename to app/docs/ai/foundation-models/rag/rag.en.mdx index 9ca4be76..17fd6378 100644 --- a/app/docs/CommunityShare/RAG/rag.en.mdx +++ b/app/docs/ai/foundation-models/rag/rag.en.mdx @@ -3,7 +3,9 @@ title: RAG description: "" date: "2025-09-19" tags: - - tag-one + - rag-system + - retrieval-augmented-generation + - vector-search docId: zywri1bs64awfi9utfjy14ll lang: en translatedFrom: zh diff --git a/app/docs/CommunityShare/RAG/rag.mdx b/app/docs/ai/foundation-models/rag/rag.mdx similarity index 98% rename from app/docs/CommunityShare/RAG/rag.mdx rename to app/docs/ai/foundation-models/rag/rag.mdx index 222b8edc..eda70a00 100644 --- a/app/docs/CommunityShare/RAG/rag.mdx +++ b/app/docs/ai/foundation-models/rag/rag.mdx @@ -3,7 +3,9 @@ title: RAG description: "" date: "2025-09-19" tags: - - tag-one + - rag-system + - retrieval-augmented-generation + - vector-search docId: zywri1bs64awfi9utfjy14ll --- diff --git a/app/docs/all-projects/ai-town.en.mdx b/app/docs/ai/projects/ai-town.en.mdx similarity index 97% rename from app/docs/all-projects/ai-town.en.mdx rename to app/docs/ai/projects/ai-town.en.mdx index eda40423..ecf3d9a1 100644 --- a/app/docs/all-projects/ai-town.en.mdx +++ b/app/docs/ai/projects/ai-town.en.mdx @@ -3,7 +3,10 @@ title: AI Town Design Document description: "" date: "2025-10-18" tags: - - ai-project + - ai-agent-simulation + - multi-agent-systems + - generative-agents + - godot-engine docId: bkxwg1m9p9rnm8062wsm020w lang: en translatedFrom: zh diff --git a/app/docs/all-projects/ai-town.mdx b/app/docs/ai/projects/ai-town.mdx similarity index 97% rename from app/docs/all-projects/ai-town.mdx rename to app/docs/ai/projects/ai-town.mdx index 450d7f5e..7a99ec3b 100644 --- a/app/docs/all-projects/ai-town.mdx +++ b/app/docs/ai/projects/ai-town.mdx @@ -3,7 +3,10 @@ title: AI小镇策划 description: "" date: "2025-10-18" tags: - - ai-project + - ai-agent-simulation + - multi-agent-systems + - generative-agents + - godot-engine docId: bkxwg1m9p9rnm8062wsm020w --- diff --git a/next.config.mjs b/next.config.mjs index 567d8058..d900a44d 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -22,6 +22,45 @@ const withNextIntl = createNextIntlPlugin("./i18n/request.ts"); /** @type {import('next').NextConfig} */ const config = { reactStrictMode: true, + /** + * 文档目录重组产生的老 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 省一次 round-trip。 + * + * 每次再动 docs 路径,都要在这里补一条。 + */ + async redirects() { + return [ + // feat/docs-reorg-rag-projects(2026-04-18) + { + source: "/docs/CommunityShare/RAG/rag", + destination: "/docs/ai/foundation-models/rag/rag", + permanent: true, + }, + { + 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, + }, + ]; + }, async rewrites() { const backendUrl = process.env.BACKEND_URL ?? "http://localhost:8080"; return [ From 7977987a1f11d944dc96291d8c0eb24f459a420c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 18 Apr 2026 08:23:40 +0000 Subject: [PATCH 2/7] =?UTF-8?q?fix(redirects):=20=E4=BB=8E=20permanent:tru?= =?UTF-8?q?e=20(308)=20=E6=94=B9=E6=88=90=20statusCode:=20301?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 此前 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 通过。 --- next.config.mjs | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/next.config.mjs b/next.config.mjs index d900a44d..f24acca2 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -29,9 +29,14 @@ const config = { * 目录重组(比如把 CommunityShare/RAG/* 搬到 ai/foundation-models/rag/*) * 必然改 URL;不加 301 的话老链接一律 404,SEO 权重流失 + 用户体验断裂。 * - * permanent=true 下发 308(Next.js 特性:permanent 对应 308,保留原 method; - * 普通文件重定向 308 和 301 对爬虫基本等价),浏览器 / 爬虫会缓存跳转关系, - * 后续直接打新 URL 省一次 round-trip。 + * 用 statusCode: 301 显式下发真正的 301("Moved Permanently")。 + * Next.js 默认 permanent:true 下发的是 308 —— SEO 语义等价,但 HTTP + * 协议语义上 308 严格保留 method、301 对 POST 含糊。文档 URL 都是 GET, + * 两者对爬虫基本等价,选 301 是因为: + * - 历史最老最广为人知的"永久跳转"语义,老爬虫 / 老工具识别最稳 + * - Google Search Console 报告里显式认 301 + * - 和 commit 描述、PR 描述里写的 "301" 口径一致 + * statusCode 与 permanent 互斥,这里用 statusCode 覆盖默认的 308 行为。 * * 每次再动 docs 路径,都要在这里补一条。 */ @@ -41,23 +46,23 @@ const config = { { source: "/docs/CommunityShare/RAG/rag", destination: "/docs/ai/foundation-models/rag/rag", - permanent: true, + statusCode: 301, }, { source: "/docs/CommunityShare/RAG/embedding", destination: "/docs/ai/foundation-models/rag/embedding", - permanent: true, + statusCode: 301, }, { // 文件名也规范化成 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, + statusCode: 301, }, { source: "/docs/all-projects/ai-town", destination: "/docs/ai/projects/ai-town", - permanent: true, + statusCode: 301, }, ]; }, From 0c7c9819d600bf8809cd123608b95255348ff2d6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 18 Apr 2026 09:41:43 +0000 Subject: [PATCH 3/7] =?UTF-8?q?refactor(docs):=20phase=202=20=E2=80=94=20C?= =?UTF-8?q?ommunityShare=20=E4=B8=8B=20AI=20=E5=86=85=E5=AE=B9=E8=BF=9B?= =?UTF-8?q?=E4=B8=80=E6=AD=A5=E5=BD=92=E5=B9=B6=E5=88=B0=20ai/?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 延续 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,无阻塞问题。 --- ...-repetition-improves-non-reasoning-llms.md | 0 ...petition-improves-non-reasoning-llms.zh.md | 0 .../world-models}/leworldmodel.md | 5 +++- .../world-models}/leworldmodel.zh.md | 5 +++- .../misc-tools}/perplexity-comet.en.md | 0 .../misc-tools}/perplexity-comet.md | 0 .../reinforcement-learning}/ppo.md | 5 +++- next.config.mjs | 24 +++++++++++++++++++ 8 files changed, 36 insertions(+), 3 deletions(-) rename app/docs/{CommunityShare/Amazing-AI-Tools => ai/foundation-models/prompt-engineering}/prompt-repetition-improves-non-reasoning-llms.md (100%) rename app/docs/{CommunityShare/Amazing-AI-Tools => ai/foundation-models/prompt-engineering}/prompt-repetition-improves-non-reasoning-llms.zh.md (100%) rename app/docs/{CommunityShare/Geek => ai/foundation-models/world-models}/leworldmodel.md (94%) rename app/docs/{CommunityShare/Geek => ai/foundation-models/world-models}/leworldmodel.zh.md (94%) rename app/docs/{CommunityShare/Amazing-AI-Tools => ai/misc-tools}/perplexity-comet.en.md (100%) rename app/docs/{CommunityShare/Amazing-AI-Tools => ai/misc-tools}/perplexity-comet.md (100%) rename app/docs/{CommunityShare/Personal-Study-Notes/Reinforcement-Learning => ai/reinforcement-learning}/ppo.md (98%) diff --git a/app/docs/CommunityShare/Amazing-AI-Tools/prompt-repetition-improves-non-reasoning-llms.md b/app/docs/ai/foundation-models/prompt-engineering/prompt-repetition-improves-non-reasoning-llms.md similarity index 100% rename from app/docs/CommunityShare/Amazing-AI-Tools/prompt-repetition-improves-non-reasoning-llms.md rename to app/docs/ai/foundation-models/prompt-engineering/prompt-repetition-improves-non-reasoning-llms.md diff --git a/app/docs/CommunityShare/Amazing-AI-Tools/prompt-repetition-improves-non-reasoning-llms.zh.md b/app/docs/ai/foundation-models/prompt-engineering/prompt-repetition-improves-non-reasoning-llms.zh.md similarity index 100% rename from app/docs/CommunityShare/Amazing-AI-Tools/prompt-repetition-improves-non-reasoning-llms.zh.md rename to app/docs/ai/foundation-models/prompt-engineering/prompt-repetition-improves-non-reasoning-llms.zh.md diff --git a/app/docs/CommunityShare/Geek/leworldmodel.md b/app/docs/ai/foundation-models/world-models/leworldmodel.md similarity index 94% rename from app/docs/CommunityShare/Geek/leworldmodel.md rename to app/docs/ai/foundation-models/world-models/leworldmodel.md index e77fb22f..0339fc81 100644 --- a/app/docs/CommunityShare/Geek/leworldmodel.md +++ b/app/docs/ai/foundation-models/world-models/leworldmodel.md @@ -3,7 +3,10 @@ title: LeWorldModel description: Stable End-to-End Joint-Embedding Predictive Architecture from Pixels date: "2026-04-08" tags: - - 世界模型 + - world-models + - jepa + - representation-learning + - embodied-ai docId: boo70qqm8nos8b0q9h7zjrki --- diff --git a/app/docs/CommunityShare/Geek/leworldmodel.zh.md b/app/docs/ai/foundation-models/world-models/leworldmodel.zh.md similarity index 94% rename from app/docs/CommunityShare/Geek/leworldmodel.zh.md rename to app/docs/ai/foundation-models/world-models/leworldmodel.zh.md index eb05a472..7aa0bab4 100644 --- a/app/docs/CommunityShare/Geek/leworldmodel.zh.md +++ b/app/docs/ai/foundation-models/world-models/leworldmodel.zh.md @@ -3,7 +3,10 @@ title: LeWorldModel description: 从像素端到端稳定训练的联合嵌入预测架构 date: "2026-04-08" tags: - - 世界模型 + - world-models + - jepa + - representation-learning + - embodied-ai docId: boo70qqm8nos8b0q9h7zjrki lang: zh translatedFrom: en diff --git a/app/docs/CommunityShare/Amazing-AI-Tools/perplexity-comet.en.md b/app/docs/ai/misc-tools/perplexity-comet.en.md similarity index 100% rename from app/docs/CommunityShare/Amazing-AI-Tools/perplexity-comet.en.md rename to app/docs/ai/misc-tools/perplexity-comet.en.md diff --git a/app/docs/CommunityShare/Amazing-AI-Tools/perplexity-comet.md b/app/docs/ai/misc-tools/perplexity-comet.md similarity index 100% rename from app/docs/CommunityShare/Amazing-AI-Tools/perplexity-comet.md rename to app/docs/ai/misc-tools/perplexity-comet.md diff --git a/app/docs/CommunityShare/Personal-Study-Notes/Reinforcement-Learning/ppo.md b/app/docs/ai/reinforcement-learning/ppo.md similarity index 98% rename from app/docs/CommunityShare/Personal-Study-Notes/Reinforcement-Learning/ppo.md rename to app/docs/ai/reinforcement-learning/ppo.md index 123c888a..785198e6 100644 --- a/app/docs/CommunityShare/Personal-Study-Notes/Reinforcement-Learning/ppo.md +++ b/app/docs/ai/reinforcement-learning/ppo.md @@ -3,7 +3,10 @@ title: PPO description: "" date: "2025-10-03" tags: - - tag-one + - reinforcement-learning + - ppo + - policy-gradient + - gae docId: zf8zk108oqbsg56xjyqb5txk --- diff --git a/next.config.mjs b/next.config.mjs index f24acca2..174ff9e7 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -64,6 +64,30 @@ const config = { destination: "/docs/ai/projects/ai-town", statusCode: 301, }, + // feat/docs-reorg-rag-projects phase 2:继续把 CommunityShare 下的 AI 内容归并到 ai/ + { + source: "/docs/CommunityShare/Geek/leworldmodel", + destination: "/docs/ai/foundation-models/world-models/leworldmodel", + statusCode: 301, + }, + { + source: "/docs/CommunityShare/Amazing-AI-Tools/perplexity-comet", + destination: "/docs/ai/misc-tools/perplexity-comet", + statusCode: 301, + }, + { + source: + "/docs/CommunityShare/Amazing-AI-Tools/prompt-repetition-improves-non-reasoning-llms", + destination: + "/docs/ai/foundation-models/prompt-engineering/prompt-repetition-improves-non-reasoning-llms", + statusCode: 301, + }, + { + source: + "/docs/CommunityShare/Personal-Study-Notes/Reinforcement-Learning/ppo", + destination: "/docs/ai/reinforcement-learning/ppo", + statusCode: 301, + }, ]; }, async rewrites() { From 878afb1c59ff13ce26c321f1d7eec93136d72be5 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 18 Apr 2026 08:29:53 +0000 Subject: [PATCH 4/7] =?UTF-8?q?chore(docs):=20=E6=B8=85=E7=90=86=20tag-one?= =?UTF-8?q?=20=E5=8D=A0=E4=BD=8D=E7=AC=A6=20=E2=86=92=20=E7=9C=9F=E5=AE=9E?= =?UTF-8?q?=E5=86=85=E5=AE=B9=E6=A0=87=E7=AD=BE=EF=BC=8828=20=E5=8E=9F?= =?UTF-8?q?=E6=96=87=20+=2026=20=E7=BF=BB=E8=AF=91=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 背景:站点早期模板带 "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 合并后不会误判为新文档。 --- .../Geek/cloudflare-r2-sharex-free-image-hosting.en.mdx | 6 +++++- .../Geek/cloudflare-r2-sharex-free-image-hosting.mdx | 6 +++++- app/docs/CommunityShare/Geek/git101.en.mdx | 5 ++++- app/docs/CommunityShare/Geek/git101.mdx | 5 ++++- app/docs/CommunityShare/Geek/picturecdn.en.mdx | 5 ++++- app/docs/CommunityShare/Geek/picturecdn.mdx | 5 ++++- app/docs/CommunityShare/Life/unsw-student-benefit.md | 5 ++++- .../introduction_of_multi-agents_system.en.md | 4 +++- .../introduction_of_multi-agents_system.md | 4 +++- app/docs/ai/MoE/moe-update.en.md | 4 +++- app/docs/ai/MoE/moe-update.md | 4 +++- .../code-translation-intro.en.mdx | 5 ++++- .../code-translation-intro.mdx | 5 ++++- app/docs/ai/ai-math-basics/math_books.en.md | 5 ++++- app/docs/ai/ai-math-basics/math_books.md | 5 ++++- app/docs/ai/misc-tools/swanlab.en.mdx | 4 +++- app/docs/ai/misc-tools/swanlab.mdx | 4 +++- .../wangshusen_recommend_crossing.en.mdx | 4 +++- .../recommender-systems/wangshusen_recommend_crossing.mdx | 4 +++- .../wangshusen_recommend_note_retrieval.en.mdx | 4 +++- .../wangshusen_recommend_note_retrieval.mdx | 4 +++- .../wangshusen_recommend_note_coldstart.en.mdx | 4 +++- .../wangshusen_recommend_note_coldstart.mdx | 4 +++- .../wangshusen_recommend_note_improvement.en.mdx | 5 ++++- .../wangshusen_recommend_note_improvement.mdx | 5 ++++- .../wangshusen_recommend_note_rank.en.mdx | 4 +++- .../recommender-systems/wangshusen_recommend_note_rank.mdx | 4 +++- .../wangshusen_recommend_note_rerank.en.mdx | 4 +++- .../wangshusen_recommend_note_rerank.mdx | 4 +++- .../1_Handwritten_threadpool.en.md | 4 +++- .../1_Handwritten_threadpool.md | 4 +++- .../2_Handwritten_mempool1.en.md | 4 +++- .../Handwritten_pool_components/2_Handwritten_mempool1.md | 4 +++- .../cpp_backend/easy_compile/1_cpp_libs.en.md | 4 +++- .../cpp_backend/easy_compile/1_cpp_libs.md | 4 +++- .../cpp_backend/easy_compile/2_base_gcc.en.md | 4 +++- .../cpp_backend/easy_compile/2_base_gcc.md | 4 +++- .../computer-science/cpp_backend/easy_compile/3_Make.en.md | 4 +++- .../computer-science/cpp_backend/easy_compile/3_Make.md | 4 +++- .../cpp_backend/easy_compile/4_CMake.en.md | 4 +++- .../computer-science/cpp_backend/easy_compile/4_CMake.md | 4 +++- .../cpp_backend/easy_compile/5_vcpkg.en.md | 4 +++- .../computer-science/cpp_backend/easy_compile/5_vcpkg.md | 4 +++- .../computer-science/cpp_backend/mempool_simple.en.mdx | 4 +++- app/docs/computer-science/cpp_backend/mempool_simple.mdx | 4 +++- app/docs/jobs/event-keynote/coffee-chat.en.md | 7 ++++++- app/docs/jobs/event-keynote/coffee-chat.md | 7 ++++++- app/docs/jobs/interview-prep/interview-tips.en.mdx | 6 +++++- app/docs/jobs/interview-prep/interview-tips.mdx | 6 +++++- app/docs/jobs/interview-prep/pre-interview.en.md | 3 ++- app/docs/jobs/interview-prep/pre-interview.md | 3 ++- .../preparations-to-get-an-offer-as-a-student.en.mdx | 5 ++++- .../preparations-to-get-an-offer-as-a-student.mdx | 5 ++++- 53 files changed, 184 insertions(+), 53 deletions(-) diff --git a/app/docs/CommunityShare/Geek/cloudflare-r2-sharex-free-image-hosting.en.mdx b/app/docs/CommunityShare/Geek/cloudflare-r2-sharex-free-image-hosting.en.mdx index 0bf00661..cebe0811 100644 --- a/app/docs/CommunityShare/Geek/cloudflare-r2-sharex-free-image-hosting.en.mdx +++ b/app/docs/CommunityShare/Geek/cloudflare-r2-sharex-free-image-hosting.en.mdx @@ -3,7 +3,11 @@ title: Building a Personal/Team "Permanent" Image Host with Cloudflare R2 + Shar description: "" date: "2025-09-27" tags: - - tag-one + - image-hosting + - cloudflare-r2 + - sharex + - self-hosting + - cdn docId: gj4bn01un0s0841berfvwrn5 lang: en translatedFrom: zh diff --git a/app/docs/CommunityShare/Geek/cloudflare-r2-sharex-free-image-hosting.mdx b/app/docs/CommunityShare/Geek/cloudflare-r2-sharex-free-image-hosting.mdx index 83e40f0f..860b35ed 100644 --- a/app/docs/CommunityShare/Geek/cloudflare-r2-sharex-free-image-hosting.mdx +++ b/app/docs/CommunityShare/Geek/cloudflare-r2-sharex-free-image-hosting.mdx @@ -3,7 +3,11 @@ title: 使用 Cloudflare R2 + ShareX 搭建个人/团队专属“永久”图床 description: "" date: "2025-09-27" tags: - - tag-one + - image-hosting + - cloudflare-r2 + - sharex + - self-hosting + - cdn docId: gj4bn01un0s0841berfvwrn5 --- diff --git a/app/docs/CommunityShare/Geek/git101.en.mdx b/app/docs/CommunityShare/Geek/git101.en.mdx index 1fd63e67..441c388c 100644 --- a/app/docs/CommunityShare/Geek/git101.en.mdx +++ b/app/docs/CommunityShare/Geek/git101.en.mdx @@ -3,7 +3,10 @@ title: Git Getting Started Guide — Git Tips Every Developer Should Know description: "" date: "2025-09-19" tags: - - tag-one + - git-basics + - version-control + - git-workflow + - programmer-essentials docId: tksz80mfqqyzwzzer5p3uxtg lang: en translatedFrom: zh diff --git a/app/docs/CommunityShare/Geek/git101.mdx b/app/docs/CommunityShare/Geek/git101.mdx index 9c826b6d..b5f4d225 100644 --- a/app/docs/CommunityShare/Geek/git101.mdx +++ b/app/docs/CommunityShare/Geek/git101.mdx @@ -3,7 +3,10 @@ title: Git入门操作指南-程序员必会的git小技巧 description: "" date: "2025-09-19" tags: - - tag-one + - git-basics + - version-control + - git-workflow + - programmer-essentials docId: tksz80mfqqyzwzzer5p3uxtg --- diff --git a/app/docs/CommunityShare/Geek/picturecdn.en.mdx b/app/docs/CommunityShare/Geek/picturecdn.en.mdx index dee8ac23..2570e5d7 100644 --- a/app/docs/CommunityShare/Geek/picturecdn.en.mdx +++ b/app/docs/CommunityShare/Geek/picturecdn.en.mdx @@ -3,7 +3,10 @@ title: How to Deploy Your Own GitHub Image Hosting with PictureCDN description: "" date: "2025-09-27" tags: - - tag-one + - image-hosting + - github-pages + - cdn + - self-hosting docId: e6udpzrorhvgeeda6xpy1e0s lang: en translatedFrom: zh diff --git a/app/docs/CommunityShare/Geek/picturecdn.mdx b/app/docs/CommunityShare/Geek/picturecdn.mdx index 5e889896..012b9c34 100644 --- a/app/docs/CommunityShare/Geek/picturecdn.mdx +++ b/app/docs/CommunityShare/Geek/picturecdn.mdx @@ -3,7 +3,10 @@ title: 如何部署你自己的Github图床-PictureCDN description: "" date: "2025-09-27" tags: - - tag-one + - image-hosting + - github-pages + - cdn + - self-hosting docId: e6udpzrorhvgeeda6xpy1e0s --- diff --git a/app/docs/CommunityShare/Life/unsw-student-benefit.md b/app/docs/CommunityShare/Life/unsw-student-benefit.md index a935456b..94f3d8aa 100644 --- a/app/docs/CommunityShare/Life/unsw-student-benefit.md +++ b/app/docs/CommunityShare/Life/unsw-student-benefit.md @@ -3,7 +3,10 @@ title: UNSW学费回收计划-那些你还不知道的隐藏福利 description: "" date: "2025-10-03" tags: - - tag-one + - unsw + - university-benefits + - student-resources + - australia-study docId: jgyg6bp0nceyrxirz5qw3zsv --- diff --git a/app/docs/ai/Introduction-of-Multi-agents-system/introduction_of_multi-agents_system.en.md b/app/docs/ai/Introduction-of-Multi-agents-system/introduction_of_multi-agents_system.en.md index 0c14307c..f82eda7f 100644 --- a/app/docs/ai/Introduction-of-Multi-agents-system/introduction_of_multi-agents_system.en.md +++ b/app/docs/ai/Introduction-of-Multi-agents-system/introduction_of_multi-agents_system.en.md @@ -3,7 +3,9 @@ title: Introduction of Multi-Agent Systems (For Any Task You Want) description: "" date: "2025-09-29" tags: - - tag-one + - multi-agent-systems + - agent-framework + - llm-agents docId: h53uwefhlykt9ietsx9x0vtn lang: en translatedFrom: zh diff --git a/app/docs/ai/Introduction-of-Multi-agents-system/introduction_of_multi-agents_system.md b/app/docs/ai/Introduction-of-Multi-agents-system/introduction_of_multi-agents_system.md index 0b3d18a0..3b8a7639 100644 --- a/app/docs/ai/Introduction-of-Multi-agents-system/introduction_of_multi-agents_system.md +++ b/app/docs/ai/Introduction-of-Multi-agents-system/introduction_of_multi-agents_system.md @@ -3,7 +3,9 @@ title: Introduction of Multi-agents system(In any task you want) description: "" date: "2025-09-29" tags: - - tag-one + - multi-agent-systems + - agent-framework + - llm-agents docId: h53uwefhlykt9ietsx9x0vtn --- diff --git a/app/docs/ai/MoE/moe-update.en.md b/app/docs/ai/MoE/moe-update.en.md index 5f927c4c..3c9a30c8 100644 --- a/app/docs/ai/MoE/moe-update.en.md +++ b/app/docs/ai/MoE/moe-update.en.md @@ -3,7 +3,9 @@ title: "Theory of MoE" description: "" date: "2025-10-05" tags: - - tag-one + - mixture-of-experts + - model-architecture + - llm-fundamentals docId: db3qwg25h6l0bh8f2sdabdqc lang: en translatedFrom: zh diff --git a/app/docs/ai/MoE/moe-update.md b/app/docs/ai/MoE/moe-update.md index 463a6771..60ff96ff 100644 --- a/app/docs/ai/MoE/moe-update.md +++ b/app/docs/ai/MoE/moe-update.md @@ -3,7 +3,9 @@ title: "Theory of MoE" description: "" date: "2025-10-05" tags: - - tag-one + - mixture-of-experts + - model-architecture + - llm-fundamentals docId: db3qwg25h6l0bh8f2sdabdqc --- diff --git a/app/docs/ai/Multi-agents-system-on-Code-Translation/code-translation-intro.en.mdx b/app/docs/ai/Multi-agents-system-on-Code-Translation/code-translation-intro.en.mdx index 59e3f5e8..6b0f8480 100644 --- a/app/docs/ai/Multi-agents-system-on-Code-Translation/code-translation-intro.en.mdx +++ b/app/docs/ai/Multi-agents-system-on-Code-Translation/code-translation-intro.en.mdx @@ -3,7 +3,10 @@ title: Essential Reading for Getting Started with Code Translation description: "" date: "2025-09-19" tags: - - tag-one + - code-translation + - llm-application + - paper-recommendations + - program-analysis docId: qaezsrj15sudk796r5otne36 lang: en translatedFrom: zh diff --git a/app/docs/ai/Multi-agents-system-on-Code-Translation/code-translation-intro.mdx b/app/docs/ai/Multi-agents-system-on-Code-Translation/code-translation-intro.mdx index cc02e548..6b1ddbca 100644 --- a/app/docs/ai/Multi-agents-system-on-Code-Translation/code-translation-intro.mdx +++ b/app/docs/ai/Multi-agents-system-on-Code-Translation/code-translation-intro.mdx @@ -3,7 +3,10 @@ title: Code translation入门推荐必读 description: "" date: "2025-09-19" tags: - - tag-one + - code-translation + - llm-application + - paper-recommendations + - program-analysis docId: qaezsrj15sudk796r5otne36 --- diff --git a/app/docs/ai/ai-math-basics/math_books.en.md b/app/docs/ai/ai-math-basics/math_books.en.md index 1d91e241..8b50e4f9 100644 --- a/app/docs/ai/ai-math-basics/math_books.en.md +++ b/app/docs/ai/ai-math-basics/math_books.en.md @@ -3,7 +3,10 @@ title: Recommended Books on Mathematics and Data Science description: "" date: "2025-10-06" tags: - - tag-one + - math-textbooks + - learning-resources + - data-science + - book-recommendations docId: kzi6k1yg1sehlxidnxdsf59a lang: en translatedFrom: zh diff --git a/app/docs/ai/ai-math-basics/math_books.md b/app/docs/ai/ai-math-basics/math_books.md index 6e23feca..069620ad 100644 --- a/app/docs/ai/ai-math-basics/math_books.md +++ b/app/docs/ai/ai-math-basics/math_books.md @@ -3,7 +3,10 @@ title: Recommended Books on Mathematics and Data Science description: "" date: "2025-10-06" tags: - - tag-one + - math-textbooks + - learning-resources + - data-science + - book-recommendations docId: kzi6k1yg1sehlxidnxdsf59a --- diff --git a/app/docs/ai/misc-tools/swanlab.en.mdx b/app/docs/ai/misc-tools/swanlab.en.mdx index 00764a2d..cdd4e7fb 100644 --- a/app/docs/ai/misc-tools/swanlab.en.mdx +++ b/app/docs/ai/misc-tools/swanlab.en.mdx @@ -3,7 +3,9 @@ title: SwanLab Quick Start Guide description: "" date: "2025-09-23" tags: - - tag-one + - ml-experiment-tracking + - swanlab + - experiment-management docId: mhyoknm6vj8jmp186oli5f5c lang: en translatedFrom: zh diff --git a/app/docs/ai/misc-tools/swanlab.mdx b/app/docs/ai/misc-tools/swanlab.mdx index 2fe9e38f..a163b9c8 100644 --- a/app/docs/ai/misc-tools/swanlab.mdx +++ b/app/docs/ai/misc-tools/swanlab.mdx @@ -3,7 +3,9 @@ title: swanlab快速上手指南 description: "" date: "2025-09-23" tags: - - tag-one + - ml-experiment-tracking + - swanlab + - experiment-management docId: mhyoknm6vj8jmp186oli5f5c --- diff --git a/app/docs/ai/recommender-systems/wangshusen_recommend_crossing.en.mdx b/app/docs/ai/recommender-systems/wangshusen_recommend_crossing.en.mdx index 7f151738..7c9c5774 100644 --- a/app/docs/ai/recommender-systems/wangshusen_recommend_crossing.en.mdx +++ b/app/docs/ai/recommender-systems/wangshusen_recommend_crossing.en.mdx @@ -3,7 +3,9 @@ title: Wang Shusen Recommender Systems Study Notes — Feature Crossing description: "" date: "2025-09-27" tags: - - tag-one + - recommender-systems + - feature-engineering + - feature-crossing docId: hajz43iblku13mmevia8zrhv lang: en translatedFrom: zh diff --git a/app/docs/ai/recommender-systems/wangshusen_recommend_crossing.mdx b/app/docs/ai/recommender-systems/wangshusen_recommend_crossing.mdx index a0913532..56315f8a 100644 --- a/app/docs/ai/recommender-systems/wangshusen_recommend_crossing.mdx +++ b/app/docs/ai/recommender-systems/wangshusen_recommend_crossing.mdx @@ -3,7 +3,9 @@ title: 王树森推荐系统学习笔记_特征交叉 description: "" date: "2025-09-27" tags: - - tag-one + - recommender-systems + - feature-engineering + - feature-crossing docId: hajz43iblku13mmevia8zrhv --- diff --git a/app/docs/ai/recommender-systems/wangshusen_recommend_note/wangshusen_recommend_note_retrieval.en.mdx b/app/docs/ai/recommender-systems/wangshusen_recommend_note/wangshusen_recommend_note_retrieval.en.mdx index bed3c807..6af45dab 100644 --- a/app/docs/ai/recommender-systems/wangshusen_recommend_note/wangshusen_recommend_note_retrieval.en.mdx +++ b/app/docs/ai/recommender-systems/wangshusen_recommend_note/wangshusen_recommend_note_retrieval.en.mdx @@ -3,7 +3,9 @@ title: Wang Shusen Recommender Systems Study Notes — Retrieval description: "" date: "2025-09-22" tags: - - tag-one + - recommender-systems + - retrieval + - candidate-generation docId: c3a4nmid9plytif5ameigj7d lang: en translatedFrom: zh diff --git a/app/docs/ai/recommender-systems/wangshusen_recommend_note/wangshusen_recommend_note_retrieval.mdx b/app/docs/ai/recommender-systems/wangshusen_recommend_note/wangshusen_recommend_note_retrieval.mdx index 230901ed..7a38ed74 100644 --- a/app/docs/ai/recommender-systems/wangshusen_recommend_note/wangshusen_recommend_note_retrieval.mdx +++ b/app/docs/ai/recommender-systems/wangshusen_recommend_note/wangshusen_recommend_note_retrieval.mdx @@ -3,7 +3,9 @@ title: 王树森推荐系统学习笔记_召回 description: "" date: "2025-09-22" tags: - - tag-one + - recommender-systems + - retrieval + - candidate-generation docId: c3a4nmid9plytif5ameigj7d --- diff --git a/app/docs/ai/recommender-systems/wangshusen_recommend_note_coldstart.en.mdx b/app/docs/ai/recommender-systems/wangshusen_recommend_note_coldstart.en.mdx index 076246c1..12331bb8 100644 --- a/app/docs/ai/recommender-systems/wangshusen_recommend_note_coldstart.en.mdx +++ b/app/docs/ai/recommender-systems/wangshusen_recommend_note_coldstart.en.mdx @@ -3,7 +3,9 @@ title: Wang Shusen Recommender Systems Study Notes — Cold Start description: "" date: "2025-09-27" tags: - - tag-one + - recommender-systems + - cold-start + - new-item-recommendation docId: bvccoatft6y7bph83oivdcfe lang: en translatedFrom: zh diff --git a/app/docs/ai/recommender-systems/wangshusen_recommend_note_coldstart.mdx b/app/docs/ai/recommender-systems/wangshusen_recommend_note_coldstart.mdx index 26d57e47..0eae5d34 100644 --- a/app/docs/ai/recommender-systems/wangshusen_recommend_note_coldstart.mdx +++ b/app/docs/ai/recommender-systems/wangshusen_recommend_note_coldstart.mdx @@ -3,7 +3,9 @@ title: 王树森推荐系统学习笔记_冷启动 description: "" date: "2025-09-27" tags: - - tag-one + - recommender-systems + - cold-start + - new-item-recommendation docId: bvccoatft6y7bph83oivdcfe --- diff --git a/app/docs/ai/recommender-systems/wangshusen_recommend_note_improvement.en.mdx b/app/docs/ai/recommender-systems/wangshusen_recommend_note_improvement.en.mdx index 8398b775..659f7187 100644 --- a/app/docs/ai/recommender-systems/wangshusen_recommend_note_improvement.en.mdx +++ b/app/docs/ai/recommender-systems/wangshusen_recommend_note_improvement.en.mdx @@ -3,7 +3,10 @@ title: Wang Shusen Recommender Systems Study Notes — Improving Metrics description: "" date: "2025-09-27" tags: - - tag-one + - recommender-systems + - metric-optimization + - retention-metrics + - user-growth docId: qmy3p4vc45ek61ce4n62fpxy lang: en translatedFrom: zh diff --git a/app/docs/ai/recommender-systems/wangshusen_recommend_note_improvement.mdx b/app/docs/ai/recommender-systems/wangshusen_recommend_note_improvement.mdx index 88dcf2a8..aec5007f 100644 --- a/app/docs/ai/recommender-systems/wangshusen_recommend_note_improvement.mdx +++ b/app/docs/ai/recommender-systems/wangshusen_recommend_note_improvement.mdx @@ -3,7 +3,10 @@ title: 王树森推荐系统学习笔记_涨指标 description: "" date: "2025-09-27" tags: - - tag-one + - recommender-systems + - metric-optimization + - retention-metrics + - user-growth docId: qmy3p4vc45ek61ce4n62fpxy --- diff --git a/app/docs/ai/recommender-systems/wangshusen_recommend_note_rank.en.mdx b/app/docs/ai/recommender-systems/wangshusen_recommend_note_rank.en.mdx index 2ebfafc6..976ce574 100644 --- a/app/docs/ai/recommender-systems/wangshusen_recommend_note_rank.en.mdx +++ b/app/docs/ai/recommender-systems/wangshusen_recommend_note_rank.en.mdx @@ -3,7 +3,9 @@ title: Wang Shusen Recommender Systems Study Notes — Ranking description: "" date: "2025-09-27" tags: - - tag-one + - recommender-systems + - ranking + - learning-to-rank docId: vjwogf9afghpbvi71e4dfsgj lang: en translatedFrom: zh diff --git a/app/docs/ai/recommender-systems/wangshusen_recommend_note_rank.mdx b/app/docs/ai/recommender-systems/wangshusen_recommend_note_rank.mdx index 389b8681..7f5ac3c2 100644 --- a/app/docs/ai/recommender-systems/wangshusen_recommend_note_rank.mdx +++ b/app/docs/ai/recommender-systems/wangshusen_recommend_note_rank.mdx @@ -3,7 +3,9 @@ title: 王树森推荐系统学习笔记_排序 description: "" date: "2025-09-27" tags: - - tag-one + - recommender-systems + - ranking + - learning-to-rank docId: vjwogf9afghpbvi71e4dfsgj --- diff --git a/app/docs/ai/recommender-systems/wangshusen_recommend_note_rerank.en.mdx b/app/docs/ai/recommender-systems/wangshusen_recommend_note_rerank.en.mdx index 64c07ea5..404a6501 100644 --- a/app/docs/ai/recommender-systems/wangshusen_recommend_note_rerank.en.mdx +++ b/app/docs/ai/recommender-systems/wangshusen_recommend_note_rerank.en.mdx @@ -3,7 +3,9 @@ title: Wang Shusen Recommender Systems Study Notes — Re-Ranking description: "" date: "2025-09-27" tags: - - tag-one + - recommender-systems + - reranking + - diversity docId: ol03smbujgwztho45ycj52ah lang: en translatedFrom: zh diff --git a/app/docs/ai/recommender-systems/wangshusen_recommend_note_rerank.mdx b/app/docs/ai/recommender-systems/wangshusen_recommend_note_rerank.mdx index 3dfa2704..7694b724 100644 --- a/app/docs/ai/recommender-systems/wangshusen_recommend_note_rerank.mdx +++ b/app/docs/ai/recommender-systems/wangshusen_recommend_note_rerank.mdx @@ -3,7 +3,9 @@ title: 王树森推荐系统学习笔记_重排 description: "" date: "2025-09-27" tags: - - tag-one + - recommender-systems + - reranking + - diversity docId: ol03smbujgwztho45ycj52ah --- diff --git a/app/docs/computer-science/cpp_backend/Handwritten_pool_components/1_Handwritten_threadpool.en.md b/app/docs/computer-science/cpp_backend/Handwritten_pool_components/1_Handwritten_threadpool.en.md index 79f12d08..c51d81ca 100644 --- a/app/docs/computer-science/cpp_backend/Handwritten_pool_components/1_Handwritten_threadpool.en.md +++ b/app/docs/computer-science/cpp_backend/Handwritten_pool_components/1_Handwritten_threadpool.en.md @@ -3,7 +3,9 @@ title: Handwritten Thread Pool description: "" date: "2025-09-29" tags: - - tag-one + - cpp-backend + - threadpool + - concurrent-programming docId: mnjkrtrs7xk3fq538eqreuge lang: en translatedFrom: zh diff --git a/app/docs/computer-science/cpp_backend/Handwritten_pool_components/1_Handwritten_threadpool.md b/app/docs/computer-science/cpp_backend/Handwritten_pool_components/1_Handwritten_threadpool.md index 1eaa40dd..6b2ae1de 100644 --- a/app/docs/computer-science/cpp_backend/Handwritten_pool_components/1_Handwritten_threadpool.md +++ b/app/docs/computer-science/cpp_backend/Handwritten_pool_components/1_Handwritten_threadpool.md @@ -3,7 +3,9 @@ title: 手写线程池 description: "" date: "2025-09-29" tags: - - tag-one + - cpp-backend + - threadpool + - concurrent-programming docId: mnjkrtrs7xk3fq538eqreuge --- diff --git a/app/docs/computer-science/cpp_backend/Handwritten_pool_components/2_Handwritten_mempool1.en.md b/app/docs/computer-science/cpp_backend/Handwritten_pool_components/2_Handwritten_mempool1.en.md index 8e0db091..e97c6719 100644 --- a/app/docs/computer-science/cpp_backend/Handwritten_pool_components/2_Handwritten_mempool1.en.md +++ b/app/docs/computer-science/cpp_backend/Handwritten_pool_components/2_Handwritten_mempool1.en.md @@ -3,7 +3,9 @@ title: Handwritten Fixed-Size Memory Pool description: "" date: "2025-09-29" tags: - - tag-one + - cpp-backend + - memory-pool + - system-programming docId: xgxqqvglxyauoeh8eye7lzu6 lang: en translatedFrom: zh diff --git a/app/docs/computer-science/cpp_backend/Handwritten_pool_components/2_Handwritten_mempool1.md b/app/docs/computer-science/cpp_backend/Handwritten_pool_components/2_Handwritten_mempool1.md index 7566d4bb..0cbb09c5 100644 --- a/app/docs/computer-science/cpp_backend/Handwritten_pool_components/2_Handwritten_mempool1.md +++ b/app/docs/computer-science/cpp_backend/Handwritten_pool_components/2_Handwritten_mempool1.md @@ -3,7 +3,9 @@ title: 手写定长内存池 description: "" date: "2025-09-29" tags: - - tag-one + - cpp-backend + - memory-pool + - system-programming docId: xgxqqvglxyauoeh8eye7lzu6 --- diff --git a/app/docs/computer-science/cpp_backend/easy_compile/1_cpp_libs.en.md b/app/docs/computer-science/cpp_backend/easy_compile/1_cpp_libs.en.md index 366ae5c5..52d59da4 100644 --- a/app/docs/computer-science/cpp_backend/easy_compile/1_cpp_libs.en.md +++ b/app/docs/computer-science/cpp_backend/easy_compile/1_cpp_libs.en.md @@ -3,7 +3,9 @@ title: C++ Libraries on Linux/Windows description: "" date: "2025-09-29" tags: - - tag-one + - cpp-backend + - cpp-libraries + - development-environment docId: totx4pej5lhyt1nl4anwhakj lang: en translatedFrom: zh diff --git a/app/docs/computer-science/cpp_backend/easy_compile/1_cpp_libs.md b/app/docs/computer-science/cpp_backend/easy_compile/1_cpp_libs.md index 91c53507..01bb4df0 100644 --- a/app/docs/computer-science/cpp_backend/easy_compile/1_cpp_libs.md +++ b/app/docs/computer-science/cpp_backend/easy_compile/1_cpp_libs.md @@ -3,7 +3,9 @@ title: linux/win上的c++库 description: "" date: "2025-09-29" tags: - - tag-one + - cpp-backend + - cpp-libraries + - development-environment docId: totx4pej5lhyt1nl4anwhakj --- diff --git a/app/docs/computer-science/cpp_backend/easy_compile/2_base_gcc.en.md b/app/docs/computer-science/cpp_backend/easy_compile/2_base_gcc.en.md index c3ff693d..2533ff53 100644 --- a/app/docs/computer-science/cpp_backend/easy_compile/2_base_gcc.en.md +++ b/app/docs/computer-science/cpp_backend/easy_compile/2_base_gcc.en.md @@ -3,7 +3,9 @@ title: GCC/G++ Basics description: "" date: "2025-09-29" tags: - - tag-one + - cpp-backend + - gcc + - compiler-toolchain docId: kyu85av71b4n07hbdycbhvj9 lang: en translatedFrom: zh diff --git a/app/docs/computer-science/cpp_backend/easy_compile/2_base_gcc.md b/app/docs/computer-science/cpp_backend/easy_compile/2_base_gcc.md index 4aa6c30e..5623a78a 100644 --- a/app/docs/computer-science/cpp_backend/easy_compile/2_base_gcc.md +++ b/app/docs/computer-science/cpp_backend/easy_compile/2_base_gcc.md @@ -3,7 +3,9 @@ title: 基础gcc/g++ description: "" date: "2025-09-29" tags: - - tag-one + - cpp-backend + - gcc + - compiler-toolchain docId: kyu85av71b4n07hbdycbhvj9 --- diff --git a/app/docs/computer-science/cpp_backend/easy_compile/3_Make.en.md b/app/docs/computer-science/cpp_backend/easy_compile/3_Make.en.md index ffc97465..4bb37496 100644 --- a/app/docs/computer-science/cpp_backend/easy_compile/3_Make.en.md +++ b/app/docs/computer-science/cpp_backend/easy_compile/3_Make.en.md @@ -3,7 +3,9 @@ title: Building with Make description: "" date: "2025-09-29" tags: - - tag-one + - cpp-backend + - makefile + - build-system docId: g6wucmr69lamd9xyxm7uunnd lang: en translatedFrom: zh diff --git a/app/docs/computer-science/cpp_backend/easy_compile/3_Make.md b/app/docs/computer-science/cpp_backend/easy_compile/3_Make.md index 6fbf7598..080de044 100644 --- a/app/docs/computer-science/cpp_backend/easy_compile/3_Make.md +++ b/app/docs/computer-science/cpp_backend/easy_compile/3_Make.md @@ -3,7 +3,9 @@ title: Make编译 description: "" date: "2025-09-29" tags: - - tag-one + - cpp-backend + - makefile + - build-system docId: g6wucmr69lamd9xyxm7uunnd --- diff --git a/app/docs/computer-science/cpp_backend/easy_compile/4_CMake.en.md b/app/docs/computer-science/cpp_backend/easy_compile/4_CMake.en.md index e8cf0b52..4f704128 100644 --- a/app/docs/computer-science/cpp_backend/easy_compile/4_CMake.en.md +++ b/app/docs/computer-science/cpp_backend/easy_compile/4_CMake.en.md @@ -3,7 +3,9 @@ title: CMake description: "" date: "2025-09-29" tags: - - tag-one + - cpp-backend + - cmake + - build-system docId: xk44lx4q1gpcm1uqk8nnbg7q lang: en translatedFrom: zh diff --git a/app/docs/computer-science/cpp_backend/easy_compile/4_CMake.md b/app/docs/computer-science/cpp_backend/easy_compile/4_CMake.md index 67a011b6..4c646c75 100644 --- a/app/docs/computer-science/cpp_backend/easy_compile/4_CMake.md +++ b/app/docs/computer-science/cpp_backend/easy_compile/4_CMake.md @@ -3,7 +3,9 @@ title: CMake description: "" date: "2025-09-29" tags: - - tag-one + - cpp-backend + - cmake + - build-system docId: xk44lx4q1gpcm1uqk8nnbg7q --- diff --git a/app/docs/computer-science/cpp_backend/easy_compile/5_vcpkg.en.md b/app/docs/computer-science/cpp_backend/easy_compile/5_vcpkg.en.md index 32444e07..42e87658 100644 --- a/app/docs/computer-science/cpp_backend/easy_compile/5_vcpkg.en.md +++ b/app/docs/computer-science/cpp_backend/easy_compile/5_vcpkg.en.md @@ -3,7 +3,9 @@ title: vcpkg Package Manager description: "" date: "2025-09-29" tags: - - tag-one + - cpp-backend + - vcpkg + - package-manager docId: gtqamuq3tftmvzstbunkgbo5 lang: en translatedFrom: zh diff --git a/app/docs/computer-science/cpp_backend/easy_compile/5_vcpkg.md b/app/docs/computer-science/cpp_backend/easy_compile/5_vcpkg.md index bd16401f..af893590 100644 --- a/app/docs/computer-science/cpp_backend/easy_compile/5_vcpkg.md +++ b/app/docs/computer-science/cpp_backend/easy_compile/5_vcpkg.md @@ -3,7 +3,9 @@ title: vcpkg包管理器 description: "" date: "2025-09-29" tags: - - tag-one + - cpp-backend + - vcpkg + - package-manager docId: gtqamuq3tftmvzstbunkgbo5 --- diff --git a/app/docs/computer-science/cpp_backend/mempool_simple.en.mdx b/app/docs/computer-science/cpp_backend/mempool_simple.en.mdx index b5384a7d..3e08345b 100644 --- a/app/docs/computer-science/cpp_backend/mempool_simple.en.mdx +++ b/app/docs/computer-science/cpp_backend/mempool_simple.en.mdx @@ -3,7 +3,9 @@ title: Handwritten Memory Pool (Simple Fixed-Size) description: "" date: "2025-09-27" tags: - - tag-one + - cpp-backend + - memory-pool + - memory-management docId: q8290wmhyofuiskzn1ph63ta lang: en translatedFrom: zh diff --git a/app/docs/computer-science/cpp_backend/mempool_simple.mdx b/app/docs/computer-science/cpp_backend/mempool_simple.mdx index 17055e7e..bec779e1 100644 --- a/app/docs/computer-science/cpp_backend/mempool_simple.mdx +++ b/app/docs/computer-science/cpp_backend/mempool_simple.mdx @@ -3,7 +3,9 @@ title: 手写内存池(简单定长) description: "" date: "2025-09-27" tags: - - tag-one + - cpp-backend + - memory-pool + - memory-management docId: q8290wmhyofuiskzn1ph63ta --- diff --git a/app/docs/jobs/event-keynote/coffee-chat.en.md b/app/docs/jobs/event-keynote/coffee-chat.en.md index 496e1fc8..388ee5a2 100644 --- a/app/docs/jobs/event-keynote/coffee-chat.en.md +++ b/app/docs/jobs/event-keynote/coffee-chat.en.md @@ -3,7 +3,12 @@ title: Senior Tech-Industry Engineer Coffee Chat Recap description: "" date: "2025-11-01" tags: - - tag-one + - career + - networking + - tech-industry + - australia-job-market + - career-path + - sre docId: ld59a8z1v84ig4rlr0p0n2a9 lang: en translatedFrom: zh diff --git a/app/docs/jobs/event-keynote/coffee-chat.md b/app/docs/jobs/event-keynote/coffee-chat.md index e0f16979..905ee849 100644 --- a/app/docs/jobs/event-keynote/coffee-chat.md +++ b/app/docs/jobs/event-keynote/coffee-chat.md @@ -3,7 +3,12 @@ title: 资深科技大厂程序员Coffee Chat回顾 description: "" date: "2025-11-01" tags: - - tag-one + - career + - networking + - tech-industry + - australia-job-market + - career-path + - sre docId: ld59a8z1v84ig4rlr0p0n2a9 --- diff --git a/app/docs/jobs/interview-prep/interview-tips.en.mdx b/app/docs/jobs/interview-prep/interview-tips.en.mdx index 29d76160..8d579a4b 100644 --- a/app/docs/jobs/interview-prep/interview-tips.en.mdx +++ b/app/docs/jobs/interview-prep/interview-tips.en.mdx @@ -3,7 +3,11 @@ title: "Conquering Every Interview Stage | OA Coding Grind, HireVue Score Tricks description: "" date: "2025-09-19" tags: - - tag-one + - interview-preparation + - online-assessment + - video-interview + - group-interview + - australia-job-market docId: fkk8ghklsr15a0s3vcxnswnj lang: en translatedFrom: zh diff --git a/app/docs/jobs/interview-prep/interview-tips.mdx b/app/docs/jobs/interview-prep/interview-tips.mdx index 38d72d74..4447d8c1 100644 --- a/app/docs/jobs/interview-prep/interview-tips.mdx +++ b/app/docs/jobs/interview-prep/interview-tips.mdx @@ -3,7 +3,11 @@ title: "面试阶段逐关击破 | OA刷题血泪史 + VI分数偷看技巧 + description: "" date: "2025-09-19" tags: - - tag-one + - interview-preparation + - online-assessment + - video-interview + - group-interview + - australia-job-market docId: fkk8ghklsr15a0s3vcxnswnj --- diff --git a/app/docs/jobs/interview-prep/pre-interview.en.md b/app/docs/jobs/interview-prep/pre-interview.en.md index 25e38d14..47339507 100644 --- a/app/docs/jobs/interview-prep/pre-interview.en.md +++ b/app/docs/jobs/interview-prep/pre-interview.en.md @@ -3,7 +3,8 @@ title: "Must-Read Before Your Interview: Four Tips That Significantly Boost Your description: "" date: "2025-09-28" tags: - - tag-one + - interview-preparation + - career docId: cgo4lweflk5jx1hsncr8hshk lang: en translatedFrom: zh diff --git a/app/docs/jobs/interview-prep/pre-interview.md b/app/docs/jobs/interview-prep/pre-interview.md index 48c407bd..6d2f7a26 100644 --- a/app/docs/jobs/interview-prep/pre-interview.md +++ b/app/docs/jobs/interview-prep/pre-interview.md @@ -3,7 +3,8 @@ title: " 面试前必看:掌握这四个小技巧,你的成功率会大大 description: "" date: "2025-09-28" tags: - - tag-one + - interview-preparation + - career docId: cgo4lweflk5jx1hsncr8hshk --- diff --git a/app/docs/jobs/interview-prep/preparations-to-get-an-offer-as-a-student.en.mdx b/app/docs/jobs/interview-prep/preparations-to-get-an-offer-as-a-student.en.mdx index c61ef16d..a3099c02 100644 --- a/app/docs/jobs/interview-prep/preparations-to-get-an-offer-as-a-student.en.mdx +++ b/app/docs/jobs/interview-prep/preparations-to-get-an-offer-as-a-student.en.mdx @@ -3,7 +3,10 @@ title: A Programmer's Guide to Job Searching and Internships as a Student description: "" date: "2025-09-29" tags: - - tag-one + - internship + - job-search + - new-grad + - student-career docId: pne40puz5alzsf0f5jb0frbm lang: en translatedFrom: zh diff --git a/app/docs/jobs/interview-prep/preparations-to-get-an-offer-as-a-student.mdx b/app/docs/jobs/interview-prep/preparations-to-get-an-offer-as-a-student.mdx index 4d713f97..c0448ba4 100644 --- a/app/docs/jobs/interview-prep/preparations-to-get-an-offer-as-a-student.mdx +++ b/app/docs/jobs/interview-prep/preparations-to-get-an-offer-as-a-student.mdx @@ -3,7 +3,10 @@ title: 程序员学生时期求职与实习经验分享 description: "" date: "2025-09-29" tags: - - tag-one + - internship + - job-search + - new-grad + - student-career docId: pne40puz5alzsf0f5jb0frbm --- From 00477dc5566168db8b182e14bf13fc016d18712a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 18 Apr 2026 09:42:17 +0000 Subject: [PATCH 5/7] =?UTF-8?q?revert:=20ppo.md=20tag=20=E6=94=B9=E5=8A=A8?= =?UTF-8?q?=E6=8C=AA=E5=88=B0=20PR=20#307=20=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 背景: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 清理不受影响。 --- app/docs/ai/reinforcement-learning/ppo.md | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/app/docs/ai/reinforcement-learning/ppo.md b/app/docs/ai/reinforcement-learning/ppo.md index 785198e6..123c888a 100644 --- a/app/docs/ai/reinforcement-learning/ppo.md +++ b/app/docs/ai/reinforcement-learning/ppo.md @@ -3,10 +3,7 @@ title: PPO description: "" date: "2025-10-03" tags: - - reinforcement-learning - - ppo - - policy-gradient - - gae + - tag-one docId: zf8zk108oqbsg56xjyqb5txk --- From dd7bf83104efe3493cca8b5e2098ef8eb067749c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 18 Apr 2026 08:36:03 +0000 Subject: [PATCH 6/7] =?UTF-8?q?refactor(docs):=20cpp=5Fbackend=20=E7=9B=AE?= =?UTF-8?q?=E5=BD=95=E6=A0=91=E8=A7=84=E8=8C=83=E5=8C=96=20=E2=80=94=20?= =?UTF-8?q?=E4=B8=8B=E5=88=92=E7=BA=BF=20/=20=E5=A4=A7=E9=A9=BC=E5=B3=B0?= =?UTF-8?q?=20=E2=86=92=20kebab-case?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 背景: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" 这个不准的词 --- .../easy-compile/1-cpp-libs.en.md} | 0 .../easy-compile/1-cpp-libs.md} | 0 .../easy-compile/2-base-gcc.en.md} | 0 .../easy-compile/2-base-gcc.md} | 0 .../easy-compile/3-make.en.md} | 0 .../easy-compile/3-make.md} | 0 .../easy-compile/4-cmake.en.md} | 0 .../easy-compile/4-cmake.md} | 0 .../easy-compile/5-vcpkg.en.md} | 0 .../easy-compile/5-vcpkg.md} | 0 .../1-handwritten-threadpool.en.md} | 0 .../1-handwritten-threadpool.md} | 0 .../2-handwritten-mempool1.en.md} | 0 .../2-handwritten-mempool1.md} | 0 .../mempool-simple.en.mdx} | 0 .../mempool-simple.mdx} | 0 next.config.mjs | 72 ++++++++++++++----- 17 files changed, 56 insertions(+), 16 deletions(-) rename app/docs/computer-science/{cpp_backend/easy_compile/1_cpp_libs.en.md => cpp-backend/easy-compile/1-cpp-libs.en.md} (100%) rename app/docs/computer-science/{cpp_backend/easy_compile/1_cpp_libs.md => cpp-backend/easy-compile/1-cpp-libs.md} (100%) rename app/docs/computer-science/{cpp_backend/easy_compile/2_base_gcc.en.md => cpp-backend/easy-compile/2-base-gcc.en.md} (100%) rename app/docs/computer-science/{cpp_backend/easy_compile/2_base_gcc.md => cpp-backend/easy-compile/2-base-gcc.md} (100%) rename app/docs/computer-science/{cpp_backend/easy_compile/3_Make.en.md => cpp-backend/easy-compile/3-make.en.md} (100%) rename app/docs/computer-science/{cpp_backend/easy_compile/3_Make.md => cpp-backend/easy-compile/3-make.md} (100%) rename app/docs/computer-science/{cpp_backend/easy_compile/4_CMake.en.md => cpp-backend/easy-compile/4-cmake.en.md} (100%) rename app/docs/computer-science/{cpp_backend/easy_compile/4_CMake.md => cpp-backend/easy-compile/4-cmake.md} (100%) rename app/docs/computer-science/{cpp_backend/easy_compile/5_vcpkg.en.md => cpp-backend/easy-compile/5-vcpkg.en.md} (100%) rename app/docs/computer-science/{cpp_backend/easy_compile/5_vcpkg.md => cpp-backend/easy-compile/5-vcpkg.md} (100%) rename app/docs/computer-science/{cpp_backend/Handwritten_pool_components/1_Handwritten_threadpool.en.md => cpp-backend/handwritten-pool-components/1-handwritten-threadpool.en.md} (100%) rename app/docs/computer-science/{cpp_backend/Handwritten_pool_components/1_Handwritten_threadpool.md => cpp-backend/handwritten-pool-components/1-handwritten-threadpool.md} (100%) rename app/docs/computer-science/{cpp_backend/Handwritten_pool_components/2_Handwritten_mempool1.en.md => cpp-backend/handwritten-pool-components/2-handwritten-mempool1.en.md} (100%) rename app/docs/computer-science/{cpp_backend/Handwritten_pool_components/2_Handwritten_mempool1.md => cpp-backend/handwritten-pool-components/2-handwritten-mempool1.md} (100%) rename app/docs/computer-science/{cpp_backend/mempool_simple.en.mdx => cpp-backend/mempool-simple.en.mdx} (100%) rename app/docs/computer-science/{cpp_backend/mempool_simple.mdx => cpp-backend/mempool-simple.mdx} (100%) diff --git a/app/docs/computer-science/cpp_backend/easy_compile/1_cpp_libs.en.md b/app/docs/computer-science/cpp-backend/easy-compile/1-cpp-libs.en.md similarity index 100% rename from app/docs/computer-science/cpp_backend/easy_compile/1_cpp_libs.en.md rename to app/docs/computer-science/cpp-backend/easy-compile/1-cpp-libs.en.md diff --git a/app/docs/computer-science/cpp_backend/easy_compile/1_cpp_libs.md b/app/docs/computer-science/cpp-backend/easy-compile/1-cpp-libs.md similarity index 100% rename from app/docs/computer-science/cpp_backend/easy_compile/1_cpp_libs.md rename to app/docs/computer-science/cpp-backend/easy-compile/1-cpp-libs.md diff --git a/app/docs/computer-science/cpp_backend/easy_compile/2_base_gcc.en.md b/app/docs/computer-science/cpp-backend/easy-compile/2-base-gcc.en.md similarity index 100% rename from app/docs/computer-science/cpp_backend/easy_compile/2_base_gcc.en.md rename to app/docs/computer-science/cpp-backend/easy-compile/2-base-gcc.en.md diff --git a/app/docs/computer-science/cpp_backend/easy_compile/2_base_gcc.md b/app/docs/computer-science/cpp-backend/easy-compile/2-base-gcc.md similarity index 100% rename from app/docs/computer-science/cpp_backend/easy_compile/2_base_gcc.md rename to app/docs/computer-science/cpp-backend/easy-compile/2-base-gcc.md diff --git a/app/docs/computer-science/cpp_backend/easy_compile/3_Make.en.md b/app/docs/computer-science/cpp-backend/easy-compile/3-make.en.md similarity index 100% rename from app/docs/computer-science/cpp_backend/easy_compile/3_Make.en.md rename to app/docs/computer-science/cpp-backend/easy-compile/3-make.en.md diff --git a/app/docs/computer-science/cpp_backend/easy_compile/3_Make.md b/app/docs/computer-science/cpp-backend/easy-compile/3-make.md similarity index 100% rename from app/docs/computer-science/cpp_backend/easy_compile/3_Make.md rename to app/docs/computer-science/cpp-backend/easy-compile/3-make.md diff --git a/app/docs/computer-science/cpp_backend/easy_compile/4_CMake.en.md b/app/docs/computer-science/cpp-backend/easy-compile/4-cmake.en.md similarity index 100% rename from app/docs/computer-science/cpp_backend/easy_compile/4_CMake.en.md rename to app/docs/computer-science/cpp-backend/easy-compile/4-cmake.en.md diff --git a/app/docs/computer-science/cpp_backend/easy_compile/4_CMake.md b/app/docs/computer-science/cpp-backend/easy-compile/4-cmake.md similarity index 100% rename from app/docs/computer-science/cpp_backend/easy_compile/4_CMake.md rename to app/docs/computer-science/cpp-backend/easy-compile/4-cmake.md diff --git a/app/docs/computer-science/cpp_backend/easy_compile/5_vcpkg.en.md b/app/docs/computer-science/cpp-backend/easy-compile/5-vcpkg.en.md similarity index 100% rename from app/docs/computer-science/cpp_backend/easy_compile/5_vcpkg.en.md rename to app/docs/computer-science/cpp-backend/easy-compile/5-vcpkg.en.md diff --git a/app/docs/computer-science/cpp_backend/easy_compile/5_vcpkg.md b/app/docs/computer-science/cpp-backend/easy-compile/5-vcpkg.md similarity index 100% rename from app/docs/computer-science/cpp_backend/easy_compile/5_vcpkg.md rename to app/docs/computer-science/cpp-backend/easy-compile/5-vcpkg.md diff --git a/app/docs/computer-science/cpp_backend/Handwritten_pool_components/1_Handwritten_threadpool.en.md b/app/docs/computer-science/cpp-backend/handwritten-pool-components/1-handwritten-threadpool.en.md similarity index 100% rename from app/docs/computer-science/cpp_backend/Handwritten_pool_components/1_Handwritten_threadpool.en.md rename to app/docs/computer-science/cpp-backend/handwritten-pool-components/1-handwritten-threadpool.en.md diff --git a/app/docs/computer-science/cpp_backend/Handwritten_pool_components/1_Handwritten_threadpool.md b/app/docs/computer-science/cpp-backend/handwritten-pool-components/1-handwritten-threadpool.md similarity index 100% rename from app/docs/computer-science/cpp_backend/Handwritten_pool_components/1_Handwritten_threadpool.md rename to app/docs/computer-science/cpp-backend/handwritten-pool-components/1-handwritten-threadpool.md diff --git a/app/docs/computer-science/cpp_backend/Handwritten_pool_components/2_Handwritten_mempool1.en.md b/app/docs/computer-science/cpp-backend/handwritten-pool-components/2-handwritten-mempool1.en.md similarity index 100% rename from app/docs/computer-science/cpp_backend/Handwritten_pool_components/2_Handwritten_mempool1.en.md rename to app/docs/computer-science/cpp-backend/handwritten-pool-components/2-handwritten-mempool1.en.md diff --git a/app/docs/computer-science/cpp_backend/Handwritten_pool_components/2_Handwritten_mempool1.md b/app/docs/computer-science/cpp-backend/handwritten-pool-components/2-handwritten-mempool1.md similarity index 100% rename from app/docs/computer-science/cpp_backend/Handwritten_pool_components/2_Handwritten_mempool1.md rename to app/docs/computer-science/cpp-backend/handwritten-pool-components/2-handwritten-mempool1.md diff --git a/app/docs/computer-science/cpp_backend/mempool_simple.en.mdx b/app/docs/computer-science/cpp-backend/mempool-simple.en.mdx similarity index 100% rename from app/docs/computer-science/cpp_backend/mempool_simple.en.mdx rename to app/docs/computer-science/cpp-backend/mempool-simple.en.mdx diff --git a/app/docs/computer-science/cpp_backend/mempool_simple.mdx b/app/docs/computer-science/cpp-backend/mempool-simple.mdx similarity index 100% rename from app/docs/computer-science/cpp_backend/mempool_simple.mdx rename to app/docs/computer-science/cpp-backend/mempool-simple.mdx diff --git a/next.config.mjs b/next.config.mjs index 174ff9e7..fcfd531d 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -23,26 +23,20 @@ const withNextIntl = createNextIntlPlugin("./i18n/request.ts"); const config = { reactStrictMode: true, /** - * 文档目录重组产生的老 URL → 新 canonical URL 的 301 重定向。 + * docs 目录整理产生的 URL 变化 → 301 重定向。 * - * 为什么需要:站点上线一段时间后,原路径被 Google 索引 + 被用户收藏 / 外链引用。 - * 目录重组(比如把 CommunityShare/RAG/* 搬到 ai/foundation-models/rag/*) - * 必然改 URL;不加 301 的话老链接一律 404,SEO 权重流失 + 用户体验断裂。 + * 为什么要 301:站点上线一段时间后,原路径被 Google 索引 + 被用户收藏 / 外链。 + * 改目录 / 文件名必然改 URL,不加 301 的话老链接 404,SEO 权重流失 + + * 用户体验断裂。statusCode:301 显式下发 "Moved Permanently"(不是 Next.js + * 默认 permanent:true 的 308)。两者 SEO 语义等价,选 301 因为识别最稳、 + * 和 PR / commit 描述口径一致。statusCode 与 permanent 互斥;Next.js 源码 + * redirect-status.js 里 allowedStatusCodes = {301,302,303,307,308},合法。 * - * 用 statusCode: 301 显式下发真正的 301("Moved Permanently")。 - * Next.js 默认 permanent:true 下发的是 308 —— SEO 语义等价,但 HTTP - * 协议语义上 308 严格保留 method、301 对 POST 含糊。文档 URL 都是 GET, - * 两者对爬虫基本等价,选 301 是因为: - * - 历史最老最广为人知的"永久跳转"语义,老爬虫 / 老工具识别最稳 - * - Google Search Console 报告里显式认 301 - * - 和 commit 描述、PR 描述里写的 "301" 口径一致 - * statusCode 与 permanent 互斥,这里用 statusCode 覆盖默认的 308 行为。 - * - * 每次再动 docs 路径,都要在这里补一条。 + * 每次再动 docs 路径都要在这里补一条。 */ async redirects() { return [ - // feat/docs-reorg-rag-projects(2026-04-18) + // feat/docs-reorg-rag-projects(2026-04-18)RAG / AI 项目 / CommunityShare → ai/ 归并 { source: "/docs/CommunityShare/RAG/rag", destination: "/docs/ai/foundation-models/rag/rag", @@ -64,7 +58,6 @@ const config = { destination: "/docs/ai/projects/ai-town", statusCode: 301, }, - // feat/docs-reorg-rag-projects phase 2:继续把 CommunityShare 下的 AI 内容归并到 ai/ { source: "/docs/CommunityShare/Geek/leworldmodel", destination: "/docs/ai/foundation-models/world-models/leworldmodel", @@ -88,6 +81,53 @@ const config = { destination: "/docs/ai/reinforcement-learning/ppo", statusCode: 301, }, + // feat/docs-filename-kebab-case(2026-04-18)cpp_backend 目录树规范化:下划线 / 大驼峰 → kebab-case + { + source: "/docs/computer-science/cpp_backend/mempool_simple", + destination: "/docs/computer-science/cpp-backend/mempool-simple", + statusCode: 301, + }, + { + source: + "/docs/computer-science/cpp_backend/Handwritten_pool_components/1_Handwritten_threadpool", + destination: + "/docs/computer-science/cpp-backend/handwritten-pool-components/1-handwritten-threadpool", + statusCode: 301, + }, + { + source: + "/docs/computer-science/cpp_backend/Handwritten_pool_components/2_Handwritten_mempool1", + destination: + "/docs/computer-science/cpp-backend/handwritten-pool-components/2-handwritten-mempool1", + statusCode: 301, + }, + { + source: "/docs/computer-science/cpp_backend/easy_compile/1_cpp_libs", + destination: + "/docs/computer-science/cpp-backend/easy-compile/1-cpp-libs", + statusCode: 301, + }, + { + source: "/docs/computer-science/cpp_backend/easy_compile/2_base_gcc", + destination: + "/docs/computer-science/cpp-backend/easy-compile/2-base-gcc", + statusCode: 301, + }, + { + source: "/docs/computer-science/cpp_backend/easy_compile/3_Make", + destination: "/docs/computer-science/cpp-backend/easy-compile/3-make", + statusCode: 301, + }, + { + source: "/docs/computer-science/cpp_backend/easy_compile/4_CMake", + destination: "/docs/computer-science/cpp-backend/easy-compile/4-cmake", + statusCode: 301, + }, + { + source: "/docs/computer-science/cpp_backend/easy_compile/5_vcpkg", + destination: "/docs/computer-science/cpp-backend/easy-compile/5-vcpkg", + statusCode: 301, + }, ]; }, async rewrites() { From 5cd9d2edc2a91b435ff2bffe96d46c55228db57a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 18 Apr 2026 16:34:32 +0000 Subject: [PATCH 7/7] =?UTF-8?q?refactor(docs):=20Option=20C=20IA=20?= =?UTF-8?q?=E5=A4=A7=E9=87=8D=E7=BB=84=20=E2=80=94=20=E6=8C=89=E8=AF=BB?= =?UTF-8?q?=E8=80=85=E6=84=8F=E5=9B=BE=E5=88=86=20learn/career/community/p?= =?UTF-8?q?rojects=20=E5=9B=9B=E5=A4=A7=E5=8C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 标记具体哪些过期) --- app/components/Footer.tsx | 8 +- app/components/Hero.tsx | 10 +- app/components/docs/SectionIndex.tsx | 20 +-- app/docs/[...slug]/page.tsx | 2 +- .../events}/coffee-chat.en.md | 2 +- .../events}/coffee-chat.md | 2 +- .../events}/event-takeway.en.md | 0 .../events}/event-takeway.md | 0 app/docs/career/index.mdx | 15 ++ .../{jobs => career}/interview-prep/bq.en.md | 0 .../{jobs => career}/interview-prep/bq.md | 0 .../interview-prep/interview-tips.en.mdx | 0 .../interview-prep/interview-tips.mdx | 0 .../1004-max-consecutive-ones-iii.en.md | 0 .../leetcode}/1004_translated.md | 0 .../121-best-time-to-buy-and-sell-stock.en.md | 0 ...eplace-substring-for-balanced-string.en.md | 0 ...227\347\254\246\344\270\262_translated.md" | 0 ...by-vegan-friendly-price-and-distance.en.md | 0 .../leetcode}/142-linked-list-cycle-ii.en.md | 0 ...2\351\223\276\350\241\250II_translated.md" | 8 +- .../leetcode}/146-lru-cache.en.md | 0 ...45-find-kth-bit-in-nth-binary-string.en.md | 0 ...um-deletions-to-make-string-balanced.en.md | 0 ...244\346\254\241\346\225\260_translated.md" | 0 .../1664-ways-to-make-a-fair-array.en.md | 0 ...271\346\241\210\346\225\260_translated.md" | 0 .../leetcode}/1825-mk-average.en.md | 0 ...263\345\235\207\345\200\274_translated.md" | 0 ...-on-number-of-points-inside-a-circle.en.md | 0 ...204\346\225\260\347\233\256_translated.md" | 0 .../leetcode}/213-house-robber-ii.en.md | 0 ...me-by-concatenating-two-letter-words.en.md | 0 ...77\345\233\236\346\226\207\344\270\262.md" | 0 .../leetcode}/219-contains-duplicate-ii.en.md | 0 .../leetcode}/219_translated.md | 0 .../2241-design-an-atm-machine.zh.md | 0 .../leetcode}/2241. Design an ATM Machine.md | 0 .../2270-number-of-ways-to-split-array.zh.md | 0 .../2270. Number of Ways to Split Array.md | 0 .../leetcode}/2293-min-max-game.en.md | 0 .../leetcode}/2293_translated.md | 0 .../2299-strong-password-checker-ii.en.md | 0 ...0\351\252\214\345\231\250II_translated.md" | 0 ...glish-letter-in-upper-and-lower-case.en.md | 0 ...207\345\255\227\346\257\215_translated.md" | 0 ...-minimum-amount-of-time-to-fill-cups.en.md | 0 ...273\346\227\266\351\225\277_translated.md" | 0 ...341-maximum-number-of-pairs-in-array.en.md | 0 ...221\346\225\260\345\257\271_translated.md" | 0 .../leetcode}/2490-circular-sentence.en.md | 0 ...2-find-the-array-concatenation-value.en.md | 0 .../leetcode}/2582-pass-the-pillow.en.md | 0 .../2639-find-column-width-of-grid.en.md | 0 ...204\345\256\275\345\272\246_translated.md" | 0 .../leetcode}/2679-sum-in-a-matrix.en.md | 0 ...255\347\232\204\345\222\214_translated.md" | 0 ...le-and-non-divisible-sums-difference.en.md | 0 ...14\345\271\266\344\275\234\345\267\256.md" | 0 ...stribute-elements-into-two-arrays-ii.en.md | 0 ...\347\273\204\344\270\255 II_translated.md" | 0 ...imum-length-of-anagram-concatenation.zh.md | 0 ...Minimum Length of Anagram Concatenation.md | 0 .../345-reverse-vowels-of-a-string.en.md | 0 ...263\345\255\227\346\257\215_translated.md" | 0 .../leetcode}/42-trapping-rain-water.en.md | 0 .../interview-prep/leetcode}/42.md | 0 .../leetcode}/46-permutations.zh.md | 0 ...6.\345\205\250\346\216\222\345\210\227.md" | 0 .../538-convert-bst-to-greater-sum-tree.en.md | 0 ...257\345\212\240\346\240\221_translated.md" | 0 ...distribute-money-to-maximum-children.en.md | 0 ...204\345\204\277\347\253\245_translated.md" | 0 .../76-minimum-window-substring.en.md | 0 ...226\345\255\220\344\270\262_translated.md" | 0 ...move-duplicates-from-sorted-array-ii.en.md | 0 .../interview-prep/leetcode}/80_translated.md | 0 .../leetcode}/9021-tut-3-25t1.zh.md | 0 .../leetcode}/9021_TUT_3_25T1.md | 0 .../leetcode}/93-restore-ip-addresses.zh.md | 0 ...\345\216\237Ip\345\234\260\345\235\200.md" | 0 .../leetcode}/994-rotting-oranges.en.md | 0 ...204\346\251\230\345\255\220_translated.md" | 0 ...ing Stars-Inter-Uni Programming Contest.md | 0 ...263\346\227\266\346\234\237_translated.md" | 0 ...207\346\273\244\345\231\250_translated.md" | 0 ...RU \347\274\223\345\255\230_translated.md" | 0 ...347\232\204\347\254\254 K \344\275\215.md" | 0 ...\345\212\253\350\210\215 II_translated.md" | 0 ...236\347\216\257\345\217\245_translated.md" | 0 ...262\350\201\224\345\200\274_translated.md" | 0 ...222\346\236\225\345\244\264_translated.md" | 0 .../brief-alternate-homework-help.en.md | 0 ...232\345\270\256\345\277\231_translated.md" | 0 ...-stars-inter-uni-programming-contest.zh.md | 0 .../interview-prep/leetcode}/index.mdx | 2 +- ...021-remove-nth-node-from-end-of-list.en.md | 0 ...252\347\273\223\347\202\271_translated.md" | 0 .../interview-prep/pre-interview.en.md | 0 .../interview-prep/pre-interview.md | 0 ...ations-to-get-an-offer-as-a-student.en.mdx | 0 ...parations-to-get-an-offer-as-a-student.mdx | 0 .../CommonUsedMarkdown.assets/testpic1.jpg | Bin .../dev-tips}/CommonUsedMarkdown.en.md | 0 .../dev-tips}/CommonUsedMarkdown.md | 0 .../dev-tips}/Katex/Seb1.en.mdx | 0 .../dev-tips}/Katex/Seb1.mdx | 0 .../dev-tips}/Katex/Seb2.en.mdx | 0 .../dev-tips}/Katex/Seb2.mdx | 0 .../dev-tips}/Katex/index.mdx | 0 ...dflare-r2-sharex-free-image-hosting.en.mdx | 0 ...loudflare-r2-sharex-free-image-hosting.mdx | 0 .../Geek => community/dev-tips}/git101.en.mdx | 0 .../Geek => community/dev-tips}/git101.mdx | 0 .../Geek => community/dev-tips}/index.mdx | 0 .../dev-tips}/picturecdn.en.mdx | 0 .../dev-tips}/picturecdn.mdx | 0 .../dev-tips}/raspberry-guide.en.md | 0 .../dev-tips}/raspberry-guide.md | 0 .../{CommunityShare => community}/index.mdx | 2 +- .../language}/pte-intro.md | 0 .../life}/unsw-student-benefit.md | 0 .../mental-health}/burnout-guide.mdx | 0 .../mental-health}/index.mdx | 0 .../papers}/leworldmodel.md | 0 .../papers}/leworldmodel.zh.md | 0 ...-repetition-improves-non-reasoning-llms.md | 0 ...petition-improves-non-reasoning-llms.zh.md | 0 .../tools}/index.md | 0 .../tools}/perplexity-comet.en.md | 0 .../tools}/perplexity-comet.md | 0 .../tools}/swanlab.en.mdx | 0 .../tools}/swanlab.mdx | 0 app/docs/layout.tsx | 2 +- .../introduction_of_multi-agents_system.en.md | 0 .../introduction_of_multi-agents_system.md | 0 .../img-20250920112106486.png | Bin .../img-20250920112106518.png | Bin .../img-20250920112106554.png | Bin .../img-20250920112106588.png | Bin app/docs/{ => learn}/ai/MoE/MOE-intro.en.md | 0 app/docs/{ => learn}/ai/MoE/MOE-intro.md | 0 app/docs/{ => learn}/ai/MoE/moe-update.en.md | 0 app/docs/{ => learn}/ai/MoE/moe-update.md | 0 .../code-translation-intro.en.mdx | 0 .../code-translation-intro.mdx | 0 .../ai/agents-todo/agent-ecosystem.en.mdx | 0 .../ai/agents-todo/agent-ecosystem.mdx | 0 .../ai/agents-todo/cs294-194-196/index.en.mdx | 0 .../ai/agents-todo/cs294-194-196/index.mdx | 0 .../calculus-optimization/index.en.mdx | 0 .../calculus-optimization/index.mdx | 0 .../information-theory/index.en.mdx | 0 .../information-theory/index.mdx | 0 .../linear-algebra/index.en.mdx | 0 .../ai-math-basics/linear-algebra/index.mdx | 0 .../linear-algebra/resources/index.en.mdx | 0 .../linear-algebra/resources/index.mdx | 0 .../ai/ai-math-basics/math-foundations.en.mdx | 0 .../ai/ai-math-basics/math-foundations.mdx | 0 .../ai/ai-math-basics/math_books.en.md | 0 .../ai/ai-math-basics/math_books.md | 0 .../numerical-analysis/index.en.mdx | 0 .../numerical-analysis/index.mdx | 0 .../probability-statistics/index.en.mdx | 0 .../probability-statistics/index.mdx | 0 .../resources/index.en.mdx | 0 .../resources/index.mdx | 0 .../compute-platforms-handbook.en.mdx | 0 .../compute-platforms-handbook.mdx | 0 .../model-compuational-resource-demand.en.md | 0 .../model-compuational-resource-demand.md | 0 .../foundation-models/datasets/index.en.mdx | 0 .../ai/foundation-models/datasets/index.mdx | 0 .../deploy-infer/index.en.mdx | 0 .../foundation-models/deploy-infer/index.mdx | 0 .../foundation-models/evaluation/index.en.mdx | 0 .../ai/foundation-models/evaluation/index.mdx | 0 .../foundation-models/finetune/index.en.mdx | 0 .../ai/foundation-models/finetune/index.mdx | 0 .../foundation-models-lifecycle.en.mdx | 0 .../foundation-models-lifecycle.mdx | 0 .../qkv-interview/index.en.mdx | 0 .../foundation-models/qkv-interview/index.mdx | 0 .../rag/context-engineering-intro.en.md | 0 .../rag/context-engineering-intro.md | 0 .../ai/foundation-models/rag/embedding.en.mdx | 0 .../ai/foundation-models/rag/embedding.mdx | 0 .../ai/foundation-models/rag/rag.en.mdx | 0 .../ai/foundation-models/rag/rag.mdx | 0 .../foundation-models/training/index.en.mdx | 0 .../ai/foundation-models/training/index.mdx | 0 .../generative-models-plan.en.mdx | 0 .../generative-models-plan.mdx | 0 app/docs/{ => learn}/ai/index.mdx | 0 .../ai/llm-basics/courses/index.en.mdx | 0 .../ai/llm-basics/courses/index.mdx | 0 .../ai/llm-basics/cuda/index.en.mdx | 0 .../{ => learn}/ai/llm-basics/cuda/index.mdx | 0 .../llm-basics/deep-learning/d2l/index.en.mdx | 0 .../ai/llm-basics/deep-learning/d2l/index.mdx | 0 .../ai/llm-basics/deep-learning/index.en.mdx | 0 .../ai/llm-basics/deep-learning/index.mdx | 0 .../deep-learning/misc/index.en.mdx | 0 .../llm-basics/deep-learning/misc/index.mdx | 0 .../llm-basics/deep-learning/nlp/index.en.mdx | 0 .../ai/llm-basics/deep-learning/nlp/index.mdx | 0 .../ai/llm-basics/embeddings/index.en.mdx | 0 .../ai/llm-basics/embeddings/index.mdx | 0 .../embeddings/qwen3-embedding/index.en.mdx | 0 .../embeddings/qwen3-embedding/index.mdx | 0 .../ai/llm-basics/llm-foundations.en.mdx | 0 .../ai/llm-basics/llm-foundations.mdx | 0 .../pytorch/index.assets/word-img-01.png | Bin .../pytorch/index.assets/word-img-02.png | Bin .../ai/llm-basics/pytorch/index.en.mdx | 0 .../ai/llm-basics/pytorch/index.mdx | 0 .../transformer/ai-by-hand/index.en.mdx | 0 .../transformer/ai-by-hand/index.mdx | 0 .../ai/llm-basics/transformer/index.en.mdx | 0 .../ai/llm-basics/transformer/index.mdx | 0 .../methodology/research-methodology.en.mdx | 0 .../ai/methodology/research-methodology.mdx | 0 .../ai/misc-tools/learning-toolkit.en.mdx | 0 .../ai/misc-tools/learning-toolkit.mdx | 0 .../platform-and-datasets.en.mdx | 0 .../platform-and-datasets.mdx | 0 .../ai/multimodal/RQVAE/index.assets/2.png | Bin .../ai/multimodal/RQVAE/index.en.mdx | 0 .../{ => learn}/ai/multimodal/RQVAE/index.mdx | 0 ...61521005c5a8213b60bf362f9c25c22f_1440w.png | Bin .../v2-643d5ffb4aa480808bc9c82a55450a80_r.png | Bin ...92a9061e7079089b75c37650943c6f25_1440w.png | Bin ...97e09bd511a1fb0c3240fa717ce235d2_1440w.png | Bin ...dda0855d2d3e00e786956a827b1c5f26_1440w.png | Bin .../v2-df06f2d1471615dae76b1e09488091b5_r.png | Bin .../ai/multimodal/VAE/index.en.mdx | 0 .../{ => learn}/ai/multimodal/VAE/index.mdx | 0 .../ai/multimodal/VQVAE/index.assets/1.png | Bin .../ai/multimodal/VQVAE/index.en.mdx | 0 .../{ => learn}/ai/multimodal/VQVAE/index.mdx | 0 .../ai/multimodal/courses/index.en.mdx | 0 .../ai/multimodal/courses/index.mdx | 0 .../llava/index.assets/word-img-03.png | Bin .../llava/index.assets/word-img-04.png | Bin .../llava/index.assets/word-img-05.png | Bin .../ai/multimodal/llava/index.en.mdx | 0 .../{ => learn}/ai/multimodal/llava/index.mdx | 0 .../ai/multimodal/mllm/index.en.mdx | 0 .../{ => learn}/ai/multimodal/mllm/index.mdx | 0 .../ai/multimodal/multimodal-overview.en.mdx | 0 .../ai/multimodal/multimodal-overview.mdx | 0 .../ai/multimodal/qwenvl/index.en.mdx | 0 .../ai/multimodal/qwenvl/index.mdx | 0 .../ai/multimodal/video-mm-todo/index.en.mdx | 0 .../ai/multimodal/video-mm-todo/index.mdx | 0 .../ai/multimodal/vit/index.en.mdx | 0 .../{ => learn}/ai/multimodal/vit/index.mdx | 0 .../recommender-roadmap.en.mdx | 0 .../recommender-roadmap.mdx | 0 .../wangshusen_recommend_crossing.en.mdx | 0 .../wangshusen_recommend_crossing.mdx | 0 .../images/3-1-1.png | Bin .../images/3-1-2.png | Bin .../images/3-2-1.png | Bin .../images/3-2-2.png | Bin .../images/3-2-3.png | Bin .../images/3-4-1.png | Bin .../images/3-4-2.png | Bin .../images/3-4-3.png | Bin .../images/3-5-1.png | Bin .../images/3-6-1.png | Bin .../images/3-6-2.png | Bin .../images/3-6-3.png | Bin .../images/3-6-4.png | Bin .../images/4-1-1.png | Bin .../images/4-2-1.png | Bin .../images/4-2-2.png | Bin .../images/4-2-3.png | Bin .../images/4-2-4.png | Bin .../images/4-2-5.png | Bin .../images/4-2-6.png | Bin .../images/4-3-1.png | Bin .../images/4-3-2.png | Bin .../images/4-4-1.png | Bin .../images/4-4-2.png | Bin .../images/4-4-3.png | Bin .../images/4-4-4.png | Bin .../images/4-4-5.png | Bin .../images/4-4-6.png | Bin .../images/4-4-7.png | Bin .../images/5-1-1.png | Bin .../images/5-1-2.png | Bin .../images/5-2-1.png | Bin .../images/5-2-2.png | Bin .../images/5-3-1.png | Bin .../images/6-1-1.png | Bin .../images/6-1-2.png | Bin .../images/6-1-3.png | Bin .../images/6-1-4.png | Bin .../images/6-1-5.png | Bin .../images/6-2-1.png | Bin .../images/6-2-2.png | Bin .../images/6-4-1.png | Bin .../images/6-4-2.png | Bin .../images/6-4-3.png | Bin .../images/6-4-4.png | Bin .../images/6-4-5.png | Bin .../images/6-5-1.png | Bin .../images/7-3-1.png | Bin .../images/7-3-2.png | Bin .../images/7-3-3.png | Bin .../images/7-4-1.png | Bin .../images/7-4-2.png | Bin .../images/7-4-3.png | Bin .../images/7-4-4.png | Bin .../images/7-5-1.png | Bin .../images/7-5-2.png | Bin .../images/7-6-1.png | Bin .../images/7-6-2.png | Bin .../images/7-6-3.png | Bin .../images/7-6-4.png | Bin .../images/7-6-5.png | Bin .../images/8-2-1.png | Bin .../images/8-3-1.png | Bin .../images/8-3-2.png | Bin .../images/8-3-3.png | Bin .../images/8-3-4.png | Bin .../images/8-3-5.png | Bin .../2-10-1.png | Bin .../2-10-2.png | Bin .../2-10-3.png | Bin .../2-10-4.png | Bin .../2-10-5.png | Bin .../2-10-6.png | Bin .../2-10-7.png | Bin .../2-10-8.png | Bin .../2-12-1.png | Bin .../2-12-2.png | Bin .../2-12-3.png | Bin .../2-4-1.png | Bin .../2-5-1.png | Bin .../2-5-2.png | Bin .../2-5-3.png | Bin .../2-5-4.png | Bin .../2-5-5.png | Bin .../2-6-1.png | Bin .../2-6-2.png | Bin .../2-6-3.png | Bin .../2-6-4.png | Bin .../2-6-5.png | Bin .../2-6-6.png | Bin .../2-7-1.png | Bin .../2-7-2.png | Bin .../2-7-3.png | Bin .../2-7-4.png | Bin .../2-8-1.png | Bin .../2-8-2.png | Bin .../2-9-1.png | Bin .../2-9-2.png | Bin .../2-9-3.png | Bin .../2-9-4.png | Bin ...wangshusen_recommend_note_retrieval.en.mdx | 0 .../wangshusen_recommend_note_retrieval.mdx | 0 ...wangshusen_recommend_note_coldstart.en.mdx | 0 .../wangshusen_recommend_note_coldstart.mdx | 0 ...ngshusen_recommend_note_improvement.en.mdx | 0 .../wangshusen_recommend_note_improvement.mdx | 0 .../wangshusen_recommend_note_rank.en.mdx | 0 .../wangshusen_recommend_note_rank.mdx | 0 .../wangshusen_recommend_note_rerank.en.mdx | 0 .../wangshusen_recommend_note_rerank.mdx | 0 .../ai/reinforcement-learning/ppo.md | 0 .../reinforcement-learning-overview.en.mdx | 0 .../reinforcement-learning-overview.mdx | 0 .../cpp-backend/easy-compile/1-cpp-libs.en.md | 0 .../cpp-backend/easy-compile/1-cpp-libs.md | 0 .../cpp-backend/easy-compile/2-base-gcc.en.md | 0 .../cpp-backend/easy-compile/2-base-gcc.md | 0 .../cs}/cpp-backend/easy-compile/3-make.en.md | 0 .../cs}/cpp-backend/easy-compile/3-make.md | 0 .../cpp-backend/easy-compile/4-cmake.en.md | 0 .../cs}/cpp-backend/easy-compile/4-cmake.md | 0 .../cpp-backend/easy-compile/5-vcpkg.en.md | 0 .../cs}/cpp-backend/easy-compile/5-vcpkg.md | 0 .../1-handwritten-threadpool.en.md | 0 .../1-handwritten-threadpool.md | 0 .../2-handwritten-mempool1.en.md | 0 .../2-handwritten-mempool1.md | 0 .../cs}/cpp-backend/mempool-simple.en.mdx | 0 .../cs}/cpp-backend/mempool-simple.mdx | 0 .../data-structures/array/01-static-array.mdx | 0 .../array/01-static-array.zh.mdx | 0 .../array/02-dynamic-array.mdx | 0 .../array/02-dynamic-array.zh.mdx | 0 .../cs}/data-structures/array/index.mdx | 0 .../cs}/data-structures/array/index.zh.mdx | 0 .../cs}/data-structures/index.mdx | 0 .../cs}/data-structures/index.zh.mdx | 0 .../linked-list/01-singly-linked-list.mdx | 0 .../linked-list/01-singly-linked-list.zh.mdx | 0 .../cs}/data-structures/linked-list/index.mdx | 0 .../data-structures/linked-list/index.zh.mdx | 0 .../frontend/frontend-learning/index.en.mdx | 0 .../cs}/frontend/frontend-learning/index.mdx | 0 .../cs}/frontend/index.en.mdx | 0 .../cs}/frontend/index.mdx | 0 .../cs}/index.en.mdx | 0 .../{computer-science => learn/cs}/index.mdx | 0 app/docs/learn/index.mdx | 17 +++ app/docs/page.tsx | 2 +- app/docs/{ai => }/projects/ai-town.en.mdx | 0 app/docs/{ai => }/projects/ai-town.mdx | 0 app/docs/projects/index.mdx | 12 ++ .../multimodal-rl.en.mdx | 0 .../multimodal-rl.mdx | 0 data/event.json | 6 +- dev_docs/umami_tracking.md | 4 +- lib/source.ts | 2 +- next.config.mjs | 140 ++++++++++++++---- 420 files changed, 195 insertions(+), 61 deletions(-) rename app/docs/{jobs/event-keynote => career/events}/coffee-chat.en.md (98%) rename app/docs/{jobs/event-keynote => career/events}/coffee-chat.md (98%) rename app/docs/{jobs/event-keynote => career/events}/event-takeway.en.md (100%) rename app/docs/{jobs/event-keynote => career/events}/event-takeway.md (100%) create mode 100644 app/docs/career/index.mdx rename app/docs/{jobs => career}/interview-prep/bq.en.md (100%) rename app/docs/{jobs => career}/interview-prep/bq.md (100%) rename app/docs/{jobs => career}/interview-prep/interview-tips.en.mdx (100%) rename app/docs/{jobs => career}/interview-prep/interview-tips.mdx (100%) rename app/docs/{CommunityShare/Leetcode => career/interview-prep/leetcode}/1004-max-consecutive-ones-iii.en.md (100%) rename app/docs/{CommunityShare/Leetcode => career/interview-prep/leetcode}/1004_translated.md (100%) rename app/docs/{CommunityShare/Leetcode => career/interview-prep/leetcode}/121-best-time-to-buy-and-sell-stock.en.md (100%) rename app/docs/{CommunityShare/Leetcode => career/interview-prep/leetcode}/1234-replace-substring-for-balanced-string.en.md (100%) rename "app/docs/CommunityShare/Leetcode/1234. \346\233\277\346\215\242\345\255\220\344\270\262\345\276\227\345\210\260\345\271\263\350\241\241\345\255\227\347\254\246\344\270\262_translated.md" => "app/docs/career/interview-prep/leetcode/1234. \346\233\277\346\215\242\345\255\220\344\270\262\345\276\227\345\210\260\345\271\263\350\241\241\345\255\227\347\254\246\344\270\262_translated.md" (100%) rename app/docs/{CommunityShare/Leetcode => career/interview-prep/leetcode}/1333-filter-restaurants-by-vegan-friendly-price-and-distance.en.md (100%) rename app/docs/{CommunityShare/Leetcode => career/interview-prep/leetcode}/142-linked-list-cycle-ii.en.md (100%) rename "app/docs/CommunityShare/Leetcode/142.\347\216\257\345\275\242\351\223\276\350\241\250II_translated.md" => "app/docs/career/interview-prep/leetcode/142.\347\216\257\345\275\242\351\223\276\350\241\250II_translated.md" (93%) rename app/docs/{CommunityShare/Leetcode => career/interview-prep/leetcode}/146-lru-cache.en.md (100%) rename app/docs/{CommunityShare/Leetcode => career/interview-prep/leetcode}/1545-find-kth-bit-in-nth-binary-string.en.md (100%) rename app/docs/{CommunityShare/Leetcode => career/interview-prep/leetcode}/1653-minimum-deletions-to-make-string-balanced.en.md (100%) rename "app/docs/CommunityShare/Leetcode/1653. \344\275\277\345\255\227\347\254\246\344\270\262\345\271\263\350\241\241\347\232\204\346\234\200\345\260\221\345\210\240\351\231\244\346\254\241\346\225\260_translated.md" => "app/docs/career/interview-prep/leetcode/1653. \344\275\277\345\255\227\347\254\246\344\270\262\345\271\263\350\241\241\347\232\204\346\234\200\345\260\221\345\210\240\351\231\244\346\254\241\346\225\260_translated.md" (100%) rename app/docs/{CommunityShare/Leetcode => career/interview-prep/leetcode}/1664-ways-to-make-a-fair-array.en.md (100%) rename "app/docs/CommunityShare/Leetcode/1664\347\224\237\346\210\220\345\271\263\350\241\241\346\225\260\347\273\204\347\232\204\346\226\271\346\241\210\346\225\260_translated.md" => "app/docs/career/interview-prep/leetcode/1664\347\224\237\346\210\220\345\271\263\350\241\241\346\225\260\347\273\204\347\232\204\346\226\271\346\241\210\346\225\260_translated.md" (100%) rename app/docs/{CommunityShare/Leetcode => career/interview-prep/leetcode}/1825-mk-average.en.md (100%) rename "app/docs/CommunityShare/Leetcode/1825\346\261\202\345\207\272 MK \345\271\263\345\235\207\345\200\274_translated.md" => "app/docs/career/interview-prep/leetcode/1825\346\261\202\345\207\272 MK \345\271\263\345\235\207\345\200\274_translated.md" (100%) rename app/docs/{CommunityShare/Leetcode => career/interview-prep/leetcode}/1828-queries-on-number-of-points-inside-a-circle.en.md (100%) rename "app/docs/CommunityShare/Leetcode/1828\347\273\237\350\256\241\344\270\200\344\270\252\345\234\206\344\270\255\347\202\271\347\232\204\346\225\260\347\233\256_translated.md" => "app/docs/career/interview-prep/leetcode/1828\347\273\237\350\256\241\344\270\200\344\270\252\345\234\206\344\270\255\347\202\271\347\232\204\346\225\260\347\233\256_translated.md" (100%) rename app/docs/{CommunityShare/Leetcode => career/interview-prep/leetcode}/213-house-robber-ii.en.md (100%) rename app/docs/{CommunityShare/Leetcode => career/interview-prep/leetcode}/2131-longest-palindrome-by-concatenating-two-letter-words.en.md (100%) rename "app/docs/CommunityShare/Leetcode/2131. \350\277\236\346\216\245\344\270\244\345\255\227\346\257\215\345\215\225\350\257\215\345\276\227\345\210\260\347\232\204\346\234\200\351\225\277\345\233\236\346\226\207\344\270\262.md" => "app/docs/career/interview-prep/leetcode/2131. \350\277\236\346\216\245\344\270\244\345\255\227\346\257\215\345\215\225\350\257\215\345\276\227\345\210\260\347\232\204\346\234\200\351\225\277\345\233\236\346\226\207\344\270\262.md" (100%) rename app/docs/{CommunityShare/Leetcode => career/interview-prep/leetcode}/219-contains-duplicate-ii.en.md (100%) rename app/docs/{CommunityShare/Leetcode => career/interview-prep/leetcode}/219_translated.md (100%) rename app/docs/{CommunityShare/Leetcode => career/interview-prep/leetcode}/2241-design-an-atm-machine.zh.md (100%) rename app/docs/{CommunityShare/Leetcode => career/interview-prep/leetcode}/2241. Design an ATM Machine.md (100%) rename app/docs/{CommunityShare/Leetcode => career/interview-prep/leetcode}/2270-number-of-ways-to-split-array.zh.md (100%) rename app/docs/{CommunityShare/Leetcode => career/interview-prep/leetcode}/2270. Number of Ways to Split Array.md (100%) rename app/docs/{CommunityShare/Leetcode => career/interview-prep/leetcode}/2293-min-max-game.en.md (100%) rename app/docs/{CommunityShare/Leetcode => career/interview-prep/leetcode}/2293_translated.md (100%) rename app/docs/{CommunityShare/Leetcode => career/interview-prep/leetcode}/2299-strong-password-checker-ii.en.md (100%) rename "app/docs/CommunityShare/Leetcode/2299\345\274\272\345\257\206\347\240\201\346\243\200\351\252\214\345\231\250II_translated.md" => "app/docs/career/interview-prep/leetcode/2299\345\274\272\345\257\206\347\240\201\346\243\200\351\252\214\345\231\250II_translated.md" (100%) rename app/docs/{CommunityShare/Leetcode => career/interview-prep/leetcode}/2309-greatest-english-letter-in-upper-and-lower-case.en.md (100%) rename "app/docs/CommunityShare/Leetcode/2309\345\205\274\345\205\267\345\244\247\345\260\217\345\206\231\347\232\204\346\234\200\345\245\275\350\213\261\346\226\207\345\255\227\346\257\215_translated.md" => "app/docs/career/interview-prep/leetcode/2309\345\205\274\345\205\267\345\244\247\345\260\217\345\206\231\347\232\204\346\234\200\345\245\275\350\213\261\346\226\207\345\255\227\346\257\215_translated.md" (100%) rename app/docs/{CommunityShare/Leetcode => career/interview-prep/leetcode}/2335-minimum-amount-of-time-to-fill-cups.en.md (100%) rename "app/docs/CommunityShare/Leetcode/2335. \350\243\205\346\273\241\346\235\257\345\255\220\351\234\200\350\246\201\347\232\204\346\234\200\347\237\255\346\200\273\346\227\266\351\225\277_translated.md" => "app/docs/career/interview-prep/leetcode/2335. \350\243\205\346\273\241\346\235\257\345\255\220\351\234\200\350\246\201\347\232\204\346\234\200\347\237\255\346\200\273\346\227\266\351\225\277_translated.md" (100%) rename app/docs/{CommunityShare/Leetcode => career/interview-prep/leetcode}/2341-maximum-number-of-pairs-in-array.en.md (100%) rename "app/docs/CommunityShare/Leetcode/2341. \346\225\260\347\273\204\350\203\275\345\275\242\346\210\220\345\244\232\345\260\221\346\225\260\345\257\271_translated.md" => "app/docs/career/interview-prep/leetcode/2341. \346\225\260\347\273\204\350\203\275\345\275\242\346\210\220\345\244\232\345\260\221\346\225\260\345\257\271_translated.md" (100%) rename app/docs/{CommunityShare/Leetcode => career/interview-prep/leetcode}/2490-circular-sentence.en.md (100%) rename app/docs/{CommunityShare/Leetcode => career/interview-prep/leetcode}/2562-find-the-array-concatenation-value.en.md (100%) rename app/docs/{CommunityShare/Leetcode => career/interview-prep/leetcode}/2582-pass-the-pillow.en.md (100%) rename app/docs/{CommunityShare/Leetcode => career/interview-prep/leetcode}/2639-find-column-width-of-grid.en.md (100%) rename "app/docs/CommunityShare/Leetcode/2639. \346\237\245\350\257\242\347\275\221\346\240\274\345\233\276\344\270\255\346\257\217\344\270\200\345\210\227\347\232\204\345\256\275\345\272\246_translated.md" => "app/docs/career/interview-prep/leetcode/2639. \346\237\245\350\257\242\347\275\221\346\240\274\345\233\276\344\270\255\346\257\217\344\270\200\345\210\227\347\232\204\345\256\275\345\272\246_translated.md" (100%) rename app/docs/{CommunityShare/Leetcode => career/interview-prep/leetcode}/2679-sum-in-a-matrix.en.md (100%) rename "app/docs/CommunityShare/Leetcode/2679.\347\237\251\351\230\265\344\270\255\347\232\204\345\222\214_translated.md" => "app/docs/career/interview-prep/leetcode/2679.\347\237\251\351\230\265\344\270\255\347\232\204\345\222\214_translated.md" (100%) rename app/docs/{CommunityShare/Leetcode => career/interview-prep/leetcode}/2894-divisible-and-non-divisible-sums-difference.en.md (100%) rename "app/docs/CommunityShare/Leetcode/2894. \345\210\206\347\261\273\346\261\202\345\222\214\345\271\266\344\275\234\345\267\256.md" => "app/docs/career/interview-prep/leetcode/2894. \345\210\206\347\261\273\346\261\202\345\222\214\345\271\266\344\275\234\345\267\256.md" (100%) rename app/docs/{CommunityShare/Leetcode => career/interview-prep/leetcode}/3072-distribute-elements-into-two-arrays-ii.en.md (100%) rename "app/docs/CommunityShare/Leetcode/3072. \345\260\206\345\205\203\347\264\240\345\210\206\351\205\215\345\210\260\344\270\244\344\270\252\346\225\260\347\273\204\344\270\255 II_translated.md" => "app/docs/career/interview-prep/leetcode/3072. \345\260\206\345\205\203\347\264\240\345\210\206\351\205\215\345\210\260\344\270\244\344\270\252\346\225\260\347\273\204\344\270\255 II_translated.md" (100%) rename app/docs/{CommunityShare/Leetcode => career/interview-prep/leetcode}/3138-minimum-length-of-anagram-concatenation.zh.md (100%) rename app/docs/{CommunityShare/Leetcode => career/interview-prep/leetcode}/3138. Minimum Length of Anagram Concatenation.md (100%) rename app/docs/{CommunityShare/Leetcode => career/interview-prep/leetcode}/345-reverse-vowels-of-a-string.en.md (100%) rename "app/docs/CommunityShare/Leetcode/345. \345\217\215\350\275\254\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\345\205\203\351\237\263\345\255\227\346\257\215_translated.md" => "app/docs/career/interview-prep/leetcode/345. \345\217\215\350\275\254\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\345\205\203\351\237\263\345\255\227\346\257\215_translated.md" (100%) rename app/docs/{CommunityShare/Leetcode => career/interview-prep/leetcode}/42-trapping-rain-water.en.md (100%) rename app/docs/{CommunityShare/Leetcode => career/interview-prep/leetcode}/42.md (100%) rename app/docs/{CommunityShare/Leetcode => career/interview-prep/leetcode}/46-permutations.zh.md (100%) rename "app/docs/CommunityShare/Leetcode/46.\345\205\250\346\216\222\345\210\227.md" => "app/docs/career/interview-prep/leetcode/46.\345\205\250\346\216\222\345\210\227.md" (100%) rename app/docs/{CommunityShare/Leetcode => career/interview-prep/leetcode}/538-convert-bst-to-greater-sum-tree.en.md (100%) rename "app/docs/CommunityShare/Leetcode/538.\346\212\212\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\350\275\254\346\215\242\344\270\272\347\264\257\345\212\240\346\240\221_translated.md" => "app/docs/career/interview-prep/leetcode/538.\346\212\212\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\350\275\254\346\215\242\344\270\272\347\264\257\345\212\240\346\240\221_translated.md" (100%) rename app/docs/{CommunityShare/Leetcode => career/interview-prep/leetcode}/6323-distribute-money-to-maximum-children.en.md (100%) rename "app/docs/CommunityShare/Leetcode/6323. \345\260\206\351\222\261\345\210\206\347\273\231\346\234\200\345\244\232\347\232\204\345\204\277\347\253\245_translated.md" => "app/docs/career/interview-prep/leetcode/6323. \345\260\206\351\222\261\345\210\206\347\273\231\346\234\200\345\244\232\347\232\204\345\204\277\347\253\245_translated.md" (100%) rename app/docs/{CommunityShare/Leetcode => career/interview-prep/leetcode}/76-minimum-window-substring.en.md (100%) rename "app/docs/CommunityShare/Leetcode/76\346\234\200\345\260\217\350\246\206\347\233\226\345\255\220\344\270\262_translated.md" => "app/docs/career/interview-prep/leetcode/76\346\234\200\345\260\217\350\246\206\347\233\226\345\255\220\344\270\262_translated.md" (100%) rename app/docs/{CommunityShare/Leetcode => career/interview-prep/leetcode}/80-remove-duplicates-from-sorted-array-ii.en.md (100%) rename app/docs/{CommunityShare/Leetcode => career/interview-prep/leetcode}/80_translated.md (100%) rename app/docs/{CommunityShare/Leetcode => career/interview-prep/leetcode}/9021-tut-3-25t1.zh.md (100%) rename app/docs/{CommunityShare/Leetcode => career/interview-prep/leetcode}/9021_TUT_3_25T1.md (100%) rename app/docs/{CommunityShare/Leetcode => career/interview-prep/leetcode}/93-restore-ip-addresses.zh.md (100%) rename "app/docs/CommunityShare/Leetcode/93\345\244\215\345\216\237Ip\345\234\260\345\235\200.md" => "app/docs/career/interview-prep/leetcode/93\345\244\215\345\216\237Ip\345\234\260\345\235\200.md" (100%) rename app/docs/{CommunityShare/Leetcode => career/interview-prep/leetcode}/994-rotting-oranges.en.md (100%) rename "app/docs/CommunityShare/Leetcode/994.\350\205\220\347\203\202\347\232\204\346\251\230\345\255\220_translated.md" => "app/docs/career/interview-prep/leetcode/994.\350\205\220\347\203\202\347\232\204\346\251\230\345\255\220_translated.md" (100%) rename app/docs/{CommunityShare/Leetcode => career/interview-prep/leetcode}/Counting Stars-Inter-Uni Programming Contest.md (100%) rename "app/docs/CommunityShare/Leetcode/[121]\344\271\260\345\215\226\350\202\241\347\245\250\347\232\204\346\234\200\344\275\263\346\227\266\346\234\237_translated.md" => "app/docs/career/interview-prep/leetcode/[121]\344\271\260\345\215\226\350\202\241\347\245\250\347\232\204\346\234\200\344\275\263\346\227\266\346\234\237_translated.md" (100%) rename "app/docs/CommunityShare/Leetcode/[1333]\351\244\220\345\216\205\350\277\207\346\273\244\345\231\250_translated.md" => "app/docs/career/interview-prep/leetcode/[1333]\351\244\220\345\216\205\350\277\207\346\273\244\345\231\250_translated.md" (100%) rename "app/docs/CommunityShare/Leetcode/[146]LRU \347\274\223\345\255\230_translated.md" => "app/docs/career/interview-prep/leetcode/[146]LRU \347\274\223\345\255\230_translated.md" (100%) rename "app/docs/CommunityShare/Leetcode/[1545]\346\211\276\345\207\272\347\254\254 N \344\270\252\344\272\214\350\277\233\345\210\266\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\347\254\254 K \344\275\215.md" => "app/docs/career/interview-prep/leetcode/[1545]\346\211\276\345\207\272\347\254\254 N \344\270\252\344\272\214\350\277\233\345\210\266\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\347\254\254 K \344\275\215.md" (100%) rename "app/docs/CommunityShare/Leetcode/[213]\346\211\223\345\256\266\345\212\253\350\210\215 II_translated.md" => "app/docs/career/interview-prep/leetcode/[213]\346\211\223\345\256\266\345\212\253\350\210\215 II_translated.md" (100%) rename "app/docs/CommunityShare/Leetcode/[2490]\345\233\236\347\216\257\345\217\245_translated.md" => "app/docs/career/interview-prep/leetcode/[2490]\345\233\236\347\216\257\345\217\245_translated.md" (100%) rename "app/docs/CommunityShare/Leetcode/[2562]\346\211\276\345\207\272\346\225\260\347\273\204\347\232\204\344\270\262\350\201\224\345\200\274_translated.md" => "app/docs/career/interview-prep/leetcode/[2562]\346\211\276\345\207\272\346\225\260\347\273\204\347\232\204\344\270\262\350\201\224\345\200\274_translated.md" (100%) rename "app/docs/CommunityShare/Leetcode/[2582]\351\200\222\346\236\225\345\244\264_translated.md" => "app/docs/career/interview-prep/leetcode/[2582]\351\200\222\346\236\225\345\244\264_translated.md" (100%) rename app/docs/{CommunityShare/Leetcode => career/interview-prep/leetcode}/brief-alternate-homework-help.en.md (100%) rename "app/docs/CommunityShare/Leetcode/brief_alternate \344\275\234\344\270\232\345\270\256\345\277\231_translated.md" => "app/docs/career/interview-prep/leetcode/brief_alternate \344\275\234\344\270\232\345\270\256\345\277\231_translated.md" (100%) rename app/docs/{CommunityShare/Leetcode => career/interview-prep/leetcode}/counting-stars-inter-uni-programming-contest.zh.md (100%) rename app/docs/{CommunityShare/Leetcode => career/interview-prep/leetcode}/index.mdx (84%) rename app/docs/{CommunityShare/Leetcode => career/interview-prep/leetcode}/sword-offer-ii-021-remove-nth-node-from-end-of-list.en.md (100%) rename "app/docs/CommunityShare/Leetcode/\345\211\221\346\214\207 Offer II 021. \345\210\240\351\231\244\351\223\276\350\241\250\347\232\204\345\200\222\346\225\260\347\254\254 n \344\270\252\347\273\223\347\202\271_translated.md" => "app/docs/career/interview-prep/leetcode/\345\211\221\346\214\207 Offer II 021. \345\210\240\351\231\244\351\223\276\350\241\250\347\232\204\345\200\222\346\225\260\347\254\254 n \344\270\252\347\273\223\347\202\271_translated.md" (100%) rename app/docs/{jobs => career}/interview-prep/pre-interview.en.md (100%) rename app/docs/{jobs => career}/interview-prep/pre-interview.md (100%) rename app/docs/{jobs => career}/interview-prep/preparations-to-get-an-offer-as-a-student.en.mdx (100%) rename app/docs/{jobs => career}/interview-prep/preparations-to-get-an-offer-as-a-student.mdx (100%) rename app/docs/{CommunityShare/Geek => community/dev-tips}/CommonUsedMarkdown.assets/testpic1.jpg (100%) rename app/docs/{CommunityShare/Geek => community/dev-tips}/CommonUsedMarkdown.en.md (100%) rename app/docs/{CommunityShare/Geek => community/dev-tips}/CommonUsedMarkdown.md (100%) rename app/docs/{CommunityShare/Geek => community/dev-tips}/Katex/Seb1.en.mdx (100%) rename app/docs/{CommunityShare/Geek => community/dev-tips}/Katex/Seb1.mdx (100%) rename app/docs/{CommunityShare/Geek => community/dev-tips}/Katex/Seb2.en.mdx (100%) rename app/docs/{CommunityShare/Geek => community/dev-tips}/Katex/Seb2.mdx (100%) rename app/docs/{CommunityShare/Geek => community/dev-tips}/Katex/index.mdx (100%) rename app/docs/{CommunityShare/Geek => community/dev-tips}/cloudflare-r2-sharex-free-image-hosting.en.mdx (100%) rename app/docs/{CommunityShare/Geek => community/dev-tips}/cloudflare-r2-sharex-free-image-hosting.mdx (100%) rename app/docs/{CommunityShare/Geek => community/dev-tips}/git101.en.mdx (100%) rename app/docs/{CommunityShare/Geek => community/dev-tips}/git101.mdx (100%) rename app/docs/{CommunityShare/Geek => community/dev-tips}/index.mdx (100%) rename app/docs/{CommunityShare/Geek => community/dev-tips}/picturecdn.en.mdx (100%) rename app/docs/{CommunityShare/Geek => community/dev-tips}/picturecdn.mdx (100%) rename app/docs/{CommunityShare/Geek => community/dev-tips}/raspberry-guide.en.md (100%) rename app/docs/{CommunityShare/Geek => community/dev-tips}/raspberry-guide.md (100%) rename app/docs/{CommunityShare => community}/index.mdx (90%) rename app/docs/{CommunityShare/Language => community/language}/pte-intro.md (100%) rename app/docs/{CommunityShare/Life => community/life}/unsw-student-benefit.md (100%) rename app/docs/{CommunityShare/MentalHealth => community/mental-health}/burnout-guide.mdx (100%) rename app/docs/{CommunityShare/MentalHealth => community/mental-health}/index.mdx (100%) rename app/docs/{ai/foundation-models/world-models => community/papers}/leworldmodel.md (100%) rename app/docs/{ai/foundation-models/world-models => community/papers}/leworldmodel.zh.md (100%) rename app/docs/{ai/foundation-models/prompt-engineering => community/papers}/prompt-repetition-improves-non-reasoning-llms.md (100%) rename app/docs/{ai/foundation-models/prompt-engineering => community/papers}/prompt-repetition-improves-non-reasoning-llms.zh.md (100%) rename app/docs/{CommunityShare/Amazing-AI-Tools => community/tools}/index.md (100%) rename app/docs/{ai/misc-tools => community/tools}/perplexity-comet.en.md (100%) rename app/docs/{ai/misc-tools => community/tools}/perplexity-comet.md (100%) rename app/docs/{ai/misc-tools => community/tools}/swanlab.en.mdx (100%) rename app/docs/{ai/misc-tools => community/tools}/swanlab.mdx (100%) rename app/docs/{ => learn}/ai/Introduction-of-Multi-agents-system/introduction_of_multi-agents_system.en.md (100%) rename app/docs/{ => learn}/ai/Introduction-of-Multi-agents-system/introduction_of_multi-agents_system.md (100%) rename app/docs/{ => learn}/ai/MoE/MOE-intro.assets/img-20250920112106486.png (100%) rename app/docs/{ => learn}/ai/MoE/MOE-intro.assets/img-20250920112106518.png (100%) rename app/docs/{ => learn}/ai/MoE/MOE-intro.assets/img-20250920112106554.png (100%) rename app/docs/{ => learn}/ai/MoE/MOE-intro.assets/img-20250920112106588.png (100%) rename app/docs/{ => learn}/ai/MoE/MOE-intro.en.md (100%) rename app/docs/{ => learn}/ai/MoE/MOE-intro.md (100%) rename app/docs/{ => learn}/ai/MoE/moe-update.en.md (100%) rename app/docs/{ => learn}/ai/MoE/moe-update.md (100%) rename app/docs/{ => learn}/ai/Multi-agents-system-on-Code-Translation/code-translation-intro.en.mdx (100%) rename app/docs/{ => learn}/ai/Multi-agents-system-on-Code-Translation/code-translation-intro.mdx (100%) rename app/docs/{ => learn}/ai/agents-todo/agent-ecosystem.en.mdx (100%) rename app/docs/{ => learn}/ai/agents-todo/agent-ecosystem.mdx (100%) rename app/docs/{ => learn}/ai/agents-todo/cs294-194-196/index.en.mdx (100%) rename app/docs/{ => learn}/ai/agents-todo/cs294-194-196/index.mdx (100%) rename app/docs/{ => learn}/ai/ai-math-basics/calculus-optimization/index.en.mdx (100%) rename app/docs/{ => learn}/ai/ai-math-basics/calculus-optimization/index.mdx (100%) rename app/docs/{ => learn}/ai/ai-math-basics/information-theory/index.en.mdx (100%) rename app/docs/{ => learn}/ai/ai-math-basics/information-theory/index.mdx (100%) rename app/docs/{ => learn}/ai/ai-math-basics/linear-algebra/index.en.mdx (100%) rename app/docs/{ => learn}/ai/ai-math-basics/linear-algebra/index.mdx (100%) rename app/docs/{ => learn}/ai/ai-math-basics/linear-algebra/resources/index.en.mdx (100%) rename app/docs/{ => learn}/ai/ai-math-basics/linear-algebra/resources/index.mdx (100%) rename app/docs/{ => learn}/ai/ai-math-basics/math-foundations.en.mdx (100%) rename app/docs/{ => learn}/ai/ai-math-basics/math-foundations.mdx (100%) rename app/docs/{ => learn}/ai/ai-math-basics/math_books.en.md (100%) rename app/docs/{ => learn}/ai/ai-math-basics/math_books.md (100%) rename app/docs/{ => learn}/ai/ai-math-basics/numerical-analysis/index.en.mdx (100%) rename app/docs/{ => learn}/ai/ai-math-basics/numerical-analysis/index.mdx (100%) rename app/docs/{ => learn}/ai/ai-math-basics/probability-statistics/index.en.mdx (100%) rename app/docs/{ => learn}/ai/ai-math-basics/probability-statistics/index.mdx (100%) rename app/docs/{ => learn}/ai/ai-math-basics/probability-statistics/resources/index.en.mdx (100%) rename app/docs/{ => learn}/ai/ai-math-basics/probability-statistics/resources/index.mdx (100%) rename app/docs/{ => learn}/ai/compute-platforms/compute-platforms-handbook.en.mdx (100%) rename app/docs/{ => learn}/ai/compute-platforms/compute-platforms-handbook.mdx (100%) rename app/docs/{ => learn}/ai/compute-platforms/model-compuational-resource-demand.en.md (100%) rename app/docs/{ => learn}/ai/compute-platforms/model-compuational-resource-demand.md (100%) rename app/docs/{ => learn}/ai/foundation-models/datasets/index.en.mdx (100%) rename app/docs/{ => learn}/ai/foundation-models/datasets/index.mdx (100%) rename app/docs/{ => learn}/ai/foundation-models/deploy-infer/index.en.mdx (100%) rename app/docs/{ => learn}/ai/foundation-models/deploy-infer/index.mdx (100%) rename app/docs/{ => learn}/ai/foundation-models/evaluation/index.en.mdx (100%) rename app/docs/{ => learn}/ai/foundation-models/evaluation/index.mdx (100%) rename app/docs/{ => learn}/ai/foundation-models/finetune/index.en.mdx (100%) rename app/docs/{ => learn}/ai/foundation-models/finetune/index.mdx (100%) rename app/docs/{ => learn}/ai/foundation-models/foundation-models-lifecycle.en.mdx (100%) rename app/docs/{ => learn}/ai/foundation-models/foundation-models-lifecycle.mdx (100%) rename app/docs/{ => learn}/ai/foundation-models/qkv-interview/index.en.mdx (100%) rename app/docs/{ => learn}/ai/foundation-models/qkv-interview/index.mdx (100%) rename app/docs/{ => learn}/ai/foundation-models/rag/context-engineering-intro.en.md (100%) rename app/docs/{ => learn}/ai/foundation-models/rag/context-engineering-intro.md (100%) rename app/docs/{ => learn}/ai/foundation-models/rag/embedding.en.mdx (100%) rename app/docs/{ => learn}/ai/foundation-models/rag/embedding.mdx (100%) rename app/docs/{ => learn}/ai/foundation-models/rag/rag.en.mdx (100%) rename app/docs/{ => learn}/ai/foundation-models/rag/rag.mdx (100%) rename app/docs/{ => learn}/ai/foundation-models/training/index.en.mdx (100%) rename app/docs/{ => learn}/ai/foundation-models/training/index.mdx (100%) rename app/docs/{ => learn}/ai/generative-todo/generative-models-plan.en.mdx (100%) rename app/docs/{ => learn}/ai/generative-todo/generative-models-plan.mdx (100%) rename app/docs/{ => learn}/ai/index.mdx (100%) rename app/docs/{ => learn}/ai/llm-basics/courses/index.en.mdx (100%) rename app/docs/{ => learn}/ai/llm-basics/courses/index.mdx (100%) rename app/docs/{ => learn}/ai/llm-basics/cuda/index.en.mdx (100%) rename app/docs/{ => learn}/ai/llm-basics/cuda/index.mdx (100%) rename app/docs/{ => learn}/ai/llm-basics/deep-learning/d2l/index.en.mdx (100%) rename app/docs/{ => learn}/ai/llm-basics/deep-learning/d2l/index.mdx (100%) rename app/docs/{ => learn}/ai/llm-basics/deep-learning/index.en.mdx (100%) rename app/docs/{ => learn}/ai/llm-basics/deep-learning/index.mdx (100%) rename app/docs/{ => learn}/ai/llm-basics/deep-learning/misc/index.en.mdx (100%) rename app/docs/{ => learn}/ai/llm-basics/deep-learning/misc/index.mdx (100%) rename app/docs/{ => learn}/ai/llm-basics/deep-learning/nlp/index.en.mdx (100%) rename app/docs/{ => learn}/ai/llm-basics/deep-learning/nlp/index.mdx (100%) rename app/docs/{ => learn}/ai/llm-basics/embeddings/index.en.mdx (100%) rename app/docs/{ => learn}/ai/llm-basics/embeddings/index.mdx (100%) rename app/docs/{ => learn}/ai/llm-basics/embeddings/qwen3-embedding/index.en.mdx (100%) rename app/docs/{ => learn}/ai/llm-basics/embeddings/qwen3-embedding/index.mdx (100%) rename app/docs/{ => learn}/ai/llm-basics/llm-foundations.en.mdx (100%) rename app/docs/{ => learn}/ai/llm-basics/llm-foundations.mdx (100%) rename app/docs/{ => learn}/ai/llm-basics/pytorch/index.assets/word-img-01.png (100%) rename app/docs/{ => learn}/ai/llm-basics/pytorch/index.assets/word-img-02.png (100%) rename app/docs/{ => learn}/ai/llm-basics/pytorch/index.en.mdx (100%) rename app/docs/{ => learn}/ai/llm-basics/pytorch/index.mdx (100%) rename app/docs/{ => learn}/ai/llm-basics/transformer/ai-by-hand/index.en.mdx (100%) rename app/docs/{ => learn}/ai/llm-basics/transformer/ai-by-hand/index.mdx (100%) rename app/docs/{ => learn}/ai/llm-basics/transformer/index.en.mdx (100%) rename app/docs/{ => learn}/ai/llm-basics/transformer/index.mdx (100%) rename app/docs/{ => learn}/ai/methodology/research-methodology.en.mdx (100%) rename app/docs/{ => learn}/ai/methodology/research-methodology.mdx (100%) rename app/docs/{ => learn}/ai/misc-tools/learning-toolkit.en.mdx (100%) rename app/docs/{ => learn}/ai/misc-tools/learning-toolkit.mdx (100%) rename app/docs/{ => learn}/ai/model-datasets-platforms/platform-and-datasets.en.mdx (100%) rename app/docs/{ => learn}/ai/model-datasets-platforms/platform-and-datasets.mdx (100%) rename app/docs/{ => learn}/ai/multimodal/RQVAE/index.assets/2.png (100%) rename app/docs/{ => learn}/ai/multimodal/RQVAE/index.en.mdx (100%) rename app/docs/{ => learn}/ai/multimodal/RQVAE/index.mdx (100%) rename app/docs/{ => learn}/ai/multimodal/VAE/index.assets/v2-61521005c5a8213b60bf362f9c25c22f_1440w.png (100%) rename app/docs/{ => learn}/ai/multimodal/VAE/index.assets/v2-643d5ffb4aa480808bc9c82a55450a80_r.png (100%) rename app/docs/{ => learn}/ai/multimodal/VAE/index.assets/v2-92a9061e7079089b75c37650943c6f25_1440w.png (100%) rename app/docs/{ => learn}/ai/multimodal/VAE/index.assets/v2-97e09bd511a1fb0c3240fa717ce235d2_1440w.png (100%) rename app/docs/{ => learn}/ai/multimodal/VAE/index.assets/v2-dda0855d2d3e00e786956a827b1c5f26_1440w.png (100%) rename app/docs/{ => learn}/ai/multimodal/VAE/index.assets/v2-df06f2d1471615dae76b1e09488091b5_r.png (100%) rename app/docs/{ => learn}/ai/multimodal/VAE/index.en.mdx (100%) rename app/docs/{ => learn}/ai/multimodal/VAE/index.mdx (100%) rename app/docs/{ => learn}/ai/multimodal/VQVAE/index.assets/1.png (100%) rename app/docs/{ => learn}/ai/multimodal/VQVAE/index.en.mdx (100%) rename app/docs/{ => learn}/ai/multimodal/VQVAE/index.mdx (100%) rename app/docs/{ => learn}/ai/multimodal/courses/index.en.mdx (100%) rename app/docs/{ => learn}/ai/multimodal/courses/index.mdx (100%) rename app/docs/{ => learn}/ai/multimodal/llava/index.assets/word-img-03.png (100%) rename app/docs/{ => learn}/ai/multimodal/llava/index.assets/word-img-04.png (100%) rename app/docs/{ => learn}/ai/multimodal/llava/index.assets/word-img-05.png (100%) rename app/docs/{ => learn}/ai/multimodal/llava/index.en.mdx (100%) rename app/docs/{ => learn}/ai/multimodal/llava/index.mdx (100%) rename app/docs/{ => learn}/ai/multimodal/mllm/index.en.mdx (100%) rename app/docs/{ => learn}/ai/multimodal/mllm/index.mdx (100%) rename app/docs/{ => learn}/ai/multimodal/multimodal-overview.en.mdx (100%) rename app/docs/{ => learn}/ai/multimodal/multimodal-overview.mdx (100%) rename app/docs/{ => learn}/ai/multimodal/qwenvl/index.en.mdx (100%) rename app/docs/{ => learn}/ai/multimodal/qwenvl/index.mdx (100%) rename app/docs/{ => learn}/ai/multimodal/video-mm-todo/index.en.mdx (100%) rename app/docs/{ => learn}/ai/multimodal/video-mm-todo/index.mdx (100%) rename app/docs/{ => learn}/ai/multimodal/vit/index.en.mdx (100%) rename app/docs/{ => learn}/ai/multimodal/vit/index.mdx (100%) rename app/docs/{ => learn}/ai/recommender-systems/recommender-roadmap.en.mdx (100%) rename app/docs/{ => learn}/ai/recommender-systems/recommender-roadmap.mdx (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_crossing.en.mdx (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_crossing.mdx (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/3-1-1.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/3-1-2.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/3-2-1.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/3-2-2.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/3-2-3.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/3-4-1.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/3-4-2.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/3-4-3.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/3-5-1.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/3-6-1.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/3-6-2.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/3-6-3.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/3-6-4.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/4-1-1.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/4-2-1.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/4-2-2.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/4-2-3.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/4-2-4.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/4-2-5.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/4-2-6.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/4-3-1.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/4-3-2.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/4-4-1.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/4-4-2.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/4-4-3.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/4-4-4.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/4-4-5.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/4-4-6.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/4-4-7.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/5-1-1.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/5-1-2.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/5-2-1.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/5-2-2.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/5-3-1.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/6-1-1.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/6-1-2.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/6-1-3.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/6-1-4.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/6-1-5.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/6-2-1.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/6-2-2.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/6-4-1.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/6-4-2.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/6-4-3.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/6-4-4.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/6-4-5.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/6-5-1.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/7-3-1.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/7-3-2.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/7-3-3.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/7-4-1.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/7-4-2.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/7-4-3.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/7-4-4.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/7-5-1.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/7-5-2.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/7-6-1.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/7-6-2.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/7-6-3.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/7-6-4.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/7-6-5.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/8-2-1.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/8-3-1.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/8-3-2.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/8-3-3.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/8-3-4.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/images/8-3-5.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/wangshusen_recommend_note_retrieval.assets/2-10-1.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/wangshusen_recommend_note_retrieval.assets/2-10-2.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/wangshusen_recommend_note_retrieval.assets/2-10-3.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/wangshusen_recommend_note_retrieval.assets/2-10-4.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/wangshusen_recommend_note_retrieval.assets/2-10-5.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/wangshusen_recommend_note_retrieval.assets/2-10-6.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/wangshusen_recommend_note_retrieval.assets/2-10-7.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/wangshusen_recommend_note_retrieval.assets/2-10-8.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/wangshusen_recommend_note_retrieval.assets/2-12-1.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/wangshusen_recommend_note_retrieval.assets/2-12-2.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/wangshusen_recommend_note_retrieval.assets/2-12-3.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/wangshusen_recommend_note_retrieval.assets/2-4-1.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/wangshusen_recommend_note_retrieval.assets/2-5-1.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/wangshusen_recommend_note_retrieval.assets/2-5-2.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/wangshusen_recommend_note_retrieval.assets/2-5-3.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/wangshusen_recommend_note_retrieval.assets/2-5-4.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/wangshusen_recommend_note_retrieval.assets/2-5-5.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/wangshusen_recommend_note_retrieval.assets/2-6-1.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/wangshusen_recommend_note_retrieval.assets/2-6-2.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/wangshusen_recommend_note_retrieval.assets/2-6-3.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/wangshusen_recommend_note_retrieval.assets/2-6-4.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/wangshusen_recommend_note_retrieval.assets/2-6-5.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/wangshusen_recommend_note_retrieval.assets/2-6-6.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/wangshusen_recommend_note_retrieval.assets/2-7-1.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/wangshusen_recommend_note_retrieval.assets/2-7-2.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/wangshusen_recommend_note_retrieval.assets/2-7-3.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/wangshusen_recommend_note_retrieval.assets/2-7-4.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/wangshusen_recommend_note_retrieval.assets/2-8-1.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/wangshusen_recommend_note_retrieval.assets/2-8-2.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/wangshusen_recommend_note_retrieval.assets/2-9-1.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/wangshusen_recommend_note_retrieval.assets/2-9-2.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/wangshusen_recommend_note_retrieval.assets/2-9-3.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/wangshusen_recommend_note_retrieval.assets/2-9-4.png (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/wangshusen_recommend_note_retrieval.en.mdx (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note/wangshusen_recommend_note_retrieval.mdx (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note_coldstart.en.mdx (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note_coldstart.mdx (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note_improvement.en.mdx (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note_improvement.mdx (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note_rank.en.mdx (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note_rank.mdx (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note_rerank.en.mdx (100%) rename app/docs/{ => learn}/ai/recommender-systems/wangshusen_recommend_note_rerank.mdx (100%) rename app/docs/{ => learn}/ai/reinforcement-learning/ppo.md (100%) rename app/docs/{ => learn}/ai/reinforcement-learning/reinforcement-learning-overview.en.mdx (100%) rename app/docs/{ => learn}/ai/reinforcement-learning/reinforcement-learning-overview.mdx (100%) rename app/docs/{computer-science => learn/cs}/cpp-backend/easy-compile/1-cpp-libs.en.md (100%) rename app/docs/{computer-science => learn/cs}/cpp-backend/easy-compile/1-cpp-libs.md (100%) rename app/docs/{computer-science => learn/cs}/cpp-backend/easy-compile/2-base-gcc.en.md (100%) rename app/docs/{computer-science => learn/cs}/cpp-backend/easy-compile/2-base-gcc.md (100%) rename app/docs/{computer-science => learn/cs}/cpp-backend/easy-compile/3-make.en.md (100%) rename app/docs/{computer-science => learn/cs}/cpp-backend/easy-compile/3-make.md (100%) rename app/docs/{computer-science => learn/cs}/cpp-backend/easy-compile/4-cmake.en.md (100%) rename app/docs/{computer-science => learn/cs}/cpp-backend/easy-compile/4-cmake.md (100%) rename app/docs/{computer-science => learn/cs}/cpp-backend/easy-compile/5-vcpkg.en.md (100%) rename app/docs/{computer-science => learn/cs}/cpp-backend/easy-compile/5-vcpkg.md (100%) rename app/docs/{computer-science => learn/cs}/cpp-backend/handwritten-pool-components/1-handwritten-threadpool.en.md (100%) rename app/docs/{computer-science => learn/cs}/cpp-backend/handwritten-pool-components/1-handwritten-threadpool.md (100%) rename app/docs/{computer-science => learn/cs}/cpp-backend/handwritten-pool-components/2-handwritten-mempool1.en.md (100%) rename app/docs/{computer-science => learn/cs}/cpp-backend/handwritten-pool-components/2-handwritten-mempool1.md (100%) rename app/docs/{computer-science => learn/cs}/cpp-backend/mempool-simple.en.mdx (100%) rename app/docs/{computer-science => learn/cs}/cpp-backend/mempool-simple.mdx (100%) rename app/docs/{computer-science => learn/cs}/data-structures/array/01-static-array.mdx (100%) rename app/docs/{computer-science => learn/cs}/data-structures/array/01-static-array.zh.mdx (100%) rename app/docs/{computer-science => learn/cs}/data-structures/array/02-dynamic-array.mdx (100%) rename app/docs/{computer-science => learn/cs}/data-structures/array/02-dynamic-array.zh.mdx (100%) rename app/docs/{computer-science => learn/cs}/data-structures/array/index.mdx (100%) rename app/docs/{computer-science => learn/cs}/data-structures/array/index.zh.mdx (100%) rename app/docs/{computer-science => learn/cs}/data-structures/index.mdx (100%) rename app/docs/{computer-science => learn/cs}/data-structures/index.zh.mdx (100%) rename app/docs/{computer-science => learn/cs}/data-structures/linked-list/01-singly-linked-list.mdx (100%) rename app/docs/{computer-science => learn/cs}/data-structures/linked-list/01-singly-linked-list.zh.mdx (100%) rename app/docs/{computer-science => learn/cs}/data-structures/linked-list/index.mdx (100%) rename app/docs/{computer-science => learn/cs}/data-structures/linked-list/index.zh.mdx (100%) rename app/docs/{computer-science => learn/cs}/frontend/frontend-learning/index.en.mdx (100%) rename app/docs/{computer-science => learn/cs}/frontend/frontend-learning/index.mdx (100%) rename app/docs/{computer-science => learn/cs}/frontend/index.en.mdx (100%) rename app/docs/{computer-science => learn/cs}/frontend/index.mdx (100%) rename app/docs/{computer-science => learn/cs}/index.en.mdx (100%) rename app/docs/{computer-science => learn/cs}/index.mdx (100%) create mode 100644 app/docs/learn/index.mdx rename app/docs/{ai => }/projects/ai-town.en.mdx (100%) rename app/docs/{ai => }/projects/ai-town.mdx (100%) create mode 100644 app/docs/projects/index.mdx rename app/docs/{all-projects => projects}/multimodal-rl.en.mdx (100%) rename app/docs/{all-projects => projects}/multimodal-rl.mdx (100%) diff --git a/app/components/Footer.tsx b/app/components/Footer.tsx index e798c314..b772a6f0 100644 --- a/app/components/Footer.tsx +++ b/app/components/Footer.tsx @@ -63,7 +63,7 @@ export async function Footer() {