Click the preview to play the full demo (muted) · 10.75 s · 1920x1080 · 60 fps · 400-690 nm.
This is an earlier private hyperspectral reconstruction prototype. The public loop and full demo show a desktop workflow for camera acquisition, lightweight deep-learning reconstruction, 30-band spectral display across 400-690 nm, per-point spectral curves, and result saving.
I was responsible for the lightweight deep-learning reconstruction and dataset work, plus the camera acquisition, desktop UI, spectral visualization, and result-saving modules. Code and data remain private because of research and industry-collaboration constraints.
I build reliable AI applications end to end, connecting product interfaces, agent workflows, APIs, and data systems. Computational imaging is my technical edge.
AI applications
frontend + client systems
agent workflows
computational imaging
I turn AI capabilities into products people can use: streaming interfaces, local client workflows, orchestration, APIs, and data delivery. My main lane is AI full-stack engineering, with computational imaging and open-source collaboration adding technical depth.
- AI application engineering: turning LLM and agent capabilities into product flows across UI, orchestration, APIs, and data.
- Frontend and client engineering: building streaming interfaces, desktop workflows, device-facing controls, and cross-platform behavior.
- Agent workflows and data systems: working with RAG, DAG execution, model routing, MCP, SSE, RBAC, state, and storage.
- Computational imaging: turning reconstruction research into usable software through camera acquisition, spectral visualization, and result handling.
- Interface: HTML5, CSS3, JavaScript, TypeScript, React, React Flow, Zustand, Vite, Webpack, and Rspack.
- AI applications: LLM agents, RAG, LangChain, LangGraph, MCP tool calling, model routing, SSE, and WebSocket workflows.
- Services and data: Node.js, NestJS, Python, PyTorch, PostgreSQL, pgvector, Redis, DAG execution, RBAC, snapshots, and structured diff or rollback.
- Client delivery: Rust, Tauri, Git, Windows tooling, PyInstaller, camera workflows, and desktop result handling.
My coding-agent toolkit includes Kimi Code, Codex, Pi, Claude Code, Hermes, OpenCode, and ZCode. I also follow DeepSeek Harness within the broader agent tooling ecosystem. I use these tools inside a human-led loop: understand the codebase, implement the change, test edge cases, document decisions, and review the result.
I work on real issues across AI agent systems, frontend ecosystems, desktop and web tooling, and civic data. As of 2026-09-17, 94 PRs are merged across 32 upstream projects, with 78 more in review.
Recently merged across major Chinese AI agent and frontend ecosystems:
- 🐜 ant-design/ant-design#59173 · ⭐ 99.5k — fixed the Chinese contribution guide to link the English locale list in its i18n step, so contributors update both locale lists.
- 🔍 alibaba/open-code-review · ⭐ 33.5k — added Pug template support to the review allowlist (#1114), then made report writes atomic so interrupted runs cannot leave truncated output (#1160).
- 🤖 agentscope-ai/agentscope#2434 · ⭐ 31.9k — Uvicorn hot reload forced a SelectorEventLoop on Windows and broke subprocess execution; disabling reload on Windows keeps a compatible event loop.
- 💬 QwenLM/qwen-code#11300 · ⭐ 27.9k — kept branch commits made before a failing post-checkout hook, so a failed hook no longer discards committed work.
- ⚛️ alibaba/hooks#2956 · ⭐ 15.0k — kept
useLatestanduseUnmountedRefreturns as non-nullableMutableRefObjectacross the supported React type versions, backed by declaration-emission regression tests. - 🎨 DouyinFE/semi-design#3352 · ⭐ 10.4k — made ESC close only the top-most modal, so stacked modals no longer collapse together.
- 🍒 Tencent/cherry-markdown#1871 · ⭐ 4.9k — guarded pending image load and error callbacks after previewer destroy, so late events no longer touch torn-down state.
- 🧩 Tencent/tdesign-vue-next · ⭐ 2.2k — restored the Dropdown
onClickoption type (#6959) and made Menu handle functional submenu parents (#6967).
Merged in international frontend and tooling ecosystems:
- ⚡ chakra-ui/chakra-ui#10979 · ⭐ 40.6k — gave the file-upload delete trigger a proper disabled style.
- 📦 pnpm/pnpm#14708 · ⭐ 36.5k — stopped emitting empty package authors in SBOM documents.
28 merged PRs in grafana/grafana-pathfinder-app · ⭐ 19 — sustained features, fixes, and hardening that span Grafana's interactive learning app end to end: block-editor bulk actions, coda VM lifecycle, docs retrieval, and lint plus e2e coverage.
27 merged PRs in open-city-ai/haidian — selected deep dives:
🥇 Complete delivery · bilingual formal submission
Problem: A civic-data submission needed a complete, reviewable package rather than an unsupported concept.
Contribution: I delivered a scoped 41-file bilingual package spanning narrative, offline HTML/PDF, GeoJSON, metrics, sources, a manifest, and deterministic self-checks, while marking provisional geometry and non-endorsement boundaries.
PR: open-city-ai/haidian#2540 · merged for repository intake, not gallery publication or government endorsement.
🪟 Windows portability · import and worker locking
Problem: An unconditional fcntl import stopped two test modules from being collected on Windows, and worker-lock contention needed consistent cross-platform semantics.
Contribution: I reproduced the failure, introduced the guarded POSIX and Windows lock path, and added the initial regression. Maintainer review then corrected the production file-open path and strengthened its test; the previously uncollectable target suite passed 21/21 tests.
⚖️ Review semantics · blockers versus future follow-ups
Problem: A flat review-action list converted future conditions into immediate change requests, creating an intake loop that compliant edits could not close.
Contribution: I introduced explicit non-blocking follow-ups with trigger and owner fields, invalidated legacy review caches, and kept current or malformed repairs fail-closed with focused regression coverage.
PR: open-city-ai/haidian#3982; the original blocked head was re-reviewed and merged without weakening existing gates.
| Area | Project | Status | Selected work |
|---|---|---|---|
| 🎓 Interactive learning tooling | grafana/grafana-pathfinder-app | 29 PRs · 28 merged · 1 open |
Block editor bulk actions, coda VM lifecycle, docs retrieval, and lint plus e2e coverage |
| 🏙️ Civic data delivery | open-city-ai/haidian | 28 PRs · 27 merged |
Structured submissions, geometry sources, deterministic artifacts, review semantics, and a CJK font screenshot regression |
| 🤖 AI agent systems | agentscope-ai/agentscope · QwenLM/qwen-code | 2 merged · 3 open |
Windows event-loop and post-checkout commit safety merged; tool data-block replay and output-language fixes in review |
| 🧩 Frontend component ecosystems | ant-design/ant-design · chakra-ui/chakra-ui · DouyinFE/semi-design · alibaba/hooks · nuxt/ui · Tencent/tdesign-vue-next · Tencent/cherry-markdown | 8 merged · 1 open |
i18n guide links, modal stacking, non-nullable ref types, Dropdown and Menu fixes, and disabled upload triggers |
| 🔍 Code review tooling | alibaba/open-code-review | 3 PRs · 2 merged · 1 open |
Pug template support and atomic report writes merged; Jinja template support in review |
| 🔐 AI safety & evaluation | microsoft/PyRIT · wandb/rai-toolkit | 2 merged |
Feedback-dialog restore after secret confirmation; explicit adapter call-time options |
| 🛠️ Web & build tooling | pnpm/pnpm · crxjs/chrome-extension-tools · storybookjs/storybook · parcel-bundler/parcel | 2 merged · 4 open |
SBOM and sourcemap fixes merged; Next.js-Vite resolution and resolver BOM parsing in review |
| 💻 Desktop UX | desktop/desktop · kando-menu/kando | 1 merged · 1 open |
WebSocket message action merged; pull-request suggestion behavior in review |
| 🧠 Agent memory & Node.js | TencentCloud/TencentDB-Agent-Memory | 8 open |
Gateway lifecycle and env forwarding, bash 3.2 deploys, proxy preservation, SQLite filtering, and self-healing store state |
| 📱 Cross-end frontend | NervJS/taro · NervJS/taro-docs | 7 open |
Component rendering, platform API typings, Vite runner CSS behavior, and llms.txt docs |
| 🖥️ Agent desktop UI | bytedance/UI-TARS-desktop | 5 open |
Agent server streaming, MCP initialization, device actions, and workspace search ordering |
| 📖 Knowledge & RAG | Tencent/WeKnora | 2 open |
PDF text extraction and editor resource loading |
| 🧭 Search & coordinates | organicmaps/organicmaps | 1 open |
C++ search behavior for space-separated DMS coordinates |
🤖 AI agent systems · 18 open PRs
- TencentCloud/TencentDB-Agent-Memory#1388: forward
MEMORY_TENCENTDB_LLM_settings to the Gateway asTDAI_LLM_. - TencentCloud/TencentDB-Agent-Memory#1383: terminate the Gateway process tree on Windows.
- TencentCloud/TencentDB-Agent-Memory#1308: wrap UTF-8-adjacent variables in braces for bash 3.2 deploys.
- TencentCloud/TencentDB-Agent-Memory#1272: emit local-time ISO 8601 timestamps from the knowledge logger.
- TencentCloud/TencentDB-Agent-Memory#1271: replace a dead data-flow documentation link with the Auto-Sync section.
- TencentCloud/TencentDB-Agent-Memory#1173: honor
recordIdsfiltering in the SQLite L1 query path. - TencentCloud/TencentDB-Agent-Memory#1172: self-heal the store-init cache after failed initialization or a closed store.
- TencentCloud/TencentDB-Agent-Memory#1171: keep Node's global proxy dispatcher intact while loading
undici@8. - bytedance/UI-TARS-desktop#1961: prioritize source workspace results in the contextual selector.
- bytedance/UI-TARS-desktop#1960: surface MCP agent initialization failures.
- bytedance/UI-TARS-desktop#1959: add default search exclusions to the MCP filesystem server.
- bytedance/UI-TARS-desktop#1958: await asynchronous ADB device actions.
- bytedance/UI-TARS-desktop#1957: release the exclusive slot when agent-server stream startup fails.
- QwenLM/qwen-code#11794: honor the configured output language in stateless generation.
- QwenLM/qwen-code#10580: localize untitled session search in the VS Code integration.
- agentscope-ai/agentscope#2551: preserve tool data-block identity during event replay.
- Tencent/WeKnora#3228: preserve numeric rows in PDF text extraction.
- Tencent/WeKnora#3003: load editor resources for contributors.
📱 Cross-end and domestic frontend · 9 open PRs
- NervJS/taro#19491: center aspectFit images horizontally.
- NervJS/taro#19492: keep global page styles when syncing CSS in the Vite runner.
- NervJS/taro#19493: add the WeChat phone-number quota toast prop to Button and its template.
- NervJS/taro#19494: mark holdKeyboard for Baidu and pass hold-keyboard through the swan templates.
- NervJS/taro#19495: fix self-contradictory generic constraints and missing RequestParams in the request typings.
- NervJS/taro#19496: add the missing requestCommonPayment typings for WeChat payment.
- Tencent/vConsole#739: guard reserved request IDs against prototype pollution in the Network panel.
- Tencent/vConsole#737: restore inherited event properties in log output.
- baidu/amis#21517: restore list order on drag reset.
🛠️ Frontend platforms and tooling · 9 open PRs
- storybookjs/storybook#36296: skip unresolved image imports in the Next.js-Vite integration.
- storybookjs/storybook#36239: resolve styled-jsx through Next.js under strict pnpm.
- storybookjs/storybook#36238: keep pnpm catalog references during CLI upgrades.
- TanStack/router#8438: hydrate route error components consistently in the Solid router.
- TanStack/router#8283: reject non-ok JSON server function responses.
- radix-ui/primitives#4145: prevent Escape from dismissing the underlying layer.
- radix-ui/primitives#4142: finish toast swipes when pointer capture is lost.
- adobe/react-spectrum#10596: preserve the active FocusScope when a sibling unmounts.
- adobe/react-spectrum#10595: scope ariaHideOutside to the target document.
…plus single PRs across parcel, desktop/desktop, payloadcms, continue, eslint, NextChat, OpenViking, and other ecosystems — the auto-refreshed 📊 Full footprint below tracks every upstream project.
🧾 56 more projects with PRs only in review or closed without merge
- Master's student — Electronic Engineering and Information Photonics, BUPT
- Undergraduate background — Network Engineering, BUPT
dvd@linux.do · z1403594118@gmail.com



