diff --git a/.agent/CURRENT_STATE.md b/.agent/CURRENT_STATE.md index 4959bec41..e71694457 100644 --- a/.agent/CURRENT_STATE.md +++ b/.agent/CURRENT_STATE.md @@ -2,13 +2,11 @@ ## Current Focus -迁移已完成并上线(2026-09-04)。PR #26 已 merge,Astro 站点部署到 `html` 分支, -线上 https://www.jackzhu.top/ 已切换为新站并回归验证通过(首页/路由/旧 URL/静态资源/署名清除/Pagefind 全绿)。 -剩余:Phase J 稳定期清理 + `/photos/` 摄影页(范围变更)。 +迁移已上线(PR #26 merged,2026-09-04)。当前工作树有**未提交**改动(`/photos/` 页、`src/lib/site-config.ts` + `site.config.yaml` 配置重构、footer/header/about/link/blog 分页等多处调整),尚未反映到本文件——需要先确认这批改动的内容与验收状态,再推进 Phase J 清理。 ## Last Updated -2026-09-04 +2026-09-04(本文件为重构后初版,待同步未提交改动) ## Done @@ -17,41 +15,30 @@ - 保留 CNAME、robots.txt、百度/Google 站点验证文件到 `public/`,新增 `public/.nojekyll` - 配置 astro.config.mjs(site=https://www.jackzhu.top)、package.json(engines ≥22.12)、.nvmrc、.editorconfig、.gitignore - CI:astro_ci.yml(PR 只构建)+ astro_build_deploy.yml(仅 main,dist→html) -- 文档:docs/design-spec.md、.agent/ 三件套、AGENTS.md/CLAUDE.md - 裁剪模板:blog 单集合新 schema、consts/types 对齐、删示例/项目/giscus/tags/rss.xml - 建页面与路由:文章日期 URL、首页/列表+分页/关于/友链/分类/atom.xml/404、legacyPath 解析、zh-CN -- 视觉样式:Demo 设计系统(CSS 变量浅/深两套)、Header/Footer/文章页等按 Demo 观感重写、浅色默认 +- 视觉样式:Demo 设计系统(CSS 变量浅/深两套)、Header/Footer/文章页按 Demo 观感重写、浅色默认 - 迁移脚本与清单(Phase B):`scripts/*.mjs` + `migration/*.json`(54 篇四分类已批准) - 批量迁移 54 篇(Phase D):frontmatter 转换、清署名、数学三件套、build 通过 - 图片处置(Phase E):66 条失效 `cdn.noedgeai.com` 图按 `note` 删除并加注;`cdn.nlark.com` 5 条实测 200 保留 - 旧 URL/SEO/订阅兼容(Phase F):百度统计、robots→sitemap-index、canonical/CNAME/.nojekyll/验证文件/atom.xml - 8 篇课程报告历史格式修复:目录列表化、公式 `$...$`/`$$...$$`、代码围栏+缩进恢复 -- Header/favicon:`.site-header` 占满 1080px 防重叠、导航分文字组与图标组、`J` 矢量 `public/favicon.svg` 替换模板显微镜、删除三按钮死代码 -- **Phase H 本地验证**:新增 `scripts/verify-build.mjs` 静态审计(10 类)与 Playwright E2E(13 用例), - `npm ci` / `npm run build` / `npm run test` / `npm run test:e2e` 全绿 -- 清理未引用依赖 `@fontsource/geist-mono`、`@fontsource/geist-sans` -- `npm audit fix`:兼容范围内降 17 → 5 项 -- 站点图标替换为 bloggallery `art_favicon.webp`(1024×1024 webp)→ 本地 `favicon.png`(32)+`apple-touch-icon.png`(180)+`og-image.png`(1024),移除自造 `favicon.svg` -- push `migration/astro` 到 origin,开 PR #26(CI build 通过) +- Header/favicon:`.site-header` 占满 1080px 防重叠、导航分文字组与图标组、`J` 矢量 favicon 替换模板显微镜 +- Phase H 本地验证:`scripts/verify-build.mjs` 静态审计(10 类)+ Playwright E2E(13 用例),`npm ci`/`npm run build`/`npm run test`/`npm run test:e2e` 全绿 +- 清理未引用依赖 `@fontsource/geist-mono`、`@fontsource/geist-sans`;`npm audit fix` 降 17 → 5 项 +- 站点图标替换为 bloggallery `art_favicon.webp`(1024×1024)→ 本地 `favicon.png`(32)+`apple-touch-icon.png`(180)+`og-image.png`(1024) +- push `migration/astro` 到 origin,开 PR #26(CI build 通过),merge 并部署到 `html` 分支,线上回归验证通过 ## In Progress -- 无(迁移已完成上线) - -## Next Recommended Task - -- Phase J 稳定期清理(可选):`migration/*.json`、`scripts/*.mjs` 是否保留/归档;npm audit 剩余 5 项是否升 Astro 7。 -- `/photos/` 极简摄影页(范围变更,需单独设计)。 +- 工作树未提交改动(`git status` 可见):`package.json`/`package-lock.json`、`Footer.astro`、`Header.astro`、`consts.ts`、`links.ts`、`about.astro`、`blog/[page].astro`、`blog/index.astro`、`link.astro`、`global.css`、`tests/e2e/blog.spec.ts`,新增 `site.config.yaml`、`src/lib/site-config.ts`、`src/pages/photos.astro` ## Known Issues -- 剩余 5 项 npm 审计(1 low / 2 moderate / 2 high,无 critical)需 `npm audit fix --force` - 升级到 Astro 7(breaking change)。静态站点实际风险面受限,但不应在上线前无计划硬升; - 建议上线后单独评估 Astro 7 升级任务。 +- 剩余 5 项 npm 审计(1 low / 2 moderate / 2 high,无 critical)需 `npm audit fix --force` 升 Astro 7(breaking),上线前无计划硬升,建议单独评估。 - `/atom.xml` 用 `@astrojs/rss` 输出 RSS 2.0 非严格 Atom;URL 已保留,格式对齐未做。 - About 文案为草稿,用户逐字审阅(Phase G 文案验收门)。 -- 首页/关于/友链等页面结构与事实已自动验证,最终文案仍待用户本轮预览确认。 -- `/photos/` 极简摄影页仍待单独设计(范围变更,非本轮核心迁移)。 +- 未提交改动(见 In Progress)尚未跑验证,状态未知。 ## Important Context @@ -60,14 +47,15 @@ - 设计规范:`docs/design-spec.md`(唯一设计事实来源) - 视觉参考 Demo(已批准):`/Users/jackzhu/Documents/blog-style-demos/jack-blog-recommended-demo.html` - 原站源码(只读):`/Users/jackzhu/projects/blog`(main),文章 `source/_posts/*.md`(54 篇) -- 当前依赖:astro 6.4.8、@astrojs/mdx 5.x、@astrojs/rss 4.0.19、@astrojs/markdown-remark(直接依赖,供 `unified()`) -- 实施 worker:Codex CLI;Hermes 负责范围控制/diff 审查/测试复验。本轮 Codex 曾挂死,余下定点修复与全量复验由 Hermes 直接完成。 +- 实施 worker:Codex CLI;Hermes 负责范围控制/diff 审查/测试复验。 ## Verification Last verified at: 2026-09-04 - +Commit: `a1dfb0d`(HEAD);注意工作树有未提交改动,下列验证针对 HEAD 提交状态 +Command: `npm run build` / `npm run test` / `npm run test:e2e` +Result: - `npm ci` → exit 0(5 vulnerabilities,需 Astro 7 的强制升级未做) -- `npm run build` → exit 0,astro check 0 errors,67 page(s) built,Pagefind 索引 69 pages,无 markdown/弃用告警 +- `npm run build` → exit 0,astro check 0 errors,67 page(s) built,Pagefind 索引 69 pages - `npm run test` → 10/10 PASS(54 篇一致、54 URL、1156 内链、署名清除、favicon、CNAME/验证文件、sitemap/atom/canonical、Pagefind、代表文章、无凭证) - `npm run test:e2e` → 13/13 passed(360/390/768/1440 响应式、首页/分页/关于/友链/404、代码/数学/原始 HTML/多图、搜索、主题、键盘、360px 溢出、favicon) diff --git a/.agent/PROJECT_BRIEF.md b/.agent/PROJECT_BRIEF.md deleted file mode 100644 index e5593349b..000000000 --- a/.agent/PROJECT_BRIEF.md +++ /dev/null @@ -1,61 +0,0 @@ -# Project Brief - -## Project Goal - -把现有 Hexo + Butterfly 博客(54 篇,六年)迁移为基于 Astro Micro 的克制现代独立博客,替换线上唯一站点 `www.jackzhu.top`,保留全部旧文章日期型 URL、公开身份信息与订阅地址。 - -## Current Stage - -准备阶段已完成(脚手架 + 配置约束 + 文档)。下一步进入实施阶段,小步可验证推进;本地完全验证并用户批准前不 push、不部署。 - -## Target User - -- 公开读者(技术博客读者、简历来访者) -- 用户本人(长期写作档案) - -## Core Requirements - -- 文章优先,不是作品集/仪表盘 -- 公开身份只署 `Jack` / `Jack's Blog`,不写真名 -- 54 篇全部迁移,保留原日期型永久链接 -- 页脚保留建站年份、ICP 备案号、又拍云说明、百度统计 -- 友链 11 个原样保留;社交链接保留 GitHub/知乎/B站/RSS -- 不设评论、独立归档、标签云、Projects/Publications -- 本地完全验证后,经用户批准才 push 上线 - -## Non-goals - -当前阶段不做: - -- 不建 Projects / Proof of Work / Publications -- 不恢复音乐、电影、相册等旧主题功能 -- 不做 AI 聊天、RAG、llms.txt、JSON 内容 API -- 不切换 GitHub Pages 发布模式(artifact 模式) -- 不重构分类体系(仅有限映射到四类) -- 不自动 git commit / 不自动 push / 不自动 deploy / publish - -## Technical Preferences - -- 优先小步实现、每步可验证 -- 优先保留旧 URL 与既有结构 -- 优先可运行、可测试、可回滚 -- 避免过早抽象、避免过度工程化 -- 新增依赖前说明理由 -- Node 22(≥22.12),Astro Micro 锁 commit `af69926c87341719846fe0e7a415483deb4e05ee` - -## Working Rules for Agent - -1. 每次开始前先读 `.agent/PROJECT_BRIEF.md`、`.agent/CURRENT_STATE.md`、`.agent/TASKS.md`。 -2. `TASKS.md` 是唯一任务源,不使用内部 todo 工具。 -3. 每轮只执行一个明确任务。 -4. 修改代码前说明:本轮任务、计划检查/修改的文件、是否偏离项目目标。 -5. 发现任务需扩大范围,先停止并询问。 -6. 完成后:总结修改、运行验证命令、更新 `.agent/CURRENT_STATE.md` 与 `.agent/TASKS.md`。 -7. 公开署名只写 `Jack`;不引入真名、公司履历、非公开项目细节。 -8. 迁移期间只读旧内容,不改动 `main` 工作树的源 Markdown(正文改动另立编辑任务)。 - -## Done Criteria - -- 功能可运行或变更可验证 -- 没有破坏既有行为 -- 已更新 `.agent/CURRENT_STATE.md` 与 `.agent/TASKS.md` diff --git a/.agent/TASKS.md b/.agent/TASKS.md index fde6397fe..ca9718653 100644 --- a/.agent/TASKS.md +++ b/.agent/TASKS.md @@ -2,28 +2,18 @@ ## Now -- [x] 裁剪模板:删示例文章/项目/giscus/模板身份,改 `content.config.ts`(blog 单集合 + 新 schema)、`consts.ts`、`types.ts` -- [x] 建页面与路由:首页、`/blog/` 列表+分页、文章日期 URL `[year]/[month]/[day]/[...slug]`、关于、友链、分类结果、`atom.xml`、404 -- [x] 视觉样式落到 Astro(克制现代刊物风格,浅色默认+深色,来自 `docs/design-spec.md` §5) -- [x] 迁移脚本与清单(Phase B):`scripts/*.mjs` + `migration/*.json`(54 篇 → 四分类映射、URL 清单、图片审计、友链审计) -- [x] 批量迁移 54 篇(Phase D):frontmatter 转换 + 清除 `Jack Zhu` 署名 + 特殊语法人工处理(含 remark-math/rehype-katex/katex 数学渲染) -- [x] 图片处置实现(Phase E 第二步):8 篇课程报告 66 条失效 `cdn.noedgeai.com` 图引用全部按 `note` 删除并加注「(原图已失效)」,`npm run build` 通过 -- [x] 修复 8 篇课程报告历史格式错误:7 篇 TOC 列表化、正文公式改 `$...$`/`$$...$$`、FCM/MIMC 未围栏代码补 ```python 围栏,`npm run build` 通过 -- [x] 修复桌面 Header 导航重叠并恢复站点标识:稳定双组导航、SVG 图标按钮、主题死代码清理、设计事实源更新;站点图标最终用 bloggallery 的 `art_favicon.webp`(转 PNG 本地托管 favicon/apple-touch-icon/og-image) +(迁移已上线,无进行中任务) ## Next -- [x] 图片与静态资源(Phase E 剩余):`cdn.nlark.com` 5 条实测 200 有效;gcore 56 张保留确认 -- [x] 旧 URL/SEO/订阅兼容(Phase F):百度统计入 head、robots→sitemap-index、canonical/sitemap/CNAME/.nojekyll/验证文件/atom.xml 全部验证通过 -- [x] 本地完整验证(Phase H):`npm ci` + `npm run build` + `npm run test`(10/10) + `npm run test:e2e`(13/13),Playwright 矩阵 360/390/768/1440px 全通过 +- [ ] 稳定期清理(Phase J)—— 验收:对 `migration/*.json`、`scripts/*.mjs` 逐项给出保留或归档结论并落地;剩余 npm audit 5 项给出处置方案 +- [ ] 评估 Pages artifact 模式 —— 验收:写清从 `html` 分支发布迁移到官方 Pages artifact 模式的收益/成本与迁移步骤,给出 Go/No-Go ## Later -- [x] GitHub 审阅与上线(Phase I):PR #26 已 merge,`astro_build_deploy.yml` 部署 dist 到 `html` 分支,线上 www.jackzhu.top 已切换为 Astro 新站并回归验证通过 -- [ ] 稳定期清理(Phase J) -- [ ] 评估从 `html` 分支发布迁移到官方 Pages artifact 模式 -- [ ] 新建 `/photos/` 极简摄影页(仅放用户自拍照片,不放文章插图;范围变更,需单独设计)。cover→og:image 已接线完成 +- [ ] `/photos/` 极简摄影页(范围变更,需单独设计)—— 验收:`npm run build` exit 0、`npm run test:e2e` 全绿、仅放用户自拍照片不放文章插图 +- [ ] npm audit 剩余 5 项(1 low / 2 moderate / 2 high)—— 验收:评估 Astro 7 升级(breaking)的必要性并给出结论,不擅自 `--force` ## Backlog -- [ ] npm audit 剩余 5 项(1 low / 2 moderate / 2 high,需 `npm audit fix --force` 升 Astro 7 breaking)评估与处置 +- [ ] Astro 7 升级结论落地(如评估批准) diff --git a/AGENTS.md b/AGENTS.md index 3de749aa3..a1240f16d 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,13 +1,34 @@ -# Project Agent Protocol +# Blog Astro Migration -项目协议在 `.agent/` 目录下。 +## Goal -每次开始前必须读取: -1. `.agent/PROJECT_BRIEF.md` -2. `.agent/CURRENT_STATE.md` -3. `.agent/TASKS.md` +把 Hexo + Butterfly 博客(54 篇,六年)迁移为基于 Astro Micro 的克制现代独立博客,替换线上唯一站点 `www.jackzhu.top`,保留全部旧文章日期型 URL、公开身份信息与订阅地址。已于 2026-09-04 上线(PR #26 merged)。 -按 `.agent/PROJECT_BRIEF.md` 中的 Working Rules 执行。 -`TASKS.md` 是唯一任务源,不要使用其他 todo 工具。 +## Stack & Commands -设计事实来源以 `docs/design-spec.md` 为准。 +- Astro 6.4.8 + @astrojs/mdx 5.x + @astrojs/rss 4.0.19 + @astrojs/markdown-remark(供 `unified()`) +- Node 22(≥22.12);Astro Micro 锁 commit `af69926c87341719846fe0e7a415483deb4e05ee` +- 安装:`npm ci` +- 构建:`npm run build`(astro check + 构建 + Pagefind 索引) +- 静态审计:`npm run test`(10 用例,`scripts/verify-build.mjs`) +- E2E:`npm run test:e2e`(13 用例,Playwright 矩阵 360/390/768/1440px) + +## Conventions & Gotchas + +- 工作目录:`/Users/jackzhu/projects/blog-astro-migration`(branch `migration/astro`) +- 设计事实来源:`docs/design-spec.md`(唯一) +- 视觉参考 Demo(已批准):`/Users/jackzhu/Documents/blog-style-demos/jack-blog-recommended-demo.html` +- 原站源码(只读):`/Users/jackzhu/projects/blog`(main),文章 `source/_posts/*.md` +- 迁移计划(7 阶段):`/Users/jackzhu/projects/blog/.hermes/plans/2026-09-03_195621-astro-blog-migration.md` +- 部署:GitHub Pages artifact 模式,CI `astro_build_deploy.yml`(仅 main,dist→html 分支) + +## Project Rules + +1. 公开署名只写 `Jack` / `Jack's Blog`,不写真名、公司履历、非公开项目细节。 +2. 不自动 git commit / push / deploy / publish——本地验证 + 用户批准后才 push。 +3. 迁移期间只读旧内容 `main` 工作树的源 Markdown(正文改动另立编辑任务)。 +4. 文章优先,不是作品集/仪表盘;不设评论、独立归档、标签云、Projects/Publications。 + +## Continuation + +每次继续前先读 `.agent/TASKS.md` 和 `.agent/CURRENT_STATE.md`。 diff --git a/CLAUDE.md b/CLAUDE.md index 3de749aa3..c58296d31 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1,13 +1,2 @@ -# Project Agent Protocol - -项目协议在 `.agent/` 目录下。 - -每次开始前必须读取: -1. `.agent/PROJECT_BRIEF.md` -2. `.agent/CURRENT_STATE.md` -3. `.agent/TASKS.md` - -按 `.agent/PROJECT_BRIEF.md` 中的 Working Rules 执行。 -`TASKS.md` 是唯一任务源,不要使用其他 todo 工具。 - -设计事实来源以 `docs/design-spec.md` 为准。 + +@AGENTS.md diff --git a/docs/CONTENT_MAP.md b/docs/CONTENT_MAP.md deleted file mode 100644 index b5fcac2ac..000000000 --- a/docs/CONTENT_MAP.md +++ /dev/null @@ -1,54 +0,0 @@ -# 站点修改速查表 - -## 一句话:想改内容,改根目录的 `site.config.yaml` 就行 - -所有「经常改」的内容都集中在一个文件:**`site.config.yaml`**(仓库根目录)。 -改完提交并 push 到 `main`,GitHub Actions 自动部署,几分钟后线上生效。 - -### `site.config.yaml` 里能改什么 - -| 想改 | 位置(site.config.yaml 里) | -|---|---| -| 站点名 / 副标题 | `site.title` / `site.description` | -| 首页显示文章数 | `site.numPostsOnHomepage` | -| 全部文章每页条数 | `site.numPostsPerPage` | -| 社交链接(GitHub/知乎/B站/RSS) | `socials` | -| 友链(朋友) | `friendLinks` | -| 页脚:建站日期 | `footer.since` | -| 页脚:ICP 备案号 | `footer.icp` | -| 页脚:是否显示运行时长 | `footer.showRuntime` | -| 页脚:是否显示访问统计 | `footer.showVisitor` | -| 关于页文案 | `about.paragraphs`(每段一行) | -| 友链页副标题 | `linkSubtitle` | - -### 结构性内容(一般不常改,仍在代码里) - -| 想改 | 文件 | -|---|---| -| 四个分类名 | `src/consts.ts`(`CATEGORIES`)+ `src/content.config.ts`(schema) | -| 顶部导航菜单项 | `src/components/Header.astro` | -| 页脚社交链接行 | `src/components/Footer.astro` | -| 站点图标 | `public/favicon.png` 等 | - -### 文章 - -| 想做的事 | 方法 | -|---|---| -| 加一篇文章 | 在 `src/content/blog/` 下新建目录,放 `index.md`(frontmatter 照抄现有任意一篇) | -| 改某篇文章 | 编辑 `src/content/blog/<文章目录>/index.md` | -| 文章封面图 | frontmatter 的 `cover:` 字段 | - -### 照片墙 - -`/photos/` 页自动收集所有文章的封面图并去重,无需手动维护——新增文章带 `cover:` 就会自动出现。 - -## 验证与发布 - -```bash -npm run build # 本地构建(报错会停在这里) -npm run preview # 本地预览 http://127.0.0.1:4321 -npm run test # 静态审计(10 项) -npm run test:e2e # 浏览器端到端(13 项) -``` - -上线:commit → push `main`(自动部署)。或者直接告诉 Hermes「把某处改成什么」,我来改。 diff --git a/site.config.yaml b/site.config.yaml index ce53db743..3838bde7d 100644 --- a/site.config.yaml +++ b/site.config.yaml @@ -1,6 +1,6 @@ # ============================================================ # Jack's Blog 站点配置 -# 想改站点信息 / 文案 / 友链 / 页脚,直接改这个文件即可。 +# 想改站点信息 / 文案 / 友链 / 页脚 / 导航 / 照片墙,直接改这个文件即可。 # 改完 push 到 main,GitHub Actions 会自动部署,几分钟后生效。 # ============================================================ @@ -10,6 +10,13 @@ site: numPostsOnHomepage: 6 # 首页显示文章数 numPostsPerPage: 24 # 「全部文章」每页条数 +# 顶部导航栏 +nav: + - { label: "文章", href: "/blog/" } + - { label: "关于", href: "/about/" } + - { label: "友链", href: "/link/" } + - { label: "照片", href: "/photos/" } + # 社交链接(关于页 + 页脚) socials: - { name: GitHub, href: "https://github.com/CoderJackZhu" } @@ -29,18 +36,38 @@ friendLinks: - { name: 西电浪潮俱乐部, link: "http://www.xdu-inspur.cn", descr: "在西电的技术性交流社团" } - { name: 破碎羽翼, link: "https://miroier.github.io/", descr: "中科院软件所破碎羽翼" } +# 文章分类(content schema 的分类枚举也由这里驱动) +categories: + - "技术与工程" + - "学习与研究" + - "思考与随笔" + - "经历与记录" + # 页脚 footer: + author: "Jack" # © 行署名 since: "2020-10-26" # 建站日期(© 年份和运行天数都用它) icp: "陕ICP备2023003055号-1" icpUrl: "https://beian.miit.gov.cn/" + cdnNote: "本网站由又拍云提供加速服务" + cdnUrl: "https://www.upyun.com/" showRuntime: true # 是否显示「本站已运行 X 天」 showVisitor: true # 是否显示访问统计(不蒜子) +# 页脚链接 +footerLinks: + - { label: "RSS", href: "/atom.xml" } + - { label: "Sitemap", href: "/sitemap-index.xml" } + - { label: "GitHub", href: "https://github.com/CoderJackZhu" } + - { label: "知乎", href: "https://www.zhihu.com/people/zhu-yijie-51" } + - { label: "B站", href: "https://space.bilibili.com/355295657" } + - { label: "友链", href: "/link/" } + - { label: "照片", href: "/photos/" } + # 关于页文案(每段一行) about: paragraphs: - - "Jack,一名 LLM Agent 工程师(算法工程师),西安电子科技大学人工智能方向硕士。" + - "Jack,一名 LLM Agent 工程师(算法工程师),西安电子科技大学人工智能方向本硕。" - "此前的研究与工程经历覆盖计算机视觉、AIGC 与大模型。" - "当 AI 正在接管大部分具体实现,真正稀缺的不再是掌握哪门技术,而是判断力、品味,以及提出正确问题的能力。" - "我关心的是想法与系统之间的设计——让智能可靠地服务于真实问题,而不是追逐工具与概念的新旧。" @@ -49,3 +76,80 @@ about: # 友链页副标题 linkSubtitle: "朋友们的网站。" + +# 各页面标题 / eyebrow / 标题 / 副标题文案 +# home 的页面标题直接复用 site.title,不在此重复定义。 +pages: + home: + eyebrow: "Writing · since 2020" + heading: "最近写作" + subtitle: "Latest writing" + more: "查看全部 {count} 篇文章 →" + blog: + title: "文章" + description: "全部文章,按发布日期倒序排列。" + eyebrow: "All writing" + heading: "全部文章" + sectionHeading: "文章" + postsLabel: "posts" + about: + title: "关于" + eyebrow: "About this site" + heading: "关于" + subtitle: "这是我的个人介绍。" + link: + title: "友链" + eyebrow: "Friends" + heading: "友链" + photos: + title: "照片" + eyebrow: "Photos" + heading: "照片" + subtitle: "文章封面图集。" + notFound: + title: "404" + eyebrow: "Not found" + heading: "404:页面未找到" + +# 照片墙(从文章 frontmatter 提取,按目录顺序,封面去重保留首次出现) +photos: + - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/mouse.jpg", title: "【论文阅读】 Deep High-Resolution Representation Learning for Visual Recognition", href: "/2022/09/21/HRNet/" } + - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/除夕贺图.png", title: "Hexo博客配置Github Actions和仓库分支存储实现自动化编译部署", href: "/2024/03/03/Hexo博客配置Github Actions和仓库分支存储实现自动化编译部署/" } + - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/PicGo/202205102119630.jpg", title: "Ubuntu 20.04下Pytorch深度学习环境搭建以及常用工具配置", href: "/2022/04/10/Ubuntu 20.04下深度学习环境搭建以及常用工具配置/" } + - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/nilu1.jpg", title: "Ubuntu的基本使用", href: "/2022/11/02/ubuntu的使用/" } + - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/PicGo/moon.jpg", title: "今日随笔", href: "/2022/05/10/今日随笔/" } + - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/82DA5A8E1D99BD7DC83A051FA8EA75E2.jpg", title: "华为暑期实习面试分享", href: "/2024/04/28/华为暑期实习面试分享/" } + - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/hyy.jpg", title: "ActionFormer论文分享", href: "/2022/11/10/学术交流分享ActionFormer/" } + - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/civilization-acceleration-cover.svg", title: "当文明踩下加速踏板之后", href: "/2026/08/29/当文明踩下加速踏板之后/" } + - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/PicGo/202205102148023.jpg", title: "考研后的思考", href: "/2021/12/29/我的生活/" } + - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/20240303022754.png", title: "数据挖掘报告——MIMC数据集的预处理", href: "/2021/04/08/数据挖掘报告——MIMC数据集的预处理/" } + - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/genshin2.jpg", title: "浅谈《原神》游戏的理解", href: "/2023/02/07/浅谈《原神》游戏的理解/" } + - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/f786f54959c72a37297a42973764cd39_720.jpg", title: "淘天暑期实习计算机视觉面试凉经", href: "/2024/04/30/淘天暑期实习面试分享/" } + - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/9df566a73df3459ced3a41e6a9b124c4.jpeg", title: "现代化的包管理工具:uv", href: "/2025/04/30/现代的包管理工具uv/" } + - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/addc1330ad0be5e99fdcfcb83dbbef6a.jpeg", title: "秋招上海银行面试分享", href: "/2024/10/25/秋招上海银行面试分享/" } + - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/1c6fc333392b998f32dffef731788ea7.jpeg", title: "秋招中兴面试分享", href: "/2024/09/19/秋招中兴面试分享/" } + - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/cda763e55b037970dd17031cffcd4e97.png", title: "秋招中金所面试分享", href: "/2024/11/01/秋招中金所面试分享/" } + - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/4dd98d0dc7fdb586f07c96d9d9dbe5eb.jpeg", title: "秋招华为面试分享", href: "/2024/10/15/秋招华为面试分享/" } + - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/ed0b2439c6e30589320d7561ef5af581.jpeg", title: "秋招合肥安迅精密技术面试分享", href: "/2024/09/23/秋招合肥安迅精密技术面试分享/" } + - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/e236385b88c57c4a60ef5aaf72189cff.jpeg", title: "秋招广联达", href: "/2024/10/31/秋招广联达面试分享/" } + - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/3e5e22a30f48d04a78793025395c668b.jpeg", title: "秋招得物面试分享", href: "/2024/09/22/秋招得物面试分享/" } + - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/617da713d7b9fda5210171a556bd7f37.jpeg", title: "秋招快手面试分享", href: "/2024/09/24/秋招快手面试分享/" } + - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/9e2a0c81735df6e2537970db4d444c69.jpeg", title: "秋招招联面试分享", href: "/2024/10/19/秋招招联面试分享/" } + - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/744bb81c16f19a7793ade4c7a0ddd655.jpeg", title: "秋招提前批百度机器学习/数据挖掘/自然语言处理工程师面试分享", href: "/2024/08/06/秋招提前批百度面试分享/" } + - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/8b7a826c00d8ada33d1dfa9ac7ce64dd.jpeg", title: "秋招携程面试分享", href: "/2024/10/15/秋招携程面试分享/" } + - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/01cb6bf5523d02fb95edf8da1c02b62b.jpeg", title: "秋招比亚迪面试分享", href: "/2024/09/23/秋招比亚迪面试分享/" } + - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/5a4d35a32963632fb3d07910503c13b3.jpeg", title: "秋招淘天凉经", href: "/2024/09/19/秋招淘天面试分享/" } + - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/ec650a59372c0b622e7065b01ab37920.jpeg", title: "秋招滴滴面试分享", href: "/2024/09/28/秋招滴滴面试分享/" } + - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/53a57a8ff31e36a01cc76723d34c6235.jpeg", title: "秋招理想面试分享", href: "/2024/09/26/秋招理想面试分享/" } + - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/effa96253b0b302d9ae7cfa94c7f5ae3.jpeg", title: "秋招百信银行面试分享", href: "/2024/10/22/秋招百信银行面试分享/" } + - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/dc196f33f2ea5313a41518c2016b80cf.jpeg", title: "秋招科大讯飞面试分享", href: "/2024/10/12/秋招科大讯飞面试分享/" } + - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/65f920634dd84d2fd4d66db85d113e3f.jpeg", title: "秋招荣耀面试分享", href: "/2024/10/14/秋招荣耀面试分享/" } + - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/da31bfb39d7d0fb356ac618060ece6b7.png", title: "秋招蔚来面试分享", href: "/2024/11/01/秋招蔚来面试分享/" } + - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/b3b1b24841d210d0cbe1bf5a64b04d44.jpeg", title: "秋招虾皮面试分享", href: "/2024/10/20/秋招虾皮面试分享/" } + - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/6dd5501e98b9dfdfdb8ed3f0d19a4a19.jpeg", title: "秋招蚂蚁面试分享", href: "/2024/09/25/秋招蚂蚁面试分享/" } + - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/2349135dde1b4a4828b209c87569c4a8.jpeg", title: "秋招金山面试分享", href: "/2024/11/06/秋招金山面试分享/" } + - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/790dbf2659a8aff75e42f73ecf06fab9.png", title: "秋招面试总结分享", href: "/2024/11/30/秋招面试总结分享/" } + - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/e00a8894b3eeeffa688d3fe1b80dc395.jpeg", title: "腾讯AI Lab暑实面试分享", href: "/2024/05/28/腾讯AI Lab暑实面试分享/" } + - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/PicGo/xidian1.jpg", title: "记录我的第一次搭建博客", href: "/2020/10/31/记录第一次搭博客/" } + - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/a22477f98ae4f50717035574c2f85a32.jpeg", title: "钉钉和淘天机器学习捞暑期实习面试分享", href: "/2024/05/22/钉钉和淘天机器学习捞暑期实习面试分享/" } + - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/1cfcf9e2b6691718b5bc070c3b7f222b.jpeg", title: "阿里国际暑实面试分享", href: "/2024/05/23/阿里国际暑实面试分享/" } diff --git a/src/components/Footer.astro b/src/components/Footer.astro index 067100791..5a8a01db4 100644 --- a/src/components/Footer.astro +++ b/src/components/Footer.astro @@ -2,15 +2,15 @@ import BackToTop from "@components/BackToTop.astro"; import siteConfig from "@lib/site-config"; -const { footer } = siteConfig; +const { footer, footerLinks } = siteConfig; const sinceYear = new Date(footer.since).getFullYear(); ---