Bilingual academic homepage for Zi Fang (方子), focused on 3D perception, embodied intelligence, and medical robotics. Chinese is the default route (/); the complete English page is at /en/.
The public site is built on the classic Jekyll architecture of RayeRen/acad-homepage.github.io: a compact masthead, persistent author profile, long-form academic content, and publication-first layout. The original MIT license and attribution are retained in LICENSE.
_pages/about.mdand_pages/en.md— Chinese and English academic content._layouts/and_includes/— masthead, author profile, page shell, assistant, and footer.assets/css/main.scss— responsive 2/12 + 10/12 classic academic layout.assets/js/assistant.js— RAG client with automatic static FAQ/on-page-search fallback.worker/andrag/— standalone Cloudflare Worker and public-only RAG pipeline.
Do not publish patents, phone/WeChat details, or unreleased papers. Publication status must be checked against Zi Fang's linked Google Scholar profile.
The homepage itself is standard Jekyll. GitHub Pages builds it with the official actions/jekyll-build-pages action. With Ruby/Jekyll installed locally:
bundle install
bundle exec jekyll serveWorker and content checks:
npm ci
npm run validate:site
npm run typecheck
npm testAfter authorized source materials change:
npm run rag:ingest
npm run rag:seed
npm testThe ingestion source defaults to /WorkSpace/Data/PersonalHomepage and can be overridden with PERSONAL_HOMEPAGE_DATA_DIR.
The downloadable bilingual public CV is rebuilt separately so private resume fields never enter the site:
conda run -n codex-tools python scripts/build-public-cv.pyThe CV script writes the reviewed site copy to files/Zi-Fang-CV.pdf. Publication PDFs supplied as research material are not copied into the public repository by default; the homepage links to public records until the distributable version and its article-specific licence are confirmed.
The nine publication and research-track figures are reproducibly extracted from the authorized thesis and paper sources with:
conda run -n codex-tools python scripts/extract-homepage-figures.pyThe site calls the standalone API at https://zi-fang-research-assistant.zi-fang-research.workers.dev. D1 FTS5, Vectorize, BGE-M3 embeddings, and BGE reranking are deployed on Cloudflare; no local GPU is required.
Qwen, GLM, DeepSeek, and Kimi are exposed through reviewed server-side aliases. The production gateway is OpenRouter, with Alibaba Cloud Model Studio retained as an alternative single-key gateway. Until the active gateway secret is configured, the API intentionally returns a degraded status and the browser answers through clearly labeled static FAQ/on-page search. Credentials must never be placed in Jekyll, GitHub Pages, or browser JavaScript.
See rag/README.md for retrieval, model switching, citations, safety boundaries, and secret configuration.
Pushes to main validate the corpus and Worker, build Jekyll, run rendered-page tests, and deploy _site through GitHub Pages. The Worker is deployed separately with:
npm run worker:deployAfter editing the site, the simplest full synchronisation command validates all changed publishable files, refreshes the public RAG corpus and deployed assistant, creates a commit, pushes main, and therefore triggers GitHub Pages:
npm run homepage:sync -- -m "同步更新主页与问答资料"For an edit that affects only the static site and does not need the assistant knowledge base refreshed, use:
npm run homepage:sync:site -- -m "更新主页内容"Both commands reject environment variables, generated local indexes, temporary files, and other blocked paths. Use the preview first when needed; it makes no change to Git, the site, or Cloudflare:
npm run homepage:sync -- --dry-run -m "同步更新主页与问答资料"For a deliberately scoped change, publish only the files that belong to that change:
npm run homepage:publish -- -m "更新项目经历配图" images/research/figures/trajectory-segmentation.pngThe scoped command can also be previewed:
npm run homepage:publish -- --dry-run -m "更新项目经历配图" images/research/figures/trajectory-segmentation.pngFor a change to the research-assistant knowledge base, add --rag. In addition to the normal site publication, it regenerates the reviewed public corpus, rebuilds and restarts the local GPU retrieval service, and deploys the Cloudflare Worker:
npm run homepage:publish -- --rag -m "更新公开研究资料" rag/corpus/curated-facts.jsonThe command refuses to publish unlisted changes, generated local indexes, environment files, or temporary files. List every intended page, image, or data file after the commit message.
The public homepage is https://squareson.github.io/.