AI Agents & LLM Systems Engineer | Formerly @ Moonshot AI (Kimi) | MS CS @ HKU | Champion, Shanghai Global AI Contest | 3x ACM-ICPC Silver Medalist | Former Intern @ Baidu, Maimai, Kuaishou
- 280+ merged upstream PRs, with fixes in vLLM (9 merged), Mooncake (24 merged), Qwen Code (51 merged), Microsoft Agent Framework (20 merged), AstrBot (30 merged), Google ADK (10 merged), Inspect AI (18 merged), Hugging Face Transformers (1 merged), and PyTorch (5 merged).
- Selected public projects led by CoreCoder, FindJobs-Agent, RepoWiki, and ContractGuard.
| Area | Project | Stars | Notes |
|---|---|---|---|
| Coding agents / evals | CoreCoder | 1.5k+ | 512K lines of Claude Code → 1,400 lines of Python. Every key architectural pattern, runnable. Any LLM. 7 architecture deep-dive articles. |
| Applied agents | FindJobs-Agent | 200+ | LLM-powered job toolkit: skill gap analysis, mock interviews, resume optimization, and job structuring. |
| Codebase maps | RepoWiki | 200+ | Open-source DeepWiki alternative: CLI/browser wiki generation, PageRank file ranking, Mermaid diagrams, and reading guides. |
| Applied agents | ContractGuard | 100+ | AI agent that reviews contracts for red flags before you sign: unfair terms, missing protections, and plain-English explanations. |
| Codebase maps | GitSense | 100+ | AI-powered contribution finder and repo radar: find matching issues, then check PR merge signals before spending a weekend. |
| Code understanding | CodeABC | new | AI code reader for non-programmers: plain-language file guides, hover annotations, a terminology dictionary, Q&A, and natural-language edits. |
| Coding agents / evals | AgentProbe | new | Pytest plugin for regression-testing AI agents: snapshot baselines, semantic comparison, and mock LLMs. |
| Coding agents / evals | AnyCoder | new | AI coding agent CLI supporting 100+ LLMs via litellm, with dangerous command blocking, parallel tools, and session persistence. |
| Coding agents / evals | CodeJoust | new | CLI arena for AI coding agents: isolated git worktree runs, test/cost/diff/time scoring, and pip install codejoust. |
| Coding agents / evals | LiteBench | new | Pip-installable LLM/agent benchmark CLI + web dashboard, with agent mode, custom YAML, LLM-as-judge, and 100+ litellm models. |
| Agent tooling | RuleForge | new | Auto-generate AI assistant rules (CLAUDE.md, .cursorrules, copilot-instructions) from codebase analysis. |
| LLM tooling | PromptDiff | new | Semantic diff for LLM prompts: compare prompt versions like git diff. |
| LLM tooling | TokenTracker | new | Drop-in LLM cost tracker: change one import line and see where the money goes. OpenAI, OpenRouter, Azure, Ollama. |
| LLM tooling | BatchLLM | new | Batch processing for LLM APIs: CSV/JSONL in, results out, with concurrency, retries, checkpointing, and cost tracking. |
| Applied agents | IslandEscape | new | 2D pixel-art survival game where four LLM agents play the islanders — each with a personality, negotiating trades in natural language and forming alliances; race them to 100 coins to escape. |
| Agent / MCP / CI tooling | agentcikit | new | One CLI for AI-agent, MCP, and open-source work: diagnose CI failures into repro plans, pack issue-specific context for coding agents, gate and replay MCP servers, and test tool-call safety. Bundles ci-repro, patch-context, mcp-gate, mcp-replay, and tool-fence. |
| Coding agents / evals | IssueBenchKit | new | Turn real GitHub issues and local bugs into small, reproducible coding-agent benchmark tasks with before/after scoring and HTML reports. |
| Agent observability | FlightBox | new | Black-box flight recorder for AI agents: record, redact, replay, and diff local agent sessions. |
| Quant / RL | DRL-MultiFactorTrading | new | Deep-RL trading: Double DQN with Transformer attention over a Fama-French-style multi-factor model, plus adaptive risk and volatility targeting. |
| Research | adversarial-refinement-imputation | new | Companion code for the MiLeTS 2026 paper adapting R3GAN to multivariate time-series imputation — a clearly-scoped negative result. |
| Research | TrajBias | new | A study of structural biases in LLM-as-judge evaluation of agent trajectories. |
| Project | PR | What I Fixed |
|---|---|---|
| vLLM (86.2k★) | #37884 | RoBERTa's in-place position_ids accumulation bled into CUDA-graph padding, crashing BGE-M3 after ~4k requests. |
| vLLM (86.2k★) | #38732 | Fix bench_serve UTF-8 decode crash on split multi-byte chars in streaming chunks |
| vLLM (86.2k★) | #37727 | Responses API instructions were leaking across turns through the previous_response_id chain. |
| vLLM (86.2k★) | #43243 | Qwen3 XML tool-call params now parse as JSON first, so null/false survive streaming instead of being rejected as Python literals. |
| vLLM (86.2k★) | #37699 | Fix weight offloading ignoring VLLM_WEIGHT_OFFLOADING_DISABLE_PIN_MEMORY in prefetch offloader |
| vLLM (86.2k★) | #40789 | Taught the V1 ubatch wrapper to unwrap tuple model outputs, unblocking DBO and speculative decoding on tuple-returning models. |
| vLLM (86.2k★) | #44821 | Prefix DeepSeek V4 MTP projection layers so compressed-tensors can match artifact-side target and ignore rules during draft model loading |
| vLLM (86.2k★) | #42679 | Guard flash-attn rotary imports so FA4 environments fall back cleanly when flash_attn.ops.triton.rotary is absent |
| vLLM (86.2k★) | #37301 | Base64 JPEG video frames returning empty metadata: populate frame count, fps, duration |
| Mooncake (5.8k★) | #1629 | GB200 MNNVL EP hang: cudaMalloc → cuMemCreate(FABRIC) + cuMemMap for cross-node NVLink |
| Mooncake (5.8k★) | #1644 | MNNVL warmup hang: skip redundant handshake for fabric-connected nodes |
| Mooncake (5.8k★) | #2570 | Integer overflow in BatchOffload for >4 GiB objects: sum slice sizes in uint64_t and reject objects exceeding the uint32_t record value_len, instead of silently truncating |
| Mooncake (5.8k★) | #2311 | Duplicate rpc_meta re-publishes are idempotent when the HTTP body is unchanged, and still rejected when a value actually changes. |
| Mooncake (5.8k★) | #1825 | Fix P2PClientService::Put silently swallowing write errors: propagate actual error codes for non-idempotent failures |
| Mooncake (5.8k★) | #2651 | Skip bucket files with non-numeric names instead of aborting Init |
| Mooncake (5.8k★) | #2629 | Don't abort client init on a malformed MC_MS_AUTO_DISC value |
| Mooncake (5.8k★) | #2610 | A refactor had dropped the per-task request pointer in RdmaTransport::submitTransfer, leaving every downstream task null and breaking status, retry, and accounting reads. Traced it back and restored the association. |
| Mooncake (5.8k★) | #1728 | Hard pin for eviction-protected objects: model weights never get evicted, const field + BatchEvict skip + backward-compat serialization |
| Mooncake (5.8k★) | #1719 | Add ObjectDataType metadata classification for KV cache, weights, tensors, and snapshots, with backward-compatible serialization and Python bindings |
| Mooncake (5.8k★) | #2402 | Reject failed Python buddy-allocator backing buffers instead of inserting null raw buffers into managed slabs |
| Mooncake (5.8k★) | #2628 | Fix source refcnt leak in CopyEnd/MoveEnd on invalid source |
| Mooncake (5.8k★) | #2500 | Don't fail bundle cleanup when per-key remove retry succeeds |
| Mooncake (5.8k★) | #1831 | TENT NVLink IPC fix: use base pointer for sub-allocated GPU tensors, porting #1622 fix to TENT path |
| Mooncake (5.8k★) | #2606 | Map cudaStreamQuery for the intra-node NVLink build |
| Mooncake (5.8k★) | #1626 | Silenced error log spam for non-memory replicas in metadata store |
| Mooncake (5.8k★) | #2506 | Parse string booleans for enable_ssd_offload in from_file |
| Mooncake (5.8k★) | #2641 | Guard MC_TCP_SLICE_SIZE parsing against std::stoull throwing |
| Mooncake (5.8k★) | #2627 | Guard against null endpoint_store_ in UrmaContext destructor |
| Mooncake (5.8k★) | #2403 | Clean up a failed io_uring sub-batch init so a half-prepared transfer batch can't carry broken state into later setup. |
| Mooncake (5.8k★) | #2602 | Return HTTP 500 when is_exist reports an error in handle_exist |
| Mooncake (5.8k★) | #2617 | Associate task.request in EFA/Kunpeng submitTransfer |
| Mooncake (5.8k★) | #2619 | Fix signed-char isxdigit UB in EFA smaps page-size parsing (follow-up to #2504) |
| Mooncake (5.8k★) | #2460 | Support EulerOS in dependencies installer |
| PyTorch (101.8k★) | #188027 | Initialize r in the Laguerre and Legendre polynomial helpers so they stop returning uninitialized memory on the boundary path (shows as Closed; landed via pytorchmergebot) |
| PyTorch (101.8k★) | #187643 | Fix a ValueError in the stale_issues workflow's parse_older_than on non-leap years, where a naive Feb 29 offset crashed the run (shows as Closed; landed via pytorchmergebot) |
| PyTorch (101.8k★) | #188022 | Guard the CuTeDSL topk override against a non-current CUDA device so it stops dispatching on the wrong device (shows as Closed; landed via pytorchmergebot) |
| PyTorch (101.8k★) | #187262 | Remove the obsolete setuptools upper bound so builds resolve a current toolchain instead of pinning a stale one (shows as Closed; landed via pytorchmergebot) |
| PyTorch (101.8k★) | #176100 | Fix user-defined Triton kernel name mangling in the Inductor codegen so distinct kernels stop colliding in generated code (shows as Closed; landed via pytorchmergebot) |
| DeepSpeed (42.7k★) | #8049 | Eigenvalue monitor values were computed but never logged; wired them through so they actually land in the record. |
| Transformers (162.6k★) | #44710 | AutoProcessor.from_pretrained was silently dropping hub kwargs like revision and token. |
| ms-swift (14.8k★) | #9642 | Empty rejected_messages now fail fast in dataset prep instead of crashing DPO mid-training. |
| ms-swift (14.8k★) | #9605 | Different-format images collided in the temp image cache; folded mode and size into the key. |
| ms-swift (14.8k★) | #9612 | _replace_system was flattening non-string prefix elements, stripping the structured content out of templated system prompts. |
| SGLang (30.3k★) | #20739 | Fix hybrid_linear_attn_backend crash when used with ngram speculative decoding |
| SGLang (30.3k★) | #21472 | Fix PicklingError with --backend diffusers on non-T2I models |
| TRL (18.8k★) | #6054 | An already-transformed dataset in SFT prep now fails fast, instead of silently producing wrong training batches. |
| TRL (18.8k★) | #6063 | Preserve vllm prompt special tokens |
| Triton (19.6k★) | #9613 | Fix AxisInfo correctness: signed constants, unknown shift divisibility, and shift UB guards |
| Triton (19.6k★) | #10689 | Keep at least one config when a fractional top_k rounds to zero |
| Triton (19.6k★) | #10687 | is_power_of_two(0) was returning True. |
| LiteLLM (53.6k★) | #26401 | Fix LITELLM_LOG=INFO missing verbose_logger: proxy INFO logs now include all verbose logger sources |
| LMCache (10.5k★) | #3245 | Retain producer-side CUDA IPC events across MP store/retrieve so daemon IPC handles don't dereference collected events. |
| LMCache (10.5k★) | #3282 | Handle HND GPU KV layouts in MP KV transfer, which previously mishandled that tensor format. |
| FlashInfer (5.9k★) | #2756 | Fix autotuner crash when input tensor is None: proper None-checking for optional inputs (fixes #2749) |
| FlashInfer (5.9k★) | #2772 | Fix compilation error: add missing <optional> header for std::optional usage in CUTLASS headers |
| Google Gen AI SDK (3.8k★) | #2564 | Keep Live Music API keys out of websocket URLs by relying on request headers instead of duplicating secrets in query strings |
| verl (22.4k★) | #6620 | Derived the colocated vLLM weight-sync ZMQ socket rank from the DP and TP ranks, so DP workers stop colliding on one receiver. |
| Project | PR | What I Fixed |
|---|---|---|
| OpenClaw (382.9k★) | #41271 | Log auth profile resolution failures instead of swallowing silently |
| OpenClaw (382.9k★) | #41259 | Propagate memory directory creation failures instead of continuing after a failed ensureDir |
| OpenClaw (382.9k★) | #96456 | Clip progress text on code-point boundaries to avoid lone surrogates |
| OpenClaw (382.9k★) | #106603 | Use the canonical shortenHomePath in the sandbox-root escape error so the reported path matches the rest of the UI. |
| OpenClaw (382.9k★) | #96562 | Keep sibling dirs that share the home prefix unshortened in tool path display |
| Qwen Code (26.0k★) | #4716 | Routed /bug, /docs, and /insight browser launches through the secure opener so headless environments stop crashing on raw open. |
| Qwen Code (26.0k★) | #4829 | Added a timeout to Qwen OAuth refresh so a stalled refresh endpoint can't hang the CLI on auth recovery. |
| Qwen Code (26.0k★) | #5946 | Isolate Anthropic SDK abort listener leak with per-request child controllers |
| Qwen Code (26.0k★) | #4622 | Kept assistant tool calls adjacent to their results, so OpenAI-compatible providers stop rejecting repaired histories. |
| Qwen Code (26.0k★) | #5071 | Submit fast tool results after stream end, so a race at the tail of streaming can't strand completed calls. |
| Qwen Code (26.0k★) | #5058 | Stopped stale tool-schema recall from slipping outdated tool names back into later planning turns. |
| Qwen Code (26.0k★) | #5020 | Drop tool calls after a cancellation so an aborted turn can't leak stale requests into the next payload. |
| Qwen Code (26.0k★) | #5070 | Skip expired live agents in focus navigation so stale background-agent rows can't grab keyboard focus. |
| Qwen Code (26.0k★) | #5061 | Preserve background-agent launch flags so a delegated CLI run keeps the execution mode you asked for. |
| Qwen Code (26.0k★) | #5077 | Show the full plan when a permission gate blocks, so you can inspect the agent's intent instead of losing it. |
| Qwen Code (26.0k★) | #4715 | Managed auto-memory now honors the runtime output dir, while an explicit memory-dir override still wins. |
| Qwen Code (26.0k★) | #5815 | Merging assistant turns was dropping reasoning_content, losing multi-turn chain-of-thought. |
| Qwen Code (26.0k★) | #5945 | Reject non-positive sessionRecapAwayThresholdMinutes values |
| Qwen Code (26.0k★) | #4970 | Stabilize truncated tool-retry keys so a repaired call keeps the same retry identity instead of drifting. |
| Qwen Code (26.0k★) | #5073 | Warn when context instruction files blow the configured budget, before oversized repo guidance quietly crowds out the task. |
| Qwen Code (26.0k★) | #5752 | Parse QWEN_SERVE_MCP_CLIENT_BUDGET strictly as a decimal integer |
| Qwen Code (26.0k★) | #5043 | Let grep results satisfy the prior-read check, so an edit can proceed on verified search context instead of a redundant re-read. |
| Qwen Code (26.0k★) | #5679 | Parse agent & workflow integer env vars strictly |
| Qwen Code (26.0k★) | #5194 | Read WebP VP8X canvas height from the correct byte offset |
| Qwen Code (26.0k★) | #4639 | Dropped the discontinued Qwen OAuth path from ACP login so nobody gets routed into a dead auth method. |
| Qwen Code (26.0k★) | #4596 | Recurse into tracked Git submodules when crawling a repo, so the agent's context picks up files inside them. |
| Qwen Code (26.0k★) | #5036 | Actually hard-stop repeated identical tool calls once loop detection fires, instead of letting the agent keep hammering the same stalled action. |
| Qwen Code (26.0k★) | #5062 | Carry token-escalation context across agent rounds so a delegated run stops restarting from an under-provisioned model each time. |
| Qwen Code (26.0k★) | #4636 | Apply the requested output language to side queries too, so auxiliary answers follow the same language contract. |
| Qwen Code (26.0k★) | #4963 | Enable fork subagents by default, so delegated work runs in isolated branches without a manual opt-in. |
| Qwen Code (26.0k★) | #4673 | Restore top-level --list-extensions / -l so it prints installed extensions and exits before sandbox, auth, or TUI startup |
| Qwen Code (26.0k★) | #4717 | Replace exit-time deep history clones with shallow read paths across copy, arena, and ACP snapshot flows while keeping restore-time cloning defensive |
| Qwen Code (26.0k★) | #5115 | Hide teammate-only agent names when teams are disabled and fall back to one-shot subagents if an old prompt still sends one |
| Qwen Code (26.0k★) | #4635 | Hide completed sticky todos from the active CLI view so the list stays on what's left. |
| Qwen Code (26.0k★) | #4632 | Harden context-error text extraction so a nested or non-string payload surfaces a useful message instead of vanishing. |
| Qwen Code (26.0k★) | #5072 | Stabilize the simple MCP integration check so server-readiness timing stops making the cross-process contract test flaky. |
| Qwen Code (26.0k★) | #5167 | Hide unconfigured discontinued OAuth model |
| Qwen Code (26.0k★) | #4828 | Keep a user-set shared baseUrl after auth refresh, so a same-model refresh doesn't fall back to the provider default. |
| Qwen Code (26.0k★) | #5461 | Accept uppercase URL schemes in Claude plugin sources |
| Qwen Code (26.0k★) | #5209 | Read SHORT-typed TIFF dimensions correctly on big-endian files |
| Qwen Code (26.0k★) | #4607 | Fix IDE proxy requests by keeping fetch and EnvHttpProxyAgent on the same bundled undici module path |
| Qwen Code (26.0k★) | #5719 | Validate list maxEntries as a positive integer |
| Qwen Code (26.0k★) | #5630 | Escape backslashes and quotes in emacs ediff paths |
| Qwen Code (26.0k★) | #4738 | Skip hidden thought parts when copying visible CLI output, so the clipboard matches what's on screen. |
| Qwen Code (26.0k★) | #5426 | Accept uppercase URL schemes in mcp add transport detection |
| Qwen Code (26.0k★) | #5494 | Don't treat an empty-parts message as a function call/response |
| Qwen Code (26.0k★) | #5285 | Confirm the WEBP signature, not just the RIFF prefix |
| Qwen Code (26.0k★) | #5420 | Keep estimated token split summing to total |
| Qwen Code (26.0k★) | #5336 | Detect WebP and AVI in RIFF magic-byte sniffing |
| Qwen Code (26.0k★) | #5328 | Keep qwen3.6-flash and kimi-k2.6 presets text-only |
| Qwen Code (26.0k★) | #5227 | Read BMP height as signed int32 for top-down bitmaps |
| Qwen Code (26.0k★) | #5429 | Accept uppercase URL schemes when parsing install sources |
| Qwen Code (26.0k★) | #4600 | Distinguish AUTO from AUTO_EDIT approval-mode indicators in the TUI, including shared styling, i18n keys, and visual evidence |
| Qwen Code (26.0k★) | #5647 | Detect USE_OPENAI auth when the model is set via QWEN_MODEL |
| Qwen Code (26.0k★) | #5287 | Render a sub-minute duration that rounds to 60s as "1m" |
| Qwen Code (26.0k★) | #5204 | Reopen code fences without inserting a blank line |
| deer-flow (77.0k★) | #4157 | A subagent's description is agent-editable (setup_agent / update_agent) yet was rendered raw into the <subagent_system> block, so a crafted first line could break out and forge framework tags. Escaped it, matching the <soul> fix. |
| deer-flow (77.0k★) | #4137 | HTML-escape SOUL.md before it enters the <soul> system-prompt block so an agent-editable personality cannot forge framework tags and break out of its trust zone |
| deer-flow (77.0k★) | #3797 | Synchronize the MCP session-pool singleton lifecycle so concurrent first-use cannot create duplicate pools |
| deer-flow (77.0k★) | #3799 | Serialize per-chat thread creation so concurrent messages stop spawning duplicate threads for one chat. |
| deer-flow (77.0k★) | #3719 | Skip whitespace-only facts in _apply_updates so blank memory entries do not accumulate |
| deer-flow (77.0k★) | #3778 | Synchronize skill storage singleton lifecycle |
| deer-flow (77.0k★) | #3631 | Strip base64 image data from streamed values events |
| deer-flow (77.0k★) | #3709 | Fix positional fallback consuming unrelated todo when same-content list is exhausted |
| deer-flow (77.0k★) | #3674 | Let UI runtime channel config win over config.yaml |
| deer-flow (77.0k★) | #4130 | Recognize remaining requests/httpx HTTP methods as network sinks |
| Microsoft Agent Framework (12.1k★) | #5808 | Handoff was mutating message roles in place, so a retry leaked the change; reuse sanitized copies instead. |
| Microsoft Agent Framework (12.1k★) | #5462 | Fix background=True + tools infinite-retrieve loop: clear completed continuation state so tool results get posted |
| Microsoft Agent Framework (12.1k★) | #6210 | Drop hosted MCP tool-call history when reasoning payloads are stripped, so stateless OpenAI replay stops sending orphan MCP calls. |
| Microsoft Agent Framework (12.1k★) | #5815 | Forward MCP tools/list metadata into call_tool instrumentation so traces keep their tool annotations. |
| Microsoft Agent Framework (12.1k★) | #5784 | Skip orphan Anthropic thinking signatures when converting history, so a replay doesn't carry an invalid standalone signature. |
| Microsoft Agent Framework (12.1k★) | #6132 | Filter filesystem checkpoint indexes by session id, so reopening a store stops returning another session's checkpoints. |
| Microsoft Agent Framework (12.1k★) | #5773 | Run synchronous Python tools off the event loop so a blocking call stops freezing concurrent agent work. |
| Microsoft Agent Framework (12.1k★) | #5801 | Coalesce streamed code-interpreter history by call id, so stored history keeps the full code and results without duplicated deltas. |
| Microsoft Agent Framework (12.1k★) | #6491 | .NET: fix fan-in barrier checkpoint state |
| Microsoft Agent Framework (12.1k★) | #5861 | Foundry handoff arguments were losing their structure in response conversion, breaking delegated agent calls; preserved them. |
| Microsoft Agent Framework (12.1k★) | #6208 | Declarative Foreach was collapsing multi-field PowerFx table rows; preserve the full record value through iteration. |
| Microsoft Agent Framework (12.1k★) | #6640 | Python: surface cache and reasoning token counts for the Bedrock and Gemini connectors |
| Microsoft Agent Framework (12.1k★) | #5904 | Keep ChatClientAgent's local history provider on for AG-UI thread ids, so session history isn't mistaken for service-managed model history. |
| Microsoft Agent Framework (12.1k★) | #5778 | Declare the Magentic protocol messages so orchestrator chat/reset signals deserialize instead of blowing up on an unknown type. |
| Microsoft Agent Framework (12.1k★) | #5976 | Fix sequential workflow sample output so all participant responses are shown from non-streaming results |
| Microsoft Agent Framework (12.1k★) | #5800 | Avoid AG-UI tool result message id collisions when providers omit update ids |
| Microsoft Agent Framework (12.1k★) | #6040 | Forward a Foundry agent's default_headers into OpenAI client creation, so custom auth and routing headers survive setup. |
| Microsoft Agent Framework (12.1k★) | #5974 | Include Foundry agent tool definitions in eval mappings so evaluator runs can call code-defined tools |
| Microsoft Agent Framework (12.1k★) | #5799 | Add handoff workflow naming metadata so names and descriptions flow through builder and hosting registration |
| Microsoft Agent Framework (12.1k★) | #6037 | Keep Foundry citation get_url metadata through response conversion so source links survive in chat responses |
| AstrBot (36.3k★) | #8750 | Fixed changelog anchor links so dashboard release notes jump to the right section instead of a dead anchor. |
| AstrBot (36.3k★) | #7537 | Prevent Telegram media group exceptions from being silently swallowed by APScheduler |
| AstrBot (36.3k★) | #6581 | Context truncation dropping the only user message: causes 400 from Zhipu/Gemini |
| AstrBot (36.3k★) | #8172 | Prefer bundled dashboard assets over a stale data dist, so a release stops serving an outdated WebUI. |
| AstrBot (36.3k★) | #6710 | Skills-like re-query dropping image captions: extra_user_content_parts not forwarded |
| AstrBot (36.3k★) | #8736 | Preserve embedding API version suffixes so a versioned provider endpoint doesn't get normalized to the wrong path. |
| AstrBot (36.3k★) | #6474 | SQLite database is locked under concurrent writes: added busy timeout |
| AstrBot (36.3k★) | #7196 | Fix Gemini thinking parts leaking into user-facing response |
| AstrBot (36.3k★) | #7758 | Apply empty-assistant message filter to streaming OpenAI path: strict providers no longer 400 on reasoning-only turns |
| AstrBot (36.3k★) | #6656 | /stop follow-up race: agent_stop flag not checked during follow-up capture |
| AstrBot (36.3k★) | #8089 | Route image requests to a vision-capable fallback provider when the primary provider cannot accept image input |
| AstrBot (36.3k★) | #8718 | Avoid duplicate quoted image captions when multimodal replies include both quoted text and image metadata |
| AstrBot (36.3k★) | #8786 | Enforce persona tool boundaries |
| AstrBot (36.3k★) | #6313 | Null choices guard: OpenAI API returning None instead of empty list |
| AstrBot (36.3k★) | #8175 | Surface WeChat OA media send failures instead of reporting success after prepare/send timeouts |
| AstrBot (36.3k★) | #6596 | Multimodal token counting: images, audio, chain-of-thought were invisible to context compression |
| AstrBot (36.3k★) | #7398 | Fix Telegram sendMessageDraft spamming 400 errors on empty text in streaming mode |
| AstrBot (36.3k★) | #8061 | Keep Discord startup alive when command sync hits the daily create quota; only quota errors become warnings |
| AstrBot (36.3k★) | #8255 | Support RST and AsciiDoc knowledge uploads by keeping backend parser checks and dashboard file validation in sync |
| AstrBot (36.3k★) | #8195 | Skip empty LLM summaries so context compression keeps the original history instead of inserting a blank placeholder. |
| AstrBot (36.3k★) | #8073 | Fix image-only KB retrieval: skip blank prompts so embedding APIs are not called with empty text |
| AstrBot (36.3k★) | #7407 | Fix Gemini native search 400 when no function tools: skip FunctionCallingConfig |
| AstrBot (36.3k★) | #7217 | Fix qwen3-rerank response parsing: handle both old and new Dashscope API formats |
| AstrBot (36.3k★) | #8119 | Pass image inputs through active replies so image-triggered mentions reach the LLM as image URLs |
| AstrBot (36.3k★) | #8768 | Sanitize Lark platform id suffixes so invisible whitespace in configured ids does not break platform matching |
| AstrBot (36.3k★) | #6527 | Fix LLM tool selection: rewrote ambiguous Upload/Download descriptions |
| AstrBot (36.3k★) | #7216 | Fix Gemini tool call 400: wrap plain-text tool results as Protobuf Struct |
| AstrBot (36.3k★) | #7003 | SSE heartbeat for WebChat: long context compression killed the connection |
| AstrBot (36.3k★) | #6551 | Fix empty content causing Grok 400: set content to None when empty |
| AstrBot (36.3k★) | #8388 | Add the missing dashboard i18n for plugin sub-command counts, so extension details stop showing raw translation keys. |
| MCP Toolbox (15.9k★) | #3531 | Validate the Looker explore_references shape instead of panicking on malformed input |
| MCP Toolbox (15.9k★) | #3516 | Return an error instead of panicking when a parameter type field is not a string |
| MCP Toolbox (15.9k★) | #3512 | Report the offending value in array/map parameter type errors |
| MCP Toolbox (15.9k★) | #3416 | Document execute_sql least-privilege setup |
| AgentScope (27.8k★) | #1717 | Hide Bash tool subprocess windows on Windows with CREATE_NO_WINDOW, while leaving non-Windows process creation unchanged |
| AgentScope (27.8k★) | #1815 | Inherit the leader's permission rules in team runs, so delegated agents keep the same workspace and file-access limits. |
| AgentScope (27.8k★) | #1734 | Refresh Redis message-list TTL on append and streaming replace, so the configured storage TTL actually bounds chat history. |
| AgentScope (27.8k★) | #1883 | Handle Gemini function calls without an id |
| AgentScope (27.8k★) | #1786 | Keep a caller-provided Redis session id on create, so later get/update/list hit the same session instead of a fresh UUID. |
| AgentScope (27.8k★) | #1732 | Pull skills from every active tool group, so prompt instructions and the Skill viewer match the enabled tools. |
| AgentScope (27.8k★) | #1774 | Forward explicitly configured Qwen thinking_enable into OpenAI-compatible extra_body without polluting normal OpenAI requests |
| AgentScope (27.8k★) | #1823 | Add workspace roots to the permission context, so a chat run authorizes files against the workspace the agent can actually see. |
| AgentScope (27.8k★) | #1822 | Add a cwd option to the built-in Bash tool so shell commands can run in the intended workspace directory |
| OpenAI Agents SDK (27.9k★) | #3643 | Report the effective Blaxel timeouts instead of the unconfigured defaults |
| promptfoo (23.2k★) | #9867 | Avoid crashing on an empty choices array when reading Azure logprobs |
| promptfoo (23.2k★) | #9897 | Guard array access in the Bedrock Titan and Cohere providers so an empty response array stops crashing generation. |
| promptfoo (23.2k★) | #10076 | A tool-call assertion crashed with a TypeError when the tool call was missing its function object; return pass:false instead. |
| promptfoo (23.2k★) | #9815 | Reject a malformed __expected0 CSV header instead of silently dropping its assertion |
| promptfoo (23.2k★) | #9761 | Preserve quoted commas in contains-any/all assertion values |
| promptfoo (23.2k★) | #9840 | Preserve JSONL row description instead of overwriting |
| promptfoo (23.2k★) | #9757 | Unescape all escaped commas in array metadata values |
| promptfoo (23.2k★) | #9841 | Return pass:false for empty output instead of throwing |
| promptfoo (23.2k★) | #9822 | Keep ellipsize within maxLen when maxLen is below 3 |
| Google ADK (20.6k★) | #5698 | Include intermediate responses in final_response_match_v2 judging when the criterion opts in |
| Google ADK (20.6k★) | #5918 | Allow the builder assistant's internal app name through CLI runner validation so adk web can open the special agent |
| Mem0 (60.8k★) | #5416 | Use valid S3 Vectors entity index names so agent memory writes no longer hit AWS index-name validation failures |
| Mem0 (60.8k★) | #5383 | Skip OpenClaw runtime setup during CLI metadata registration, so plugin discovery stops double-registering runtime side effects. |
| Mem0 (60.8k★) | #5380 | Expose Qdrant's https option so a self-hosted HTTP cluster can use API-key auth without being forced into TLS client mode. |
| AG-UI (14.7k★) | #1735 | Avoid stale ADK session writes after human-in-the-loop tool calls |
| AG-UI (14.7k★) | #1832 | Preserve AG-UI input metadata when LangGraph converts text and media blocks into LangChain multimodal content |
| AG-UI (14.7k★) | #1890 | Cache ADK session reads within one execution, so a remote session service isn't refetched before every agent run. |
| AG-UI (14.7k★) | #1828 | Detect Strands' private session manager so AG-UI history replay respects an active session instead of replaying prior turns. |
| AG-UI (14.7k★) | #1829 | Close LangGraph text messages before tool-call chunks so text-to-tool transitions keep both message and tool events |
| AG-UI (14.7k★) | #1889 | Collect output-schema agents when building ADK workflow graphs, so structured-output nodes don't get dropped. |
| AG-UI (14.7k★) | #1848 | Bundle replayed tool results |
| AG-UI (14.7k★) | #1826 | Forward LangGraph runtime context through tool kwargs so graph tools keep the caller's execution context. |
| AG-UI (14.7k★) | #1769 | Make proto generation cross-platform: replace Unix-only mkdir -p with a Node script and Windows .CMD plugin shim |
| AG-UI (14.7k★) | #1730 | Allow CopilotKit 1.x runtime peer |
| goose (51.2k★) | #9599 | Use a blocking OTLP HTTP exporter so telemetry isn't lost when the process exits. |
| goose (51.2k★) | #9528 | Restore new-chat keyboard shortcut navigation in the desktop app |
| goose (51.2k★) | #9584 | Show resolved skill supporting-file paths instead of unresolved placeholders |
| opencode (185.8k★) | #30022 | Bind the MCP OAuth callback server to the IPv4 loopback so the browser redirect connects reliably instead of racing IPv6 |
| LiveKit Agents (11.3k★) | #5994 | Handle OpenAI-compatible realtime status details that come back as strings, so an incomplete response doesn't crash logging. |
| LiveKit Agents (11.3k★) | #5872 | Map ElevenLabs server-VAD committed transcripts to END_OF_SPEECH, so a realtime turn closes without a manual empty commit. |
| LiveKit Agents (11.3k★) | #5820 | Recreate Anthropic streaming requests on retry so transient stream creation failures do not re-await the same coroutine |
| LiveKit Agents (11.3k★) | #5976 | Preserve request timeouts when callers provide custom Google HTTP options, without mutating the caller-owned options object |
| LiveKit Agents (11.3k★) | #5864 | Surface Soniox STT server errors instead of treating failed streams as empty transcripts |
| LiveKit Agents (11.3k★) | #6124 | Normalize two-digit years in GetDOBTask |
| LiveKit Agents (11.3k★) | #5887 | Delete trimmed empty audio items |
| Strands Agents SDK (6.5k★) | #2353 | Handle Gemini safety-blocked metadata by defaulting missing usage counts and mapping safety stops to guardrail intervention |
| Strands Agents SDK (6.5k★) | #2340 | Keep concurrent tool results in request order, so parallel execution doesn't scramble what the model sees. |
| Strands Agents SDK (6.5k★) | #2400 | Support non-streaming OpenAI chat completions |
| Strands Agents SDK (6.5k★) | #2656 | Handle empty Bedrock content blocks |
| Strands Agents SDK (6.5k★) | #2354 | Read vLLM delta.reasoning chunks in OpenAI-compatible streams so reasoning output survives provider conversion. |
| Strands Agents SDK (6.5k★) | #2823 | Avoid UnboundLocalError on empty model stream |
| Strands Agents SDK (6.5k★) | #2304 | Map webp images explicitly |
| Strands Agents SDK (6.5k★) | #2396 | Pass structured output request params |
| Strands Agents SDK (6.5k★) | #2306 | Normalize 3gp video format |
| OpenHands (80.7k★) | #14776 | Keep a custom LLM base URL when editing basic model settings, so a saved profile stops silently falling back to the provider default. |
| Pydantic AI (18.5k★) | #5474 | Accept providerExecuted and title on Vercel AI dynamic-tool parts, so strict validation keeps the provider metadata. |
| Pydantic AI (18.5k★) | #5695 | Forward penalties in completions |
| Pydantic AI (18.5k★) | #5694 | Fix MCPToolset(http_client=...) with FastMCP by keeping follow_redirects out of caller-provided HTTP client factories |
| Cline (64.6k★) | #11166 | Keep file search working when the open-tabs host RPC is down by falling back to system rg. |
| Agno (41.1k★) | #8131 | Preserve non-sentinel tool argument whitespace while keeping string-to-None/True/False normalization for exact sentinels |
| Inspect AI (2.3k★) | #4267 | Keep truncate() within length when smaller than the overflow indicator |
| Inspect AI (2.3k★) | #3924 | Reject unknown GenerateConfig fields up front, so a misspelled option isn't silently ignored. |
| Inspect AI (2.3k★) | #4363 | Return NaN instead of crashing when reducing an empty score list |
| Inspect AI (2.3k★) | #3902 | Parse OpenRouter reasoning_details in OpenAI-compatible responses instead of surfacing Python repr blocks |
| Inspect AI (2.3k★) | #3941 | Route Bedrock Nova top_k through the inference config instead of dropping the sampling control |
| Inspect AI (2.3k★) | #3896 | Fix filestore recovery append mode: preserve carried message/tool-call pools without rehashing old segments |
| Inspect AI (2.3k★) | #4342 | Don't cache reasoning_summaries probe failures that are transient |
| Inspect AI (2.3k★) | #3975 | Preserve call-site generation defaults when a role model override resolves, so switching a role's model doesn't drop settings like max tokens or reasoning effort. |
| Inspect AI (2.3k★) | #4069 | Flush streamed score samples periodically, so a long eval persists score rows before it finishes. |
| Inspect AI (2.3k★) | #4303 | Reject sample limits with more than one dash |
| Inspect AI (2.3k★) | #4218 | Reuse torn checkpoint ids |
| Inspect AI (2.3k★) | #3982 | Preserve wrapped OpenAI reasoning payloads in the agent bridge, so encrypted provider-native reasoning survives transcript conversion. |
| Inspect AI (2.3k★) | #4357 | Raise a clear error when reducing mismatched list/dict scores |
| Inspect AI (2.3k★) | #3895 | Honor COLUMNS for TERM=dumb: log output no longer hard-wraps at Rich's default 80 columns |
| Inspect AI (2.3k★) | #4173 | Normalize buffer task directory URI |
| Inspect AI (2.3k★) | #4300 | Strip trailing separator in FileSystem.is_writeable |
| Inspect AI (2.3k★) | #4282 | Return 0 from accuracy() on empty scores |
| Inspect AI (2.3k★) | #4090 | Clarify model-graded history prompts so include_history=True and final-answer placement match the actual scorer behavior |
| GitHub MCP Server (31.4k★) | #2514 | Support team reviewers in PR review requests by resolving team slugs to review subjects instead of dropping them. |
| GitHub MCP Server (31.4k★) | #2612 | Hide write-side UI resources when the MCP server runs read-only, while keeping safe read-only resources registered |
| FastMCP (26.2k★) | #4297 | Keep required discriminator tags when building tool schemas, so union arguments stay valid. |
| ClawTeam (5.3k★) | #1 | First PR: 122 tests, CI, team templates, config bugfixes, task duration tracking |
| ClawTeam (5.3k★) | #32 | Gemini CLI support: spawn, permissions, prompt injection for both backends |
| ClawTeam (5.3k★) | #40 | Pluggable TaskStore: extract task persistence into swappable backend abstraction |
| ClawTeam (5.3k★) | #36 | Kimi CLI support: spawn backend, permission handling, 3 new test cases |
| EvalScope (3.0k★) | #1381 | Read SciCode assistant answers from OpenAI-style text content blocks, so the scorer prompt gets the real answer instead of an empty field. |
| OpenHarness (14.7k★) | #185 | TUI tab-completion: fix cursor jump, strip trailing space, accept /quit alias |
| Pipecat (13.4k★) | #4553 | Serialize interruption frames through protobuf transports so realtime voice-agent interruptions survive transport hops |
| MCP Registry (7.0k★) | #1310 | Reject mangled publisher metadata instead of accepting malformed entries |
| LM Evaluation Harness (13.2k★) | #3822 | Keep Anthropic stop sequences non-empty so requests are not rejected |
| MCP Go SDK (4.7k★) | #962 | Reject duplicate initialize requests so an MCP session keeps consistent protocol state after init. |
| MCP Go SDK (4.7k★) | #981 | Add Implementation.description metadata while keeping empty descriptions out of serialized MCP payloads |
| OpenHands SDK (900★) | #3247 | Validate git workspaces with git rev-parse --git-dir, so a broken nested repo can't crash /api/git/changes. |
| OpenHands SDK (900★) | #3248 | Serialize LiteLLM modify_params updates with an RLock so concurrent completions do not leak global parameter state |
| OpenHands SDK (900★) | #3225 | Write remote completion logs as UTF-8, so non-ASCII output survives local replay and debugging. |
| Project | PR | What I Fixed |
|---|---|---|
| Firecrawl (151.0k★) | #3730 | Reject self-hosted scrape interact actions with a clear error instead of failing opaquely |
| Firecrawl (151.0k★) | #3729 | Keep the auth chunk in the self-host bypass path so authenticated self-hosted scrapes don't get dropped. |
| Firecrawl (151.0k★) | #3713 | Handle the async v1 batch-scrape response returned as a dict in the Python SDK |
| dify (148.8k★) | #37425 | Bound OperationService billing requests so a slow billing endpoint can't hang the request. |
| dify (148.8k★) | #38801 | Validate the conversation up front on the service-api and explore endpoints, so a bad conversation_id returns 404 instead of streaming into a late failure. |
| dify (148.8k★) | #37685 | Keep watercrawl request timeouts bounded instead of disabling them with timeout=None |
| dify (148.8k★) | #37669 | Skip empty tool entries in legacy dataset config extraction |
| RAGFlow (85.0k★) | #15691 | Skip empty agent-switch conditions so a blank branch guard can't crash or block valid downstream flows. |
| RAGFlow (85.0k★) | #15601 | Fall back when Docling native parsing returns no chunks, so a document still produces usable content instead of an empty parse. |
| RAGFlow (85.0k★) | #15696 | Keep the strongest PageRank score for repeated n-hop GraphRAG edges, so path order can't overwrite the ranking. |
| LightRAG (37.6k★) | #3031 | Extract Docling async markdown from the response envelope so RAG chunks carry clean document text, not JSON/base64 noise. |
| LightRAG (37.6k★) | #3206 | Honor PostgreSQL search_path in table-existence checks so a non-public schema is detected before migration or table creation. |
| LightRAG (37.6k★) | #3123 | Sync the API docs colors with the dark theme so endpoint examples stay readable in dark mode. |
| LightRAG (37.6k★) | #2796 | Fix None file_path propagating as unknown_source: fill gaps left by #2793 |
| cherry-studio (48.5k★) | #16352 | Preserve surrogate pairs at truncation boundaries so a multi-byte character isn't split into invalid halves. |
| cherry-studio (48.5k★) | #16454 | Keep bare-URL markdown reference lines in citations instead of dropping them |
| cherry-studio (48.5k★) | #16217 | Roll relative time up at the unit boundary |
| cherry-studio (48.5k★) | #16361 | Resolve the .d.ts icon for uppercase extensions |
| cherry-studio (48.5k★) | #16358 | Drop Ideogram data[] items without a usable URL in the aihubmix path instead of rendering broken images |
| Phoenix (10.5k★) | #13641 | Expire prompt tool diffs on provider change, so PXI prompt editing stops carrying stale tool-change state across providers. |
| Phoenix (10.5k★) | #13637 | Wait for in-memory SQLite schema init before serving Phoenix, so a startup race can't hit a missing table. |
| Phoenix (10.5k★) | #13245 | Keep the generative model fetch cursor monotonic so lower-id updates cannot make later polling skip newer model changes |
| Phoenix (10.5k★) | #13210 | Return NotFound-style errors for invalid GraphQL node ids instead of leaking decoder failures to clients |
| Phoenix (10.5k★) | #13636 | Update PXI system prompt guidance to point at the current server-side Jinja templates and capability wiring instead of stale browser-side paths |
| Phoenix (10.5k★) | #13242 | Pass Anthropic computer-use beta headers for raw computer tool definitions in playground streaming and non-streaming calls |
| Phoenix (10.5k★) | #13653 | Focus the PXI input when the agent panel opens, so keyboard-first workflows start without an extra click. |
| Phoenix (10.5k★) | #13139 | Surface playground validation errors instead of returning empty subscription payloads |
| Phoenix (10.5k★) | #13614 | Refresh the prompts table while users stay on the page so newly created or updated prompts appear without a manual reload |
| Phoenix (10.5k★) | #13261 | Refresh span annotation notes after create so the UI shows newly added notes without a manual reload |
| Graphiti (28.7k★) | #1531 | Strip embedded NUL bytes from FalkorDB query params, so one malformed document string can't crash a bulk graph write. |
| DB-GPT (19.4k★) | #3092 | Require explicit opt-in before the sandbox executes on the local runtime |
| yfinance (24.7k★) | #2867 | Add a missing comma that was merging two equity-screener EPS fields into one |
| Project | PR | What I Fixed |
|---|---|---|
| Microsoft Recommenders (21.8k★) | #2349 | Query GPU memory with torch first |
| Microsoft Recommenders (21.8k★) | #2351 | Fail fast when TensorFlow GPU is unavailable |
| Microsoft Recommenders (21.8k★) | #2345 | Query GPU memory through PyTorch first with numba as fallback, so GPU discovery doesn't fail when a CUDA context is unavailable. |
| Microsoft Recommenders (21.8k★) | #2322 | Honor the benchmark recommendation-count arg so eval scripts actually generate the requested top-k. |
| Microsoft Recommenders (21.8k★) | #2350 | Label MAP@k notebook outputs consistently |
LinkedIn: https://www.linkedin.com/in/yufenghe
AI Agent 研究员 & 工程师 | 曾任 Moonshot AI (Kimi) | 港大计算机硕士 | 上海全球AI大赛冠军 | 三次获ACM-ICPC银牌 | 曾在百度、脉脉、快手的AI 研发岗实习
- 280+ 个上游 PR 已 merged,其中 vLLM(9 个)、Mooncake(24 个)、Qwen Code(51 个)、Microsoft Agent Framework(20 个)、AstrBot(30 个)、Google ADK(10 个)、Inspect AI(18 个)、Hugging Face Transformers(1 个)、PyTorch(5 个)。
- 代表性公开项目(star 100+):CoreCoder、FindJobs-Agent、RepoWiki、ContractGuard。
| 方向 | 项目 | Stars | 简介 |
|---|---|---|---|
| Coding agents / 评测 | CoreCoder | 1.5k+ | Claude Code 51万行源码 → 1400行 Python 核心重写,支持任意大模型,附 7 篇架构导读。 |
| 应用型 Agent | FindJobs-Agent | 200+ | LLM 求职工具箱:技能差距分析、模拟面试、简历优化和岗位结构化。 |
| 代码库地图 | RepoWiki | 200+ | 开源 DeepWiki 替代品:CLI 或浏览器生成仓库 wiki,PageRank 文件排名、Mermaid 架构图、阅读指南。 |
| 应用型 Agent | ContractGuard | 100+ | AI 合同审查 Agent,签字前帮你找红旗条款、不公平约定和缺失保护。 |
| 代码库地图 | GitSense | 100+ | AI 开源贡献发现器 + 仓库雷达:找匹配 issue,也评估 PR 合入友好度。 |
| 代码理解 | CodeABC | new | 面向非程序员的 AI 代码阅读器:大白话文件导读、悬浮批注、术语词典、问答、自然语言改写。 |
| Coding agents / 评测 | AgentProbe | new | AI Agent 回归测试 pytest 插件:快照基线、语义比较、Mock LLM。 |
| Coding agents / 评测 | AnyCoder | new | 终端 AI 编程 Agent,通过 litellm 支持 100+ 大模型,危险命令拦截、并行执行、会话持久化。 |
| Coding agents / 评测 | CodeJoust | new | AI 编程 Agent 擂台:独立 git worktree 运行,按测试通过率、成本、diff 大小、耗时打分。 |
| Coding agents / 评测 | LiteBench | new | LLM / Agent benchmark 轻量 CLI + Web 面板:agent 模式、自定义 YAML、LLM judge、100+ litellm 模型。 |
| Agent 工具 | RuleForge | new | 从代码库分析自动生成 AI 助手规则文件(CLAUDE.md、.cursorrules、copilot-instructions)。 |
| LLM 工具 | PromptDiff | new | LLM prompt 语义 diff:像 git diff 一样比较 prompt 版本。 |
| LLM 工具 | TokenTracker | new | 即插即用的 LLM 成本追踪:改一行 import 就能看清钱花在哪。支持 OpenAI、OpenRouter、Azure、Ollama。 |
| LLM 工具 | BatchLLM | new | LLM API 批处理:CSV/JSONL 进、结果出,支持并发、重试、断点续跑和成本追踪。 |
| 应用型 Agent | IslandEscape | new | 2D 像素风生存交易游戏:四个 LLM agent 扮演岛民,各有性格、用自然语言谈判交易、结盟博弈;和他们赛跑攒到 100 金币逃离孤岛。 |
| Agent / MCP / CI 工具 | agentcikit | new | 一个 CLI 覆盖 AI agent、MCP 和开源贡献工作:把 CI 失败转成复现计划、给 coding agent 打包任务上下文、给 MCP server 做门禁和回放、测试工具调用安全。内含 ci-repro、patch-context、mcp-gate、mcp-replay、tool-fence。 |
| Coding agents / 评测 | IssueBenchKit | new | 把真实 GitHub issue 和本地 bug 打包成可复现、可评分、可分享的 coding-agent benchmark 任务。 |
| Agent 可观测性 | FlightBox | new | AI Agent 黑盒飞行记录器:录制、脱敏、回放并 diff 本地 agent session。 |
| 量化 / 强化学习 | DRL-MultiFactorTrading | new | 深度强化学习交易:Double DQN + Transformer attention 叠加 Fama-French 式多因子模型,含自适应风控和波动率目标。 |
| 研究 | adversarial-refinement-imputation | new | MiLeTS 2026 论文配套代码:把 R3GAN 适配到多元时间序列填补,一个范围清晰的负结果。 |
| 研究 | TrajBias | new | 研究 LLM-as-judge 评估 agent 轨迹时的结构性偏差。 |
| 项目 | PR | 修了啥 |
|---|---|---|
| vLLM (86.2k★) | #37884 | RoBERTa 的 position_ids 原地累积串进了 CUDA graph 的 padding,BGE-M3 跑到约 4000 请求就崩。 |
| vLLM (86.2k★) | #38732 | 修复 bench_serve 流式响应拆分多字节 UTF-8 字符导致 decode 崩溃 |
| vLLM (86.2k★) | #37727 | Responses API 的 instructions 顺着 previous_response_id 链泄漏到了后续轮次。 |
| vLLM (86.2k★) | #43243 | Qwen3 XML tool-call 参数先按 JSON 解析,null/false 这类 literal 在流式解析里不再被当成 Python 字面量拒掉。 |
| vLLM (86.2k★) | #37699 | 修复 weight offloading 忽略 VLLM_WEIGHT_OFFLOADING_DISABLE_PIN_MEMORY 环境变量 |
| vLLM (86.2k★) | #40789 | 让 V1 ubatch wrapper 认得 tuple model outputs,解开 DBO 和投机解码在 tuple 返回值上的崩溃。 |
| vLLM (86.2k★) | #44821 | 给 DeepSeek V4 MTP projection layers 补 prefix,让 compressed-tensors 加载 draft model 时能匹配 artifact 侧 target / ignore 规则 |
| vLLM (86.2k★) | #42679 | 保护 flash-attn rotary 导入路径,让 FA4 环境缺少 flash_attn.ops.triton.rotary 时稳定回退而不是构造 rotary 层时崩溃 |
| vLLM (86.2k★) | #37301 | 修复 base64 JPEG 视频帧返回空 metadata:补充帧数、fps、时长 |
| Mooncake (5.8k★) | #1629 | GB200 MNNVL EP hang:cudaMalloc → cuMemCreate(FABRIC) + cuMemMap 跨节点 NVLink 通信 |
| Mooncake (5.8k★) | #1644 | MNNVL warmup hang:跳过 fabric 连接节点的冗余握手 |
| Mooncake (5.8k★) | #2570 | 修复 BatchOffload 处理 >4 GiB 对象时的整数溢出:用 uint64_t 累加各 slice 大小,并拒绝超过 uint32_t 记录 value_len 的对象,而不是静默截断 |
| Mooncake (5.8k★) | #2311 | rpc_meta 内容没变时重复发布保持幂等,真正改了值才拒绝。 |
| Mooncake (5.8k★) | #1825 | 修复 P2PClientService::Put 静默吞掉写入错误:传播实际错误码给调用方 |
| Mooncake (5.8k★) | #2651 | Init 遇到非数字命名的 bucket 文件时跳过,而不是直接 abort |
| Mooncake (5.8k★) | #2629 | MC_MS_AUTO_DISC 值非法时不再中断 client 初始化 |
| Mooncake (5.8k★) | #2610 | 重构时漏掉了 RdmaTransport::submitTransfer 里每个 task 的 request 指针赋值,下游全拿到 null,status、重试、计费回读全废。追回来补上了这个关联。 |
| Mooncake (5.8k★) | #1728 | Hard pin 驱逐保护:模型权重永不被驱逐,const 字段 + BatchEvict 跳过 + 向后兼容序列化 |
| Mooncake (5.8k★) | #1719 | 新增 ObjectDataType 元数据分类:KV cache、weights、tensors 等对象类型可在 metadata、snapshot 和 Python binding 中稳定传递 |
| Mooncake (5.8k★) | #2402 | Python buddy allocator backing buffer 分配失败时直接拒绝,避免把 null raw buffer 放进 managed slab |
| Mooncake (5.8k★) | #2628 | 修复 CopyEnd/MoveEnd 在 source 非法时的 source 引用计数泄漏 |
| Mooncake (5.8k★) | #2500 | 单 key remove 重试成功后,不再把整个 bundle cleanup 判为失败 |
| Mooncake (5.8k★) | #1831 | TENT NVLink IPC 修复:sub-allocated GPU tensor 使用 base pointer,将 #1622 修复移植到 TENT 路径 |
| Mooncake (5.8k★) | #2606 | 为节点内 NVLink 构建补上 cudaStreamQuery 映射 |
| Mooncake (5.8k★) | #1626 | 修复非内存副本的错误日志刷屏 |
| Mooncake (5.8k★) | #2506 | from_file 里把 enable_ssd_offload 的字符串布尔值正确解析 |
| Mooncake (5.8k★) | #2641 | 给 MC_TCP_SLICE_SIZE 解析裹上 std::stoull 异常守卫,非法值不再抛未捕获异常 |
| Mooncake (5.8k★) | #2627 | 给 UrmaContext 析构里的 endpoint_store_ 加空指针守卫,避免析构时崩溃 |
| Mooncake (5.8k★) | #2403 | 清掉失败的 io_uring sub-batch 初始化状态,别让半成品 transfer batch 把坏状态带进后续 setup。 |
| Mooncake (5.8k★) | #2602 | handle_exist 里 is_exist 报错时返回 HTTP 500,而不是当成“不存在” |
| Mooncake (5.8k★) | #2617 | 在 EFA/鲲鹏 submitTransfer 里补回 task.request 关联(与 RDMA 路径同类漏赋值) |
| Mooncake (5.8k★) | #2619 | 修复 EFA smaps page-size 解析里 signed char 传 isxdigit 的 UB(#2504 的后续) |
| Mooncake (5.8k★) | #2460 | 依赖安装脚本支持 EulerOS |
| PyTorch (101.8k★) | #188027 | 在 Laguerre / Legendre 多项式的辅助函数里初始化 r,避免边界路径返回未初始化内存(PR 显示 Closed,经 pytorchmergebot 合入) |
| PyTorch (101.8k★) | #187643 | 修复 stale_issues workflow 的 parse_older_than 在非闰年崩溃:朴素的 2 月 29 日偏移会抛 ValueError(PR 显示 Closed,经 pytorchmergebot 合入) |
| PyTorch (101.8k★) | #188022 | 让 CuTeDSL 的 topk override 守住非当前 CUDA 设备,避免把工作分发到错误设备(PR 显示 Closed,经 pytorchmergebot 合入) |
| PyTorch (101.8k★) | #187262 | 移除过时的 setuptools 版本上限,让构建解析到当前工具链而不是被钉在旧版本(PR 显示 Closed,经 pytorchmergebot 合入) |
| PyTorch (101.8k★) | #176100 | 修复 Inductor codegen 中用户自定义 Triton kernel 的名称修饰,避免不同 kernel 在生成代码里命名冲突(PR 显示 Closed,经 pytorchmergebot 合入) |
| DeepSpeed (42.7k★) | #8049 | eigenvalue monitor 的值算了却没写日志,接上后才真正落进记录。 |
| Transformers (162.6k★) | #44710 | AutoProcessor.from_pretrained 静默丢掉了 revision、token 这些 hub kwargs。 |
| ms-swift (14.8k★) | #9642 | DPO 数据准备阶段遇到空 rejected_messages 直接快速失败,不用等训练跑到一半才崩。 |
| ms-swift (14.8k★) | #9605 | 不同格式的图片在临时缓存里撞了键,把 mode 和 size 也纳入 key 才分开。 |
| ms-swift (14.8k★) | #9612 | _replace_system 把非字符串的 prefix 元素压平了,模板化 system prompt 的结构化内容被抹掉。 |
| SGLang (30.3k★) | #20739 | 修复 hybrid_linear_attn_backend 与 ngram 投机采样同时使用时崩溃 |
| SGLang (30.3k★) | #21472 | 修复 --backend diffusers 在非 T2I 模型上的 PicklingError |
| TRL (18.8k★) | #6054 | SFT 准备阶段遇到已经转换过的数据集直接报错,别静默产出错的训练 batch。 |
| TRL (18.8k★) | #6063 | 保留 vLLM prompt 的 special tokens |
| Triton (19.6k★) | #9613 | 修复 AxisInfo 正确性:有符号常量、未知 shift 和 shift UB 都保守处理 |
| Triton (19.6k★) | #10689 | 分数 top_k 向下取整为 0 时至少保留一个 config |
| Triton (19.6k★) | #10687 | is_power_of_two(0) 误返回了 True。 |
| LiteLLM (53.6k★) | #26401 | 修复 LITELLM_LOG=INFO 漏设 verbose_logger:proxy INFO 日志不再静默丢失 |
| LMCache (10.5k★) | #3245 | MP store/retrieve 期间留住 producer 侧的 CUDA IPC event,别让 daemon 拿着已回收的 handle 去恢复。 |
| LMCache (10.5k★) | #3282 | MP KV transfer 处理 HND 这种 GPU KV layout,之前这种排布会被算错。 |
| FlashInfer (5.9k★) | #2756 | 修复 autotuner 在输入 tensor 为 None 时崩溃(fixes #2749) |
| FlashInfer (5.9k★) | #2772 | 修复编译错误:CUTLASS 头文件缺少 <optional> include 导致 std::optional 未定义 |
| Google Gen AI SDK (3.8k★) | #2564 | 让 Live Music API key 不再进入 websocket URL query,改由请求 header 承载,避免密钥出现在日志和代理路径里 |
| verl (22.4k★) | #6620 | 按 DP 和 TP rank 算 colocated vLLM 权重同步的 ZMQ socket rank,多个 DP worker 不再挤到同一个 receiver。 |
| 项目 | PR | 修了啥 |
|---|---|---|
| OpenClaw (382.9k★) | #41271 | 认证配置解析失败时记录日志而非静默吞掉 |
| OpenClaw (382.9k★) | #41259 | 目录创建失败时向上传递错误,避免 memory ensureDir 静默失败后继续执行 |
| OpenClaw (382.9k★) | #96456 | 按码点边界裁剪进度文本,避免落单的 surrogate |
| OpenClaw (382.9k★) | #106603 | sandbox-root 越界错误里改用规范的 shortenHomePath,报的路径和界面其余部分一致。 |
| OpenClaw (382.9k★) | #96562 | 工具路径显示里,共享 home 前缀的同级目录不再被误缩写 |
| Qwen Code (26.0k★) | #4716 | 让 /bug、/docs、/insight 的浏览器打开走安全 launcher,headless 环境不再因为直接 open 崩。 |
| Qwen Code (26.0k★) | #4829 | 给 Qwen OAuth refresh 加超时,刷新端点卡住时不会把整个 CLI 挂在认证恢复上。 |
| Qwen Code (26.0k★) | #5946 | 用 per-request 子 controller 隔离 Anthropic SDK 的 abort listener 泄漏,避免跨请求累积死监听器 |
| Qwen Code (26.0k★) | #4622 | 让 assistant 的 tool call 和它的 result 挨着,修复过的历史不再被 OpenAI 兼容 provider 拒。 |
| Qwen Code (26.0k★) | #5071 | 流式结束后再提交已完成的快速 tool result,别让流尾的竞态把它们卡在本地队列。 |
| Qwen Code (26.0k★) | #5058 | 掐掉 stale 的 tool schema recall,别让 memory warning 把过期工具名带回后面的规划轮次。 |
| Qwen Code (26.0k★) | #5020 | 取消后丢掉残留的 tool call,中止的轮次别把过期调用漏进下一次 payload。 |
| Qwen Code (26.0k★) | #5070 | 焦点导航跳过已过期的 live agent,别让 stale 的后台 agent 行抢走键盘焦点。 |
| Qwen Code (26.0k★) | #5061 | 保留后台 agent 的启动参数,delegated 的 CLI run 继续用你指定的执行模式。 |
| Qwen Code (26.0k★) | #5077 | permission gate 拦下来时把完整计划显示出来,能看被拦的 agent 意图,而不是白白丢掉。 |
| Qwen Code (26.0k★) | #4715 | managed auto-memory 听运行时输出目录的,同时显式的 memory 目录覆盖仍然优先。 |
| Qwen Code (26.0k★) | #5815 | 合并 assistant 轮次时把 reasoning_content 丢了,多轮思维链跟着没了。 |
| Qwen Code (26.0k★) | #5945 | 拒绝非正的 sessionRecapAwayThresholdMinutes 值 |
| Qwen Code (26.0k★) | #4970 | 稳住截断后的 tool retry key,修复过的调用重试时身份不变,不会漂来漂去。 |
| Qwen Code (26.0k★) | #5073 | 上下文指令文件超预算时提前告警,别等仓库级 guidance 悄悄挤掉任务上下文。 |
| Qwen Code (26.0k★) | #5752 | 把 QWEN_SERVE_MCP_CLIENT_BUDGET 严格按十进制整数解析 |
| Qwen Code (26.0k★) | #5043 | 让 grep 结果也算通过 prior-read 检查,已经搜过的上下文不用再逼着重读一遍文件。 |
| Qwen Code (26.0k★) | #5679 | 严格解析 agent / workflow 的整数环境变量 |
| Qwen Code (26.0k★) | #5194 | 从正确的字节偏移读取 WebP VP8X 画布高度 |
| Qwen Code (26.0k★) | #4639 | 把已停用的 Qwen OAuth ACP 登录路径去掉,别再把用户导向失效的认证方式。 |
| Qwen Code (26.0k★) | #4596 | 爬仓库时递归进已跟踪的 Git submodule,agent 上下文才带得上子模块里的文件。 |
| Qwen Code (26.0k★) | #5036 | loop 检测触发后真的硬停掉重复的同一个 tool call,别让 agent 还在那反复执行卡死的动作。 |
| Qwen Code (26.0k★) | #5062 | 跨 agent 轮次带上 token escalation 上下文,delegated run 不用每轮都从容量不够的模型重来。 |
| Qwen Code (26.0k★) | #4636 | 把用户要求的输出语言也用到 side query 上,辅助回答跟主回答守同一套语言约定。 |
| Qwen Code (26.0k★) | #4963 | 默认开启 fork subagent,delegated work 直接跑在隔离分支里,不用手动开。 |
| Qwen Code (26.0k★) | #4673 | 修复顶层 --list-extensions / -l:按文档打印扩展列表,并在 sandbox、auth、TUI 启动前退出 |
| Qwen Code (26.0k★) | #4717 | 将 copy、arena、ACP snapshot 等退出路径的深拷贝改成浅层只读历史访问,同时保留 restore 写回路径的防御性克隆 |
| Qwen Code (26.0k★) | #5115 | team 功能关闭时隐藏 teammate 专属的 agent 名称参数;旧 prompt 仍传入名称时回退到 one-shot subagent,而不是直接失败 |
| Qwen Code (26.0k★) | #4635 | CLI todo 视图里把做完的 sticky todo 藏起来,列表只盯着还没做的。 |
| Qwen Code (26.0k★) | #4632 | 强化 context error 的文本抽取,嵌套的、非字符串的 payload 也能给出有用信息,而不是直接消失。 |
| Qwen Code (26.0k★) | #5072 | 稳住 simple MCP 集成检查,服务就绪的时序不再让跨进程协议测试偶发挂掉。 |
| Qwen Code (26.0k★) | #5167 | 隐藏未配置的已下线 OAuth 模型 |
| Qwen Code (26.0k★) | #4828 | 认证刷新后保留用户配的共享 baseUrl,同模型刷新不再回退到 provider 默认 endpoint。 |
| Qwen Code (26.0k★) | #5461 | Claude 插件源接受大写 URL scheme |
| Qwen Code (26.0k★) | #5209 | 正确读取大端 TIFF 文件里 SHORT 类型的图像尺寸 |
| Qwen Code (26.0k★) | #4607 | 修复 IDE proxy 请求:让 fetch 和 EnvHttpProxyAgent 保持在同一个 bundled undici 模块路径上 |
| Qwen Code (26.0k★) | #5719 | 校验 list maxEntries 必须为正整数 |
| Qwen Code (26.0k★) | #5630 | 转义 emacs ediff 路径里的反斜杠和引号 |
| Qwen Code (26.0k★) | #4738 | 复制可见的 CLI 输出时跳过隐藏的 thought 片段,剪贴板和屏幕上看到的一致。 |
| Qwen Code (26.0k★) | #5426 | mcp add 的 transport 探测接受大写 URL scheme |
| Qwen Code (26.0k★) | #5494 | 空 parts 的消息不再被误当成 function call/response |
| Qwen Code (26.0k★) | #5285 | 校验完整 WEBP 签名而不只是 RIFF 前缀 |
| Qwen Code (26.0k★) | #5420 | 让估算的 token 拆分之和恒等于总数 |
| Qwen Code (26.0k★) | #5336 | RIFF 魔数嗅探里识别 WebP 和 AVI |
| Qwen Code (26.0k★) | #5328 | 让 qwen3.6-flash 和 kimi-k2.6 预设保持纯文本 |
| Qwen Code (26.0k★) | #5227 | 把 BMP 高度按 signed int32 读取以支持 top-down 位图 |
| Qwen Code (26.0k★) | #5429 | 解析安装源时接受大写 URL scheme |
| Qwen Code (26.0k★) | #4600 | 区分 TUI 中 AUTO 与 AUTO_EDIT approval-mode 指示器:共享样式、本地化 key 和可视化证据一起补齐 |
| Qwen Code (26.0k★) | #5647 | 通过 QWEN_MODEL 设定模型时也能识别 USE_OPENAI 认证 |
| Qwen Code (26.0k★) | #5287 | 让四舍五入到 60s 的亚分钟时长显示为 “1m” |
| Qwen Code (26.0k★) | #5204 | 重开 code fence 时不再插入多余空行 |
| deer-flow (77.0k★) | #4157 | subagent 的 description 是 agent 可编辑的(setup_agent / update_agent),却原样渲染进 <subagent_system> 块,构造的首行能越界伪造框架标签。转义掉,和 <soul> 那个修复同类。 |
| deer-flow (77.0k★) | #4137 | 在 SOUL.md 进入 <soul> system-prompt 块前 HTML 转义,让可被 agent 编辑的 personality 无法伪造框架标签、越出信任边界 |
| deer-flow (77.0k★) | #3797 | 同步 MCP session-pool 单例生命周期,避免并发首次使用创建重复池 |
| deer-flow (77.0k★) | #3799 | 串行化单个聊天的线程创建,并发消息不再给一个聊天建出重复线程。 |
| deer-flow (77.0k★) | #3719 | _apply_updates 跳过纯空白 facts,避免空白记忆条目堆积 |
| deer-flow (77.0k★) | #3778 | 同步 skill storage 单例的生命周期 |
| deer-flow (77.0k★) | #3631 | 从 streamed values 事件里剥离 base64 图片数据 |
| deer-flow (77.0k★) | #3709 | 修复同内容 todo 列表耗尽后 positional fallback 误吞不相关 todo |
| deer-flow (77.0k★) | #3674 | 让 UI 运行时 channel 配置优先于 config.yaml |
| deer-flow (77.0k★) | #4130 | 把 requests/httpx 剩余 HTTP 方法也识别为网络 sink |
| Microsoft Agent Framework (12.1k★) | #5808 | handoff 原地改了 message 的 role,重试复用时把改动泄漏出去了,改成复用消毒过的副本。 |
| Microsoft Agent Framework (12.1k★) | #5462 | 修复 background=True + tools 无限 retrieve loop:清掉已完成的 continuation 状态,让 tool results 正常提交 |
| Microsoft Agent Framework (12.1k★) | #6210 | reasoning payload 被剥掉时一并丢掉 hosted MCP 的 tool-call 历史,stateless 的 OpenAI replay 不再发孤立的 MCP 调用。 |
| Microsoft Agent Framework (12.1k★) | #5815 | 把 MCP tools/list 的元数据转发到 call_tool instrumentation,trace 里的工具注解不丢。 |
| Microsoft Agent Framework (12.1k★) | #5784 | 转换历史时跳过孤立的 Anthropic thinking signature,replay 不再带上无效的独立签名。 |
| Microsoft Agent Framework (12.1k★) | #6132 | 按 session id 过滤 filesystem checkpoint index,重开 store 不再返回别的 workflow session 的 checkpoint。 |
| Microsoft Agent Framework (12.1k★) | #5773 | 把同步的 Python 工具挪出事件循环跑,阻塞型调用不再冻住并发的 agent 任务。 |
| Microsoft Agent Framework (12.1k★) | #5801 | 按 call id 合并 code interpreter 的流式历史片段,存下来的代码和结果完整,也不会重复记 delta。 |
| Microsoft Agent Framework (12.1k★) | #6491 | .NET:修复 fan-in barrier 的 checkpoint 状态 |
| Microsoft Agent Framework (12.1k★) | #5861 | Foundry handoff 的结构化参数在 response 转换里丢了,delegated agent 调用跟着废,改成保留原结构。 |
| Microsoft Agent Framework (12.1k★) | #6208 | 声明式 Foreach 把多字段的 PowerFx table row 折叠了,改成整行 record 值原样带过每次迭代。 |
| Microsoft Agent Framework (12.1k★) | #6640 | Python:为 Bedrock 和 Gemini connector 暴露 cache 与 reasoning token 计数 |
| Microsoft Agent Framework (12.1k★) | #5904 | AG-UI thread id 下继续用 ChatClientAgent 的本地历史 provider,别把 session 历史当成服务端托管的模型历史。 |
| Microsoft Agent Framework (12.1k★) | #5778 | 补上 Magentic protocol 的消息声明,orchestrator 的 chat/reset 信号能反序列化,不再卡在未知类型上。 |
| Microsoft Agent Framework (12.1k★) | #5976 | 修复 sequential workflow 示例输出,让非 streaming 结果展示所有参与 agent 的回复 |
| Microsoft Agent Framework (12.1k★) | #5800 | 修复 AG-UI tool result message id 冲突:provider 省略 update id 时仍能生成独立 fallback id |
| Microsoft Agent Framework (12.1k★) | #6040 | 把 Foundry agent 的 default_headers 透传到 OpenAI client 创建,自定义的认证、路由 header 在初始化后还在。 |
| Microsoft Agent Framework (12.1k★) | #5974 | 让 Foundry agent eval 映射保留工具定义,评测运行能正常调用代码定义的 tools |
| Microsoft Agent Framework (12.1k★) | #5799 | 补齐 Handoff workflow 的 name/description 元数据传递,让 builder 和 hosting 注册都能命名工作流 |
| Microsoft Agent Framework (12.1k★) | #6037 | 保留 Foundry citation get_url 元数据,让检索引用链接经过 response conversion 后仍能出现在 chat response 中 |
| AstrBot (36.3k★) | #8750 | 修好 changelog 的 anchor 链接,dashboard 的 release notes 能跳到对的小节,不再是断锚。 |
| AstrBot (36.3k★) | #7537 | 修复 Telegram media group 异常被 APScheduler 静默吞掉:try/except + EVENT_JOB_ERROR listener |
| AstrBot (36.3k★) | #6581 | 修复截断器丢失唯一 user 消息导致智谱/Gemini 返回 400 |
| AstrBot (36.3k★) | #8172 | 优先用打包进去的 dashboard 资产,而不是过期的 data dist,发版后不再展示旧前端。 |
| AstrBot (36.3k★) | #6710 | 修复 skills-like re-query 丢失图片描述:extra_user_content_parts 未传递 |
| AstrBot (36.3k★) | #8736 | 保留 embedding API 的版本后缀,带版本的 provider endpoint 不会被归一化到错的路径。 |
| AstrBot (36.3k★) | #6474 | 修复 SQLite 并发写入 database is locked,添加 busy timeout |
| AstrBot (36.3k★) | #7196 | 修复 Gemini thinking parts 泄漏到用户可见的消息内容中 |
| AstrBot (36.3k★) | #7758 | 修复 OpenAI streaming 路径复用 empty-assistant 过滤:reasoning-only 历史不再让严格 provider 返回 400 |
| AstrBot (36.3k★) | #6656 | 修复 /stop 后新消息仍被 follow-up 捕获的竞态条件 |
| AstrBot (36.3k★) | #8089 | 图片请求在主 provider 不支持视觉输入时自动切到 vision fallback provider |
| AstrBot (36.3k★) | #8718 | 避免多模态回复在引用文本和图片 metadata 同时存在时重复显示 quoted image caption |
| AstrBot (36.3k★) | #8786 | 强制 persona 的工具调用边界 |
| AstrBot (36.3k★) | #6313 | 修复 OpenAI API 返回 None choices 导致崩溃 |
| AstrBot (36.3k★) | #8175 | 修复 WeChat OA 媒体发送失败仍上报成功:prepare/send 超时或失败时向调用方抛出明确错误 |
| AstrBot (36.3k★) | #6596 | 多模态 token 计数:图片/音频/思考链对 context 压缩不可见的问题 |
| AstrBot (36.3k★) | #7398 | 修复 Telegram 流式模式下空文本 sendMessageDraft 导致 400 错误刷屏 |
| AstrBot (36.3k★) | #8061 | 修复 Discord 启动同步命令触发 daily create quota 时打断 bot 启动:只把配额错误降级为 warning,其它异常继续抛出 |
| AstrBot (36.3k★) | #8255 | 支持 RST / AsciiDoc 知识库上传:后端解析白名单和前端文件校验同步扩展,避免支持的文档格式被入口拦截 |
| AstrBot (36.3k★) | #8195 | 跳过空的 LLM summary,压缩时保留原始历史,不塞空占位。 |
| AstrBot (36.3k★) | #8073 | 修复纯图片/表情消息的知识库空 prompt:空白文本时跳过 KB 检索,避免 embedding API 400 |
| AstrBot (36.3k★) | #7407 | 修复 Gemini 原生搜索无 function tools 时 400:跳过 FunctionCallingConfig |
| AstrBot (36.3k★) | #7217 | 修复 qwen3-rerank 响应解析:兼容新旧百炼 API 格式 |
| AstrBot (36.3k★) | #8119 | 修复 active reply 图片输入丢失:把图片组件转成 image URLs 传给 LLM,保留原有文本 prompt 行为 |
| AstrBot (36.3k★) | #8768 | 清理 Lark platform id 后缀中的不可见空白,避免配置里的尾部空格破坏平台匹配 |
| AstrBot (36.3k★) | #6527 | 修复 LLM 工具选择:重写模糊的 Upload/Download 描述 |
| AstrBot (36.3k★) | #7216 | 修复 Gemini tool call 400:纯文本 tool result 包装为 Protobuf Struct |
| AstrBot (36.3k★) | #7003 | 修复 WebChat 长响应断连:SSE 心跳保活,context 压缩期间不再超时 |
| AstrBot (36.3k★) | #6551 | 修复空 content 导致 Grok 400:content 为空时设为 None |
| AstrBot (36.3k★) | #8388 | 补上插件详情页 sub-command 数量的 dashboard i18n,扩展详情不再露出原始翻译 key。 |
| MCP Toolbox (15.9k★) | #3531 | 校验 Looker explore_references 的结构,非法输入不再 panic |
| MCP Toolbox (15.9k★) | #3516 | 参数 type 字段不是字符串时返回错误,而不是 panic |
| MCP Toolbox (15.9k★) | #3512 | array/map 参数类型报错时带上导致出错的具体值 |
| MCP Toolbox (15.9k★) | #3416 | 补充 execute_sql 最小权限配置的文档 |
| AgentScope (27.8k★) | #1717 | Windows 上启动 Bash tool 子进程时使用 CREATE_NO_WINDOW,避免工具执行弹出控制台窗口 |
| AgentScope (27.8k★) | #1815 | team run 里继承 leader 的权限规则,delegated agent 守着和 leader 一样的 workspace、文件访问约束。 |
| AgentScope (27.8k★) | #1734 | append 和 streaming replace 时刷新 Redis message list 的 TTL,配置的存储 TTL 才真正约束聊天历史。 |
| AgentScope (27.8k★) | #1883 | 处理没有 id 的 Gemini function call |
| AgentScope (27.8k★) | #1786 | 创建 Redis session 时保留调用方给的 id,后面的 get/update/list 命中同一个 session,而不是新生成的 UUID。 |
| AgentScope (27.8k★) | #1732 | 汇总所有启用的 tool group 的 skill,prompt instructions 和 Skill viewer 跟当前启用的工具对得上。 |
| AgentScope (27.8k★) | #1774 | 显式设置 Qwen thinking_enable 时转发到 OpenAI-compatible extra_body,同时不污染普通 OpenAI 请求 |
| AgentScope (27.8k★) | #1823 | 把 workspace root 加进 permission context,chat run 按 agent 真正能看到的 workspace 去授权文件。 |
| AgentScope (27.8k★) | #1822 | 给内置 Bash tool 增加 cwd 选项,让 shell 命令能在指定 workspace 目录执行 |
| OpenAI Agents SDK (27.9k★) | #3643 | 上报实际生效的 Blaxel 超时值,而不是未配置的默认值 |
| promptfoo (23.2k★) | #9867 | 读取 Azure logprobs 时空 choices 数组不再崩溃 |
| promptfoo (23.2k★) | #9897 | 给 Bedrock Titan 和 Cohere provider 的数组访问加守卫,空响应数组不再让生成崩掉。 |
| promptfoo (23.2k★) | #10076 | 工具调用缺 function 对象时 tool-call 断言抛 TypeError;改成返回 pass:false。 |
| promptfoo (23.2k★) | #9815 | 拒绝畸形的 __expected0 CSV 表头,而不是静默丢弃它的断言 |
| promptfoo (23.2k★) | #9761 | contains-any/all 断言值里保留引号内的逗号 |
| promptfoo (23.2k★) | #9840 | 保留 JSONL 行的 description 而不是覆盖 |
| promptfoo (23.2k★) | #9757 | array metadata 值里所有转义逗号都还原 |
| promptfoo (23.2k★) | #9841 | 空输出返回 pass:false 而不是抛异常 |
| promptfoo (23.2k★) | #9822 | maxLen 小于 3 时 ellipsize 仍不超过 maxLen |
| Google ADK (20.6k★) | #5698 | 让 final_response_match_v2 在 criterion 选择开启时把 intermediate responses 纳入最终回答评判 |
| Google ADK (20.6k★) | #5918 | 允许 builder assistant 内部特殊 app name 通过 CLI runner 校验,让 adk web 能打开该特殊 agent |
| Mem0 (60.8k★) | #5416 | 修复 S3 Vectors entity index 命名,避免 agent memory 写入因 AWS index-name 校验失败 |
| Mem0 (60.8k★) | #5383 | OpenClaw CLI metadata 注册时跳过 runtime setup,插件发现阶段不再重复注册运行时副作用。 |
| Mem0 (60.8k★) | #5380 | 暴露 Qdrant 的 https 选项,自托管的 HTTP 集群用 API key 认证就行,不用被逼进 TLS client 模式。 |
| AG-UI (14.7k★) | #1735 | 修复 HITL tool call 后 ADK session 可能被旧状态回写的问题 |
| AG-UI (14.7k★) | #1832 | LangGraph 转换文本和媒体 block 时保留 AG-UI InputContent.metadata |
| AG-UI (14.7k★) | #1890 | 在一次 ADK execution 内缓存 session 读取,远端 session service 不用在每次 agent 运行前重复拉一遍。 |
| AG-UI (14.7k★) | #1828 | 识别 Strands 私有的 session manager,AG-UI 回放历史时尊重活跃 session,不再重播旧轮次。 |
| AG-UI (14.7k★) | #1829 | LangGraph 流从文本切到 tool call 时先关闭当前文本消息,避免工具调用事件被前一段文本吞掉 |
| AG-UI (14.7k★) | #1889 | 构建 ADK workflow graph 时把 output_schema 的 agent 也收进来,结构化输出的节点不再漏。 |
| AG-UI (14.7k★) | #1848 | 打包回放的 tool results |
| AG-UI (14.7k★) | #1826 | 把 LangGraph 的 runtime context 透传进 tool kwargs,graph tool 保住调用方传的执行上下文。 |
| AG-UI (14.7k★) | #1769 | 将 proto generation 从 Unix-only mkdir -p 改为跨平台 Node 脚本,兼容 Windows .CMD plugin shim |
| AG-UI (14.7k★) | #1730 | 允许 CopilotKit 1.x 的 runtime peer 依赖 |
| goose (51.2k★) | #9599 | 改用阻塞式的 OTLP HTTP exporter,进程退出时遥测数据不丢。 |
| goose (51.2k★) | #9528 | 恢复 desktop 应用里 new chat 快捷键的导航 |
| goose (51.2k★) | #9584 | 显示 skill 支持文件解析后的真实路径,而不是未解析的占位符 |
| opencode (185.8k★) | #30022 | 把 MCP OAuth 回调服务绑到 IPv4 loopback,让浏览器回跳稳定连上、不再和 IPv6 抢地址 |
| LiveKit Agents (11.3k★) | #5994 | 兼容 OpenAI 兼容 realtime 返回字符串的 status details,incomplete response 不再在日志路径崩。 |
| LiveKit Agents (11.3k★) | #5872 | 把 ElevenLabs server-VAD 的 committed transcript 映射成 END_OF_SPEECH,realtime turn 不用手动空 commit 才结束。 |
| LiveKit Agents (11.3k★) | #5820 | 修复 Anthropic streaming retry:瞬时建流失败后重新创建 stream,不再重复 await 同一个 coroutine |
| LiveKit Agents (11.3k★) | #5976 | 调用方传入自定义 Google HTTP options 时仍保留请求 timeout,并避免原地修改调用方对象 |
| LiveKit Agents (11.3k★) | #5864 | 暴露 Soniox STT server error:流式识别失败时返回明确错误,不再被当成空 transcript |
| LiveKit Agents (11.3k★) | #6124 | GetDOBTask 里规范化两位数年份 |
| LiveKit Agents (11.3k★) | #5887 | 删除裁剪后为空的 audio item |
| Strands Agents SDK (6.5k★) | #2353 | 处理 Gemini safety-blocked metadata:缺失 token 计数时安全归零,并把 safety stop 映射为 guardrail intervention |
| Strands Agents SDK (6.5k★) | #2340 | 并发的 tool result 按请求顺序回填,并行执行不会打乱模型看到的输出顺序。 |
| Strands Agents SDK (6.5k★) | #2400 | 支持非流式 OpenAI chat completions |
| Strands Agents SDK (6.5k★) | #2656 | 处理空的 Bedrock content block |
| Strands Agents SDK (6.5k★) | #2354 | 读 OpenAI 兼容 vLLM 流里的 delta.reasoning,reasoning 输出过了 provider 转换也不丢。 |
| Strands Agents SDK (6.5k★) | #2823 | 空 model stream 时避免 UnboundLocalError |
| Strands Agents SDK (6.5k★) | #2304 | 显式映射 webp 图片 |
| Strands Agents SDK (6.5k★) | #2396 | 传递 structured output 的请求参数 |
| Strands Agents SDK (6.5k★) | #2306 | 规范化 3gp 视频格式 |
| OpenHands (80.7k★) | #14776 | 编辑 basic model 设置时保留自定义的 LLM base URL,存下来的 profile 不再静默回退到 provider 默认 endpoint。 |
| Pydantic AI (18.5k★) | #5474 | 接受 Vercel AI dynamic-tool 消息里的 providerExecuted 和 title,严格校验下也留住 provider 元数据。 |
| Pydantic AI (18.5k★) | #5695 | 在 completions 里转发 penalties 参数 |
| Pydantic AI (18.5k★) | #5694 | 修复 MCPToolset(http_client=...) 与 FastMCP 的兼容问题,避免把 follow_redirects 泄漏给调用方提供的 HTTP client factory |
| Cline (64.6k★) | #11166 | open-tabs 的 host RPC 挂了也能搜文件,回退到系统 rg,不让搜索整个失效。 |
| Agno (41.1k★) | #8131 | 保留非哨兵工具参数字符串里的空白,同时继续只对精确的 None / True / False 哨兵做归一化 |
| Inspect AI (2.3k★) | #4267 | truncate() 在长度小于溢出指示符时仍保持在限制内 |
| Inspect AI (2.3k★) | #3924 | 未知的 GenerateConfig 字段提前报错,拼错的生成参数不再被静默忽略。 |
| Inspect AI (2.3k★) | #4363 | reduce 空 score 列表时返回 NaN 而不是崩溃 |
| Inspect AI (2.3k★) | #3902 | 修复 OpenAI-compatible 响应里的 OpenRouter reasoning_details:解析为可读 reasoning 文本,而不是暴露 Python repr |
| Inspect AI (2.3k★) | #3941 | 修复 Bedrock Nova top_k 路由:把采样控制传到 inference config,而不是被静默丢弃 |
| Inspect AI (2.3k★) | #3896 | 修复 filestore recovery append 模式:保留已恢复 message/tool-call 池,同时避免重复哈希旧片段 |
| Inspect AI (2.3k★) | #4342 | 不缓存瞬时的 reasoning_summaries 探测失败 |
| Inspect AI (2.3k★) | #3975 | 解析 role model override 时保留调用侧的生成默认值,角色换模型不会丢掉 max tokens、reasoning effort 这些设置。 |
| Inspect AI (2.3k★) | #4069 | 周期性 flush 流式 score sample,长时间评测在结束前也能持续把 score 落盘。 |
| Inspect AI (2.3k★) | #4303 | 拒绝含多个连字符的 sample limit |
| Inspect AI (2.3k★) | #4218 | 复用中断的 checkpoint id |
| Inspect AI (2.3k★) | #3982 | 在 agent bridge 转换里保留 wrapped 的 OpenAI reasoning payload,加密的 provider 原生 reasoning 项在 transcript 转换时不丢。 |
| Inspect AI (2.3k★) | #4357 | reduce 不匹配的 list/dict scores 时抛出清晰错误 |
| Inspect AI (2.3k★) | #3895 | 修复 TERM=dumb 下终端宽度:尊重 COLUMNS,日志输出不再固定按 Rich 默认 80 列硬换行 |
| Inspect AI (2.3k★) | #4173 | 规范化 buffer task 目录 URI |
| Inspect AI (2.3k★) | #4300 | FileSystem.is_writeable 去掉路径末尾分隔符 |
| Inspect AI (2.3k★) | #4282 | 空 scores 时 accuracy() 返回 0 |
| Inspect AI (2.3k★) | #4090 | 澄清 model-graded history prompt:include_history=True 和最终答案字段的位置与实际 scorer 行为保持一致 |
| GitHub MCP Server (31.4k★) | #2514 | PR review 请求支持 team reviewer,把 team slug 解析成 GitHub review subject,而不是直接丢掉。 |
| GitHub MCP Server (31.4k★) | #2612 | read-only 模式下隐藏会写入 GitHub 的 UI resources,同时保留安全的只读资源注册 |
| FastMCP (26.2k★) | #4297 | 构建工具 schema 时保留必需的 discriminator tag,union 参数才还有效。 |
| ClawTeam (5.3k★) | #1 | 首个 PR:122 个测试、CI、团队模板、config 修复、任务耗时追踪 |
| ClawTeam (5.3k★) | #32 | Gemini CLI 支持:spawn、权限、prompt 注入双 backend 适配 |
| ClawTeam (5.3k★) | #40 | 可插拔 TaskStore:将任务持久化抽取为可替换的后端抽象层 |
| ClawTeam (5.3k★) | #36 | Kimi CLI 支持:spawn backend、权限处理、3 个新测试 |
| EvalScope (3.0k★) | #1381 | 从 OpenAI 风格的 text content block 里读 SciCode 的 assistant 答案,scorer prompt 拿到真答案而不是空字段。 |
| OpenHarness (14.7k★) | #185 | TUI tab 补全三合一修复:光标跳回、去除尾部空格、接受 /quit 别名 |
| Pipecat (13.4k★) | #4553 | 修复 protobuf transport 丢失 interruption frame:实时语音 agent 的打断事件跨传输后仍能保留 |
| MCP Registry (7.0k★) | #1310 | 拒绝损坏的 publisher 元数据,而不是接收畸形条目 |
| LM Evaluation Harness (13.2k★) | #3822 | 保证传给 Anthropic 的 stop sequence 非空,避免请求被拒 |
| MCP Go SDK (4.7k★) | #962 | 拒绝重复的 initialize 请求,MCP session 初始化后的协议状态保持一致。 |
| MCP Go SDK (4.7k★) | #981 | 补齐 Implementation.description 元数据,同时让空描述继续不进入序列化后的 MCP payload |
| OpenHands SDK (900★) | #3247 | 用 git rev-parse --git-dir 校验 git workspace,坏掉的嵌套 repo 打不崩 /api/git/changes。 |
| OpenHands SDK (900★) | #3248 | 用 RLock 串行化 LiteLLM modify_params 的保存、设置和恢复,避免并发 completion 泄漏全局参数状态 |
| OpenHands SDK (900★) | #3225 | remote completion 日志按 UTF-8 写,中文和非 ASCII 输出在本地回放、排查时不乱码。 |
| 项目 | PR | 修了啥 |
|---|---|---|
| Firecrawl (151.0k★) | #3730 | self-host 抓取的 interact 动作明确报错拒绝,而不是隐晦地失败 |
| Firecrawl (151.0k★) | #3729 | self-host bypass 路径保留 auth chunk,已认证的 self-host 抓取不再被丢掉。 |
| Firecrawl (151.0k★) | #3713 | Python SDK 正确处理 async v1 batch scrape 以 dict 形式返回的响应 |
| dify (148.8k★) | #37425 | 给 OperationService 计费请求加超时,慢计费端点挂不住请求。 |
| dify (148.8k★) | #38801 | 在 service-api 和 explore 端点提前校验 conversation,坏的 conversation_id 直接 404,而不是流式跑到后期才失败。 |
| dify (148.8k★) | #37685 | watercrawl 请求超时保持有界,而不是用 timeout=None 禁用 |
| dify (148.8k★) | #37669 | legacy dataset 配置提取时跳过空的 tool entry |
| RAGFlow (85.0k★) | #15691 | 跳过空的 agent switch 条件,空分支判断不会让有效的后续 agent 流程崩掉或卡住。 |
| RAGFlow (85.0k★) | #15601 | Docling native 解析没产出 chunk 时降级,文档还能出可用内容,而不是空解析。 |
| RAGFlow (85.0k★) | #15696 | 重复的 n-hop GraphRAG 边保留最强的 PageRank 分,路径顺序覆盖不了排序。 |
| LightRAG (37.6k★) | #3031 | 从 Docling 异步结果 envelope 里抽出 Markdown 正文,RAG chunk 拿到干净文本,不混 JSON/base64 噪声。 |
| LightRAG (37.6k★) | #3206 | PostgreSQL 表存在性检查尊重 search_path,非 public schema 在迁移、建表前就能识别对。 |
| LightRAG (37.6k★) | #3123 | 把 API 文档配色和暗色主题同步,endpoint 示例在 dark mode 下也读得清。 |
| LightRAG (37.6k★) | #2796 | 修复 None file_path 传播为 unknown_source:补 #2793 遗漏的处理层 |
| cherry-studio (48.5k★) | #16352 | 在截断边界保住 surrogate pair,多字节字符不会被切成半个非法字符。 |
| cherry-studio (48.5k★) | #16454 | 保留 citations 里的纯 URL markdown 引用行,不再丢弃 |
| cherry-studio (48.5k★) | #16217 | 相对时间在单位边界正确进位 |
| cherry-studio (48.5k★) | #16361 | 为大写扩展名正确解析 .d.ts 图标 |
| cherry-studio (48.5k★) | #16358 | aihubmix 路径丢弃 Ideogram 里没有可用 URL 的 data[] 项,不再渲染坏图 |
| Phoenix (10.5k★) | #13641 | provider 变化时让 prompt tool diff 过期,PXI 编辑不再把旧的工具差异状态带到别的 provider。 |
| Phoenix (10.5k★) | #13637 | in-memory SQLite schema 初始化完再对外服务 Phoenix,启动竞态撞不上缺表。 |
| Phoenix (10.5k★) | #13245 | 修复 generative model fetch 游标回退:低 id 更新不会让后续轮询跳过更新的模型变更 |
| Phoenix (10.5k★) | #13210 | 修复非法 GraphQL node id 的错误处理:返回 NotFound 风格错误,而不是把 decoder failure 泄漏给客户端 |
| Phoenix (10.5k★) | #13636 | 更新 PXI system prompt 指南,指向当前 server-side Jinja 模板和 capability wiring,不再引用过期的 browser-side 路径 |
| Phoenix (10.5k★) | #13242 | 为 raw computer tool definitions 传递 Anthropic computer-use beta headers,覆盖 playground streaming 和非 streaming 调用 |
| Phoenix (10.5k★) | #13653 | PXI agent 面板一打开就聚焦输入框,键盘优先的流程少点一下。 |
| Phoenix (10.5k★) | #13139 | 修复 Playground 校验错误被吞掉的问题:失败时返回明确错误,而不是空 subscription payload |
| Phoenix (10.5k★) | #13614 | 修复 Prompts 表格停留页面时不会自动刷新的问题:新建或更新的 prompt 不再需要手动刷新才能出现 |
| Phoenix (10.5k★) | #13261 | 修复 span annotation note 新建后的刷新问题:创建成功后立即重新拉取列表,前端不再需要手动刷新才能看到新 note |
| Graphiti (28.7k★) | #1531 | 递归清掉 FalkorDB 查询参数里的 NUL 字节,单个异常文档字符串打断不了批量图写入。 |
| DB-GPT (19.4k★) | #3092 | sandbox 用本地 runtime 执行前要求显式 opt-in |
| yfinance (24.7k★) | #2867 | 补上漏掉的逗号,避免 equity screener 的两个 EPS 字段被并成一个 |
| 项目 | PR | 修了啥 |
|---|---|---|
| Microsoft Recommenders (21.8k★) | #2349 | 优先用 torch 查询 GPU 显存 |
| Microsoft Recommenders (21.8k★) | #2351 | TensorFlow GPU 不可用时 fail fast |
| Microsoft Recommenders (21.8k★) | #2345 | 先用 PyTorch 查 GPU 显存,numba 兜底,CUDA context 不可用时 GPU discovery 不至于直接失败。 |
| Microsoft Recommenders (21.8k★) | #2322 | 让 benchmark 的推荐数量参数生效,评测脚本按要求生成 top-k。 |
| Microsoft Recommenders (21.8k★) | #2350 | 统一标注 MAP@k notebook 的输出 |



