I'm a master's student in Computer Science at the University of Hong Kong, currently interning at Ant Group on AI for quantitative research. I build agents that turn existing factors into trading strategies and backtest them, and I'm exploring how they can use backtesting feedback to discover new factors. Previously, I worked on agent evaluation, harnesses, and full-duplex multimodal interaction at Cybopal, and interned at Kuaishou.
|
A CLI for paired A/B tests of Skills, rules files, and MCP setups. Measures task quality, trigger behavior, and token cost, with replayable records and evaluation budgets. Available on npm. |
|
A testbed for stateful Chinese tool use, with state simulation, fault injection, and final-state and trajectory grading. Studies post-training and closed-loop execution through small-model proposals, validation, and planner fallback. |
Notes · LLM Paper Wiki · Agent Context & Memory Guide (earlier reading)
35 merged PRs · 12 upstream projects As of 2026-10-18
| Selected projects | PRs | Selected contributions |
|---|---|---|
| AxonHub LLM API gateway |
12 | Fixed tool-call/output ordering and audio-response detection across API conversions. #2633 #2634 |
| AgentField Agent backend framework |
7 | Added harness preflight checks; corrected memory and cost reporting in the Python SDK. #1069 #1106 |
| FastMCP TypeScript MCP server framework |
3 | Added OpenAPI object-path parameters; fixed required JSON bodies and stdio shutdown. #433 #434 |
| OpenLIT Agent observability and evaluation |
1 | Added OpenCode integration with lifecycle telemetry, token/cost accounting, and bounded event delivery. #1591 |
| MCP-Use MCP application framework |
1 | Fixed UTF-8 decoding of MCP App HTML so Chinese text and emoji render correctly. #2632 |
| Vibe-Trading AI trading agent |
2 | Aligned options-pricing volatility with bar cadence and fixed trade-journal format detection. #1753 #1766 |
| CopilotKit Frontend framework for agents |
1 | Fixed runtime route-boundary checks for requests with similar path prefixes. #7341 |
| GPT Researcher Autonomous research agent |
2 | Fixed research-context merging and fallback for empty retrieval results. #2104 |
View all 35 merged PRs across 12 projects
PR counts verified on 2026-10-18. Star badges show dynamically updated upstream repository stars.
AxonHub · 12 merged
- #2634 — Recognized message audio as response content, preventing unnecessary empty-response retries.
- #2633 — Kept tool outputs adjacent to their calls when converting Responses API input.
- #2572 — Placed aggregated citations in the top-level response field without leaking transformer metadata.
- #2561 — Preserved refusal, audio, logprobs, and reasoning when aggregating chat streams.
- #2519 — Preserved allowed-tool restrictions across Chat Completions routes.
- #2517 — Kept the template popover scrollable inside the profiles dialog.
- #2501 — Preserved the User-Agent required by providers on outbound requests.
- #2499 — Used the inbound request body when applying set_if_absent overrides.
- #2484 — Corrected embedded fixture paths for the filesystem API.
- #2423 — Preserved DeepSeek native web-search tools in Anthropic request handling.
- #2414 — Mapped reasoning_effort: none to Bailian's thinking-disable option.
- #2370 — Accepted application/json for image-edit requests in passthrough mode.
AgentField · 7 merged
- #1106 — Fixed missing-key detection in memory.exists() while preserving stored falsy values.
- #1105 — Reported provider-confirmed zero cost as known instead of unknown.
- #1100 — Made unrecognized async environment flags fall back to the actual class defaults.
- #1082 — Aligned AGENTFIELD_ASYNC boolean parsing with the repository's environment-variable conventions.
- #1078 — Prevented rate-limiter jitter from changing the global random state.
- #1072 — Skipped schema output directories when harness runs do not use a schema.
- #1069 — Added provider availability checks before TypeScript agent harness runs.
FastMCP · 3 merged
- #442 — Sent an empty JSON object for required request bodies when no properties are supplied.
- #434 — Closed framework-owned stdio sessions and transports on stop, including cancellation and setup-failure cleanup.
- #433 — Added OpenAPI simple-style serialization for flat object path parameters.
OpenLIT · 1 merged
- #1591 — Added OpenCode integration with lifecycle telemetry, token/cost accounting, and bounded non-blocking event delivery.
MCP-Use · 1 merged
- #2632 — Decoded MCP App HTML blobs as UTF-8 so Chinese text and emoji render correctly.
Vibe-Trading · 2 merged
- #1766 — Corrected Futu journal format detection so generic column aliases do not silently zero out fills.
- #1753 — Annualized options-pricing volatility using the backtest's actual bar cadence.
CopilotKit · 1 merged
- #7341 — Enforced base-path segment boundaries in single-route runtime matching.
GPT Researcher · 2 merged
- #2105 — Fell back when retriever content became blank after normalization.
- #2104 — Preserved complementary web-research context when combining sources.
MCPHub · 2 merged
- #1315 — Matched both Windows and POSIX paths in the jose test transform so affected suites can load.
- #1314 — Fixed MCPB installation on Windows by keeping the rename destination absent before moving the extracted bundle.
DeepTutor · 1 merged
- #1588 — Recognized vision support in Gemini model IDs with a models/ prefix.
PR-Agent · 1 merged
- #3639 — Created a missing changelog file when publishing generated updates.
Agent-For-Exam · 2 merged

