# Henry Chen

> Agentic engineer · Fullstack developer · Photographer，常驻 Sydney, New South Wales，澳大利亚。

Henry Chen 的个人网站 —— 8 个项目、8 篇文章、91 张照片，中英双语。
本文档索引的是中文页面（/zh 前缀），它们是中文读者的规范地址；去掉 /zh 前缀即为对应的英文页面。

## 站点

- [首页](https://misoto22.com/zh): 作品、写作与摄影的总索引
- [关于](https://misoto22.com/zh/about): 个人背景与技术栈
- [经历](https://misoto22.com/zh/experience): 工作与教育经历
- [项目](https://misoto22.com/zh/projects): 作品集，含线上演示与源码
- [博客](https://misoto22.com/zh/blog): 技术写作
- [摄影](https://misoto22.com/zh/photography): 图库，附 EXIF 元数据
- [Agent Skills](https://misoto22.com/zh/skills): 可安装的 Claude Code skills
- [问答](https://misoto22.com/zh/ask): 基于本站内容的 RAG 问答
- [音乐](https://misoto22.com/zh/music): 收听记录
- [统计](https://misoto22.com/zh/stats): 公开的站点分析数据
- [联系](https://misoto22.com/zh/contact): 联系表单与社交账号

## 文章（最新 8 篇，共 8 篇）

- [关于我的数据，应该属于哪里？](https://misoto22.com/zh/blog/where-should-my-data-live): 2026 — 限制我们用好 AI 的，早就不是模型能力，而是关于我的数据不在我手里。产品随时可以被换掉，唯一让你换不动的，是沉淀在里面的上下文。我为此做了一个个人数据库，做完才发现它只是一面镜子。
- [从网站助手到个人知识接口](https://misoto22.com/zh/blog/building-a-rag-chatbot): 2026 — 本站原本只有一个带引用的 RAG 问答助手。后来它演变成 Kioku 上的两条 AI 接口：访客使用公开检索，我自己的 AI 通过 MCP 使用私人搜索与结构化工具；两者共享数据，但不共享权限。
- [Ghostty + Tmux：一个 Tab 一个项目，一屏 Claude 一屏应用](https://misoto22.com/zh/blog/my-ghostty-setup): 2026 — Ghostty 的 tab 当项目槽，tmux 当分屏管理器 —— 为什么 tab 要看得见、为什么分屏交给 tmux、以及让八个项目同时开着还不会乱的那些配置选择。
- [Claude Code 并行开发的三种方式](https://misoto22.com/zh/blog/claude-code-parallel-development): 2026 — Worktree、Agent Teams、对话内 Subagent —— 各自什么时候用、底层到底在干什么，以及我日常用下来踩到的取舍。
- [我的 Claude Code IDE：Zed 看改动，Ghostty + tmux 跑代理](https://misoto22.com/zh/blog/my-claude-code-terminal): 2026 — 为什么我把编辑器和代理分在两个 app 里、tmux 怎么让 Claude Code 会话不随窗口关闭而丢、以及那些真正让整套环境顺手的小配置。
- [我的 2026 年 Mac 应用清单](https://misoto22.com/zh/blog/my-2026-mac-apps): 2026 — 十三个让我每天开发更顺手的 Mac 应用——从终端、编辑器到语音输入、远程连接和密码管理，每个都解决一个明确的问题。
- [我如何配置 Claude Code 作为日常开发伙伴](https://misoto22.com/zh/blog/my-claude-code-setup): 2026 — 从零开始介绍 Claude Code —— 它是什么、配置分几层作用域、全局和项目层面的规则 / 插件 / Hooks / 自动记忆 / CLI 组合起来如何支撑日常开发。
- [Next.js 渲染方式详解：CSR、SSR、SSG、ISR](https://misoto22.com/zh/blog/nextjs-rendering-methods): 2025 — 用代码示例和数据流讲清楚 Next.js App Router 下四种渲染策略的区别和实际用法。

## 项目

- [INOVIT 经销商门户](https://misoto22.com/zh/projects/dealer-portal): B2B 电商平台，替换遗留 .NET ERP —— 49 个 API 端点、4 区域数据库路由、跨仓库 OpenAPI 类型生成、共享生产 SQL Server 上的零停机迁移。 — Stack: React 19, TypeScript, Django 5, DRF, SQL Server, Ant Design 6
- [EFFICIENT 系统](https://misoto22.com/zh/projects/efficient-system): 一套多租户的轮毂轮胎 ERP 与电商平台 —— 一个 Django 后端、一套共享 React UI kit、五个门户、一个店面、一个带 MCP server 的 Rust CLI。我负责的是它们下面那一层：一份 160 条规则、任何仓库都不许复制的工程契约，以及让十五个仓库真正守住它的 agent 工作流。 — Stack: Agent Skills, Claude Code, Python, Django, React
- [SlateCourt 羽毛球场馆与约球应用](https://misoto22.com/zh/projects/slatecourt): 面向悉尼羽毛球玩家的移动优先 PWA：54 个场馆目录与实时场地空位（汇总自场馆公开的预订页面），打球账本支持费用分摊与装备记录，并带好友、小组与通知。个人非商业演示项目 —— 双语、自托管，注册仅限邀请码。 — Stack: Next.js 16, TypeScript, FastAPI, Python, PostgreSQL, Redis
- [个人网站](https://misoto22.com/zh/projects/personal-website): 双语作品集网站，包含基于站点自身内容的 AI 助手、隐私优先的分析、博客、摄影画廊与 WCAG AAA 无障碍 —— 17 个页面、17 个 API 路由，自托管 Docker 部署，独立开发。 — Stack: Next.js 16, React 19, TypeScript, Tailwind CSS, PostgreSQL + pgvector, Docker
- [Lumia Crystal 电商平台](https://misoto22.com/zh/projects/lumia-crystal): 水晶珠宝品牌的 Headless 电商平台。基于 Next.js 15 和 Shopify Storefront API，支持实时商品目录、购物车、搜索筛选，响应式设计。 — Stack: Next.js, TypeScript, Tailwind CSS, Shopify API, React
- **Smart Vision Hat 智能视觉帽**: 面向视障人士的 IoT 可穿戴设备。基于树莓派和 YOLOv8 目标检测，提供实时语音反馈和紧急警报。 — Stack: Raspberry Pi, Python, Flask, Firebase, YOLOv8, OpenCV
- **并行鱼群搜索算法**: 高性能计算项目，用 C、OpenMP 和 MPI 模拟鱼群行为。在 Setonix 超算上通过线程和进程级优化实现了大幅加速。 — Stack: C, OpenMP, MPI, Bash
- **澳洲 EOI 移民打分器**: 澳洲技术移民 EOI 打分计算器。支持实时计算、中英双语、响应式设计和深浅色主题。 — Stack: Next.js, TypeScript, Tailwind CSS, i18next, Framer Motion

## Agent Skills

- [email](https://misoto22.com/zh/skills/email): Draft, reply to, forward, format, send, or verify outbound email under a policy — drafting is the default, and sending stays blocked until a narrow local scope authorizes that exact message. Use when recipients, external disclosure, attachments, authorization, HTML bodies, or Sent-folder confirmation matter, and on requests such as write an email to, reply to this thread, draft a note to the client, forward this with a cover note, send it and confirm it arrived, 写封邮件给, 回一下这个, 帮我发出去, 这封邮件再改改. Not for triaging or summarising a mailbox you are not answering, chat and internal notes, or rewriting how a message sounds without sending it.
- [tempering](https://misoto22.com/zh/skills/tempering): Rewrites blunt, sarcastic, or impatient workplace messages into professional ones that retain the underlying request, offering three registers from collegial to formally documented. Use when a draft is addressed to a colleague, manager, client, vendor, or cross-team counterpart and carries visible frustration — sarcasm, blame, exasperation, ultimatums, or lines such as "are you serious", "脑子有问题", "到底做不做", "有没有一个准信". Trigger on requests to make a message professional, soften it, tone it down, check whether it is too harsh, or work out how to say something without damaging the relationship, including 润色一下, 帮我改得客气点, 这样发出去会不会太冲, 怎么说才不得罪人. Also handles the reverse direction — plain-language interpretation of corporate phrasing when asked what a message actually means, 说人话, or decode this. Not for marketing copy, resumes, blog posts, or grammar cleanup without interpersonal stakes.
- [personal-blog](https://misoto22.com/zh/skills/personal-blog): Use when researching, outlining, drafting, revising, or polishing a personal blog article—an explainer, idea essay, personal essay, cultural review, or technical post—or when asked to preserve voice in a personal blog draft, turn notes into a personal blog post, 写博客, or 写一篇博客. Not for newsletters, magazine profiles, manuscript editing, email, chat, repository documentation, marketing copy, fiction, academic papers, or generic grammar cleanup.
- [repo-polish](https://misoto22.com/zh/skills/repo-polish): Build or restore a repository's public face — README, hero banner, LICENSE, SECURITY.md, CONTRIBUTING.md, the forge's one-line About text, and its GitHub or GitLab topics — written from what the repository's own files say. Every pass runs unless flags narrow it. Use when asked to 装修一下仓库, 仓库装修, 美化仓库, 把开源文件补齐, 写个 readme, 加个 license, 补个安全策略, 设置仓库 topics, 仓库描述写一下, polish this repo, set the repo up properly, add a security policy, fill in the repository description, or tag a repository on GitHub. Not for API reference docs, changelogs, release notes, marketing landing pages, or the source code itself.
- [sync](https://misoto22.com/zh/skills/sync): Bring the local repository in line with its remote — fetch, prune, fast-forward the base branch, and report what diverged. It never rebases a feature branch, never resolves a conflict, and never discards a local commit. Use when asked to sync, pull latest, update from main, get up to date, catch up with remote, 同步一下, 拉一下最新的, 更新到最新, 跟 main 对齐, 更新一下代码. Not for shipping changes, deleting merged branches, or resolving a merge conflict.
- [ship](https://misoto22.com/zh/skills/ship): Ship the current changes as a merged pull request — branch off, run the project's tests, commit, open the PR, wait for CI, merge, and clean up the worktree. Runs a preflight first that marks each step RUN or SKIP, so a clean tree on the base branch exits without doing anything. Use when asked to ship it, ship this, land it, get this merged, open a PR and merge it, push this up and merge, 发出去, 合掉, 开个 PR 合了, 把这些改动提上去, 推上去合并. Not for tagging a release, publishing a package, deploying, or writing a commit message without pushing it.
- [cleanup](https://misoto22.com/zh/skills/cleanup): Remove what shipping left behind — local and remote branches whose pull request merged, worktrees for those branches, and ignored residue a move stranded, such as a __pycache__ that git mv could not see. Every deletion is verified against the forge first, and anything unmerged or unexplained is reported rather than removed. Use when asked to clean up, tidy the repo, delete merged branches, remove stale branches, prune the remote branches, clear out old worktrees, 清理一下, 清掉合并过的分支, 删掉没用的分支, 清理远程分支, 收拾一下仓库. Not for discarding uncommitted work, resetting a branch, or removing untracked files you have not been shown.
- [retitle](https://misoto22.com/zh/skills/retitle): Normalize agent conversation titles onto a dated `MMDD｜类型｜主题` scheme across Codex, Claude Code, and any client that exposes its session list — the date comes from creation time, the middle field from a closed set of nine types, and every rename is proposed as a two-column table before a single title is written. Use when asked to 规范对话名称, 整理会话标题, 统一对话命名, 批量重命名会话, 会话名太乱了, clean up my conversation titles, rename my chat sessions, or make my session names consistent. Not for renaming projects, folders, git branches, worktrees, or files; not for editing, archiving, pinning, or deleting the conversations themselves.
- [synastry](https://misoto22.com/zh/skills/synastry): Use when two people's birth details need an uncertainty-aware JSON v2 synastry calculation, including 合盘, 星盘配对, exact times, bounded time windows, or date-only records. Not for interpreting an existing v2 artifact, legacy TXT, one-person natal charts, transits, forecasts, predictions, or compatibility scores.
- [synastry-reading](https://misoto22.com/zh/skills/synastry-reading): Use when $synastry hands off a JSON v2 artifact, or when someone supplies a synastry-chart schema 2.0 JSON path or object and asks for 合盘解读, interpretation, relationship dynamics, or an evidence-linked Markdown report. Not for legacy TXT, raw birth details, one-person natal charts, recalculation, transits, forecasts, predictions, or compatibility scores.
- [natal-chart](https://misoto22.com/zh/skills/natal-chart): Compute one person's natal chart from an exact birth date, minute, and place — planet positions with sign, house, dignity and retrograde state, the four angles, intra-chart aspects, sect, and the classical lots, written as canonical JSON plus data-only Markdown. Use for 本命盘, 星盘, 出生星图, natal chart, birth chart, my rising sign, my chart's aspects, or where a planet sits. Not for two-person 合盘, interpreting a chart that already exists, transits, progressions, returns, or any dated prediction.
- [natal-reading](https://misoto22.com/zh/skills/natal-reading): Explain a natal chart artifact someone already has — what the rising sign shapes, where the sect light sits, which aspects are tight enough to lean on, and what the angles and lots add. Writes a reader report plus an auditable evidence file, and a shareable ink-wash page on request. Use for 解读星盘, 看本命盘, 我的上升是什么意思, or asking what a placement or aspect pattern means. Not for computing a chart from raw birth details, 合盘 between two people, transits, progressions, returns, or predicting a dated event.
- [bazi-chart](https://misoto22.com/zh/skills/bazi-chart): Calculate one reusable BaZi chart from a named person's exact birth date, minute, and birthplace, write canonical JSON plus data-only Markdown, then start the natal reading automatically. Use for 八字排盘, 生辰八字, four pillars, or informal single-person birth details. Not for two-person compatibility, existing-chart interpretation, Da Yun, annual luck, or event forecasts.
- [bazi-reading](https://misoto22.com/zh/skills/bazi-reading): Interpret a completed single-person BaZi JSON chart or equivalent verified four-pillar data as an evidence-linked static natal report. Use when a calculator hands off its artifact or someone asks to 解读八字, 看命局, explain day-master strength, structure, or favorable elements from an existing chart. Not for raw birth details, relationship matching, luck cycles, dated predictions, or incomplete source data.
- [bazi-compatibility](https://misoto22.com/zh/skills/bazi-compatibility): Compare two people from reusable BaZi chart JSON files, two complete birth records, or one of each; write auditable interaction data and transparent general or relationship-specific scores before automatic interpretation. Use for 八字合婚, 合八字, two-person compatibility, 配不配, or whether two charts work together. Not for one-person natal work, reading an existing comparison, forecasting, or missing birth minutes.
- [bazi-compatibility-reading](https://misoto22.com/zh/skills/bazi-compatibility-reading): Interpret a completed BaZi compatibility JSON artifact or equivalent verified comparison as a balanced, directional, evidence-linked relationship report. Use after the compatibility calculator or when asked to explain general, romance, marriage, friendship, family, or work scores already computed for two charts. Not for raw birth records, one-person readings, recalculation, predictions, or a binary destiny verdict.
- [ziwei-chart](https://misoto22.com/zh/skills/ziwei-chart): Place one twelve-palace Zi Wei Dou Shu 命盘 from someone's stated birth moment, birthplace, and gender, recording palaces, stars, 生年四化, and 大限 windows as reusable placement data. Use for 紫微斗数, 紫微排盘, 排紫微, 紫微命盘, 十二宫, or purple star astrology. Not for 八字 four pillars, matching two people, comparing two systems against each other, 流年 or monthly transformations, or a 命盘 that has already been placed.
- [ziwei-reading](https://misoto22.com/zh/skills/ziwei-reading): Interpret an already-placed Zi Wei 命盘 artifact, or equivalent verified twelve-palace data, writing a reader report plus a separate audit artifact and, when asked, an ink-wash HTML poster. Use for 解读紫微, 看命盘, 看十二宫, or explaining the stars sitting in 命宫, the 生年四化, and what each 大限 window emphasizes. Not for unplaced birth records, 八字 four pillars, comparing two systems against each other, matching two people, 流年, or dated predictions.
- [bazi-ziwei-cross](https://misoto22.com/zh/skills/bazi-ziwei-cross): Read one person's finished 八字 artifact and finished 紫微 artifact against each other, recording every place the two systems agree, complement, or flatly contradict, without merging them into a single number. Use for 八字紫微综合, 双系统印证, 两盘合参, or asking whether the two systems say the same thing about one person. Not for placing either 命盘, reading one system by itself, matching two people, or forecasting.
- [logo-banner](https://misoto22.com/zh/skills/logo-banner): Create cohesive raster logo, app-icon, favicon, and repository-hero systems through ChatGPT Image when a user asks to design or refresh visual identity, a logo, a banner, branding assets, or light and dark brand variants; stop clearly when the host lacks that generator rather than substituting another tool; not for code-drawn SVG icons, general website layout, or ordinary photo retouching.
- [photo-abstract-editorial-native](https://misoto22.com/zh/skills/photo-abstract-editorial-native): Assemble a source-faithful photograph with a supplied editorial abstraction panel as a sharp comparison board, preserving orientation, aspect ratio, source provenance, and lower-panel scale. Use for original-versus-abstract photography diptychs, photo comparison cards, or repairing blurred and stretched editorial boards; not for generating lower artwork or replacing a separately licensed art-direction skill.

## 联系方式

- 邮箱: henrycxw@gmail.com
- GitHub: https://github.com/Misoto22
- LinkedIn: https://linkedin.com/in/henry-misoto22
- X: https://x.com/misoto222
- Instagram: https://instagram.com/hry.photography
- Unsplash: https://unsplash.com/@misoto22

## 可选

- [供 LLM 使用的全站内容](https://misoto22.com/zh/llms-full.txt): 本文档的展开版，含文章全文
- [Atom 订阅源](https://misoto22.com/feed.xml): 英文博客文章
- [Sitemap](https://misoto22.com/sitemap.xml): 两种语言的全部规范 URL
- [OpenAPI 描述](https://misoto22.com/openapi.yaml): 公开的只读 API
- [API catalog](https://misoto22.com/.well-known/api-catalog): RFC 9727 linkset
