
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. |
Notes · LLM Paper Wiki · Agent Context & Memory Guide (earlier reading)
As of 2026-10-30
| Project | PRs | Selected contributions |
|---|---|---|
| DeepTutor AI learning and research platform |
2 | Bounded latest-message reads in long sessions. #2042 |
| AxonHub LLM API gateway |
12 | Fixed tool-call ordering and audio-aware empty-response detection. #2633 #2634 |
| AgentField Agent backend framework |
13 | Added harness provider preflight and fixed memory-key matching. #1069 #1136 |
| Basic Memory AI memory and knowledge base |
2 | Synced relation embeddings after resolution and corrected invalid-locator errors. #1884 #1885 |
| FastMCP TypeScript MCP server framework |
5 | Fixed duplicate tool registration and same-URI resource replacement. #477 #476 |
| OpenLIT Agent observability and evaluation |
1 | Added OpenCode lifecycle, token and cost telemetry. #1591 |
| MCP-Use MCP application framework |
1 | Fixed UTF-8 decoding of MCP App HTML for Chinese text and emoji. #2632 |
| Vibe-Trading AI trading agent |
2 | Aligned options volatility with bar cadence and fixed trade-journal format detection. #1753 #1766 |
View all 47 merged PRs across 13 projects
PR counts verified on 2026-10-30. Star badges show 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 · 13 merged
- #1141 — Formatted Go packages without recursively processing the same files twice.
- #1140 — Drained accepted MCP work between tests to isolate shared concurrency state.
- #1137 — URL-encoded memory subscription filters to preserve special characters.
- #1129 — Respected numeric Retry-After hints as minimum wait times.
- #1136 — Matched memory subscription keys literally, including regex characters.
- #1109 — Stopped retries for permanent execution-status callback failures.
- #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 · 5 merged
- #477 — Kept the last duplicate tool definition so listings match calls.
- #476 — Replaced duplicate resources by URI so reads, embedding and removal agree.
- #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.
Basic Memory · 2 merged
- #1884 — Refreshed relation embeddings after forward-reference resolution.
- #1885 — Returned 400 for malformed memory-context locators instead of a server error.
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 · 3 merged
- #1392 — Parsed complete numeric tool parameters instead of accepting truncated prefixes.
- #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 · 2 merged
- #2042 — Bounded latest-message queries instead of fetching the full session history.
- #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

