问题The issue requests adding Bourse, an OpenAI‑compatible AI capacity reseller, to LiteLLM's official providers list and providing a dedicated documentation page.…
为何现在可做The request is purely documentation, provides explicit instructions and examples, involves minimal code changes, and can be completed quickly with low risk.
第一步Examine an existing provider doc (e.g., docs/providers/openai.md) to understand the required format, then create a draft bourse.md with the correct frontmatter…
问题The PythonTools.run_python_code method uses `safe_globals or globals()` and `safe_locals or locals()` for its execution namespace.
为何现在可做The issue is a well‑described critical security bug with a straightforward fix (change falsy‑or to None check).
第一步Clone the repo, run the reproduction snippet from the issue to confirm that `"__builtins__" in pt.safe_globals` evaluates to True, then edit libs/agno/agno/too…
问题The SDK's tools/list endpoint advertises JSON Schema draft-07 for Zod v4 schemas, even though Zod v4's native toJSONSchema() outputs the SEP-1613 default diale…
为何现在可做The issue is well‑reproduced, impact is severe (all tools broken for strict clients), and the fix is isolated to two call sites with existing PRs ready, making…
第一步Clone the repository, open src/server/mcp.ts (or the file containing toJsonSchemaCompat calls for Zod v4), identify the two call sites for inputSchema and outp…
今日行动队列 · 完整
⚠ 当前行动队列不可直接使用:请先重新核验本轮运行状态。
Easy
BerriAI/litellm · 新鲜
Add Bourse as an OpenAI-compatible provider
问题:The issue requests adding Bourse, an OpenAI‑compatible AI capacity reseller, to LiteLLM's official providers list and providing a dedicated documentation page.
为何可做:The request is purely documentation, provides explicit instructions and examples, involves minimal code changes, and can be completed quickly with low risk.
tools/list emits draft-07 $schema for Zod v4 schemas: toJsonSchemaCompat is called without a target, and mapMiniTarget defaults to 'draft-7'
问题:The SDK's tools/list endpoint advertises JSON Schema draft-07 for Zod v4 schemas, even though Zod v4's native toJSONSchema() outputs the SEP-1613 default dialect 2020-12.
为何可做:The issue is well‑reproduced, impact is severe (all tools broken for strict clients), and the fix is isolated to two call sites with existing PRs ready, making it straightforward…
问题:The repository's automated Python dependency maintenance workflow has successfully generated updated dependency files and pushed them to the automation branch `automation/python-d…
为何可做:The issue is a straightforward, well-documented manual step: a bot has prepared a branch with dependency updates and given the exact PR creation instructions.
Design intent: on cache hits, spend is zeroed but token columns replay the original usage — which basis should token reports aggregate?
问题:The issue questions the semantics of token columns (prompt_tokens, completion_tokens, total_tokens) in spend_logs rows when a response cache hit occurs.
为何可做:The issue is a well‑formed design question that can be resolved by adding documentation or a tiny comment; no deep refactoring is needed, making it straightforward and low‑effort…
outputSchema always emitted as JSON Schema draft-07, breaking clients that only accept 2020-12
问题:The SDK's `mapMiniTarget` function defaults to JSON Schema draft-07 when no explicit target is provided, causing all `outputSchema` values generated by `McpServer` to carry a `$sc…
为何可做:The issue is well‑described with a clear root cause and a trivial one‑line fix; there is no evidence of a prior resolution, and the bug blocks a core SDK feature for many users.
[Feature]: Add an environment kill switch for Responses WebSocket
问题:Operators need a way to disable new Responses API WebSocket connections without taking down the entire proxy.
为何可做:The request is well-scoped, mirrors existing env-flag patterns, and only touches a single route handler, making it straightforward to implement and test.
A handler that throws McpError produces a double-prefixed message on the client
问题:When a request handler throws an `McpError`, the SDK prefixes the error message with "MCP error <code>:" twice: once when the error is constructed and again when the client recons…
为何可做:The issue includes a clear reproduction, a detailed root‑cause analysis, and a concrete proposed fix.
问题:The TypeScript SDK's `registerTool` (via `src/services/schema-dialect.ts`) advertises JSON Schema draft-07 in the `tools/list` response, while the MCP spec (SEP-1613) requires dra…
为何可做:The issue is well-described, points to a single file needing a one-line version bump, and there are already open PRs/issues showing the fix is known and low-risk.
Python: Design question: why do Declarative InvokeAzureAgent and WorkflowBuilder AgentExecutor differ in agent conversation semantics?
问题:The issue points out that in the Python agent framework, invoking an Azure agent through declarative YAML (InvokeAzureAgent) uses workflow-scoped conversation state, while invokin…
为何可做:The issue is a design question seeking rationale; it does not present a bug, missing feature, or actionable code change.
.NET: Should we exclude cases where ConversationId="_agent_local_chat_history"?
问题:The CompactionProvider skips compaction when a ChatClientAgentSession has a non‑whitespace ConversationId.
为何可做:The issue points to exact lines, provides a clear reproduction explanation from a comment, and the fix is a simple additional condition, making it straightforward to implement and…
[Feature Request] Add X-Accel-Buffering: no header to SSE streaming responses
问题:When AgentOS runs behind nginx (a common production reverse‑proxy setup), nginx buffers Server‑Sent Events (SSE) responses by default, causing streamed events to arrive in delayed…
为何可做:The issue is well described, the fix is localized and low‑effort, and it addresses a common deployment pain point without risk of breaking existing functionality.
experimental.tasks.getTaskResult() throws TypeError: Cannot read properties of undefined (reading '_zod') when the optional result schema is omitted
问题:The `ExperimentalClientTasks.getTaskResult` method declares its `resultSchema` parameter as optional, but when called without a schema it passes `undefined` to the internal protoc…
为何可做:The issue includes a clear reproduction, identifies the exact location of the bug, and proposes a straightforward fix (adding a default schema).
v1.x and v2 disagree on validating an error result's structuredContent — and the v1.x comment describes the v2 behaviour
问题:In the v1.x TypeScript SDK, the validation of a tool result's `structuredContent` incorrectly runs even when `isError: true`, due to a missing `!result.isError` guard.
为何可做:The issue precisely identifies the mismatched code lines, provides a reproducible example, and explains the impact.
CustomAdapterOptions types defaultHeaders/client as never, but the client base built by useStream reads them — self-hosted custom-transport servers g…
问题:The CustomAdapterOptions type incorrectly marks client, defaultHeaders, apiKey, etc.
为何可做:The problem is a straightforward type mismatch blocking auth; the fix is a one‑line type adjustment with a reproduced case and verified test passes locally, making it low risk and…
[FEATURE] Support OpenAI Responses server-side compaction end to end
问题:OpenAI's Responses API can perform server-side compaction when `contextManagement` is enabled, emitting an opaque encrypted compaction item that must be persisted across subsequen…
为何可做:The issue provides a clear problem statement, specific file paths, and a detailed proposed solution, making it straightforward to scope and implement; the feature is labeled high…
[Bug] AgentOS A2A interface allows unauthenticated agent discovery and remote invocation by default (CWE-306, CVSS 9.8)
问题:AgentOS's A2A interface is enabled without authentication by default.
为何可做:Critical security vulnerability (CVSS 9.8) enabling unauthenticated remote agent discovery and execution, which can lead to code execution; must be fixed urgently.
[Bug] Agent orchestration executes model-requested tool calls without a default confirmation gate, allowing arbitrary code execution (CWE-913, CVSS 9…
问题:The agent orchestration loop in agno executes every tool call requested by the model immediately, because the default confirmation gate (requires_confirmation) is off and there is…
为何可做:The issue provides exact file paths, line numbers, and a clear root cause; fixing it involves changing default values and adding a small guard, which is straightforward and high i…
Support streaming output during client tool execution for HTML generation in agui api
问题:The /api/v1/agui endpoint streams text and reasoning content but does not stream intermediate output when client tools are used to generate HTML.
为何可做:Issue describes a clear UX gap with a concrete proposal; the required changes are localized to streaming logic in the agui endpoint and tool execution, making it straightforward t…
[Bug] AgentOS streaming does not forward OpenAIResponses reasoning content/events, while reasoning token usage is returned
问题:When an agent using OpenAIResponses is served via AgentOS, the streaming response includes reasoning token usage but omits the actual reasoning events (start, content deltas, comp…
为何可做:The issue is well described with clear expected vs actual behavior, and there are already open PRs (#8418, #9540) that target the exact missing reasoning event forwarding in _resp…
Bug: ...Performance degradation during long-running agent tasks due to repeated DOM serialization, browser state fetching, and growing message history
问题:During long-running browser automation tasks, performance degrades because the agent repeatedly serializes the entire DOM, accumulates an ever-growing LLM message history, and fet…
为何可做:Issue provides a clear problem statement, reproducible scenarios, and concrete improvement suggestions; no conflicting information or missing context; the scope is well-defined an…
Streamable HTTP: close replayed request streams once no in-flight requests remain
问题:When a client resumes an HTTP stream using a Last-Event-ID, the replayed request stream remains open indefinitely even after all correlated responses have been delivered or stored…
为何可做:The issue provides a precise symptom and a clear fix point (close replayed stream when no in‑flight requests remain).
[Bug] AgentOS enables no authentication by default, exposing all REST endpoints (configuration, sessions, agent runs) to unauthenticated access (CWE-…
问题:AgentOS ships with authentication disabled by default (authorization=False and os_security_key=None).
为何可做:The issue gives exact reproduction steps, points to the specific lines of code causing the problem, and the fix is limited to adjusting a few default values and adding tests, maki…
[Bug] CodingTools run_shell allows arbitrary command execution via chr()-encoding bypass of the restricted-mode command disallowlist (CWE-78, CVSS 9.…
问题:The CodingTools.run_shell method uses an incomplete denylist of shell operators and then passes the command string to subprocess.run with shell=True.
为何可做:The issue provides a precise location (agno/tools/coding.py:499‑529), a clear root cause (incomplete denylist bypassible via chr() encoding), and a reproducible PoC.
Streamable HTTP: JSON-response-mode stream mappings never complete their lifecycle
问题:When `enableJsonResponse: true` is used on a stateful Streamable HTTP transport, the JSON-response path in `send()` resolves the pending response via `resolveJson` but never calls…
为何可做:The issue description and comments precisely identify the missing cleanup and missing promise settlement, point to the exact files and lines, and reference existing fixes on main.…
.NET: [Bug]: Hosted agent toolbox consent link is bound to the container's managed identity, so sign-in fails with "Code <id> not found"
问题:When a hosted .NET agent uses a pre‑registered toolbox with a per‑user OAuth MCP connection, the consent link generated in the oauth_consent_request is tied to the container's sys…
为何可做:The issue provides a clear reproduction path, identifies the responsible components (Foundry toolbox bearer token handler and response handler), and the fix scope is limited to pr…
Durable agents: expose shouldPersistSnapshot (skip running checkpoints) on createDurableAgent
问题:The `createDurableAgent` API does not expose the `shouldPersistSnapshot` option that controls whether workflow snapshots are written to storage for each status.
为何可做:The issue is well‑described with a clear API request, reproducible performance evidence, and a straightforward fix that involves exposing an existing internal flag.
OtherHalf a day to 1 dayMediumbranch: maintestshuman review
问题:When a Mastra agent invokes an MCP tool, the resulting observability trace is split: the caller creates an MCP_TOOL_CALL span while the MCP server starts a completely separate roo…
为何可做:The issue provides a precise problem description, concrete code locations, and a clear implementation plan.
[FEATURE] Per-step dependsOn inside parallel layers, so a join waits on its parents instead of the whole layer
问题:The current `.parallel()` implementation treats the entire preceding layer as a dependency barrier for every join step, causing joins to wait for steps they do not actually consum…
为何可做:The issue is well‑described with a reproducible example, clear impact on correctness and performance, and no evidence of prior resolution.
Sandbox “no space left on device” — 6,543 failed workflow runs and a full hour of failures
问题:The Dify Cloud sandbox runs out of disk space when executing Python Code nodes, causing 'no space left on device' errors.
为何可做:Issue is well‑described with clear error message and impact; the fix likely involves adding cleanup of sandbox temp files, a bounded change that can be tested and merged as a PR.
Bug fix1-2 daysMediumbranch: maintests if riskhuman review
Feature request: expose sub-agent's full generate() result (usage/finishReason/steps) through agents: delegation + optional verbatim relay
问题:When using the `agents:` delegation feature, the supervisor only receives the synthesized text output from a sub-agent, losing access to the sub-agent's full generation result suc…
为何可做:The request is a low‑severity feature; the core usage/finishReason data is already available via direct sub-agent calls, and a hand‑rolled tool provides a workaround.
[FEATURE] Support async refine/superrefine in tool inputSchema for pre-approval validation
问题:Currently, Mastra validates tool input schemas synchronously before showing the approval prompt, so any validation that requires asynchronous operations (e.g., calling an external…
为何可做:The issue is well‑defined with a concrete example and proposed code changes, affecting a bounded part of the tool validation pipeline, making it straightforward to implement a PR…
[FEATURE] Mastra Code: start a new thread by default instead of restoring the last thread
问题:The `mastracode` CLI automatically restores the most recent thread when launched, even in a fresh terminal session.
为何可做:The issue is well‑defined, has a clear proposed solution, and a maintainer has indicated openness to adding a flag or config setting, making it straightforward to implement a smal…
OtherHalf a day to 1 dayMediumbranch: maintestshuman review
[FEATURE] Let a custom tool reuse the built-in ask_user UI while keeping its own suspended continuation (composable context.askUser())
问题:Currently, a tool that needs to ask the user must either use the built-in askUserTool (which creates a separate tool call and loses the tool's own continuation) or suspend with a…
为何可做:The issue is well‑described with a concrete API proposal and clear problem statement.
Add configurable retry-with-backoff for tool execution failures
问题:当工具在执行过程中遇到临时性错误(如超时、速率限制或网络波动)时,当前实现会立即将错误向上抛出,导致代理任务提前失败。用户在与外部 API 交互时经常遇到这类可恢复的故障,却需要自行在每个工具中实现重试逻辑,造成代码重复和行为不一致。引入可配置的指数退避重试机制可以在保持向后兼容的同时,统一处理 transient failures,提升系统鲁棒性。
[Feature]: Include optional pricing metadata in /v1/models for downstream agent cost accounting
问题:The LiteLLM Proxy's `/v1/models` endpoint currently returns only basic model metadata.
为何可做:The issue is well‑scoped, includes a concrete example and clear acceptance criteria, and a maintainer has already expressed interest in taking it.
[RFC] Expose structured provider-error/route-health contract from router cooldown state
问题:LiteLLM internally classifies provider errors (quota exceeded, rate limited, auth failures, etc.) and tracks per‑deployment cooldown state, but this information is not exposed in…
为何可做:The issue is a well‑scoped RFC with explicit acceptance criteria and clear downstream motivation.
问题:The issue requests a new optional SDK capability to proactively query upstream provider quota or balance information, distinct from LiteLLM's internal budget tracking.
为何可做:The issue provides a well‑scoped, concrete proposal with a suggested API, starting point (OpenRouter), and clear separation from existing budget features, making it straightforwar…
[Bug]: Responses-to-Chat streaming loses reasoning progress and cached reasoning state
问题:The Responses-to-Chat bridge in LiteLLM does not forward incremental reasoning items from upstream LLM responses.
为何可做:Issue provides a clear root cause, proposed fix, and verification data; it is unresolved and addresses a reliability gap in reasoning streaming, making it a well‑scoped bug fix.
Python: [Bug]: AG-UI local approval execution does not receive function_invocation_kwargs / tool runtime context
问题:The AG-UI approval/resume path executes approved tools before calling `agent.run(...)`, but it only builds tool runtime kwargs from `run_kwargs`.
为何可做:Issue is well‑described, includes reproducible steps, points to the exact function needing modification, and has a contributor willing to work on it.
[Feature]: Re-land the asqav audit-log callback (merged PR #30238 never reached a release)
问题:The asqav audit‑log callback was added in PR #30238 but was merged into a dropped staging branch, so the feature never appeared in any released version.
为何可做:The feature is already implemented and tested; it only needs to be merged into an active release branch.
SDK v2: hydration treats an active run's empty `next` checkpoint as idle and never subscribes
问题:In LangGraph.js SDK v2, the hydration process incorrectly treats an active run whose `next` checkpoint array is empty as idle, causing it to never subscribe to the `/stream/events…
为何可做:The issue includes a minimal, runnable reproduction and points directly to the hydration logic.
[Bug]: reasoning_effort=xhigh is silently downgraded to baseline instead of refused when the model map lacks the capability
问题:When a model's capability map does not set `supports_xhigh_reasoning_effort`, LiteLLM silently removes the `reasoning_effort='xhigh'` parameter instead of refusing the request or…
为何可做:The issue points to a specific code file and logic branch, provides a clear reproduction case, and the expected behavior is unambiguous.
Python: [Feature]: First-class background execution for workflows (parity with agent Background Responses)
问题:The issue requests a first‑class background execution API for workflows that mirrors the agent Background Responses pattern: start a long‑running workflow, get a continuation toke…
为何可做:The request is well‑defined, includes code snippets and expected behavior, and touches a localized API surface; no evidence of prior resolution or ongoing work.
Agent Server: cancelling a run does not stop JS graphs — the request AbortSignal is never passed to graph.streamEvents()
问题:When a run is cancelled via the Agent Server's /threads/{threadId}/runs/{runId}/cancel endpoint, the server correctly marks the run as interrupted and ends the SSE stream, but the…
为何可做:The issue gives a precise reproduction, identifies the missing AbortSignal pass to graph.streamEvents(), and includes a clear expected behavior.
Bug fixHalf a day to 1 dayMediumbranch: maintestshuman review
问题:Users want a zero‑configuration web search tool that works without an API key, lowering the barrier for newcomers to try CrewAI with web search.
为何可做:The issue provides a detailed, step‑by‑step implementation plan that follows an established pattern, introduces no breaking changes, and adds clear user value with modest effort.
.NET: Make Foundry delegated user identity sticky on AgentSession
问题:The Foundry-hosted user identity must be supplied on every agent run via ChatOptions.WithFoundryHostedAgentUserIdentity, which prevents reusing an AgentSession for a different del…
为何可做:Issue is well-scoped with explicit acceptance criteria, no ambiguity, and affects a single .NET component.
Python: [Bug]: MAF workflow terminates on transient Foundry exceptions instead of retrying — workflow instance cannot be reused after crash
问题:When Azure AI Foundry returns transient errors such as ReadError, APIError 5xx, or httpx.RemoteProtocolError, the MAF workflow aborts entirely instead of retrying the failed agent…
为何可做:The issue clearly identifies the transient error types, points to existing checkpoint infrastructure, and describes the exact expected behavior.
.NET: [Feature]: provide an official sandbox abstraction for command/tool execution
问题:Users of the .NET agent framework experience approval fatigue because every command/tool execution requires explicit user approval, even for safe, read-only or workspace‑confined…
为何可做:The issue gives a concrete interface proposal and clearly explains the problem, making it straightforward to start implementing a sandbox abstraction without needing further clari…
[FEATURE] Attribute CrewAI traffic to E2B via the SDK integration API in the E2B sandbox tools
问题:CrewAI's E2B sandbox tools create and connect to E2B sandboxes without identifying themselves, so E2B cannot distinguish traffic originating from CrewAI from other SDK users.
Python: [Bug]: SequentialBuilder second agent receives assistant-ending history and some models return empty text
问题:When using SequentialBuilder to chain multiple agents, the second (and later) agents receive the conversation history that ends with an assistant message from the prior agent.
为何可做:The issue includes a detailed reproduction, identifies the exact condition (assistant-ending history causing empty model output), and is limited to the SequentialBuilder/orchestra…
Bug: browser teardown hangs on Windows CI runners and leaves orphaned Chrome processes
问题:On Windows GitHub CI runners, repeatedly starting and stopping a BrowserSession with keep_alive=True causes the teardown (await browser_session.kill()) to hang indefinitely, leavi…
为何可做:Issue provides a reproducible CI scenario, clear symptoms (hang, orphan Chrome processes), and points to the specific teardown path; the fix is likely localized to BrowserSession.…
[FEATURE] Memory observability & debugging toolkit for multi-agent Crews
问题:Developers using CrewAI with memory enabled lack visibility into memory operations: they cannot see what agents read/write, when entries become stale or overwritten, why decisions…
为何可做:Issue is well‑described with a concrete API sketch, no conflicting activity, and the feature scope is moderate.
Shared composer skill feed: agent-scoped catalog + a reserved-name source for the /context compact alias
问题:The skill feed used by both slash suggestions and the skill picker is not scoped to the current agent, so agents with an explicit skill allowlist (including empty) still see unusa…
为何可做:Issue provides precise file locations, reproduction steps, and a community member has already volunteered to handle the reserved-name portion, indicating clear ownership and low a…
Server auth defaults silently produce RFC 9728-noncompliant discovery when the MCP endpoint has a path
问题:When an MCP server is hosted under a path (e.g., /mcp), the default configuration of `mcpAuthRouter` and `requireBearerAuth` produces OAuth discovery metadata at the wrong locatio…
为何可做:The issue provides a clear problem statement, a reproducible code sample, and references to the spec.
问题:Users currently must download each artifact file from a DeerFlow run individually.
为何可做:The issue supplies a detailed RFC with explicit contract, safety boundaries, and acceptance criteria; a linked PR (#5117) already contains an initial implementation, making the re…
[FEATURE] Support local invocation IDs for nested workflows while preserving workflow identity
问题:Nested workflow composition currently forces the child workflow's definition ID to serve as both its identity and the key used by parents for results and output, preventing parent…
为何可做:The issue is well‑specified with a clear solution path, but implementing it requires touching multiple workflow composition methods, updating type definitions, and ensuring backwa…
[Feature Request]: Support hierarchical / multi-level memory scoping (e.g., User-level and Team/Org-level)
问题:Mastra's memory system currently only supports thread or resource scopes, which forces a choice between isolating memory per user (via userId as resourceId) or sharing memory per…
为何可做:Issue is clearly described with a concrete use case, but implementing hierarchical scopes requires changes to core memory abstractions and careful backward compatibility, making i…
[Bug]: Admin UI model edit persists derived pricing; price-map reload then records Azure spend as $0`
问题:An Admin UI edit of a model alias causes LiteLLM to persist catalog-derived pricing fields (input/output cost, cache, priority, etc.) into the deployment's model_info record.
为何可做:The issue provides a clear reproduction scenario (Admin UI edit -> price reload -> zero spend) and identifies the affected code paths.
问题:DeerFlow currently shows CSV/TSV artifacts as raw text, forcing users to download or parse delimiters to inspect column names and sample rows.
为何可做:The request is well‑described and scoped, but it is an RFC with no community feedback or linked PR, indicating maintainers have not yet approved the approach.
[FEATURE] Preserve user-turn I/O across agent suspend/resume
问题:When an agent suspends for tool-call approval, the original AGENT_RUN span is ended with a suspended status, causing Langfuse to treat that suspend payload as the trace output.
为何可做:The issue is well‑described with concrete code pointers and a clear solution, but it requires changes across the agent workflow and observability exporter, making it a moderate‑ef…
[@mastra/docker] Command timeout / kill() reports exit 137 but the process keeps running in the container
问题:The `@mastra/docker` DockerSandbox reports exit code 137 when a command times out or `handle.kill()` is called, but the processes started by that command continue to run inside th…
为何可做:The issue is well‑described with a reproducible example and clear root cause analysis, indicating a genuine bug.
Track persisted ownership fencing for background task recovery
问题:The background task executor currently stores ownership only in-process.
为何可做:The issue is well-scoped with a clear goal and verification steps, but implementing a durable lease with heartbeats and fencing requires moderate design effort and cross‑module ch…
问题:Users who want to use Azure DocumentDB as a vector store for CrewAI agents currently lack a dedicated tool and must write custom retrieval code, duplicating connection handling, e…
为何可做:The feature request is well‑specified and clear, but implementing a new vendor‑specific tool requires moderate effort and is not urgent given the existing MongoDB compatibility wo…
[Feature Request] Supported async session persistence for synchronous storage owners
问题:The issue requests a supported way for asynchronous Agent/Team runs to use synchronous storage adapters without requiring users to patch private Agno functions.
为何可做:The issue is a well‑articulated feature request but lacks a concrete API proposal and reproduces no immediate bug.
问题:The SEP-2640 Skills extension is standardized and has conformance tests, but the TypeScript SDK lacks dedicated APIs for it.
为何可做:The issue clearly describes what is needed and references a working prototype and conformance test, but it leaves open architectural questions (package placement, scope of initial…
Could CrewAI generate the first live SABLE reliability trace?
问题:The user wants to obtain a live runtime trace from a CrewAI agent using the SABLE reliability evaluator to demonstrate agent reliability.
为何可做:The issue is a vendor pitch requesting a live trace experiment; it does not require code changes to CrewAI, but fulfilling it would require maintainer time to set up and run an ag…
问题:The user wants to add Model Context Protocol (MCP) support to Dify's workflow application management layer so that external clients like Codex or Claude Code can programmatically…
为何可做:The request is a clear enhancement but lacks concrete design details; implementing MCP requires cross‑cutting concerns (auth, versioning, validation) and coordination with existin…
Other3-5 daysMediumbranch: maintests if riskhuman review
Python: [Bug]: Checkpoint encoding silently loses values when dictionary keys collide after string conversion
问题:Checkpoint encoding converts dictionary keys to strings via `str(k)` before writing JSON, causing distinct Python keys like `1` and `"1"` to collapse to the same JSON key and sile…
为何可做:The bug triggers a failing test (`test_encode_round_trips_dict_with_colliding_stringified_keys`) and results in silent data loss due to stringified key collisions.
[Refactor/Chore] Roadmap: strengthen backend tests with business contracts and invariants
问题:The issue asks to strengthen backend tests so they verify business contracts and invariants, moving beyond shallow assertions to catch plausible business errors such as missing te…
为何可做:The issue is a roadmap rather than a concrete bug fix; it requires substantial domain analysis to define contracts and improve tests, with uncertain immediate payoff, making it co…
Test3-5 daysMediumbranch: maintests if riskhuman review
[FEATURE]Add SupabaseTool for database read/write operations
问题:CrewAI lacks a built-in tool for interacting with Supabase, forcing developers who want to store conversation history, agent memory, logs, or structured data to write custom integ…
为何可做:The issue is well‑defined and has maintainer endorsement, but implementing a new tool requires moderate effort (design, testing, docs) and the immediate impact is limited to users…
Python: [Feature]: Document a third-party Python evaluator that preserves evidence metadata
问题:The user wants a documented example of a third-party Python evaluator that uses the Agent Framework's Evaluator protocol while preserving Hermes Rubric's evidence metadata (citati…
为何可做:The issue is a well‑specified feature request for a sample evaluator, but the author explicitly waits for maintainer confirmation on the item‑status mapping and sample location be…
OtherHalf a day to 1 dayMediumbranch: maintestshuman review
[FEATURE] First-class durable coding-agent adapters with workflow and workspace lifecycle support
问题:Mastra currently integrates coding agents only at the transport level via ACP, leaving session persistence, sandbox lifecycle, cancellation, and observability to user code.
为何可做:The issue outlines a valuable feature but lacks concrete implementation details and spans multiple subsystems (agents, workflows, workspaces, observability), making it a sizable d…
[FEATURE] Support composable loops, parallel groups, branches and foreach operations
问题:Mastra currently requires wrapping loops, parallel groups, branches, and foreach operations inside a Workflow when used as a branch arm or nested inside other control flows.
为何可做:The feature requests a major architectural change with no concrete API details and minimal community traction; it requires maintainer triage and design decisions before a concrete…
Other1 week or moreHardbranch: maintestshuman review
问题:The issue proposes adding an optional built‑in knowledge‑base subsystem (Harness RAG) to DeerFlow that provides offline‑capable parsing, embedding, indexing, and three retrieval t…
为何可做:The issue is a feature RFC with substantial scope; implementation would be large and requires design decisions that are pending maintainer feedback, making it not a quick win but…
Plan documentation migration before Material for MkDocs EOL
问题:DSPy 的文档站深度依赖 Material for MkDocs(自定义模板、扩展、emoji、社交卡片、重定向、llms.txt、统计插件等),而 Material 官方宣布 2026-11-05 停止维护、之后仅剩有限安全维护。若不在此前选定并验证一条受支持的迁移路径,DSPy 将面临安全维护断档和被迫紧急迁移文档站的风险,可能破坏稳定的公开 URL…
.NET: Proposal: Integrating Foundgine as a Semantic Execution Layer for AI Agents
问题:The issue proposes integrating Foundgine, a semantic execution layer, beneath the Microsoft Agent Framework to provide a unified boundary for intent resolution, authorization, val…
为何可做:The issue is a feature proposal without a concrete implementation request or clear acceptance criteria.
Other3-5 days to prototype, 1-2 weeks for a…Hardbranch: maintestshuman review
Proposal: Extending `openapi` group to support IaC (Infrastructure as Code) integration
问题:The issue proposes adding IaC support to Dify's OpenAPI group so that entire workspaces—including apps, plugins, credentials, datasets, and their dependencies—can be defined, vers…
为何可做:The proposal is well‑motivated and has a prototype, but it requires extensive changes across authentication, resource modeling, secret handling, and testing, making it a large eff…
Other1-2 周Hardbranch: maintests if riskhuman review
The supplied inventory marks this repository as issue-only for the ordinary contribution pipeline. · Issue-only · External PRs not accepted · 不参与 PR候选扫描
来源
user-supplied-policy-inventory:openai/codex
检查日期
2026-08-28
目标分支
main
交付前要求
Keep a human responsible for reviewing any later submission.
Target branch: main.
Do not spend ordinary Issue-list, detail, or AI-triage calls on this repository.
langflow-ai/langflow
状态
Unknown / needs confirmation · uncertain
理由
The contribution target follows the active release branch rather than an assumed default branch.
Run the repository's relevant tests before any submission.
Review the repository AI-assistance/disclosure policy and keep human accountability.
Resolve the live release branch before preparing a patch; never assume main.
langgenius/dify
状态
Known policy · eligible
理由
External work should be tied to a current Issue and the repository's normal review path.
来源
user-supplied-policy-inventory:langgenius/dify
检查日期
2026-08-28
目标分支
main
交付前要求
Review the repository AI-assistance/disclosure policy and keep human accountability.
Target branch: main.
For behavior changes or obvious regression risk, run relevant tests before any submission; otherwise keep the validation proportional. Re-check claimant, timeline, and related PR signals immediately before coding.
browser-use/browser-use
状态
Known policy · eligible
理由
Small reproducible fixes may use the normal external PR path when no existing work is found.
Run the repository's relevant tests before any submission.
Review the repository AI-assistance/disclosure policy and keep human accountability.
Target branch: main.
The readiness label is a hard gate; enterprise-only work is excluded.
mem0ai/mem0
状态
Known policy · eligible
理由
Normal code contributions require an accepted Issue; explicitly docs-only work has a narrow exception.
来源
user-supplied-policy-inventory:mem0ai/mem0
检查日期
2026-08-28
目标分支
main
交付前要求
Run the repository's relevant tests before any submission.
Confirm and satisfy the repository CLA/DCO requirement before any submission.
Disclose AI assistance according to repository policy before any submission.
Target branch: main.
docs_only must be explicitly supplied; the exception does not bypass PR, assignment, freshness, or scope checks.
FlowiseAI/Flowise
状态
Known policy · eligible
理由
Focused external fixes may use the normal PR path after checking for existing implementation work.
来源
user-supplied-policy-inventory:FlowiseAI/Flowise
检查日期
2026-08-28
目标分支
main
交付前要求
Run the repository's relevant tests before any submission.
Review the repository AI-assistance/disclosure policy and keep human accountability.
Target branch: main.
Existing or promised implementation work blocks a clean recommendation even before a PR is merged.
stanfordnlp/dspy
状态
Known policy · eligible
理由
Minor external changes may use the normal PR path; AI-assisted work requires human review and responsibility.
来源
user-supplied-policy-inventory:stanfordnlp/dspy
检查日期
2026-08-28
目标分支
main
交付前要求
Run the repository's relevant tests before any submission.
Issue tracking is optional for minor changes; use an Issue for larger changes.
A human must understand, review, and own the final submission.
Target branch: main.
A human must understand and take responsibility for any later AI-assisted submission.
crewAIInc/crewAI
状态
Known policy · eligible
理由
A focused Issue with local evidence can follow the normal external contribution path.
来源
user-supplied-policy-inventory:crewAIInc/crewAI
检查日期
2026-08-28
目标分支
main
交付前要求
Run the repository's relevant tests before any submission.
If AI/LLM generated the change, prepare the `llm-generated` label before any submission.
Target branch: main.
The llm-generated label is preparation metadata only when AI/LLM generated; missing evidence does not block this evaluator. This repository is an additional policy inventory entry, not a DEFAULT_REPOS change in P0.
microsoft/agent-framework
状态
Known policy · eligible
理由
External work follows the repository's issue, review, testing, and contribution requirements.
Run the repository's relevant tests before any submission.
Review the repository AI-assistance/disclosure policy and keep human accountability.
Target branch: main.
Treat only new integration-package or new pyproject.toml integration proposals as outside the small, fast contribution queue; existing integration maintenance remains in scope.
langchain-ai/langgraphjs
状态
Known policy · eligible
理由
A narrow reproducible Issue may use the standard external PR path after live-state checks.
为什么适合小 PR:The issue is well‑scoped with an accompanying RFC and a ready PR (#5332) that provides a detailed design. Implementation steps are clear, the scope is moderate, and there is no indication of duplicate work or unresolved blockers. (预计 1-2 days)
第一步:Open PR #5332 to review the current code changes, then run the repository locally and verify that the export API and UI are not yet present. After confirming the baseline, start by implementing the backend export manifest endpoint with revision checking.
预期验证:First examine the existing PR #5332 to understand the current implementation baseline. Reproduce the issue locally by creating a custom skill, editing it, and verifying that no export option exists. Implement the backend endpoints first, adding revision checks and locking, then the frontend preview…
证据摘要:No comments on the issue; the only activity is the author’s RFC and the linked PR. No explicit maintainer feedback or opposition is visible.
为什么适合小 PR:Issue provides precise file locations, reproduction steps, and a community member has already volunteered to handle the reserved-name portion, indicating clear ownership and low ambiguity. (预计 1-2 days)
第一步:Run the application, create a custom agent with an empty skill allowlist, open the chat, and observe the slash suggestions/picker for skills that should be hidden; simultaneously add a skill named 'context' and type '/context compact' to confirm the skill is incorrectly suggested and triggers compa…
预期验证:First reproduce both issues locally: create a custom agent with an empty skill list and verify unwanted skill suggestions; add a skill named 'context' and confirm '/context compact' triggers compaction instead of the skill. Make minimal changes: scope the feed at the source rather than duplicating…
证据摘要:One comment from @Undermoon1412 offering to take the reserved-name collision part as a focused PR, showing active interest; no further discussion or maintainer feedback beyond that.
为什么适合小 PR:The issue supplies a detailed RFC with explicit contract, safety boundaries, and acceptance criteria; a linked PR (#5117) already contains an initial implementation, making the remaining work well‑defined and manageable for a contributor. (预计 2-3 天)
第一步:Review the linked PR #5117 to see what has been implemented, run the repository locally, create a test run that emits multiple artifacts via present_files, and verify whether the endpoint behaves as described or identify missing pieces (validation, streaming, UI hook).
预期验证:First reproduce a run that emits multiple artifacts via present_files. Examine the run.delivery receipt to confirm the expected file list. Implement the endpoint incrementally: start with a stub that returns a static ZIP, then add file gathering, validation, and streaming. Test edge cases: symlinks…
为什么适合小 PR:The request is well‑described and scoped, but it is an RFC with no community feedback or linked PR, indicating maintainers have not yet approved the approach. Implementing it will require frontend work and testing, making it worthwhile only if the feature aligns with the project's roadmap. (预计 1-2 天)
第一步:Open the artifact panel source code, find where artifact MIME types are handled, and add a temporary log to confirm that CSV/TSV artifacts reach that path; then experiment with Papa Parse in a worker to render a simple table of the first 20 rows.
预期验证:First reproduce the issue by generating a CSV/TSV artifact and confirming it appears as plain text. Read the existing artifact panel implementation to understand how extensions are added. Keep changes isolated to a new preview sub‑component to minimize risk. Use a worker to avoid blocking the UI, a…
为什么适合小 PR:The issue is a feature RFC with substantial scope; implementation would be large and requires design decisions that are pending maintainer feedback, making it not a quick win but a possible long‑term contribution if approved. (预计 3-4 周)
第一步:Examine the feat/rag-knowledge-base branch to see the current implementation, run its tests locally, and then ask maintainers for clarification on offline deployment scope, dependency choices, and how to split work into independently deliverable milestones.
预期验证:First review the feat/rag-knowledge-base branch and run its tests to understand current state; clarify offline deployment dependencies and scope with maintainers; implement work in vertical slices (backend API → UI → tools) behind feature flags; write tests for each component; keep migrations backw…
证据摘要:One comment from maintainer willem-bd advises to narrow the scope, clarify offline vs online dependencies, align with #5238 on retrieval contracts, and define data consistency and opt‑in mechanics; indicates need for further discussion before acceptance.
为什么适合小 PR:The issue provides a clear problem statement, specific file paths, and a detailed proposed solution, making it straightforward to scope and implement; the feature is labeled high impact and has maintainer acknowledgment, indicating it is actionable with moderate effort. (预计 3-5 days)
第一步:Open `packages/core/src/llm/model/provider-options.ts` and add the TypeScript type for `providerOptions.openai.contextManagement` (e.g., an array of `{ type: 'compaction'; compactThreshold: number }`), then run the existing lint/tests to confirm the change integrates cleanly.
预期验证:First reproduce the behavior by enabling `contextManagement` on a direct AI SDK v7 OpenAI model and confirming that a `custom` chunk with `kind: 'openai.compaction'` appears in the stream; follow existing patterns for handling provider‑specific content in Mastra (e.g., how reasoning items are prese…
证据摘要:Maintainer @daneatmastra acknowledged the issue, applied relevant labels (trio-tb, impact:high, effort:high) and stated they will look into it soon; no further discussion or activity is visible.
为什么适合小 PR:The issue is well‑described with a clear API request, reproducible performance evidence, and a straightforward fix that involves exposing an existing internal flag. No conflicting discussions or blocked dependencies are evident. (预计 Half a day to 1 day)
第一步:Open the source file where `createDurableAgent` is defined (likely in `packages/core/src/agents/durable-agent.ts` or similar) and examine how the `durable` options are passed to `createDurableAgenticWorkflow`.
预期验证:First reproduce the current behavior by creating a durable agent and observing snapshot writes in storage (e.g., Postgres). Then implement the change with minimal code: add the option, pass it through, and ensure the default mirrors the existing `running` persistence. Write a unit test that verifie…
证据摘要:Only the automated triage notice from the mastra bot is present; no maintainer comments or activity indicate ongoing work.
为什么适合小 PR:The issue is well‑described, includes a concrete proposal and code pointers, and does not require controversial design decisions. It is awaiting maintainer triage but is ready for implementation. (预计 1-2 days)
第一步:Open packages/mcp/src/server/server.ts and locate the request handler for tools/call (around line 1145). Add a getOrCreateSpan({ type: MCP_SERVER_REQUEST, ... }) call at the very beginning of the handler, store the span, and ensure tracingContext is passed to the wrapped tool execution and finally…
预期验证:First reproduce the missing trace by running an MCPServer and making a request, then examine existing trace code to follow the pattern used for other span types (e.g., TOOL_CALL, AGENT_RUN). Keep changes minimal: add the span creation/wrapping, avoid duplicating logic. Write tests that assert the n…
证据摘要:Only a bot comment indicating the issue is waiting for maintainer triage/approval; no maintainer feedback or ongoing work visible.
为什么适合小 PR:The issue provides a precise problem description, concrete code locations, and a clear implementation plan. No conflicting activity or resolution evidence is present, making it actionable for a contributor. (预计 1-2 days)
第一步:Locate packages/mcp/src/client/client.ts (lines 1465-1485) and packages/core/src/observability/utils.ts to confirm the current callTool implementation and tracingOptions usage, then write a small test to verify that traceparent is not currently added to _meta.
预期验证:Reproduce the issue by running a minimal agent that calls an MCP tool and inspecting the generated spans in the OTel exporter or console. Make the smallest possible changes, reusing existing tracing utilities. Do not override user‑supplied traceparent/tracestate. Verify that legacy clients that man…
证据摘要:Only the automated triage bot comment is present; no maintainer or community discussion has occurred yet.
为什么适合小 PR:The issue is well‑described with a reproducible example, clear impact on correctness and performance, and no evidence of prior resolution. It is actionable for a contributor familiar with the workflow engine. (预计 2-3 days)
第一步:Clone the repository, run the example workflow from the issue, log the start/end times of each step to confirm the unnecessary wait, then locate the file that processes `.parallel()` layers to understand where the barrier logic resides.
预期验证:First reproduce the issue locally using the provided TypeScript snippet and measure join start times. Locate the parallel layer handling code (likely in `src/workflow/parallel.ts` or similar). Introduce a minimal, opt‑in API for per‑step dependencies without breaking existing calls. Write tests cov…
证据摘要:Only the triage bot comment is present; there is no maintainer response or community discussion yet.
为什么适合小 PR:The request is a low‑severity feature; the core usage/finishReason data is already available via direct sub-agent calls, and a hand‑rolled tool provides a workaround. Value exists but is not urgent, so maintainer approval is needed before prioritizing. (预计 1-2 days)
第一步:Search the repository for the delegation handler (e.g., files containing `agents:` or `delegate`) and examine how the sub-agent's `generate` result is transformed into the delegation output. Identify the exact location where the result object is constructed.
预期验证:First, reproduce the issue by calling a sub-agent via delegation and confirming that the result lacks usage/finishReason. Read the code to see where the delegation result is assembled. Make minimal, backward‑compatible changes: extend the result interface and conditionally attach the sub-agent's me…
证据摘要:The issue has only bot comments: one awaiting maintainer triage/approval, another labeling it as low severity and noting that the data‑exposure half is already shipped. No explicit maintainer endorsement or opposition is visible.
为什么适合小 PR:The issue is well‑defined with a concrete example and proposed code changes, affecting a bounded part of the tool validation pipeline, making it straightforward to implement a PR once maintainer approval is given. (预计 1-2 days)
第一步:Create a minimal reproduction: add a tool with an async refine that returns false, run the tool with requireApproval true, and confirm that the approval prompt appears before the validation error is seen. This will validate the current behavior and serve as a baseline for the fix.
预期验证:First reproduce the issue by adding a tool with an async refine that fails and verify the approval prompt still appears. Then locate the validation call in Tool.execute, add a check for async refinements (e.g., by inspecting schema._def.refines or using Zod's superRefine async detection), await val…
证据摘要:No explicit maintainer feedback yet; the issue has only auto‑triaged and needs‑approval labels plus a bot comment awaiting triage, indicating maintainers have not signaled acceptance or rejection.
为什么适合小 PR:The issue is well‑defined, has a clear proposed solution, and a maintainer has indicated openness to adding a flag or config setting, making it straightforward to implement a small, backward‑compatible change. (预计 Half a day to 1 day)
第一步:Open the repository and locate the file that defines the `mastracode` CLI command (e.g., `src/cli/mastracode.ts`). Examine the startup routine to see where the thread restoration is triggered and note any existing argument parsing for `--continue` or `--thread`.
预期验证:First reproduce the current behavior by running `mastracode` in a fresh terminal and confirming that the last thread is restored. Then search the codebase for thread restoration logic (look for calls to a persistence layer or session store). Make minimal changes: introduce a flag or config check be…
证据摘要:Maintainer comment: ‘the current design is intentional since MC is built around resuming in worktrees and observational memory working well across really really long sessions. The current behavior should stay how it is. We can add a --new flag and/or a config setting to change the default behavior…
为什么适合小 PR:The issue is well‑described with a concrete API proposal and clear problem statement. Implementing the feature requires a focused change to the tool context and suspension logic, making it actionable and likely to improve developer experience. (预计 1-2 days)
第一步:Search the codebase for 'askUserTool' and examine how tool suspension/resume is handled (look for resumeSchema and context properties). Then draft a minimal implementation of context.askUser that reuses the existing UI rendering path and binds it to the current tool's continuation.
预期验证:Read the core tool execution code to understand how suspension and resumption work (look for resumeSchema handling). Make the smallest possible change: reuse the existing UI rendering code path rather than duplicating it. Write a test that verifies a tool calling context.askUser suspends, shows the…
证据摘要:Only the automated triage notice comment from @dane-ai-mastra[bot] is present; no maintainer or community feedback beyond that.
为什么适合小 PR:The issue is well‑specified with a clear solution path, but implementing it requires touching multiple workflow composition methods, updating type definitions, and ensuring backward compatibility, which makes it a moderate‑effort feature rather than a quick fix. (预计 1-2 days)
第一步:Open the repository, find the file that defines the workflow step class or the composition helpers (e.g., src/workflow/Workflow.ts or src/workflow/controlFlow.ts), and examine how the child workflow ID is currently used to generate output keys in .parallel and .branch. Then write a small test that…
预期验证:First reproduce the current behavior by creating a nested workflow and checking output keys or parent step references. Locate the workflow composition implementation in the codebase (likely in src/workflow/*.ts). Make minimal changes that pass existing tests. Add tests that assert both the child's…
证据摘要:The issue has only received automated triage notices and a comment from a community member labeling it as a feature request awaiting approval; there is no explicit maintainer feedback or ongoing work, so we have no evidence of community activity beyond the triage bot.
为什么适合小 PR:Issue is clearly described with a concrete use case, but implementing hierarchical scopes requires changes to core memory abstractions and careful backward compatibility, making it a moderate‑effort feature that needs maintainer guidance on API design. (预计 1-2 days)
第一步:Locate the memory scope definitions in the codebase (e.g., search for 'scope' in src/memory/ directory) and examine how WorkingMemory and ObservationalMemory use the scope parameter to understand the current implementation.
预期验证:First reproduce existing behavior with thread/resource scopes to ensure no regression. Follow the existing pattern for scope handling; keep changes minimal and isolated to memory layer. Write tests covering edge cases (empty scopes, mixed types). Run CI and ensure lint passes. Open a draft PR early…
证据摘要:Only the triage bot comment exists; no maintainer or community discussion yet, so there is no evidence of maintainer stance or ongoing work.
为什么适合小 PR:The issue is well‑described with concrete code pointers and a clear solution, but it requires changes across the agent workflow and observability exporter, making it a moderate‑effort task. (预计 2-3 天)
第一步:Open packages/core/src/agent/workflows/prepare-step/map-results-step.ts and locate where the span is ended on suspend; examine how the span is created and stored so you can prevent ending it and instead keep a reference for later resume.
预期验证:First reproduce the issue by running an agent with a tool-call approval and inspecting the Langfuse trace; make minimal changes that do not mutate already-exported suspend spans; ensure existing tests pass; add a test case that asserts the trace output equals the final assistant message after resum…
证据摘要:Issue is awaiting maintainer triage (needs triage label). The author has referenced a related issue and a maintainer has expressed interest, but there is no explicit approval or assigned work yet.
为什么适合小 PR:The issue is well‑described with a reproducible example and clear root cause analysis, indicating a genuine bug. However, fixing it requires navigating Docker PID namespaces and potentially altering the container’s init process, which involves non‑trivial code changes and testing, making it costly… (预计 1-2 天)
第一步:Clone the repository, run the reproduction script from the issue to verify that processes remain after a timeout, then examine `src/dockerProcessHandle.ts` (or equivalent) to see the current `kill()` implementation.
预期验证:First reproduce the issue using the provided snippet to confirm the stray processes. Read the existing `DockerProcessHandle.kill()` code and surrounding Docker SDK calls. Make minimal changes that isolate the kill logic to a helper function. Test with both simple commands (`sleep`) and more complex…
证据摘要:Only the automated triage notice from the mastra‑needs‑triage bot is present; there is no maintainer comment or ongoing discussion, so there is no clear signal of community engagement beyond the initial report.
为什么适合小 PR:The issue is well-scoped with a clear goal and verification steps, but implementing a durable lease with heartbeats and fencing requires moderate design effort and cross‑module changes, making it actionable but not trivial. (预计 3-5 days)
第一步:Review the code introduced in PR #23024 to find where background task execution state is stored and where the stale‑task recovery check occurs; then attempt to run two manager instances against the same storage to observe the current unsafe behavior.
预期验证:First examine PR #23024 to locate the current executor and storage interfaces; reproduce the race by running two managers against a shared store and attempting to reclaim a running task; implement the lease logic as a thin wrapper around existing storage calls; keep changes minimal and follow the p…
证据摘要:Only the triage bot has commented; there is no evidence of maintainer discussion or activity on the issue.
为什么适合小 PR:The issue outlines a valuable feature but lacks concrete implementation details and spans multiple subsystems (agents, workflows, workspaces, observability), making it a sizable design and engineering effort that is not immediately actionable without further clarification. (预计 1-2 weeks)
第一步:Review the existing @mastra/acp package and the Workflow/Workspace APIs to understand current extension points, then sketch a minimal adapter interface in TypeScript that captures session lifecycle operations and capability reporting.
预期验证:First, study @mastra/acp, Workflow, and Workspace code to locate extension points. Draft a minimal TypeScript adapter contract covering start, reconnect, sendInput, interrupt, suspend, resume, cancel, status, and capabilities. Build a prototype for ACP, ensuring sandbox boundary is reapplied on res…
证据摘要:Only the automated triage bot notice and one external comment from @shleder about sandbox boundary on resume; no maintainer feedback or discussion yet.
为什么适合小 PR:The feature requests a major architectural change with no concrete API details and minimal community traction; it requires maintainer triage and design decisions before a concrete implementation can be planned. (预计 1 week or more)
第一步:Explore the @mastra/core source code to locate the definitions of .parallel(), .branch(), .foreach(), .dowhile(), and .dountil(). Run the existing test suite to understand the current behavior and identify the changes needed to introduce first‑class control‑flow units.
预期验证:Read the existing code paths and tests to understand patterns. Keep changes minimal and backward compatible. Ensure native units retain required input scopes and lifecycle semantics. Add comprehensive tests for the new units and their compositions. Use the existing test suite for regression verific…
证据摘要:Only a generic bot comment indicating the issue is awaiting maintainer triage; no further discussion or engagement from the community.
为什么适合小 PR:The request is purely documentation, provides explicit instructions and examples, involves minimal code changes, and can be completed quickly with low risk. (预计 1-2 hours)
第一步:Examine an existing provider doc (e.g., docs/providers/openai.md) to understand the required format, then create a draft bourse.md with the correct frontmatter and content.
预期验证:Copy the frontmatter and structure from a similar provider doc (e.g., openai.md), keep content concise and accurate, link to Bourse's API guide, add the entry to the nav section under 'Providers', run `mkdocs build` locally to check for broken links or formatting issues, and submit a PR with a clea…
证据摘要:No maintainer or community feedback yet; the issue was opened by the contributor RunBourse with no subsequent comments.
为什么适合小 PR:The issue is a well‑formed design question that can be resolved by adding documentation or a tiny comment; no deep refactoring is needed, making it straightforward and low‑effort to address. (预计 1-2 hours)
第一步:Open the files litellm/proxy/hooks/proxy_track_cost_callback.py (~L275), litellm/caching/caching_handler.py (_async_log_cache_hit_on_callbacks), and litellm/litellm_core_utils/litellm_logging.py (~L6103) to see how spend and token columns are set for cache hits, then confirm the current behavior wi…
预期验证:1. Create a minimal reproduction (two identical calls with cache enabled) to confirm current behavior. 2. Locate the exact lines where token columns are populated for cache hits. 3. Decide on the intended basis after reviewing the code and discussion. 4. If documentation is sufficient, add inline c…
证据摘要:Only external commentators (renezander030, roy-tong, iwasinnam2) have discussed the issue; there is no explicit acknowledgment or guidance from the LiteLLM maintainers yet.
为什么适合小 PR:The request is well-scoped, mirrors existing env-flag patterns, and only touches a single route handler, making it straightforward to implement and test. (预计 1-2 hours)
第一步:Search the proxy routes directory for the Responses WebSocket endpoint (e.g., grep -r 'responses' litellm/proxy/routes/ | grep -i websocket) to locate the exact function that accepts the WS connection, then inspect its current logic to place the env flag check at the very start.
预期验证:Follow the pattern used for other environment-based feature flags in the project (e.g., using os.getenv with a default false). Keep the change minimal and isolated to the route handler. Test with a websockets client to confirm the close code and reason. Verify that HTTP routes (e.g., /v1/chat/compl…
证据摘要:Only one comment from a contributor asking if anyone is working on it; no maintainer response or activity indicating ongoing work.
为什么适合小 PR:The issue provides a clear problem statement, a standards‑based solution, and concrete implementation steps. No conflicting discussion or duplicate work is evident, making it straightforward to act on. (预计 1-2 days)
第一步:Locate the JWT authentication middleware in the proxy code (likely where 401 responses are generated for /v1/* routes) and examine how enable_jwt_auth and litellm_jwtauth.issuers are accessed. Then add a quick prototype of the /.well-known/oauth-protected-resource endpoint returning a hard‑coded JS…
预期验证:Reuse the existing litellm_jwtauth config structures to avoid adding new required fields. Follow RFC 9728 exactly for the JSON shape and header format. Ensure the change is backward‑compatible: when enable_jwt_auth is off, the endpoint should return 404 or not be registered. Test both successful an…
证据摘要:No evidence of maintainer or community discussion; the issue has zero comments and no linked PRs.
为什么适合小 PR:The issue provides a clear, reproducible scenario and expects behavior that mirrors existing fields (team_id, organization_id), indicating a straightforward, localized fix. (预计 半天-1天)
第一步:Reproduce the bug by calling POST /key/update with a valid project_id on an existing key and verifying via GET /key/info that project_id remains null; then locate the key update endpoint in the proxy source (e.g., proxy/src/routes/key.py) to see how team_id/organization_id are handled.
预期验证:First reproduce the bug using the exact curl/HTTP steps from the issue. Follow the existing pattern for team_id/organization_id handling to keep the change minimal. Write tests that assert a 200 response with the correct project_id in the returned key object and a 404 error when the project does no…
为什么适合小 PR:The issue is well‑scoped, includes a concrete example and clear acceptance criteria, and a maintainer has already expressed interest in taking it. This makes it straightforward to start working on and likely to result in a mergeable PR. (预计 1-2 days)
第一步:Open the proxy/router file that defines the GET /v1/models endpoint (e.g., `litellm/proxy/routes.py` or similar), examine how the model list is constructed, and locate where model metadata is fetched. Then sketch how to augment each model object with a `pricing` field when an opt‑in flag is present.
预期验证:First reproduce the current /v1/models response, then implement the feature behind a flag to preserve backward compatibility. Write unit tests covering cases with known pricing, unknown pricing, and access‑controlled models. Follow the existing code style and reuse logic from `/model_group/info` wh…
证据摘要:One maintainer (@Ajitsharmas) commented they would like to take the issue and proposed a specific opt‑in design using `include_pricing` and reusing `/model_group/info` pricing. No contradictory feedback; signal indicates willingness to accept the contribution.
为什么适合小 PR:The issue is a well‑scoped RFC with explicit acceptance criteria and clear downstream motivation. The required changes are localized to error‑response handling, making it actionable without large refactor. (预计 1-2 days)
第一步:Search the repository for where LiteLLM converts exceptions into HTTP responses (e.g., `litellm/router.py` or `litellm/exceptions.py`). Add a breakpoint or log to capture the current error payload, then mock a 429 response to see what is returned today.
预期验证:First, reproduce the current error output by mocking a provider returning 429/402/etc. Look at how OpenRouter's `openrouter_metadata` is currently added to see the pattern for attaching extra data. Keep the change minimal: only add the new field, do not alter existing status codes or bodies. Follow…
证据摘要:Two comments: the author reiterates this is an RFC needing upstream work, and a downstream maintainer confirms the problem and provides metrics. No explicit feedback from LiteLLM maintainers yet, so there is no signal of acceptance or rejection from the project.
为什么适合小 PR:The issue provides a well‑scoped, concrete proposal with a suggested API, starting point (OpenRouter), and clear separation from existing budget features, making it straightforward to implement a small, focused PR. (预计 1-2 days)
第一步:Open the litellm/provider.py (or base provider file) to locate where provider capabilities are defined, examine how other optional methods are added, and then add a stub probe_quota method to BaseProvider; after that, look at the OpenRouter provider implementation to see where to place the actual q…
预期验证:Follow LiteLLM's existing provider capability pattern (e.g., check for unsupported providers returning None or a NotSupported type); reuse the existing HTTP client and retry logic; keep the change backward‑compatible; add comprehensive unit tests that cover success, unsupported, auth failure, and q…
证据摘要:Commenters express strong interest, discuss design nuances (e.g., separating credential health from model routability), and note real‑world utility; there is no opposing feedback or maintainer request for clarification.
为什么适合小 PR:Issue provides a clear root cause, proposed fix, and verification data; it is unresolved and addresses a reliability gap in reasoning streaming, making it a well‑scoped bug fix. (预计 1-2 days)
第一步:Set up a local test that streams an Azure OpenAI response with reasoning items, capture the raw SSE events from the upstream call and the events after the litellm bridge, and confirm the drop in reasoning events; then examine the translation code to add the missing mapping.
预期验证:First reproduce the loss using a streaming Azure OpenAI call with reasoning enabled and count events before/after the bridge. Follow the existing test patterns in the repo, keep changes minimal, avoid modifying request messages or cache keys, and run the full test suite to ensure no regressions.
证据摘要:Maintainers have commented, noting the issue is a reliability boundary and discussing duplicate concerns, but no resolution or maintainer‑assigned work is evident.
为什么适合小 PR:The feature is already implemented in an open PR; the remaining work is review, testing, and merging, which is well‑scoped and straightforward. (预计 2-4 hours)
第一步:Open PR #40634, examine the hook implementation, run the existing test suite, then add or verify unit tests for the X‑Trust verification logic.
预期验证:Run the full test suite, keep changes minimal and focused, make the header optional and non‑blocking, follow existing patterns for optional metadata annotation, and seek maintainer feedback on the PR before merging.
为什么适合小 PR:The feature is already implemented and tested; it only needs to be merged into an active release branch. No further design work or blockers are identified. (预计 1-2 天)
第一步:Checkout the branch the maintainers indicate (e.g., litellm_internal_staging or main), then use `git fetch origin pull/30238/head:asqav-rebase && git rebase <target-branch>` to rebase the changes, resolve conflicts, and run `pytest` on the logging-related tests to verify the build.
预期验证:First confirm the correct base branch by asking maintainers (as the issue author did). Then create a new branch, apply the rebased commits, run the full test suite, and add any missing unit tests for the callback registration. Keep changes minimal, follow the project's contribution guide, and open…
证据摘要:The merged commit cb95e06d is absent from all current branches, and the released wheel (e.g., litellm 1.100.1) does not contain the `litellm/integrations/asqav` module.
为什么适合小 PR:The issue points to a specific code file and logic branch, provides a clear reproduction case, and the expected behavior is unambiguous. Fixing it requires a localized change with low risk of side effects. (预计 1-2 hours)
第一步:Open `litellm/llms/openai/chat/gpt_5_transformation.py`, find the `if effective_effort == "xhigh"` block inside `map_openai_params`, and inspect how `drop_params` is used. Then run the reproduction script to confirm the current behavior before making any changes.
预期验证:First reproduce the issue using the provided snippet. Then examine the existing test suite for similar param‑handling tests to follow the same pattern. Make the minimal change: only alter the xhigh branch to raise or warn when the capability flag is false. Verify that `drop_params=False` still rais…
证据摘要:Maintainer commented that dropping params is by design and suggested a generic dropped‑params warning or header instead of per‑parameter rules. No consensus or decision has been reached yet, and no fix has been implemented.
为什么适合小 PR:The issue provides exact file names, code snippets, and reproduction steps, making the problem and fix straightforward to implement. (预计 1-2 天)
第一步:Clone the repo, simulate a depth-1 checkout (`git fetch --depth 1 origin main`) and run `git show main:schema.prisma` to confirm it fails, then examine .github/workflows/_test-unit-base.yml to see the current checkout configuration.
预期验证:First reproduce the issue locally by running the test with a depth-1 checkout and a missing migration to confirm it passes incorrectly. Then apply the minimal changes to the workflow and test, verify that the test now fails when a schema change lacks a migration and passes after adding the matching…
为什么适合小 PR:The issue provides a clear reproduction scenario (Admin UI edit -> price reload -> zero spend) and identifies the affected code paths. While the fix is likely similar to the already-merged PR #36222, validating it requires setting up a proxy with PostgreSQL and the Admin UI, which incurs non-trivia… (预计 1-2 days)
第一步:Deploy a local LiteLLM proxy backed by PostgreSQL, configure two Azure OpenAI deployments sharing a key, use the Admin UI to rename a model alias, then manually trigger a price-data reload and observe whether subsequent requests log zero spend.
预期验证:First reproduce the issue locally to confirm the exact conditions. Isolate the change to the model-info persistence logic, making the minimal modification to strip derived cost fields. Verify that existing functionality (explicit custom pricing, cost-map reloads) remains intact. Add a test that ass…
证据摘要:Commenters show interest (razdgann suggests accounting improvements, michaelmanly offers to help test) and the author indicates they will test the fix in the upcoming v1.102.0 release. No explicit maintainer acknowledgment yet, but there is engagement.
为什么适合小 PR:The issue is a well‑described critical security bug with a straightforward fix (change falsy‑or to None check). A contributor has already signaled intent to work on it, indicating low coordination overhead. (预计 1-2 小时)
第一步:Clone the repo, run the reproduction snippet from the issue to confirm that `"__builtins__" in pt.safe_globals` evaluates to True, then edit libs/agno/agno/tools/python.py to replace the falsy‑or with an explicit None check and verify the fix.
预期验证:First reproduce the issue locally to confirm the vulnerability. Then make the smallest possible change to fix the namespace fallback. Write automated tests before and after the change to ensure the fix works and does not break existing usage. Keep the change isolated to the initialization logic; av…
证据摘要:One comment from @Rudra-G-23 indicating they intend to work on the issue and have already examined the code. No further discussion or PR yet.
为什么适合小 PR:The issue is well described, the fix is localized and low‑effort, and it addresses a common deployment pain point without risk of breaking existing functionality. (预计 1-2 hours)
第一步:Search the codebase for `StreamingResponse` (e.g., `grep -r "StreamingResponse" agno/`) to identify all SSE endpoint usages, then pick one (e.g., the agents router) to examine the exact response construction.
预期验证:Create a reusable function or custom `SSEStreamingResponse` class that injects the header, reducing duplication. Test by running the server locally and using `curl -N` or a simple HTML EventSource client to confirm immediate flushing. Add a unit test that checks the header is present on SSE respons…
证据摘要:No comments or maintainer activity on the issue; there is no evidence of community discussion or ongoing work.
为什么适合小 PR:Critical security vulnerability (CVSS 9.8) enabling unauthenticated remote agent discovery and execution, which can lead to code execution; must be fixed urgently. (预计 2-3 days)
第一步:Create a test script that starts AgentOS with a2a_interface=True and no auth, then from a separate process send an unauthenticated GET request to /a2a/agents/{id}/.well-known/agent-card.json and a POST to message:send; verify the server responds without requiring authentication, confirming the vuln…
预期验证:First, reproduce the issue with a minimal server and unauthenticated client calls. Then read the authentication and A2A code paths. Make minimal, focused changes. Ensure tests cover both authenticated and unauthenticated scenarios. Update any relevant documentation.
证据摘要:No recent comments or maintainer responses; issue is newly opened with no evidence of ongoing work.
为什么适合小 PR:The issue provides exact file paths, line numbers, and a clear root cause; fixing it involves changing default values and adding a small guard, which is straightforward and high impact. (预计 1-2 days)
第一步:Create a reproducer script that instantiates an Agent with PythonTools, mocks the model to request a run_python_code call, and verifies that the tool executes immediately (e.g., by checking a side effect like writing a file).
预期验证:First reproduce the issue with a minimal script that mocks a model requesting a PythonTools call and confirms the code runs without pause. Then locate the exact default values mentioned in the issue, change them to a safe default (e.g., requires_confirmation=True for code‑executing tools) or introd…
证据摘要:No comments or activity on the issue; no evidence of maintainer engagement or ongoing work.
为什么适合小 PR:The issue is well‑described, includes a reproducible PoC, and points to the exact vulnerable lines. There are already open PRs addressing the same root cause, indicating maintainers are aware, but none are merged yet, so the fix is still actionable. (预计 1-2 days)
第一步:Clone the repo, install the package, and run the provided Python snippet to verify that the marker file is written outside the base_dir. Then inspect `libs/agno/agno/tools/coding.py` around lines 253-289 to see the flag‑skipping logic.
预期验证:First reproduce the issue to confirm the vulnerability. Read the surrounding code to understand the intended sandbox behavior. Make the smallest possible change that blocks the injection vector (e.g., treat flag tokens as part of the command for path checks or implement an allowlist of safe flags).…
证据摘要:No merged commit or closed issue referencing this bug; the existing PRs are still open and have not been integrated.
为什么适合小 PR:Issue describes a clear UX gap with a concrete proposal; the required changes are localized to streaming logic in the agui endpoint and tool execution, making it straightforward to implement and test. (预计 1-2 天)
第一步:Run a request to /api/v1/agui with a client tool that produces HTML and log the response events to verify that no intermediate events are emitted; then search the codebase for 'agui' and streaming-related functions (e.g., 'stream', 'TEXT_MESSAGE_CONTENT') to locate the entry point.
预期验证:First reproduce the issue by calling the agui endpoint with a tool that generates HTML and confirm lack of intermediate events; trace the code path from request to tool execution to response; implement minimal changes that inject streaming events without breaking existing text streaming; run existi…
证据摘要:No comments or recent activity on the issue; no explicit signal from maintainers or community.
为什么适合小 PR:The issue is well described with clear expected vs actual behavior, and there are already open PRs (#8418, #9540) that target the exact missing reasoning event forwarding in _response.py, making the fix straightforward and localized. (预计 1-2 days)
第一步:Review the open PRs #8418 and #9540 to understand their proposed changes, then clone the repo and run AgentOS locally to verify that reasoning events are missing in the stream before applying the fix.
预期验证:Reproduce the issue locally by running AgentOS dev server and connecting a client; add logging to confirm reasoning chunks are received from the model; follow the existing pattern for creating events (e.g., create_reasoning_start_event); keep changes minimal and aligned with current event emission;…
证据摘要:Comment notes open PRs #8418 and #9540 that address the missing reasoning event forwarding, and points to the specific code in libs/agno/agno/agent/_response.py where reasoning content is accumulated but not emitted as events.
为什么适合小 PR:The issue gives exact reproduction steps, points to the specific lines of code causing the problem, and the fix is limited to adjusting a few default values and adding tests, making it straightforward to implement. (预计 2-3 hours)
第一步:Clone the agno repository, run the reproduction command to verify that curl http://127.0.0.1:7777/info returns {"auth_mode":"none"}, then inspect libs/agno/agno/os/auth.py and libs/agno/agno/os/app.py to locate the auth gate and middleware registration logic.
预期验证:First reproduce the issue using the provided commands to confirm auth_mode:none; make the smallest possible change to the default configuration; write tests that assert the middleware is present and that endpoints now require authentication (or at least report a non‑none auth mode); run the full te…
证据摘要:No comments or recent activity from maintainers; no evidence of discussion or ongoing work on this issue.
为什么适合小 PR:The issue provides a precise location (agno/tools/coding.py:499‑529), a clear root cause (incomplete denylist bypassible via chr() encoding), and a reproducible PoC. This makes it straightforward to confirm, fix, and test, with high security impact. (预计 1-2 days)
第一步:Clone the repo, install agno==2.7.3, run the supplied PoC script to verify that the chr‑encoded payload executes arbitrary code (e.g., creates a file outside base_dir).
预期验证:First, reproduce the issue locally using the provided script. Then read the coding.py file to understand the current validation flow and where the command is passed to subprocess.run. Implement the smallest change that eliminates shell=True or properly validates the command string—preferably using…
证据摘要:No comments or recent activity on the issue; no evidence of maintainer response or ongoing work.
为什么适合小 PR:The issue is a well‑articulated feature request but lacks a concrete API proposal and reproduces no immediate bug. Implementing it requires touching core persistence logic and multiple Agent/Team paths, making it non‑trivial yet feasible with focused effort. (预计 3-5 days)
第一步:先确认 issue 仍能复现,再搜索相关代码和测试。
预期验证:First reproduce the existing private‑patch workflow in a test to confirm the exact behavior that must be preserved. Follow the project's async patterns (e.g., using anyio or asyncio threads) and keep the default behavior of sync adapters unchanged (thread‑affine). Make changes minimal and backward‑…
证据摘要:No evidence of recent discussion or maintainer feedback; the issue has zero comments.
为什么适合小 PR:The issue provides a clear, ready-to-use translation set and enumerates every file that needs modification. The change is localized, low risk, and can be completed quickly with a straightforward PR. (预计 1-2 hours)
第一步:Examine the current web/i18n structure (e.g., web/i18n/en-US) and copy it to a new web/i18n/az-AZ folder, then place the contributor’s 37 translation files there, ensuring file names and paths match exactly.
预期验证:First, run the existing i18n lint/validation script to confirm the translation files follow the required format (key order, plural branches). Make the minimal changes listed above, then start the dev server and switch the UI language to Azerbaijani to verify all strings appear correctly. If there a…
证据摘要:PR #42090 that previously carried this change was closed without being merged; no other PR or commit indicates the locale has been added.
为什么适合小 PR:Issue is well‑described with clear error message and impact; the fix likely involves adding cleanup of sandbox temp files, a bounded change that can be tested and merged as a PR. (预计 1-2 days)
第一步:Clone the dify-sandbox repository, search for 'tmp' or '/var/sandbox/sandbox-python' to locate where Python files are written, and examine the execution flow to see where cleanup should happen.
预期验证:First reproduce the issue by running a workflow with a Python node in a self‑hosted sandbox or using the provided run IDs to inspect logs. Read the sandbox entrypoint and file‑handling code. Implement a minimal change that guarantees removal of /var/sandbox/sandbox-python/tmp/* after each run, pref…
证据摘要:Only the issue author has commented, linking their own PR in dify-sandbox (#290). No maintainer feedback or additional discussion is visible.
为什么适合小 PR:The issue is well‑described, the required data already exists on the backend, and the missing UI wiring is isolated to the Agent V2 log panel. This makes it straightforward to implement a focused, testable feature that delivers clear user value. (预计 2-3 天)
第一步:Run a local Agent V2 with a simple tool (e.g., a custom API plugin), open the Network tab, locate the log request/response, and verify that agent_thoughts and tool call details are present in the payload.
预期验证:First reproduce the issue by running an Agent V2 with a tool and confirming that the backend returns agent_thoughts via API/network. Then trace the flow from the log API endpoint to AgentLogDetailPanel to identify where the data is dropped. Implement the smallest change that adds the missing fields…
证据摘要:No comments or maintainer responses on the issue; no evidence of community discussion or ongoing work.
为什么适合小 PR:The request is a clear enhancement but lacks concrete design details; implementing MCP requires cross‑cutting concerns (auth, versioning, validation) and coordination with existing workflow APIs. It is doable but will need non‑trivial effort to define the control‑plane boundary and safety guarantee… (预计 3-5 days)
第一步:Examine the existing workflow management API (e.g., endpoints under /api/workflows) and the current import/export logic to understand the data model and validation steps. Then sketch a minimal MCP read‑only endpoint (list workflows with basic metadata) and propose it in a comment to gather maintain…
预期验证:First clarify the control‑plane boundary: separate workflow definition mutation from runtime invocation/log streaming. Make every mutating operation revision‑aware (require expected version/ETag) to avoid silent overwrites. Treat export/import as a validated DSL transaction with schema/version chec…
证据摘要:One community comment (@CryoThrust) offers design suggestions but no explicit maintainer endorsement or ongoing work. No clear signal that maintainers are actively planning or rejecting this feature.
为什么适合小 PR:The issue is a roadmap rather than a concrete bug fix; it requires substantial domain analysis to define contracts and improve tests, with uncertain immediate payoff, making it costly but still actionable if one invests the effort. (预计 3-5 days)
第一步:Open the agent retirement service (api/services/agent/retirement_service.py) and its test file, run the existing tests to see what is currently covered, and note which aspects of the proposed contracts are already tested.
预期验证:Focus on observable behavior and public APIs; avoid asserting internal call structures unless they are part of the contract; start with concrete failure scenarios that would indicate a business bug; keep changes minimal and targeted; run the full test suite to prevent regressions; discuss contract…
证据摘要:No maintainer feedback beyond the author’s query and a bot comment about Dosu; there is no explicit endorsement or discussion, so there is no clear community signal.
为什么适合小 PR:The proposal is well‑motivated and has a prototype, but it requires extensive changes across authentication, resource modeling, secret handling, and testing, making it a large effort that maintainers may need to prioritize against other work. (预计 1-2 周)
第一步:Locate the OpenAPI group code (likely under /api/openapi or similar) and review how existing resources are defined; then examine the community Terraform provider prototype to list the exact workspace resources that need to be exposed via OpenAPI.
预期验证:Follow the current pattern for defining OpenAPI resources in the repo; start with a minimal MVP (e.g., workspace CRUD) before adding dependency resolution; ensure secrets are only references or write‑only bindings; implement a plan/dry‑run phase and revision‑aware apply; add automated tests for ide…
证据摘要:No explicit maintainer endorsement; only a comment from CryoThrust offering design feedback. No evidence of maintainer activity or assigned owner.
为什么适合小 PR:Issue provides a clear problem statement, reproducible scenarios, and concrete improvement suggestions; no conflicting information or missing context; the scope is well-defined and suitable for a focused performance PR. (预计 2-3 days)
第一步:Set up a test script that loads a page with a large DOM (e.g., generate 50k+ divs) and runs a simple agent task for 10 steps; measure step latency and DOM serialization time using the existing Agent/Browser classes to confirm the baseline slowdown.
预期验证:First reproduce the slowdown with a controllable large DOM (e.g., a page with many elements) and a multi-step agent task; use profiling tools (cProfile, memory_profiler) to quantify bottlenecks; make minimal, focused changes behind feature flags if needed; ensure existing tests pass and add perform…
证据摘要:Comments include a request for more precise reproduction details from a community member and a code snippet that would raise a SyntaxError; no maintainer has yet responded or acknowledged the issue.
为什么适合小 PR:Issue provides a reproducible CI scenario, clear symptoms (hang, orphan Chrome processes), and points to the specific teardown path; the fix is likely localized to BrowserSession.kill() and its cleanup logic. (预计 1-2 days)
第一步:Run the provided workflow on a windows-latest runner (or enable debugging in the existing CI) and add logging/timestamps inside BrowserSession.kill() to see where the call blocks; alternatively, run the test locally with added debug to confirm normal behavior and compare with CI logs.
预期验证:First reproduce the issue using the provided workflow on a windows-latest runner with extra logging; isolate whether the block is in kill() or in the subsequent start() by adding timestamps; prefer minimal changes that ensure proper process tree termination; add a unit/test that runs the fixture lo…
证据摘要:One maintainer comment acknowledges the issue and plans to investigate; no resolution or fix has been posted yet.
为什么适合小 PR:The issue provides a detailed, step‑by‑step implementation plan that follows an established pattern, introduces no breaking changes, and adds clear user value with modest effort. (预计 1-2 days)
第一步:Locate an existing search tool (e.g., brave_search_tool/) and copy its directory structure as a template for anysearch_tool/, then begin implementing the AnySearchTool class with optional api_key support.
预期验证:Follow the exact pattern of existing search tools: reuse BaseTool, keep HTTP logic in a helper method, raise clear errors on non‑200 responses, add type hints, and include a simple README. Write tests that mock requests.get to avoid external calls, cover success, error, and anonymous‑mode paths. Ru…
证据摘要:No comments or maintainer feedback on the issue; no evidence of community discussion.
预期验证:首先运行现有的 E2B 工具测试确保基线绿色;查看现有的版本获取方式(importlib.metadata.version)保持一致;保持更改最小,只在共享基础工具中添加逻辑;使用 mock.assert_called_once_with 检查调用顺序;在提交前运行完整的 test suite 和 lint。
为什么适合小 PR:Issue is well‑described with a concrete API sketch, no conflicting activity, and the feature scope is moderate. It can be tackled by adding observability hooks and a snapshot method without major refactor. (预计 2-3 days)
第一步:Search the repository for memory-related files (e.g., crewai/memory/__init__.py, short_term_memory.py, long_term_memory.py) to locate where memory read/write operations are performed, then add a conditional callback/logging point in those methods.
预期验证:First, reproduce a simple crew with memory enabled to confirm baseline behavior. Locate the core memory classes (e.g., in crewai/memory/). Introduce an optional observability flag or callback list that defaults to disabled. Instrument read/write methods to invoke callbacks without altering existing…
证据摘要:No comments or maintainer feedback on the issue; no evidence of ongoing work or discussion.
为什么适合小 PR:The feature request is well‑specified and clear, but implementing a new vendor‑specific tool requires moderate effort and is not urgent given the existing MongoDB compatibility workaround; maintainers have not yet indicated readiness to work on it. (预计 3-5 days)
第一步:Locate the MongoDBVectorSearchTool implementation (lib/crewai-tools/src/crewai_tools/tools/mongodb_vector_search_tool) and copy its structure as a starting point for the Azure tool, then verify which Azure SDK packages are needed for vector search operations.
预期验证:Study the existing MongoDBVectorSearchTool for structure and patterns; keep Azure-specific concerns isolated; make the Azure SDK an optional dependency; write tests that mock Azure calls to avoid requiring a real DB in CI; follow the project's contributing guide for code style and PR template; upda…
证据摘要:Only the author has pinged a maintainer (@Vidit-Ostwal) with no response; there is no further discussion or maintainer acknowledgment.
为什么适合小 PR:The issue is a vendor pitch requesting a live trace experiment; it does not require code changes to CrewAI, but fulfilling it would require maintainer time to set up and run an agent with SABLE, yielding low direct value to the project. (预计 半天)
第一步:Look for an existing tool-using agent example in the CrewAI repository (e.g., in examples/ or tests/) that can be run with minimal setup; if none exists, draft a simple agent that uses a built-in tool like a calculator or HTTP request.
预期验证:First reproduce a simple tool-using agent from CrewAI examples. Ensure the agent runs deterministically or log enough info for SABLE. Use SABLE's quickstart to integrate tracing. Keep changes minimal; if no code change is needed, just document steps. Verify the trace can be replayed by SABLE's eval…
证据摘要:One comment from a user offering help; no maintainer response or indication of interest.
为什么适合小 PR:The issue is well‑defined and has maintainer endorsement, but implementing a new tool requires moderate effort (design, testing, docs) and the immediate impact is limited to users needing Supabase integration. It is actionable if a contributor is willing to do the work. (预计 1-2 days)
第一步:Examine an existing tool implementation (e.g., YouTubeSearchTool) to understand the expected structure, then create a skeleton SupabaseTool file with the class definition, constructor, and a stub run method that prints the action dict.
预期验证:Mirror the implementation style of current CrewAI tools: keep the class lightweight, handle missing credentials gracefully, write tests that mock the Supabase client to avoid external dependencies, ensure the PR includes clear description and links to the issue, and respond promptly to reviewer fee…
证据摘要:Maintainer @Vidit-Ostwal assigned the issue to the author, indicating openness to the feature; no opposing or dismissive comments are present.
为什么适合小 PR:The issue is a straightforward, well-documented manual step: a bot has prepared a branch with dependency updates and given the exact PR creation instructions. No ambiguity, no need for investigation, and the work is low‑effort and high‑value for keeping dependencies current. (预计 15-30 minutes)
第一步:Fetch the automation branch and run the provided bash snippet (or manually create a PR via the GitHub UI) to open the dependency update PR from `automation/python-dependency-maintenance` to `main`.
预期验证:First, ensure the automation branch exists locally (`git fetch origin automation/python-dependency-maintenance`). Run the provided script or copy the PR body and title into a new PR. Confirm that the changes only affect dependency files (e.g., `python/uv.lock`, `pyproject.toml`). Run any relevant C…
证据摘要:No human comments have been added; the issue was opened by the github-actions bot. There is no evidence yet that a maintainer has acknowledged or acted on it.
为什么适合小 PR:The issue is a design question seeking rationale; it does not present a bug, missing feature, or actionable code change. Addressing it would mainly involve discussion, which offers low direct contribution value for a contributor looking to submit a PR. (预计 30-60 minutes)
第一步:Open the referenced files in the repository (python/packages/declarative/.../_executors_agents.py and _executors_basic.py) to verify how InvokeAzureAgentExecutor and AgentExecutor handle conversation history and session usage.
预期验证:First, locate and read the relevant executor implementations (_executors_agents.py and _executors_basic.py) to verify the difference. Then, if seeking clarification, comment on the issue with specific questions or summarize understanding to help maintainers respond. Avoid proposing code changes unl…
证据摘要:No comments have been added yet; there is no evidence of maintainer or community engagement on this issue.
为什么适合小 PR:The issue points to exact lines, provides a clear reproduction explanation from a comment, and the fix is a simple additional condition, making it straightforward to implement and verify. (预计 30-60 minutes)
第一步:Open CompactionProvider.cs, locate the if statement at lines 134‑135, and add a check that chatClientSession.ConversationId is not equal to the sentinel constant (e.g., !chatClientSession.ConversationId.Equals(LocalHistoryConversationId, StringComparison.Ordinal)).
预期验证:First reproduce the behavior: set session.ConversationId to "_agent_local_chat_history" and confirm compaction is skipped. Then apply the minimal change, run the existing test suite to verify no regressions, and add a focused unit test for the sentinel case. Keep the change scoped to this file; avo…
证据摘要:Only one confirming comment from @1picassoai; no maintainer response or additional discussion yet.
为什么适合小 PR:The issue provides a clear reproduction path, identifies the responsible components (Foundry toolbox bearer token handler and response handler), and the fix scope is limited to propagating user context, making it straightforward to implement and verify. (预计 1-2 days)
第一步:Clone the repo, run the sample agent locally with logging to capture the userId in the MSAL token cache and inspect the generated consent link; confirm that the link contains the managed identity’s object ID instead of the caller’s.
预期验证:First reproduce the issue using the provided code sample in a local dev environment with logging to capture the userId in the token cache and the consent link. Keep changes minimal: only adjust the flow that attaches user context to the OAuth session. Run the existing test suite to avoid regression…
证据摘要:No comments or maintainer activity on the issue; no evidence of community discussion or ongoing work.
为什么适合小 PR:Issue is well‑described, includes reproducible steps, points to the exact function needing modification, and has a contributor willing to work on it. The scope is limited to one file and a test, making it highly actionable. (预计 1-2 天)
第一步:Write a minimal reproduction script that uses `AgentFrameworkAgent` with a tool reading `ctx.kwargs['user_id']` supplied via `function_invocation_kwargs`, triggers an approval, resumes via AG-UI, and checks that `user_id` is present. This will confirm the bug and give a baseline for the fix.
预期验证:First reproduce the issue with a minimal script that demonstrates missing `user_id` after approval. Then make the smallest possible change to `_resolve_approval_responses` that threads the `function_invocation_kwargs` through. Run the full test suite for the AG-UI package and ensure the new test pa…
证据摘要:Comment from @jstar0 offering to take on the issue and proposing a clear scope; no maintainer response yet, but there is clear interest from a community member.
为什么适合小 PR:The request is well‑defined, includes code snippets and expected behavior, and touches a localized API surface; no evidence of prior resolution or ongoing work. (预计 1-2 days)
第一步:Open the repository, locate `workflow.py` (or equivalent) where `Workflow.run` is defined, and add an `options: dict | None = None` parameter; then run a quick test to confirm the call no longer raises a TypeError.
预期验证:First reproduce the TypeError by calling `workflow.as_agent().run(..., options={'background': True})`; locate the signatures of `Workflow.run` and `WorkflowAgent.run` in the codebase; add the `options` kwarg with a default of None; pass it down to the underlying runner; implement token generation (…
证据摘要:No comments or maintainer responses on the issue; no evidence of community discussion.
为什么适合小 PR:Issue is well-scoped with explicit acceptance criteria, no ambiguity, and affects a single .NET component. The change is localized to AgentSession and its creation method, making a straightforward PR feasible. (预计 1-2 days)
第一步:Clone the repo, find the AgentSession and Foundry hosted session creation methods (likely in Microsoft.Agents.Foundry or similar), examine how ChatOptions are currently built, and write a small test that creates a session and checks whether the user identity header is sent on subsequent runs.
预期验证:First reproduce the current behavior by creating a session, running twice with different identities, and confirming the header is missing on the second run. Locate the existing Foundry hosted session code and follow the pattern used for other session-scoped options. Make minimal changes: add a null…
证据摘要:Issue remains open with zero comments, no associated PRs, and no recent updates since creation on 2026-09-11.
为什么适合小 PR:The issue clearly identifies the transient error types, points to existing checkpoint infrastructure, and describes the exact expected behavior. No conflicting discussion or missing information; a mock‑based reproducer is straightforward, making the fix scoped and actionable. (预计 1-2 天)
第一步:Write a unit test that mocks _FoundryAgentChatClient.call to raise ReadError (or APIError 5xx), invoke workflow.run on a simple workflow, assert that the workflow retries from the last checkpoint (i.e., does not re‑run prior successful agents), eventually either succeeds after retries or raises the…
预期验证:First reproduce the bug with a mock that throws a transient exception; study the existing checkpoint/save‑restore mechanism; follow the project’s error‑handling and testing patterns; keep changes minimal and backward compatible; add unit tests for the retry path and for _is_running reset, plus inte…
为什么适合小 PR:The issue gives a concrete interface proposal and clearly explains the problem, making it straightforward to start implementing a sandbox abstraction without needing further clarification. (预计 3-5 days)
第一步:Examine the existing .NET command/tool execution flow (e.g., where ToolApprovalAgent is invoked) to understand how approvals are currently triggered, then sketch the IAgentCommandSandbox interface and locate a suitable place to inject it.
预期验证:Keep the abstraction minimal and pluggable to avoid locking users into a single implementation; follow the repository's coding style and naming conventions; write tests that mock the sandbox to verify approval behavior; ensure cross‑platform considerations are noted (Windows reference provided, but…
证据摘要:Only one external comment referencing Aegisora; no maintainer responses or activity on the issue, indicating limited direct community engagement.
为什么适合小 PR:The issue includes a detailed reproduction, identifies the exact condition (assistant-ending history causing empty model output), and is limited to the SequentialBuilder/orchestration code, making it straightforward to fix. (预计 1-2 days)
第一步:Clone the repository, locate the SequentialBuilder class in agent_framework/orchestrations, and add a temporary debug print or test to confirm that the second agent receives history ending with an assistant message. Then create a simple mock model that returns empty text when the last message is as…
预期验证:First reproduce the issue locally with a mock LLM that mimics the empty-output behavior. Trace the code path from SequentialBuilder.run to AgentExecutor.from_response and the model call. Keep changes minimal and focused on the history construction logic. Update any relevant documentation or comment…
证据摘要:No comments or activity from maintainers or contributors; no evidence that the issue has been addressed.
为什么适合小 PR:The bug triggers a failing test (`test_encode_round_trips_dict_with_colliding_stringified_keys`) and results in silent data loss due to stringified key collisions. A fix is needed to preserve values or reject ambiguous dicts, and the triage notes already highlight the exact file and test to address. (预计 1-2 days)
第一步:Open the repo, read `python/packages/core/agent_framework/_workflows/_checkpoint_encoding.py` and the failing test `python/packages/core/tests/workflow/test_checkpoint_encode.py`. Run the specific test to see the failure, then start implementing collision detection and fallback to pickle for collid…
预期验证:Keep changes minimal to preserve backward compatibility for non‑colliding dicts. Run the full test suite to avoid regressions. Follow the repository's conventions for error handling and use existing markers/pickle envelope. Communicate with the maintainer before merging if any design doubts arise.
证据摘要:Triage notes show the test `test_encode_round_trips_dict_with_colliding_stringified_keys` is failing, and no fix commit has been made yet.
为什么适合小 PR:The issue is a well‑specified feature request for a sample evaluator, but the author explicitly waits for maintainer confirmation on the item‑status mapping and sample location before proceeding. Without that guidance, any work risks being misaligned, making the task currently not directly actionab… (预计 Half a day to 1 day)
第一步:Read the existing Evaluator protocol and any current evaluator samples in the repository to understand the required interface, then try installing Hermes Rubric in a temporary virtual environment to inspect its assessment output format.
预期验证:First examine existing evaluator samples and the Evaluator protocol definition to match signatures and return types. Use a mock or isolated test environment for Hermes Rubric to avoid external dependencies during unit tests. Keep the sample lightweight: no default rubric, no pass/fail logic, and ex…
证据摘要:No maintainer comments or reactions on the issue; no evidence of community discussion or endorsement.
为什么适合小 PR:The issue is a feature proposal without a concrete implementation request or clear acceptance criteria. It would require significant design work and discussion, and there is no evidence of maintainer interest or ongoing work, making it low priority for immediate contribution. (预计 3-5 days to prototype, 1-2 weeks for a production‑ready integration)
第一步:Clone the Foundgine .NET repository, run its samples to understand how to call its semantic resolution and execution APIs, and identify the corresponding extension points in the agent framework where tool execution is invoked.
预期验证:First reproduce a simple agent tool call, then locate where the framework invokes tool execution. Create a minimal interface that delegates to Foundgine, implement it behind a feature flag, write tests that verify authorization and plan enforcement, and iterate with maintainer feedback before expan…
证据摘要:Only the author and one commenter discuss the idea; no maintainer or triager has responded, indicating no explicit community endorsement or opposition.
为什么适合小 PR:The issue is well‑specified with a clear description, links to the normative spec, and a reference implementation in .NET. However, the changes span core MCP request/response handling, session removal, new endpoints, and task/model updates, making it a non‑trivial but achievable effort. (预计 1-2 weeks)
第一步:Find the Python MCP client/server module (likely under agent_framework/services/mcp or similar), examine how the current initialize handshake and session ID are used, and write a quick prototype that builds a stateless request with _meta fields for a single method (e.g., tools/list) to confirm the…
预期验证:Start by reading the existing MCP wrapper code and the .NET PRs (#7773, #7774, #7824) to see how version negotiation was implemented there; create a small spike that statelessly calls tools/list against a mock 2026-07-28 server to verify _meta handling; use feature flags or runtime version detectio…
证据摘要:Only the issue author has commented, sharing a blog post about the spec. No maintainer responses or signs of ongoing work are visible.
为什么适合小 PR:The problem is a straightforward type mismatch blocking auth; the fix is a one‑line type adjustment with a reproduced case and verified test passes locally, making it low risk and quick to merge. (预计 <1 hour)
第一步:Open the repository, find the file defining CustomAdapterOptions (likely under packages/langgraph-sdk/src/stream/types.ts), examine the current never typings, and prepare to edit them to allow defaultHeaders and client fields.
预期验证:First reproduce the issue by setting up a minimal example with a custom transport that requires auth on getHistory. Then locate the type file, apply the minimal type fix, run tsc and the repo's test suite (including browser/react tests) to confirm everything passes. If adding a test, include a case…
证据摘要:Comment from @mohammedmessaoudene-cmd: they reproduced the issue on commit dd287b4c872db094e2fbc87e685da005a6ccdb90, prepared option (a) locally (allow ClientConfig["defaultHeaders"] on CustomAdapterOptions), and reported that all relevant tests pass.
为什么适合小 PR:The issue includes a minimal, runnable reproduction and points directly to the hydration logic. The bug is isolated and likely fixable with a small conditional change, making it straightforward to address. (预计 1-2 hours)
第一步:Clone the repository, install dependencies, run the provided `repro.mjs` script to observe the missing `/stream/events` request, then locate the hydration checking code in the SDK.
预期验证:First reproduce the failure locally. Make the smallest possible change to the hydration decision logic. Ensure the change is covered by a test that asserts an active run with empty `next` triggers a stream subscription. Keep the PR focused, update any relevant documentation if needed, and respond t…
证据摘要:Maintainer comment: 'I will take this issue. Please assign it to me.' and follow‑up that they are examining the hydration logic.
为什么适合小 PR:The issue gives a precise reproduction, identifies the missing AbortSignal pass to graph.streamEvents(), and includes a clear expected behavior. No evidence of an existing fix or duplicate. (预计 Half a day to 1 day)
第一步:Clone the repo, run the Agent Server locally, and execute the provided probe script to confirm that a cancelled run still writes to state. Then search the codebase for 'graph.streamEvents' to locate the call site in the run handler.
预期验证:First reproduce the issue locally using the provided example to confirm the bug. Then make the minimal change: pass the signal parameter. Verify that the fix does not break non‑cancelled runs. Add a test that asserts the graph's side effects (state writes) are aborted when cancelled. Keep the chang…
证据摘要:Comment from @Kaustubh1235: 'I will take this issue. Please assign it to me.' No linked PR, commit, or closure evidence.
为什么适合小 PR:The issue is well‑reproduced, impact is severe (all tools broken for strict clients), and the fix is isolated to two call sites with existing PRs ready, making it straightforward and high value. (预计 1-2 hours)
第一步:Clone the repository, open src/server/mcp.ts (or the file containing toJsonSchemaCompat calls for Zod v4), identify the two call sites for inputSchema and outputSchema, and add the target: 'draft-2020-12' argument.
预期验证:Reproduce the issue locally with a minimal server using Zod v4, verify the incorrect $schema. Apply the smallest possible change (only the target parameter). Run the full test suite to ensure no regression. Keep the Zod v3 path untouched, as it legitimately emits draft-07. Document the reasoning in…
证据摘要:The issue remains open with no merged PR; comments note that fix PRs exist (#2085, #2653) but are not yet linked or merged, and the problem persists in the latest release (1.30.0).
为什么适合小 PR:The issue is well‑described with a clear root cause and a trivial one‑line fix; there is no evidence of a prior resolution, and the bug blocks a core SDK feature for many users. (预计 1-2 小时)
第一步:Clone the repository, reproduce the bug by running a small MCP server that declares an `outputSchema` and observing the client‑side rejection, then edit `src/server/zod-json-schema-compat.ts` to change the fallback target to 'draft-2020-12'.
预期验证:First reproduce the issue locally by creating a minimal MCP server with an `outputSchema` and attempting a tool call from a client that enforces draft-2020-12 validation. After applying the one-line change, confirm the schema now uses `https://json-schema.org/draft/2020-12/schema`. Run the full tes…
证据摘要:No maintainer response has been posted; the issue has received multiple confirmations from users (@dhk, @GXsolutions28, @iaraslanov86-droid, @mildlydiverting) showing widespread impact.
为什么适合小 PR:The issue includes a clear reproduction, a detailed root‑cause analysis, and a concrete proposed fix. The problem is isolated to error message formatting, making the fix low‑risk and straightforward. (预计 1-2 hours)
第一步:Clone the repository, run the example code to confirm the double‑prefix behavior, then search for where `McpError` instances are serialized to JSON‑RPC errors (e.g., in src/shared/protocol.ts) to examine the current serialization logic.
预期验证:First reproduce the issue locally with the provided snippet over `InMemoryTransport`. Identify the exact function that converts a thrown error to the JSON‑RPC error payload. Make the minimal change to strip the prefix only when serializing, preserving the existing `McpError` constructor behavior fo…
证据摘要:Commenters pj-workspace, LouisDeconinck, and fszcd have confirmed the issue and expressed interest in fixing it, indicating active maintainer and community attention.
为什么适合小 PR:The issue is well-described, points to a single file needing a one-line version bump, and there are already open PRs/issues showing the fix is known and low-risk. This makes it straightforward to implement and merge. (预计 1-2 hours)
第一步:Clone the repository, run the reproduction snippet from the issue to verify that the `tools/list` payload contains draft-07, then open `src/services/schema-dialect.ts` and locate the line that sets the `$schema` value.
预期验证:First reproduce the issue by running a minimal server and inspecting the `tools/list` output to confirm draft-07. Apply the smallest possible change, run `npm test` and `npm run lint` to ensure no regressions, and keep the change limited to the dialect file. If the project has a contributing guide,…
证据摘要:No recent comments on this issue; maintainers have not responded. However, there are related open PRs (#2085, #2653) and issues (#2084, #2721) indicating awareness but no merged fix yet, suggesting limited recent maintainer activity on this specific problem.
为什么适合小 PR:The issue includes a clear reproduction, identifies the exact location of the bug, and proposes a straightforward fix (adding a default schema). No ambiguous design discussion is needed, and the fix is localized to one or two functions. (预计 1-2 小时)
第一步:Clone the repository, run the reproduction script to confirm the TypeError, then open `src/experimental/tasks/client.ts` to view the current `getTaskResult` implementation.
预期验证:First reproduce the issue using the provided snippet to confirm the error. Then look at the existing `getTask`/`listTasks` implementations for the exact default schema they use. Make the smallest change that aligns the wrapper’s signature with the protected method’s requirement. Write a focused tes…
证据摘要:No direct response from maintainers yet. A community member (Chukwuemeka001) confirmed reproducibility on the v1.x branch and offered to submit a fix/test, indicating the issue is recognized but not yet addressed.
为什么适合小 PR:The issue precisely identifies the mismatched code lines, provides a reproducible example, and explains the impact. The fix is a straightforward guard addition with low risk, making it highly actionable. (预计 1-2 hours)
第一步:Clone the repository, checkout the v1.x branch, run the reproduction script to confirm the error is thrown when `tools/list` is called first, then locate the validation code in `src/client/index.ts` near line 740.
预期验证:First reproduce the issue locally using the provided snippet to confirm the bug. Make the minimal change (two-line guard) and run the full test suite to verify no regressions. Add tests that cover error results with structuredContent under both cached and uncached validator states. Follow the proje…
证据摘要:Commenter @JosephDoUrden reproduced the issue; prior discussion (#1428, #2286) shows maintainers have considered this guard before. No recent maintainer response on this issue, but there is clear community confirmation.
为什么适合小 PR:The issue provides a precise symptom and a clear fix point (close replayed stream when no in‑flight requests remain). The codebase already has similar cleanup logic, so the change is localized and testable. (预计 1-2 days)
第一步:Open the SDK, find the replayEvents function (or where streams are created for Last-Event-ID replay), inspect how _requestToStreamMapping is updated, and add a conditional that calls the existing stream close/cleanup when the mapping for that stream becomes empty.
预期验证:First reproduce the issue by adding a test that sends a request, replays it with Last-Event-ID, and verifies the stream is closed after all responses are received. Keep changes minimal: only invoke the existing stream‑close function when the request mapping becomes empty. Follow the project's testi…
证据摘要:Comments indicate that a close‑after‑replay slice exists on main and was backported to v1.x, but the keep‑alive problem persists after Last‑Event-ID replay, suggesting the fix is incomplete or not fully applied.
为什么适合小 PR:The issue description and comments precisely identify the missing cleanup and missing promise settlement, point to the exact files and lines, and reference existing fixes on main. A clear, isolated fix is possible, and contributors have already prepared draft PRs, making it straightforward to act o… (预计 1-2 天)
第一步:Open the v1.x file `src/server/webStandardStreamableHttp.ts` and locate the JSON-response branch in the `send()` method around lines 1242‑1261. Verify that after `resolveJson` is called there is no subsequent call to `stream.cleanup()`. Then look at the `cleanup()` method to see if it settles any p…
预期验证:First reproduce the leak and hang locally using a minimal test that enables `enableJsonResponse`. Then study the fix already applied to main (commit #2286) to understand the exact pattern of calling `cleanup` after `resolveJson`. Apply the smallest possible change to v1.x that mirrors this pattern…
证据摘要:Multiple commenters have expressed interest in working on the issue and have shared analysis and draft PRs (#2584 for main, #2747 for v1.x). No maintainer has explicitly blocked the work, and there is active discussion about the scope and approach.
为什么适合小 PR:The issue provides a clear problem statement, a reproducible code sample, and references to the spec. The fix is localized to the auth router and bearer auth middleware, with no indication of ongoing work or duplication. (预计 1-2 天)
第一步:Clone the repository, run the reproduction code locally, and curl the `/.well-known/oauth-protected-resource` endpoint and a 401 response to confirm the incorrect PRM location and missing `resource_metadata` header.
预期验证:First reproduce the issue using the provided snippet and inspect the `/.well-known/oauth-protected-resource` endpoint and 401 response headers. Then read the existing test suite for auth/router and bearerAuth to understand testing patterns. Implement the fix with the smallest possible change that p…
证据摘要:No comments or recent activity from maintainers; no evidence of community discussion or ongoing PRs.
为什么适合小 PR:The issue clearly describes what is needed and references a working prototype and conformance test, but it leaves open architectural questions (package placement, scope of initial API) that require maintainer input before implementation can begin. (预计 1-2 天)
第一步:Download Olaservo's @olaservo/ext-skills prototype, examine its structure, and post a comment asking the maintainers whether the Skills APIs should live in a new workspace package or be added to the existing client/server packages, and whether resources/directory/read should be included in the firs…
预期验证:Start by reviewing Olaservo's Apache-2.0 code and the conformance test to understand the exact API surface. Keep changes minimal: add new files under appropriate packages (client/server or a new workspace package) and export only the needed functions. Write tests before implementation where possibl…
证据摘要:No comments or reactions on the issue; no evidence of maintainer or community discussion yet.
No maintainer or community feedback yet; the issue was opened by the contributor RunBourse with no subsequent comments.
我现在先做什么
Examine an existing provider doc (e.g., docs/providers/openai.md) to understand the required format, then create a draft bourse.md with the correct frontmatter and content.
问题描述
The issue requests adding Bourse, an OpenAI‑compatible AI capacity reseller, to LiteLLM's official providers list and providing a dedicated documentation page. Currently users must use the generic openai_compatible workaround; a named provider entry would make discovery and configuration clearer.
工作内容
Create a new provider documentation file (e.g., docs/providers/bourse.md) following the existing template, add Bourse to the providers list in the documentation navigation (mkdocs.yml), ensure the page includes base URL, authentication, model naming, and a short description. Verify the docs build successfully and that the new entry appears in the generated site.
最佳实践
Copy the frontmatter and structure from a similar provider doc (e.g., openai.md), keep content concise and accurate, link to Bourse's API guide, add the entry to the nav section under 'Providers', run `mkdocs build` locally to check for broken links or formatting issues, and submit a PR with a clear description.
One comment from @Rudra-G-23 indicating they intend to work on the issue and have already examined the code. No further discussion or PR yet.
我现在先做什么
Clone the repo, run the reproduction snippet from the issue to confirm that `"__builtins__" in pt.safe_globals` evaluates to True, then edit libs/agno/agno/tools/python.py to replace the falsy‑or with an explicit None check and verify the fix.
问题描述
The PythonTools.run_python_code method uses `safe_globals or globals()` and `safe_locals or locals()` for its execution namespace. Because the check is falsy‑or, passing an empty dict still falls back to the interpreter's full globals, which includes __builtins__ and allows arbitrary code execution when untrusted input is passed to the tool. This is a critical code‑injection vulnerability (CWE‑94).
工作内容
1. Locate libs/agno/agno/tools/python.py and change the initialization of self.safe_globals and self.safe_locals to use an explicit None check (e.g., `self.safe_globals = safe_globals if safe_globals is not None else globals()`). 2. Ensure that providing an empty dict truly restricts the namespace (no __builtins__ unless explicitly added). 3. Add unit tests that verify: a) default behavior remains unchanged for backward compatibility (or add a deprecation warning if changing), b) explicit safe_globals={} does not contain __builtins__, c) attempting to execute `import os` via run_python_code raises NameError when safe_globals is empty. 4. Update any documentation or docstrings reflecting the behavior.
最佳实践
First reproduce the issue locally to confirm the vulnerability. Then make the smallest possible change to fix the namespace fallback. Write automated tests before and after the change to ensure the fix works and does not break existing usage. Keep the change isolated to the initialization logic; avoid modifying the exec call itself. If altering the default behavior could be a breaking change, consider adding a deprecation warning and preserving the old behavior for a release cycle, or make the change opt‑in via a new parameter. Finally, run the existing test suite to ensure no regressions.
Multiple commenters have confirmed the bug in real‑world servers, proposed fixes, and two open PRs (#2085, #2653) that address it; maintainers have engaged in discussion, indicating active awareness.
我现在先做什么
Clone the repository, open src/server/mcp.ts (or the file containing toJsonSchemaCompat calls for Zod v4), identify the two call sites for inputSchema and outputSchema, and add the target: 'draft-2020-12' argument.
问题描述
The SDK's tools/list endpoint advertises JSON Schema draft-07 for Zod v4 schemas, even though Zod v4's native toJSONSchema() outputs the SEP-1613 default dialect 2020-12. This explicit downgrade causes strict MCP clients (which expect 2020-12) to reject tool definitions, rendering all tools unusable before any tool call is made.
工作内容
Locate the two invocations of toJsonSchemaCompat in the MCP server code (likely src/server/mcp.ts) where inputSchema and outputSchema are converted for Zod v4 schemas. Add an explicit target option: { target: 'draft-2020-12' } to match SEP-1613 default. Add or update a test that registers a Zod v4 tool and asserts the advertised $schema in tools/list response is "http://json-schema.org/draft-2020-12#". Ensure existing Zod v3 behavior remains unchanged.
最佳实践
Reproduce the issue locally with a minimal server using Zod v4, verify the incorrect $schema. Apply the smallest possible change (only the target parameter). Run the full test suite to ensure no regression. Keep the Zod v3 path untouched, as it legitimately emits draft-07. Document the reasoning in a commit message referencing SEP-1613.
用户希望在 LlamaHub 集成页面中列出他们新发布的工具包 llama-index-tools-truth-bear-gauge,该工具包提供三个基于 Truth Bear GAUGE API 的工具(coverage_check、catalog_lookup、record_request),用于获取美国联邦机构的官方来源信号数据。目前该工具包尚未出现在官方集成列表中,导致潜在用户难以发现和使用。
The only recent comment is from @Rainmemery who provided a complete implementation in a fork; no maintainer feedback yet, indicating community readiness to contribute.
我现在先做什么
Check out the branch feat/generic-guardrail-tool-calls from the contributor's fork, run the test suite locally, and either ask them to open a PR or open a PR yourself after verification.
问题描述
The generic guardrail API can only block or accept whole tool calls; it cannot return a modified version of a tool call's arguments. This forces agents to either block an entire turn (losing useful work) or abandon the gateway's guardrail service, leaving sensitive data in tool arguments unguarded.
工作内容
Review the contributor's branch, verify that GenericGuardrailAPIResponse gains a tool_calls field and that _build_guardrail_return_inputs forwards it, add unit tests for both request and response guardrail paths, ensure backward compatibility, and run the existing test suite.
最佳实践
Make minimal changes following existing patterns, keep the new field optional with default None, add tests covering scenarios where tool calls are modified and where they are unchanged, avoid breaking changes, and update any relevant documentation if needed.
No recent comments or maintainer feedback on the issue; the author states they are willing to contribute. There is no evidence of maintainer engagement yet.
我现在先做什么
Examine the current web/i18n structure (e.g., web/i18n/en-US) and copy it to a new web/i18n/az-AZ folder, then place the contributor’s 37 translation files there, ensuring file names and paths match exactly.
问题描述
Dify currently does not include Azerbaijani (az-AZ) among its UI locales, so users cannot select Azerbaijani in the console. The contributor has prepared a full set of translation files (37 files, 5960 strings) matching the existing en-US structure and listed the exact places that need updates (language config files, dayjs locale, and a Python constant). Adding this locale will make the platform accessible to Azerbaijani-speaking users.
工作内容
Copy the provided az-AZ translation files into web/i18n/az-AZ; update web/i18n-config/languages.ts and web/i18n-config/language.ts to register the new locale; add the dayjs locale import in web/utils/format.ts; ensure the locale resource is exported in web/i18n-config/locale-resources/az-AZ.ts; add the corresponding timezone constant in api/constants/languages.py; run lint and any existing i18n tests to verify the new locale loads correctly.
最佳实践
First, run the existing i18n lint/validation script to confirm the translation files follow the required format (key order, plural branches). Make the minimal changes listed above, then start the dev server and switch the UI language to Azerbaijani to verify all strings appear correctly. If there are unit tests for language loading, add a test case for az-AZ. Keep the PR focused on the locale addition only, referencing this issue in the description.
No human comments have been added; the issue was opened by the github-actions bot. There is no evidence yet that a maintainer has acknowledged or acted on it.
我现在先做什么
Fetch the automation branch and run the provided bash snippet (or manually create a PR via the GitHub UI) to open the dependency update PR from `automation/python-dependency-maintenance` to `main`.
问题描述
The repository's automated Python dependency maintenance workflow has successfully generated updated dependency files and pushed them to the automation branch `automation/python-dependency-maintenance`. However, GitHub Actions lacks permission to create pull requests in this repo, so a maintainer must manually open a PR from that branch to merge the dependency updates. The issue provides the exact commands and PR description needed to do so.
工作内容
Create a pull request from the automation branch `automation/python-dependency-maintenance` targeting `main` using the supplied `gh pr create` command (or manually via the GitHub UI). Verify that the PR builds and passes CI, then merge after review.
最佳实践
First, ensure the automation branch exists locally (`git fetch origin automation/python-dependency-maintenance`). Run the provided script or copy the PR body and title into a new PR. Confirm that the changes only affect dependency files (e.g., `python/uv.lock`, `pyproject.toml`). Run any relevant CI checks locally if possible, then request a quick review from a maintainer familiar with the Python workspace.
Only external commentators (renezander030, roy-tong, iwasinnam2) have discussed the issue; there is no explicit acknowledgment or guidance from the LiteLLM maintainers yet.
我现在先做什么
Open the files litellm/proxy/hooks/proxy_track_cost_callback.py (~L275), litellm/caching/caching_handler.py (_async_log_cache_hit_on_callbacks), and litellm/litellm_core_utils/litellm_logging.py (~L6103) to see how spend and token columns are set for cache hits, then confirm the current behavior with a quick local reproduction.
问题描述
The issue questions the semantics of token columns (prompt_tokens, completion_tokens, total_tokens) in spend_logs rows when a response cache hit occurs. Currently, a cache hit logs spend=0 but replays the original token usage, causing token‑based reports to double‑count while cost‑based reports show zero. The author asks whether the token columns should represent actual provider consumption, served volume, or another basis, and requests clarification (or a possible code/doc change) to define the intended contract.
工作内容
Examine the three code paths mentioned: proxy cost hook (setting spend=0 on cache_hit), caching handler (_async_log_cache_hit_on_callbacks) that invokes async_success_handler, and the logging utility (StandardLoggingPayload) that reads token columns from the cached result. Determine whether token columns should be zeroed for cache hits or kept as served volume. If the decision is to keep served volume, add clear documentation/comments in the relevant files (and possibly a docstring or README note) explaining the convention. No functional change is required unless the maintainers decide to alter the behavior.
最佳实践
1. Create a minimal reproduction (two identical calls with cache enabled) to confirm current behavior. 2. Locate the exact lines where token columns are populated for cache hits. 3. Decide on the intended basis after reviewing the code and discussion. 4. If documentation is sufficient, add inline comments or a docstring clarifying that token columns reflect served volume (or provider consumption) on cache hits. 5. Run existing tests to ensure no regression. 6. Submit a PR with the doc changes and optionally a test that asserts the current token‑column behavior.
No maintainer response has been posted; the issue has received multiple confirmations from users (@dhk, @GXsolutions28, @iaraslanov86-droid, @mildlydiverting) showing widespread impact.
我现在先做什么
Clone the repository, reproduce the bug by running a small MCP server that declares an `outputSchema` and observing the client‑side rejection, then edit `src/server/zod-json-schema-compat.ts` to change the fallback target to 'draft-2020-12'.
问题描述
The SDK's `mapMiniTarget` function defaults to JSON Schema draft-07 when no explicit target is provided, causing all `outputSchema` values generated by `McpServer` to carry a `$schema` URI pointing to draft-07. Clients that strictly validate against JSON Schema 2020-12 reject these schemas, rendering any MCP server that declares an `outputSchema` unusable (e.g., Claude Desktop, Claude Code).
工作内容
1. Locate `src/server/zod-json-schema-compat.ts` and change the fallback in `mapMiniTarget` from `'draft-7'` to `'draft-2020-12'`.
2. Run the existing test suite to ensure no regressions.
3. Add a unit test (if none exists) that verifies `outputSchema` emitted by `McpServer` uses the 2020-12 schema URI.
4. Optionally, verify that `inputSchema` behavior remains unchanged and that the change does not break any downstream consumers.
最佳实践
First reproduce the issue locally by creating a minimal MCP server with an `outputSchema` and attempting a tool call from a client that enforces draft-2020-12 validation. After applying the one-line change, confirm the schema now uses `https://json-schema.org/draft/2020-12/schema`. Run the full test suite, check for any lint or type errors, and update the changelog if the project maintains one.
Only one comment from a contributor asking if anyone is working on it; no maintainer response or activity indicating ongoing work.
我现在先做什么
Search the proxy routes directory for the Responses WebSocket endpoint (e.g., grep -r 'responses' litellm/proxy/routes/ | grep -i websocket) to locate the exact function that accepts the WS connection, then inspect its current logic to place the env flag check at the very start.
问题描述
Operators need a way to disable new Responses API WebSocket connections without taking down the entire proxy. Currently there is no environment variable to reject these WS connections early, forcing operators to stop the whole service or change routing to prevent new sessions.
工作内容
Locate the Responses WebSocket route handler in the proxy code (likely under litellm/proxy/routes/), add an early check for the environment variable LITELLM_DISABLE_RESPONSES_WEBSOCKET, and if set, reject the WebSocket with close code 1008 and reason 'Responses WebSocket is disabled' before any authentication or provider logic. Ensure existing behavior when the variable is unset or false. Add a unit/integration test that verifies the rejection and that other proxy routes remain functional. Update any relevant documentation or env var list.
最佳实践
Follow the pattern used for other environment-based feature flags in the project (e.g., using os.getenv with a default false). Keep the change minimal and isolated to the route handler. Test with a websockets client to confirm the close code and reason. Verify that HTTP routes (e.g., /v1/chat/completions) still work when the flag is set. If there is a shared middleware for WS authentication, place the check there to avoid duplication.
Commenters pj-workspace, LouisDeconinck, and fszcd have confirmed the issue and expressed interest in fixing it, indicating active maintainer and community attention.
我现在先做什么
Clone the repository, run the example code to confirm the double‑prefix behavior, then search for where `McpError` instances are serialized to JSON‑RPC errors (e.g., in src/shared/protocol.ts) to examine the current serialization logic.
问题描述
When a request handler throws an `McpError`, the SDK prefixes the error message with "MCP error <code>:" twice: once when the error is constructed and again when the client reconstructs the error from the JSON‑RPC response. This results in a client‑visible message like "MCP error -32601: MCP error -32601: Unknown tool: nope" instead of a single prefix.
工作内容
Locate the server‑side error serialization logic (likely in src/shared/protocol.ts or similar) where a thrown `McpError` is turned into a JSON‑RPC error object. Modify the serialization to send the raw `error.message` (without the MCP prefix) so that the client only adds the prefix once when rebuilding the error. Ensure both the normal response path and the queued‑response path in `_onresponse` are updated. Add a regression test that verifies the wire message contains no prefix and the client‑visible message contains exactly one prefix for a handler that throws `McpError`.
最佳实践
First reproduce the issue locally with the provided snippet over `InMemoryTransport`. Identify the exact function that converts a thrown error to the JSON‑RPC error payload. Make the minimal change to strip the prefix only when serializing, preserving the existing `McpError` constructor behavior for local presentation. Run the existing test suite to ensure no regressions, then add the new test covering both v1 and v2 code paths. Keep the change backward‑compatible for v2 clients, which already handle the prefix correctly.
No comments or activity from maintainers yet; no evidence of discussion or work in progress.
我现在先做什么
Clone the repository, checkout commit cc4b41617ce3601b1290d67216ea0b194a3cd9ac, open packages/server/package.json and packages/core/package.json to view their license fields, then open the top-level LICENSE to compare its contents.
问题描述
The @modelcontextprotocol/server@2.0.0 and @modelcontextprotocol/core@2.0.0 packages list MIT as their license in package.json, but the bundled LICENSE file indicates a contribution‑dependent MIT/Apache-2.0 coverage. This creates uncertainty about which license actually governs the distributions and whether the manifest labels need correction or additional notices are required for consumers.
工作内容
1. Examine the LICENSE file at the referenced commit to determine its exact terms and any Apache-2.0 clauses.
2. Check the package.json files for @modelcontextprotocol/server and @modelcontextprotocol/core to see their "license" field.
3. Identify any third‑party components that might be under Apache-2.0 or other licenses.
4. Decide whether the package.json license field should be changed (e.g., to "MIT" or "MIT OR Apache-2.0") or whether a NOTICE file with attribution is needed.
5. Update the manifests or add appropriate documentation, then submit a PR.
最佳实践
Use the commit SHA cc4b41617ce3601b1290d67216ea0b194a3cd9ac to ensure you’re looking at the exact versions. Verify the license text with a tool like licensee or manually read the LICENSE. If only MIT applies, keep the manifest as MIT; if Apache-2.0 code is present, adjust the license field to an SPDX expression or add a NOTICE with required attributions. Keep changes minimal, update only the affected packages, and include a test that confirms the license metadata matches the source.
No recent comments on this issue; maintainers have not responded. However, there are related open PRs (#2085, #2653) and issues (#2084, #2721) indicating awareness but no merged fix yet, suggesting limited recent maintainer activity on this specific problem.
我现在先做什么
Clone the repository, run the reproduction snippet from the issue to verify that the `tools/list` payload contains draft-07, then open `src/services/schema-dialect.ts` and locate the line that sets the `$schema` value.
问题描述
The TypeScript SDK's `registerTool` (via `src/services/schema-dialect.ts`) advertises JSON Schema draft-07 in the `tools/list` response, while the MCP spec (SEP-1613) requires draft-2020-12. Strict clients that only accept draft-2020-12 reject the schema, rendering all tools unusable even though the SDK's own tests pass.
工作内容
Locate `src/services/schema-dialect.ts`, find where the `$schema` property is set on outgoing `tools/list` payloads, change the hardcoded value from "http://json-schema.org/draft-07/schema#" to "https://json-schema.org/draft/2020-12/schema". Run the existing test suite (especially `server.test.ts`) to ensure no schema constructs that differ between drafts are used, and add a test verifying the emitted schema's `$schema` field. Update any relevant documentation or comments if needed.
最佳实践
First reproduce the issue by running a minimal server and inspecting the `tools/list` output to confirm draft-07. Apply the smallest possible change, run `npm test` and `npm run lint` to ensure no regressions, and keep the change limited to the dialect file. If the project has a contributing guide, follow its PR template and describe why the change is safe (referencing the existing schema validation assertions).
The README quickstart currently only shows a synchronous usage example. Adding a short async snippet would help new users who prefer or need to use the async API, making the quickstart more complete and aligned with the documentation that describes both sync and async usage.
Only one confirming comment from @1picassoai; no maintainer response or additional discussion yet.
我现在先做什么
Open CompactionProvider.cs, locate the if statement at lines 134‑135, and add a check that chatClientSession.ConversationId is not equal to the sentinel constant (e.g., !chatClientSession.ConversationId.Equals(LocalHistoryConversationId, StringComparison.Ordinal)).
问题描述
The CompactionProvider skips compaction when a ChatClientAgentSession has a non‑whitespace ConversationId. In the .NET agents code, a special sentinel value "_agent_local_chat_history" is set on the session to mark locally‑managed chat history, but the current guard treats it as a remote‑managed session and incorrectly prevents compaction. The issue asks whether this sentinel should be excluded from the skip logic.
工作内容
Locate dotnet/src/Microsoft.Agents.AI/Compaction/CompactionProvider.cs lines 134‑135, find the constant LocalHistoryConversationId (likely defined in PerServiceCallChatHistoryPersistingChatClient.cs or a shared file), and modify the guard to also check that chatClientSession.ConversationId is not equal to the sentinel. Ensure the change does not break existing behavior by running relevant unit tests and, if needed, add a test that sets the sentinel ConversationId and verifies compaction proceeds.
最佳实践
First reproduce the behavior: set session.ConversationId to "_agent_local_chat_history" and confirm compaction is skipped. Then apply the minimal change, run the existing test suite to verify no regressions, and add a focused unit test for the sentinel case. Keep the change scoped to this file; avoid altering unrelated logic. Use string ordinal comparison for performance and clarity.
No comments or maintainer activity on the issue; there is no evidence of community discussion or ongoing work.
我现在先做什么
Search the codebase for `StreamingResponse` (e.g., `grep -r "StreamingResponse" agno/`) to identify all SSE endpoint usages, then pick one (e.g., the agents router) to examine the exact response construction.
问题描述
When AgentOS runs behind nginx (a common production reverse‑proxy setup), nginx buffers Server‑Sent Events (SSE) responses by default, causing streamed events to arrive in delayed bursts or only after the whole run finishes. This degrades user experience and can trigger idle timeouts. Adding the `X-Accel-Buffering: no` header to Agno's SSE responses disables nginx buffering for those responses, restoring token‑by‑token delivery without affecting direct connections or other proxies.
工作内容
Locate all `StreamingResponse` constructions used for SSE endpoints in `os/routers` (agents, teams, workflows) and `os/interfaces` (a2a, agui). Add the header `X-Accel-Buffering: no` to each response, either directly or via a small helper/subclass that wraps `StreamingResponse`. Ensure the header is only added for SSE responses and verify that existing functionality remains unchanged.
最佳实践
Create a reusable function or custom `SSEStreamingResponse` class that injects the header, reducing duplication. Test by running the server locally and using `curl -N` or a simple HTML EventSource client to confirm immediate flushing. Add a unit test that checks the header is present on SSE responses. Keep changes minimal and avoid modifying non‑SSE routes.
No direct response from maintainers yet. A community member (Chukwuemeka001) confirmed reproducibility on the v1.x branch and offered to submit a fix/test, indicating the issue is recognized but not yet addressed.
我现在先做什么
Clone the repository, run the reproduction script to confirm the TypeError, then open `src/experimental/tasks/client.ts` to view the current `getTaskResult` implementation.
问题描述
The `ExperimentalClientTasks.getTaskResult` method declares its `resultSchema` parameter as optional, but when called without a schema it passes `undefined` to the internal protocol layer, which tries to read `._zod` from the undefined value and throws a TypeError. This makes the optional parameter unusable and forces callers to always supply a schema, contradicting the type signature.
工作内容
1. Locate `src/experimental/tasks/client.ts` and examine `getTaskResult` implementation.
2. Compare with `getTask` and `listTasks` to see how they provide a default schema (likely `CallToolResultSchema`).
3. Modify `getTaskResult` to default `resultSchema` to `CallToolResultSchema` when undefined, both in the generic default and the runtime argument forwarded to `Protocol.getTaskResult`.
4. Update the corresponding server-side method if it has the same issue (optional schema passed to `Protocol.getTaskResult`).
5. Add or adjust a test that calls `getTaskResult` without a schema and asserts it succeeds.
6. Run existing tests and typecheck to ensure no regressions.
最佳实践
First reproduce the issue using the provided snippet to confirm the error. Then look at the existing `getTask`/`listTasks` implementations for the exact default schema they use. Make the smallest change that aligns the wrapper’s signature with the protected method’s requirement. Write a focused test before fixing to prevent regression. After the fix, run the full test suite and `npm run typecheck` to verify correctness.
Commenter @JosephDoUrden reproduced the issue; prior discussion (#1428, #2286) shows maintainers have considered this guard before. No recent maintainer response on this issue, but there is clear community confirmation.
我现在先做什么
Clone the repository, checkout the v1.x branch, run the reproduction script to confirm the error is thrown when `tools/list` is called first, then locate the validation code in `src/client/index.ts` near line 740.
问题描述
In the v1.x TypeScript SDK, the validation of a tool result's `structuredContent` incorrectly runs even when `isError: true`, due to a missing `!result.isError` guard. This causes the client to throw an MCP error -32602 for error results that carry structured content, while the v2 SDK correctly skips validation for errors. The inconsistency leads to interoperability breaks between v1.x servers and clients, especially when tool validators are cached after a prior `tools/list` call.
工作内容
Locate the validation block in `src/client/index.ts` (around line 740) and add `!result.isError` to the condition. Check the same logic in `experimental/tasks/client.ts` and apply the fix there if needed. Add unit tests that reproduce both scenarios: calling a tool that returns an error with structuredContent, with and without a prior `tools/list` to populate `_cachedToolOutputValidators`. Ensure existing tests pass and linting succeeds.
最佳实践
First reproduce the issue locally using the provided snippet to confirm the bug. Make the minimal change (two-line guard) and run the full test suite to verify no regressions. Add tests that cover error results with structuredContent under both cached and uncached validator states. Follow the project's coding style, include a clear PR description referencing issue #2748, and request review from maintainers.
A contributor (@Srijan229) has expressed interest and asked for maintainer confirmation; no maintainer response yet, so there is community interest but no explicit maintainer feedback.
我现在先做什么
Open the llama-index-callbacks-langfuse package directory, examine the current __init__.py and setup.py/pyproject.toml to see how to add a deprecation warning and update the langfuse dependency, then run the existing tests to confirm they still pass.
问题描述
The llama-index-callbacks-langfuse package still uses the legacy LlamaIndexCallbackHandler and pins langfuse<3, creating a second tracing stack that diverges from the current OpenTelemetry/OpenInference instrumentation. Users need a clear deprecation path to migrate to the supported langfuse>=4.7 with openinference-instrumentation-llama-index and LlamaIndexInstrumentor.
工作内容
Mark the package as deprecated in a final release (add deprecation warning, update version), remove the langfuse<3 constraint, update README and docs to point to the OpenTelemetry/OpenInference integration, add a migration example, ensure CI/tests pass, and optionally add a changelog entry.
最佳实践
Check existing deprecation patterns in the repo, add a warnings.warn call in the package's __init__, follow semantic versioning for a final release, run the smoke-test migration example, verify no breaking changes for existing users beyond the deprecation notice, and keep the PR focused and small.
The Dispatcher class in llama_index_instrumentation/dispatcher.py uses mutable default arguments (list literals) in both Pydantic Field defaults and its __init__ parameters. This causes the default lists to be shared across instances when the constructor overrides the field default for span_handlers, leading to unintended cross-instance state mutation and preventing the intended default [NullSpanHandler()] from being applied.
A contributor (@mohammedmessaoudene-cmd) reproduced the issue on main, prepared a one‑line type fix locally, and confirmed that the SDK test suite, typecheck, build and lint pass. No maintainer response yet, but the contributor is ready to submit the patch.
我现在先做什么
Open the repository, find the file defining CustomAdapterOptions (likely under packages/langgraph-sdk/src/stream/types.ts), examine the current never typings, and prepare to edit them to allow defaultHeaders and client fields.
问题描述
The CustomAdapterOptions type incorrectly marks client, defaultHeaders, apiKey, etc. as never, which prevents passing authentication headers when using a custom transport. As a result, the SDK's internal client used during hydration (e.g., for client.threads.getHistory) lacks Authorization, causing 401 errors on self‑hosted endpoints that require auth, silently breaking subgraph/subagent discovery.
工作内容
Locate the type definition for CustomAdapterOptions in the langgraph-sdk stream types (e.g., src/stream/types.ts or similar). Change the never typings for client, defaultHeaders, apiKey, callerOptions, fetch to their appropriate types (allowing ClientConfig fields). Ensure the change does not break existing usage, run the TypeScript compiler and the existing test suite to verify no regressions.
最佳实践
First reproduce the issue by setting up a minimal example with a custom transport that requires auth on getHistory. Then locate the type file, apply the minimal type fix, run tsc and the repo's test suite (including browser/react tests) to confirm everything passes. If adding a test, include a case that verifies headers are forwarded when using CustomAdapterOptions with useStream.
Maintainer @daneatmastra acknowledged the issue, applied relevant labels (trio-tb, impact:high, effort:high) and stated they will look into it soon; no further discussion or activity is visible.
我现在先做什么
Open `packages/core/src/llm/model/provider-options.ts` and add the TypeScript type for `providerOptions.openai.contextManagement` (e.g., an array of `{ type: 'compaction'; compactThreshold: number }`), then run the existing lint/tests to confirm the change integrates cleanly.
问题描述
OpenAI's Responses API can perform server-side compaction when `contextManagement` is enabled, emitting an opaque encrypted compaction item that must be persisted across subsequent requests. Mastra currently does not preserve this item: its stream normalization ignores unknown provider `custom` chunks, and `buildMessagesFromChunks` drops them, causing the compaction state to be lost before the next tool step, user turn, or memory reload. This prevents end-to-end use of OpenAI's compaction feature, which improves reasoning retention and reduces token usage for agent workloads.
工作内容
Add typed OpenAI provider options for `contextManagement`; ensure built‑in OpenAI string models resolve via an AI SDK v7 provider that supports the option; define a canonical Mastra representation for provider‑native/custom content that retains `kind` and `providerMetadata` without treating the opaque value as text; modify stream normalization (aisdk/v5/transform.ts) to pass through `custom` chunks; update `buildMessagesFromChunks.ts` to preserve compaction items; propagate them through `MessageList`, memory persistence/reload, and model‑facing prompt conversion; restore the compaction item when constructing the next AI SDK v7 prompt; add unit and integration tests to verify compaction state survives multiple steps; update documentation and type definitions.
最佳实践
First reproduce the behavior by enabling `contextManagement` on a direct AI SDK v7 OpenAI model and confirming that a `custom` chunk with `kind: 'openai.compaction'` appears in the stream; follow existing patterns for handling provider‑specific content in Mastra (e.g., how reasoning items are preserved); keep changes minimal and backward‑compatible; add tests that simulate a multi‑step agent workflow where compaction is triggered and verify that the compaction item is present in the input of the subsequent request; run the existing test suite to ensure no regressions; coordinate with maintainers on any needed version bumps for `@ai-sdk/openai`.
No recent comments or maintainer responses; issue is newly opened with no evidence of ongoing work.
我现在先做什么
Create a test script that starts AgentOS with a2a_interface=True and no auth, then from a separate process send an unauthenticated GET request to /a2a/agents/{id}/.well-known/agent-card.json and a POST to message:send; verify the server responds without requiring authentication, confirming the vulnerability.
问题描述
AgentOS's A2A interface is enabled without authentication by default. When a2a_interface=True and no credentials are configured, the A2A endpoints (agent discovery and remote invocation) are reachable by any network client, allowing unauthenticated discovery, agent execution, and potential remote code execution. This matches CWE-306 (Missing Authentication for Critical Function) with a CVSS 9.8 rating.
工作内容
1. Examine app.py (auth_configured logic) and a2a.py (router mounting) to understand the authentication condition. 2. Decide on a fix: either enforce authentication when a2a_interface=True (e.g., require authorization or generate a default security key) or provide a clear opt-out mechanism. 3. Modify the relevant code to ensure middleware is installed for A2A when no auth is present, or raise a warning/error. 4. Add tests to verify that unauthenticated requests to A2A endpoints are rejected. 5. Update the cookbook documentation to include authentication configuration.
最佳实践
First, reproduce the issue with a minimal server and unauthenticated client calls. Then read the authentication and A2A code paths. Make minimal, focused changes. Ensure tests cover both authenticated and unauthenticated scenarios. Update any relevant documentation.
No comments or activity on the issue; no evidence of maintainer engagement or ongoing work.
我现在先做什么
Create a reproducer script that instantiates an Agent with PythonTools, mocks the model to request a run_python_code call, and verifies that the tool executes immediately (e.g., by checking a side effect like writing a file).
问题描述
The agent orchestration loop in agno executes every tool call requested by the model immediately, because the default confirmation gate (requires_confirmation) is off and there is no global policy to pause or approve tool execution. This allows an attacker who can influence the model's output (e.g., via prompt injection) to trigger arbitrary code execution through tools like PythonTools, which ultimately calls exec() on user‑supplied code.
工作内容
Modify the tool definition defaults to make requires_confirmation opt‑out for dangerous tools, or add a global safe‑mode flag that forces a confirmation pause unless explicitly disabled. Update libs/agno/agno/models/base.py run_function_calls to respect the new default, adjust libs/agno/agno/tools/function.py and libs/agno/agno/tools/toolkit.py default values, add unit tests that verify a tool call is paused when no confirmation is set, and ensure existing opt‑in behavior remains unchanged. Update documentation to reflect the new security‑by‑default behavior.
最佳实践
First reproduce the issue with a minimal script that mocks a model requesting a PythonTools call and confirms the code runs without pause. Then locate the exact default values mentioned in the issue, change them to a safe default (e.g., requires_confirmation=True for code‑executing tools) or introduce a configuration flag. Run the existing test suite to ensure no regression, add new tests for the confirmation pause, and manually test both the patched and opt‑out paths. Finally, update any relevant README or security docs.
Commenter @shoemoney confirmed the code claims against `main`. Two related PRs (#8468, #9472) targeting the same file are open but stalled, showing maintainer awareness but no resolution yet.
我现在先做什么
Clone the repo, install the package, and run the provided Python snippet to verify that the marker file is written outside the base_dir. Then inspect `libs/agno/agno/tools/coding.py` around lines 253-289 to see the flag‑skipping logic.
问题描述
The `CodingTools.run_shell()` method fails to properly validate command arguments when `restrict_to_base_dir=True`. Its `_check_command()` function unconditionally skips any token that starts with '-', allowing an allowed interpreter like `python` combined with a flag such as `-c` to bypass the sandbox check. After the check passes, the raw command string is executed via `subprocess.run(..., shell=True)`, enabling an attacker to write or execute arbitrary files outside the intended base directory.
工作内容
1. Reproduce the PoC locally to confirm the bypass. 2. Examine `_check_command()` in `libs/agno/agno/tools/coding.py` to understand the flag‑skipping logic. 3. Design a fix that either validates arguments after flag parsing or rejects dangerous flag/interpreter combinations while preserving legitimate usage. 4. Update unit tests to cover the new validation and ensure existing functionality remains intact. 5. Run the full test suite and verify no regressions. 6. Prepare a PR with clear description of the security fix.
最佳实践
First reproduce the issue to confirm the vulnerability. Read the surrounding code to understand the intended sandbox behavior. Make the smallest possible change that blocks the injection vector (e.g., treat flag tokens as part of the command for path checks or implement an allowlist of safe flags). Add both positive and negative test cases. Keep the change backward‑compatible for legitimate use cases. Communicate the fix rationale in the PR and reference the related stalled PRs (#8468, #9472).
No comments or recent activity on the issue; no explicit signal from maintainers or community.
我现在先做什么
Run a request to /api/v1/agui with a client tool that produces HTML and log the response events to verify that no intermediate events are emitted; then search the codebase for 'agui' and streaming-related functions (e.g., 'stream', 'TEXT_MESSAGE_CONTENT') to locate the entry point.
问题描述
The /api/v1/agui endpoint streams text and reasoning content but does not stream intermediate output when client tools are used to generate HTML. As a result, the frontend receives no events while the model is executing tools, causing a noticeable delay and poor user experience.
工作内容
Locate the agui endpoint handler and the tool execution pipeline; identify where streaming is currently applied (TEXT_MESSAGE_CONTENT, reasoning_content); modify the tool call logic to yield partial HTML or intermediate states as streaming events (e.g., via async generator or SSE); ensure the frontend can consume these events; add unit/integration tests to verify streaming behavior for HTML generation with tool calls; update any relevant documentation.
最佳实践
First reproduce the issue by calling the agui endpoint with a tool that generates HTML and confirm lack of intermediate events; trace the code path from request to tool execution to response; implement minimal changes that inject streaming events without breaking existing text streaming; run existing test suite to ensure no regressions; add a test that asserts events are emitted during tool execution; keep changes backward compatible and follow the project's async patterns.
Maintainer @shoemoney commented, referencing the two existing PRs and confirming the problem exists on main, indicating awareness and ongoing work.
我现在先做什么
Review the open PRs #8418 and #9540 to understand their proposed changes, then clone the repo and run AgentOS locally to verify that reasoning events are missing in the stream before applying the fix.
问题描述
When an agent using OpenAIResponses is served via AgentOS, the streaming response includes reasoning token usage but omits the actual reasoning events (start, content deltas, completion). Locally, both agent.arun and agent.aprint_response correctly stream reasoning content, indicating the model generates it but AgentOS drops it before sending to the client.
工作内容
Examine AgentOS streaming endpoints to see where model response chunks are transformed; update libs/agno/agno/agent/_response.py's handle_model_response_chunk to emit reasoning start, content, and complete events alongside output content; add unit/integration tests that verify reasoning events appear in the AgentOS stream; ensure existing tests still pass.
最佳实践
Reproduce the issue locally by running AgentOS dev server and connecting a client; add logging to confirm reasoning chunks are received from the model; follow the existing pattern for creating events (e.g., create_reasoning_start_event); keep changes minimal and aligned with current event emission; run the test suite and update any documentation if the streaming contract changes.
Comments include a request for more precise reproduction details from a community member and a code snippet that would raise a SyntaxError; no maintainer has yet responded or acknowledged the issue.
我现在先做什么
Set up a test script that loads a page with a large DOM (e.g., generate 50k+ divs) and runs a simple agent task for 10 steps; measure step latency and DOM serialization time using the existing Agent/Browser classes to confirm the baseline slowdown.
问题描述
During long-running browser automation tasks, performance degrades because the agent repeatedly serializes the entire DOM, accumulates an ever-growing LLM message history, and fetches browser state on every step even when unchanged. This leads to increasing latency, higher token usage, and excessive memory allocation, negatively impacting scalability for large sites or extended workflows.
工作内容
Profile the current agent loop to locate DOM extraction/serialization, message history building, and browser state query code; implement incremental DOM diffing via mutation observers or cached snapshots; add a bounded message history with summarization; introduce a simple browser state cache invalidated on navigation/input/mutation; reduce temporary object allocations using generators or object reuse; add benchmarks and tests to verify performance improvements.
最佳实践
First reproduce the slowdown with a controllable large DOM (e.g., a page with many elements) and a multi-step agent task; use profiling tools (cProfile, memory_profiler) to quantify bottlenecks; make minimal, focused changes behind feature flags if needed; ensure existing tests pass and add performance regression tests; discuss approach with maintainers before large refactors.
Multiple contributors have expressed interest (@Jokasa7, @ashwinmridul) and have already implemented a partial fix on main and a backport to v1.x (#2779). No conflicting work is evident; the community is actively discussing the scope.
我现在先做什么
Open the SDK, find the replayEvents function (or where streams are created for Last-Event-ID replay), inspect how _requestToStreamMapping is updated, and add a conditional that calls the existing stream close/cleanup when the mapping for that stream becomes empty.
问题描述
When a client resumes an HTTP stream using a Last-Event-ID, the replayed request stream remains open indefinitely even after all correlated responses have been delivered or stored. This prevents the polling loop from converging and can cause race conditions where responses are missed, duplicated, or never terminate after closeSSEStream polling.
工作内容
Locate the replayEvents handler and stream management code in the TypeScript SDK. Add logic to close/dispose of a replayed request stream when the _requestToStreamMapping (or equivalent) shows zero in‑flight requests for that stream. Ensure the close follows the same cleanup path used elsewhere (e.g., stream cancel callbacks). Write deterministic unit/integration tests covering the replay/store visibility race, successor dedup transfer, post‑poll completion, and the close‑after‑replay scenario for both main and v1.x branches.
最佳实践
First reproduce the issue by adding a test that sends a request, replays it with Last-Event-ID, and verifies the stream is closed after all responses are received. Keep changes minimal: only invoke the existing stream‑close function when the request mapping becomes empty. Follow the project's testing and linting conventions, run the full test suite, and ensure no regression in existing stream handling. Coordinate with maintainers if any API‑surface concerns arise.
No comments on the issue; the only activity is the author’s RFC and the linked PR. No explicit maintainer feedback or opposition is visible.
我现在先做什么
Open PR #5332 to review the current code changes, then run the repository locally and verify that the export API and UI are not yet present. After confirming the baseline, start by implementing the backend export manifest endpoint with revision checking.
问题描述
DeerFlow allows users to install .skill packages but provides no way to export a saved custom skill from the UI. After editing a skill, the original uploaded package becomes stale, forcing users to manually locate files on disk and re‑package them for backup, transfer, or sharing. The request is to add an export feature that creates a portable .skill ZIP archive of the current saved skill, with a preview showing contents, size, requirements, and revision safety checks.
工作内容
Implement the export API endpoints (GET /api/skills/custom/{name}/export-manifest and GET /api/skills/custom/{name}/export?expected_revision=…) with revision conflict handling, size/entry limits, and thread‑safe ZIP generation under the skill mutation lock. Add a UI dialog in Settings → Skills → Custom with Export button, preview pane (filename, file/directory counts, size, paginated paths, declared requirements, blockers), download button that shows revision conflict if the skill changed after preview, and appropriate cancellation/dismissal behavior. Write unit and integration tests for the API, UI tests for the dialog, and update documentation. Ensure the generated ZIP preserves executable flags, normalizes permissions, and respects filesystem boundaries (no symlinks, hardlinks, special files, nested skill roots).
最佳实践
First examine the existing PR #5332 to understand the current implementation baseline. Reproduce the issue locally by creating a custom skill, editing it, and verifying that no export option exists. Implement the backend endpoints first, adding revision checks and locking, then the frontend preview/download dialog. Keep changes small and focused: reuse existing skill storage and ZIP utilities where possible. Add tests that simulate concurrent skill updates to confirm 409 conflict on stale revision. Run the test suite and ensure no regressions. Follow the project's coding style and update any relevant README or API docs. Finally, request review from maintainers via the existing PR.
No comments or recent activity from maintainers on this issue; there is no explicit signal of work in progress.
我现在先做什么
Locate `ReadBeforeWriteMiddleware` (likely in `agents/middlewares/read_before_write_middleware.py`) and examine how it constructs the error `ToolMessage` for blocked writes; then find the model‑bound request entry point (`wrap_model_call` or similar) to see where to intercept and modify the `AIMessage` before it reaches the LLM.
问题描述
The payloads of write_file and str_replace tool calls (content, old_str, new_str) remain in the model‑bound AIMessage even when the call is blocked by the read‑before‑write gate or after a successful write. This wastes tokens because the same large arguments are repeatedly fed to the model and are never removed by existing middleware, which only truncates ToolMessage output or summaries.
工作内容
Implement Step 1 of the proposal: (1) modify ReadBeforeWriteMiddleware to attach a `deerflow_write_block` marker to the error ToolMessage it returns for blocked calls; (2) create a shared helper in `agents/middlewares/tool_call_args.py` that rewrites all surfaces of an AIMessage (structured tool_calls, additional_kwargs["tool_calls"], Anthropic tool_use blocks, tool_call_chunks) replacing the payload fields with a short deterministic placeholder when the marker is present; (3) hook this helper into the model‑bound request path (e.g., in `wrap_model_call` or a dedicated middleware) so the placeholder is used only for the LLM context while the original arguments stay in graph state, tool receipts, checkpoints, and the journal; (4) add two config options (`read_before_write.elide_blocked_payloads` default true, `read_before_write.elide_min_chars` default 2000); (5) write unit tests verifying placeholder insertion, preservation of original args for hashing/checkpointing, and that successful writes are unaffected (step 2 deferred); (6) update any relevant documentation.
最佳实践
First reproduce the issue by attempting a write_file on an unread file and inspecting the AIMessage that reaches the model to confirm the full payload is present. Follow the existing middleware pattern: keep changes limited to the model‑bound request, avoid altering ToolMessage or state. Ensure the helper updates all four AIMessage surfaces consistently so strict providers cannot see mismatches. Test multi-surface rewrite, config flag behavior, and that tool call hashing and checkpoint snapshots retain the original arguments. Run the full test suite to guard against regressions.
No comments or recent activity from maintainers; no evidence of discussion or ongoing work on this issue.
我现在先做什么
Clone the agno repository, run the reproduction command to verify that curl http://127.0.0.1:7777/info returns {"auth_mode":"none"}, then inspect libs/agno/agno/os/auth.py and libs/agno/agno/os/app.py to locate the auth gate and middleware registration logic.
问题描述
AgentOS ships with authentication disabled by default (authorization=False and os_security_key=None). This causes the AuthMiddleware to never be installed and the per‑route dependency to always return True, exposing all REST endpoints (configuration, sessions, agent runs) to unauthenticated users. An attacker can read/modify agent configurations, session histories, and execute arbitrary agent runs, leading to critical confidentiality, integrity, and availability impacts.
工作内容
Locate auth.py (lines 238-239) and app.py (lines 1235-1240) to understand the auth gate logic; change the default values (e.g., set authorization=True or require os_security_key) so that auth_configured evaluates to True unless explicitly disabled; add unit tests that verify AuthMiddleware is installed when no override is given and that /info returns auth_mode not equal to 'none'; update any relevant documentation or example code to reflect the new secure default.
最佳实践
First reproduce the issue using the provided commands to confirm auth_mode:none; make the smallest possible change to the default configuration; write tests that assert the middleware is present and that endpoints now require authentication (or at least report a non‑none auth mode); run the full test suite to ensure no regressions; if the change is backward‑incompatible, document the required opt‑out mechanism and update examples/cookbook accordingly.
No comments or recent activity on the issue; no evidence of maintainer response or ongoing work.
我现在先做什么
Clone the repo, install agno==2.7.3, run the supplied PoC script to verify that the chr‑encoded payload executes arbitrary code (e.g., creates a file outside base_dir).
问题描述
The CodingTools.run_shell method uses an incomplete denylist of shell operators and then passes the command string to subprocess.run with shell=True. An attacker can bypass the denylist by encoding dangerous characters with chr() (e.g., python -c "exec(chr(...)+chr(...))") which contains no denylisted substrings, allowing arbitrary command execution on the host with the agno process privileges. This affects any application that accepts untrusted input for the command argument, including prompt‑injection scenarios.
工作内容
1. Reproduce the PoC to confirm the bypass. 2. Examine agno/tools/coding.py: _check_command, run_shell, and the DEFAULT_ALLOWED_COMMANDS/denylist logic. 3. Replace the flawed denylist/substring check with a proper validation approach: either (a) switch to an allowlist of safe commands and disallow shell=True, using subprocess.run with a list of args, or (b) implement robust shell‑metacharacter detection (including encoded forms) before allowing shell=True. 4. Update unit tests to cover the bypass attempts and ensure existing legitimate uses still work. 5. Update documentation if the default behavior changes (e.g., note that restricted mode now safely blocks chr‑encoded payloads).
最佳实践
First, reproduce the issue locally using the provided script. Then read the coding.py file to understand the current validation flow and where the command is passed to subprocess.run. Implement the smallest change that eliminates shell=True or properly validates the command string—preferably using an allowlist and avoiding shell=True altogether. Write tests that attempt various obfuscations (chr, hex, unicode, base64) and verify they are rejected. Run the existing test suite to ensure no regression. Finally, open a PR with a clear description of the security fix, referencing CWE‑78 and the issue number.
Multiple commenters have expressed interest in working on the issue and have shared analysis and draft PRs (#2584 for main, #2747 for v1.x). No maintainer has explicitly blocked the work, and there is active discussion about the scope and approach.
我现在先做什么
Open the v1.x file `src/server/webStandardStreamableHttp.ts` and locate the JSON-response branch in the `send()` method around lines 1242‑1261. Verify that after `resolveJson` is called there is no subsequent call to `stream.cleanup()`. Then look at the `cleanup()` method to see if it settles any pending `resolveJson` promise. This will confirm the exact missing pieces to fix.
问题描述
When `enableJsonResponse: true` is used on a stateful Streamable HTTP transport, the JSON-response path in `send()` resolves the pending response via `resolveJson` but never calls the stream mapping's `cleanup`. This leaves a `_streamMapping` entry leaked until the transport is closed. Conversely, during transport shutdown (`close()`), the mapping's `cleanup` removes the entry without settling the pending `Promise<Response>`, causing in‑flight JSON-mode POST requests to hang. The bug affects both the main branch and the v1.x line, leading to resource leaks and hanging HTTP requests.
工作内容
1. Locate the Streamable HTTP implementation files: `packages/server/src/server/streamableHttp.ts` (main) and `src/server/webStandardStreamableHttp.ts` (v1.x). 2. Examine the JSON-response branch of `send()` to ensure it calls `stream.cleanup()` after `resolveJson`. 3. Examine the `cleanup()` method to ensure it settles any pending `resolveJson` promise (e.g., with a 503 error) before deleting the mapping. 4. Add or adjust unit/integration tests that verify: a) after a successful JSON-mode POST, `_streamMapping` size returns to zero; b) closing the transport during an in-flight JSON-mode POST results in the request receiving a 503 JSON‑RPC error and no hanging connection. 5. Run the existing test suite to confirm no regressions. 6. Submit a PR for v1.x (and optionally a backport to main if needed).
最佳实践
First reproduce the leak and hang locally using a minimal test that enables `enableJsonResponse`. Then study the fix already applied to main (commit #2286) to understand the exact pattern of calling `cleanup` after `resolveJson`. Apply the smallest possible change to v1.x that mirrors this pattern and also modifies `cleanup` to settle pending promises. Write regression tests before making changes to guarantee they catch the issue. Keep the change focused on the two methods; avoid refactoring unrelated code. Communicate intent in the PR description, referencing the original issue and any related draft PRs.
The SQLDatabase class assumes a single-catalog connection when initializing its SQLAlchemy inspector and reflecting metadata. In Trino, which supports multiple catalogs, this causes failures because the inspector is bound to only one catalog and schema names must be qualified as 'catalog.schema'. As a result, users cannot perform unified semantic table retrieval across all Trino catalogs using LlamaIndex's SQLDatabase/SQLTableNodeMapping.
No evidence of maintainer or community discussion; the issue has zero comments and no linked PRs.
我现在先做什么
Locate the JWT authentication middleware in the proxy code (likely where 401 responses are generated for /v1/* routes) and examine how enable_jwt_auth and litellm_jwtauth.issuers are accessed. Then add a quick prototype of the /.well-known/oauth-protected-resource endpoint returning a hard‑coded JSON to verify routing works.
问题描述
When enable_jwt_auth is enabled, LiteLLM proxy acts as an OAuth 2.0 resource server but does not disclose which identity provider it trusts. Native clients (CLIs, IDE plugins, etc.) must manually maintain a mapping from the proxy URL to the IdP issuer and client ID for each environment, leading to drift and duplicated effort. The missing discovery mechanism forces every new client to re-implement this table.
工作内容
Add a new route at /.well-known/oauth-protected-resource that returns JSON derived from existing JWT auth configuration (resource = PROXY_BASE_URL, authorization_servers = litellm_jwtauth.issuers[].issuer, bearer_methods_supported = ['header'], scopes_supported = ['openid']). Modify the JWT authentication middleware to include a WWW-Authenticate: Bearer resource_metadata="<proxy>/.well-known/oauth-protected-resource" header on 401 responses (and add error="invalid_token" when a token is present but invalid). Optionally support per‑issuer public client metadata configuration. Write unit tests for the endpoint and header injection, and update documentation to reflect the new discovery flow.
最佳实践
Reuse the existing litellm_jwtauth config structures to avoid adding new required fields. Follow RFC 9728 exactly for the JSON shape and header format. Ensure the change is backward‑compatible: when enable_jwt_auth is off, the endpoint should return 404 or not be registered. Test both successful and failed authentication paths to verify the header appears correctly. Add a simple integration test that proxies a request to /v1/models without a token and checks the WWW‑Authenticate header. Update the README or a dedicated docs page with an example of how a native client can use the discovery document.
No comments or maintainer activity on the issue; no evidence of community discussion or ongoing work.
我现在先做什么
Clone the repo, run the sample agent locally with logging to capture the userId in the MSAL token cache and inspect the generated consent link; confirm that the link contains the managed identity’s object ID instead of the caller’s.
问题描述
When a hosted .NET agent uses a pre‑registered toolbox with a per‑user OAuth MCP connection, the consent link generated in the oauth_consent_request is tied to the container's system‑assigned managed identity instead of the calling user. This causes the sign‑in flow to fail with 'Code <id> not found' because the OAuth proxy creates the consent session for the managed identity, while the user’s token is never associated with the consent. The bug blocks any user‑specific toolbox usage from hosted agents, forcing work‑arounds that bypass the intended consent flow.
工作内容
Locate the consent‑link generation code in the Foundry toolbox proxy (likely in FoundryToolboxBearerTokenHandler or AgentFrameworkResponseHandler). Verify that the user context (userId) from the inbound request is not being forwarded when building the OAuth consent session. Modify the relevant handler to propagate the caller’s user identity (or the x‑agent‑foundry‑call‑id that maps to it) so the proxy creates the consent session for the correct principal. Add unit/integration tests that simulate a hosted agent call with a user token and assert that the resulting consent link contains the user’s object ID. Ensure existing tests still pass and update the skipped ToolboxOAuthConsentHostedAgentTests to validate successful consent completion.
最佳实践
First reproduce the issue using the provided code sample in a local dev environment with logging to capture the userId in the token cache and the consent link. Keep changes minimal: only adjust the flow that attaches user context to the OAuth session. Run the existing test suite to avoid regressions, and add a test that covers the end‑to‑end consent completion scenario. Follow the repo’s PR template, reference the issue number, and clearly describe the fix and test coverage in the PR description.
Only the automated triage notice from the mastra bot is present; no maintainer comments or activity indicate ongoing work.
我现在先做什么
Open the source file where `createDurableAgent` is defined (likely in `packages/core/src/agents/durable-agent.ts` or similar) and examine how the `durable` options are passed to `createDurableAgenticWorkflow`.
问题描述
The `createDurableAgent` API does not expose the `shouldPersistSnapshot` option that controls whether workflow snapshots are written to storage for each status. Currently, durable agents always persist snapshots for `pending`, `paused`, `suspended`, and `running` states, causing unnecessary storage writes and latency when auto‑recovery is disabled. Users need a way to opt out of persisting `running` snapshots while retaining the ability to resume from `suspended` or HITL states.
工作内容
Locate the `createDurableAgent` implementation and its internal call to `createDurableAgenticWorkflow`. Add an optional `shouldPersistSnapshot` (or `persistRunningSnapshots`) field to the durable agent options type, forward it to the workflow creation call, and update the default behavior to preserve existing semantics. Add TypeScript definitions, update any relevant tests, and document the new option in the Durable Agent reference.
最佳实践
First reproduce the current behavior by creating a durable agent and observing snapshot writes in storage (e.g., Postgres). Then implement the change with minimal code: add the option, pass it through, and ensure the default mirrors the existing `running` persistence. Write a unit test that verifies snapshot persistence is skipped for `running` when the flag is false, while still persisting for `pending`, `paused`, `suspended`. Finally, run the existing test suite to ensure no regression.
Only a bot comment indicating the issue is waiting for maintainer triage/approval; no maintainer feedback or ongoing work visible.
我现在先做什么
Open packages/mcp/src/server/server.ts and locate the request handler for tools/call (around line 1145). Add a getOrCreateSpan({ type: MCP_SERVER_REQUEST, ... }) call at the very beginning of the handler, store the span, and ensure tracingContext is passed to the wrapped tool execution and finally ended after the handler returns.
问题描述
Currently, requests handled by a Mastra MCPServer are not represented as distinct spans in tracing. The only span generated for an inbound tools/call is a TOOL_CALL span, which is conceptually an outbound operation and lacks context about the server-side request. This makes it impossible to distinguish a client calling the MCP server from a tool invoked via Studio, hides request-level work (validation, FGA, result shaping), leaves other MCP methods untraced, and prevents proper nesting of agent/workflow traces under a request root.
工作内容
Add a new span type MCP_SERVER_REQUEST with its attribute interface; modify the MCPServer request handling logic (packages/mcp/src/server/server.ts) to create a root span of this type at the start of each request (tools/call, tools/list, resources/*, prompts/*, logging/setLevel, completion) and propagate the tracingContext to downstream calls; ensure the span ends after request processing; update observability utilities to map MCP_SERVER_REQUEST to SpanKind.SERVER; add unit/tests to verify span creation and attributes; optionally update documentation.
最佳实践
First reproduce the missing trace by running an MCPServer and making a request, then examine existing trace code to follow the pattern used for other span types (e.g., TOOL_CALL, AGENT_RUN). Keep changes minimal: add the span creation/wrapping, avoid duplicating logic. Write tests that assert the new span appears with correct attributes and that existing TOOL_CALL spans remain unchanged. Verify that the OTEL exporter treats the new span as a server span.
Only the automated triage bot comment is present; no maintainer or community discussion has occurred yet.
我现在先做什么
Locate packages/mcp/src/client/client.ts (lines 1465-1485) and packages/core/src/observability/utils.ts to confirm the current callTool implementation and tracingOptions usage, then write a small test to verify that traceparent is not currently added to _meta.
问题描述
When a Mastra agent invokes an MCP tool, the resulting observability trace is split: the caller creates an MCP_TOOL_CALL span while the MCP server starts a completely separate root trace. This breaks distributed tracing across the process boundary, preventing end‑to‑end visibility for both Mastra‑to‑Mastra and cross‑tool (e.g., Claude Desktop, Cursor) interactions. The MCP specification already defines traceparent/tracestate propagation via the _meta envelope and HTTP headers, but Mastra’s MCPClient and MCPServer do not read or write these fields.
工作内容
1. Move formatTraceparent/parseTraceparent to a shared location (e.g., @mastra/core/observability) to avoid dependency cycles.
2. Update MCPClient.callTool to inject traceparent (and tracestate if present) into the _meta envelope, respecting any user‑provided values.
3. Update MCPServer request handling to extract traceparent from (a) ctx.mcpReq.envelope[TRACEPARENT_META_KEY], (b) ctx.mcpReq._meta.traceparent, (c) HTTP traceparent header, then derive traceId/parentSpanId and pass them via tracingOptions when creating the root span.
4. Ensure sampled flag is honoured (configurable, default follow caller).
5. Add unit tests for outbound and inbound propagation, and integration test verifying a single trace spans host → Mastra server → model calls when @mastra/otel-bridge is used.
6. Update documentation/examples to show trace context propagation.
最佳实践
Reproduce the issue by running a minimal agent that calls an MCP tool and inspecting the generated spans in the OTel exporter or console. Make the smallest possible changes, reusing existing tracing utilities. Do not override user‑supplied traceparent/tracestate. Verify that legacy clients that manually set _meta still work. Add tests that assert the presence of traceparent in _meta and that the server root span has the correct parentSpanId. Keep the change backward compatible and run the existing test suite to ensure no regressions.
Only the triage bot comment is present; there is no maintainer response or community discussion yet.
我现在先做什么
Clone the repository, run the example workflow from the issue, log the start/end times of each step to confirm the unnecessary wait, then locate the file that processes `.parallel()` layers to understand where the barrier logic resides.
问题描述
The current `.parallel()` implementation treats the entire preceding layer as a dependency barrier for every join step, causing joins to wait for steps they do not actually consume. This leads to incorrect dependency visualization in Studio and unnecessary idle time, as illustrated by a workflow where `stepA3` feeds two joins but the joins are held back by unrelated steps like `stepA5`. Users must maintain external dependency maps to reflect true data flow, which defeats the purpose of the visual workflow editor.
工作内容
Modify the workflow composition API to allow per-step dependency declarations inside a `.parallel()` block (e.g., an options object mapping step IDs to their parent IDs). Update the workflow engine’s parallel layer execution logic to track readiness per step instead of waiting for the whole layer. Add unit tests that verify joins start only after their declared parents complete and that Studio receives correct dependency edges. Ensure backward compatibility with existing `.parallel()` usage.
最佳实践
First reproduce the issue locally using the provided TypeScript snippet and measure join start times. Locate the parallel layer handling code (likely in `src/workflow/parallel.ts` or similar). Introduce a minimal, opt‑in API for per‑step dependencies without breaking existing calls. Write tests covering both the new API and existing behavior. After implementation, run the example to confirm idle time is eliminated and verify that the dependency graph passed to Studio reflects true edges.
Only the issue author has commented, linking their own PR in dify-sandbox (#290). No maintainer feedback or additional discussion is visible.
我现在先做什么
Clone the dify-sandbox repository, search for 'tmp' or '/var/sandbox/sandbox-python' to locate where Python files are written, and examine the execution flow to see where cleanup should happen.
问题描述
The Dify Cloud sandbox runs out of disk space when executing Python Code nodes, causing 'no space left on device' errors. During a spike on Sept 14 2026, over 6,500 workflow runs failed, leading to a full hour of service disruption. The root cause is insufficient cleanup of temporary sandbox files, which exhausts the device storage.
工作内容
Investigate the sandbox implementation (likely in dify-sandbox repo) to locate where temporary Python files are created and ensure they are deleted after execution. Add robust cleanup logic (e.g., using try/finally or temporary directory with auto‑remove). Verify that disk usage stays bounded under load, add unit/integration tests, and update any relevant documentation.
最佳实践
First reproduce the issue by running a workflow with a Python node in a self‑hosted sandbox or using the provided run IDs to inspect logs. Read the sandbox entrypoint and file‑handling code. Implement a minimal change that guarantees removal of /var/sandbox/sandbox-python/tmp/* after each run, preferably using os.tempfile.TemporaryDirectory. Add tests that simulate many runs and assert no leftover files. Keep changes small, follow existing code style, and open a PR for review.
The issue has only bot comments: one awaiting maintainer triage/approval, another labeling it as low severity and noting that the data‑exposure half is already shipped. No explicit maintainer endorsement or opposition is visible.
我现在先做什么
Search the repository for the delegation handler (e.g., files containing `agents:` or `delegate`) and examine how the sub-agent's `generate` result is transformed into the delegation output. Identify the exact location where the result object is constructed.
问题描述
When using the `agents:` delegation feature, the supervisor only receives the synthesized text output from a sub-agent, losing access to the sub-agent's full generation result such as token `usage`, `finishReason`, per-step `steps`, and `toolCalls`. Teams need this data for cost accounting, step-budget enforcement, and verbatim relay of the sub-agent's reply, forcing them to bypass delegation and reimplement the call manually.
工作内容
Locate the delegation implementation (likely in the agents delegation module), modify the result payload to include the sub-agent's `usage`, `finishReason`, `steps`, and `toolCalls` fields, add an optional `verbatim` relay mode that forwards the sub-agent's text unchanged, update TypeScript types, add unit tests to verify the new fields are present, and update documentation/examples.
最佳实践
First, reproduce the issue by calling a sub-agent via delegation and confirming that the result lacks usage/finishReason. Read the code to see where the delegation result is assembled. Make minimal, backward‑compatible changes: extend the result interface and conditionally attach the sub-agent's meta‑data. Write tests that assert the presence of each new field under normal delegation and that the verbatim mode preserves the exact sub-agent text. Run existing tests to ensure no regression, then update any relevant README or docstrings.
No explicit maintainer feedback yet; the issue has only auto‑triaged and needs‑approval labels plus a bot comment awaiting triage, indicating maintainers have not signaled acceptance or rejection.
我现在先做什么
Create a minimal reproduction: add a tool with an async refine that returns false, run the tool with requireApproval true, and confirm that the approval prompt appears before the validation error is seen. This will validate the current behavior and serve as a baseline for the fix.
问题描述
Currently, Mastra validates tool input schemas synchronously before showing the approval prompt, so any validation that requires asynchronous operations (e.g., calling an external API to check permissions) cannot run until after the user has already been asked to approve the tool call. This leads to a poor user experience where users may approve a call only to discover it would fail async validation and then decline it, wasting their time and causing unnecessary approval flows.
工作内容
Modify the validation logic in packages/core/src/tools/tool.ts to detect asynchronous refine/superrefine hooks in the Zod inputSchema, await their execution before evaluating requireApproval or the native approval gate, and propagate validation errors so the approval prompt is never shown for invalid input. Add unit tests covering sync and async refinements, ensure backward compatibility, and update any relevant documentation or type definitions.
最佳实践
First reproduce the issue by adding a tool with an async refine that fails and verify the approval prompt still appears. Then locate the validation call in Tool.execute, add a check for async refinements (e.g., by inspecting schema._def.refines or using Zod's superRefine async detection), await validation, and handle errors. Keep changes minimal, preserve existing synchronous behavior, add comprehensive tests, and run the full test suite to ensure no regression.
The issue has only received automated triage notices and a community triage table from @TheIsrael1 indicating it is a feature request awaiting approval. No maintainer has commented or signaled work in progress.
我现在先做什么
Open the thread-stream-runtime.ts file, locate the #withBroadcastStream method (around lines 624-670), and examine how the `parts` array is used. Then run the provided reproduction script to verify memory growth.
问题描述
The AgentThreadStreamRuntime.#withBroadcastStream method stores every sanitized stream part in an unbounded local array (`parts`) for replay. During long-running agent executions this array grows with the number and size of emitted chunks, consuming memory even when there are no active subscribers. The issue requests adding a configurable part/byte budget and eviction policy to bound this replay buffer.
工作内容
Locate thread-stream-runtime.ts and examine #withBroadcastStream and related subscriber logic. Replace the unbounded `parts` array with a bounded structure (e.g., a ring buffer or array with eviction when exceeding maxParts/maxBytes). Add configuration options (maxParts, maxBytes) to the runtime or stream options, adjust subscriber cursor handling to work with the bounded buffer, and write unit tests verifying that old parts are evicted and that replay still works for active subscribers. Update TypeScript definitions and any relevant documentation.
最佳实践
First reproduce the memory growth using the provided isolated script to confirm baseline behavior. Read the existing subscriber cursor logic to ensure eviction does not break in‑flight reads. Implement the bounded buffer as a private class or utility, keeping changes minimal and encapsulated. Add tests for edge cases: zero-length buffer, buffer exactly full, and buffer overflow while subscribers are reading. Run the existing test suite to ensure no regressions. If configuration is added, expose it via the AgentThreadStreamRuntime constructor or options and update JSDoc. Finally, open a draft PR linking to the issue and request maintainer feedback.
Only two comments: a triage bot notice and a maintainer (TylerBarnes) stating the current behavior is intentional but that a `--new` flag or config setting could be added. No further discussion or争议, indicating the maintainer is receptive to a configurable solution but prefers to keep the default as‑is.
我现在先做什么
Open the repository and locate the file that defines the `mastracode` CLI command (e.g., `src/cli/mastracode.ts`). Examine the startup routine to see where the thread restoration is triggered and note any existing argument parsing for `--continue` or `--thread`.
问题描述
The `mastracode` CLI automatically restores the most recent thread when launched, even in a fresh terminal session. This implicit resumption can leak stale conversation context into unrelated work, forcing users to manually discard or ignore previous threads each time they start a new task. Users expect a plain launch to begin with a clean slate, with explicit opt‑in mechanisms for resuming prior context.
工作内容
Locate the CLI entry point for the `mastracode` command (likely in `src/cli/mastracode.ts` or similar). Identify where thread restoration is invoked on startup. Modify the startup logic to default to creating a new blank thread unless a `--continue`, `--thread <id>`, or a configurable `session.startupBehavior` flag indicates resumption. Add a `--new` flag (or rely on the default) and implement a persistent setting in the user config (e.g., `mastra.config.json`). Update any relevant tests to cover new/default/resume behaviors, and adjust documentation/settings reference to describe the new options.
最佳实践
First reproduce the current behavior by running `mastracode` in a fresh terminal and confirming that the last thread is restored. Then search the codebase for thread restoration logic (look for calls to a persistence layer or session store). Make minimal changes: introduce a flag or config check before the restoration call, preserving existing `--continue` and `--thread` semantics. Write unit tests for the CLI argument parsing and integration tests that launch the TUI in a test environment to verify thread creation vs. resumption. Follow the project's existing patterns for configuration (e.g., how other settings are loaded) and ensure the change is backward compatible. Update the README or settings docs to reflect the new options.
Only the automated triage notice comment from @dane-ai-mastra[bot] is present; no maintainer or community feedback beyond that.
我现在先做什么
Search the codebase for 'askUserTool' and examine how tool suspension/resume is handled (look for resumeSchema and context properties). Then draft a minimal implementation of context.askUser that reuses the existing UI rendering path and binds it to the current tool's continuation.
问题描述
Currently, a tool that needs to ask the user must either use the built-in askUserTool (which creates a separate tool call and loses the tool's own continuation) or suspend with a custom resumeSchema (which keeps the tool's continuation but provides no UI, forcing the model to reconstruct answers from prose). This forces developers to move mid-tool questions out of the tool, reducing determinism. The request is to add a composable context.askUser() inside a tool's execute that suspends the tool, shows the same built-in UI, and resumes the original tool with the answer as its resumeData.
工作内容
Locate the implementation of askUserTool and the tool execution/suspension mechanism in @mastra/core. Add a new method askUser to the ToolContext class that internally triggers the same UI rendering path as askUserTool but suspends the calling tool instead of creating a separate tool call. Ensure the resumeData is correctly typed and passed back to the original tool's continuation. Update TypeScript definitions, add unit tests for the new behavior, and run existing test suite to verify no regressions. Update documentation if needed.
最佳实践
Read the core tool execution code to understand how suspension and resumption work (look for resumeSchema handling). Make the smallest possible change: reuse the existing UI rendering code path rather than duplicating it. Write a test that verifies a tool calling context.askUser suspends, shows the UI, and resumes with the provided schema data. Run lint and type checks. Keep changes backward compatible.
Reproduce the bug by calling POST /key/update with a valid project_id on an existing key and verifying via GET /key/info that project_id remains null; then locate the key update endpoint in the proxy source (e.g., proxy/src/routes/key.py) to see how team_id/organization_id are handled.
问题描述
The /key/update endpoint accepts a project_id parameter but silently ignores it, leaving the key's project unchanged. This prevents administrators from assigning existing virtual keys to newly created projects without rotating the key, which forces credential redeployment and blocks project deletion due to orphaned key associations.
工作内容
Locate the proxy route handler for POST /key/update, examine how team_id and organization_id are processed, add analogous logic for project_id including validation against the project store (mirroring /key/generate behavior), update the underlying data model/persistence layer, and add unit/integration tests for both successful assignment and error cases (non‑existent project).
最佳实践
First reproduce the bug using the exact curl/HTTP steps from the issue. Follow the existing pattern for team_id/organization_id handling to keep the change minimal. Write tests that assert a 200 response with the correct project_id in the returned key object and a 404 error when the project does not exist. Run the full test suite to ensure no regressions, and keep the PR focused on this fix only.
当工具在执行过程中遇到临时性错误(如超时、速率限制或网络波动)时,当前实现会立即将错误向上抛出,导致代理任务提前失败。用户在与外部 API 交互时经常遇到这类可恢复的故障,却需要自行在每个工具中实现重试逻辑,造成代码重复和行为不一致。引入可配置的指数退避重试机制可以在保持向后兼容的同时,统一处理 transient failures,提升系统鲁棒性。
Maintainers (e.g., willem-bd) have commented supporting the scope and asked for clarifications, which the author addressed in #5421. There is active engagement and no contradictory signals.
我现在先做什么
先确认 issue 仍能复现,再搜索相关代码和测试。
问题描述
Users want to reuse specific parts of past DeerFlow conversations without manually copying them or carrying the full history. Currently there is no way for an agent to query a previous conversation’s transcript while keeping ownership and access controls. This RFC proposes an opt‑in API‑only tool that lets a run reference up to three prior conversation IDs and read their messages with pagination, truncation, and explicit access checks.
工作内容
Review the implementation PR #5399: check the new read_conversation endpoint/tool, auth middleware (runs:read), pagination logic, truncation handling, and integration with the agent’s tool registry. Add or update unit/integration tests, ensure compliance with existing code style, and update any relevant documentation. If pursuing the UI follow‑up, implement a conversation selector in the composer that respects the SDK limitation and uses a capability flag.
最佳实践
First reproduce the feature by calling the new API with a valid thread ID and verify that only owned conversations are returned. Write tests covering ownership checks, pagination limits, truncation notices, and error cases. Keep changes minimal and follow the project’s Python conventions. Update the API docs and any tool description to reflect the new capability and its limits.
One maintainer (@Ajitsharmas) commented they would like to take the issue and proposed a specific opt‑in design using `include_pricing` and reusing `/model_group/info` pricing. No contradictory feedback; signal indicates willingness to accept the contribution.
我现在先做什么
Open the proxy/router file that defines the GET /v1/models endpoint (e.g., `litellm/proxy/routes.py` or similar), examine how the model list is constructed, and locate where model metadata is fetched. Then sketch how to augment each model object with a `pricing` field when an opt‑in flag is present.
问题描述
The LiteLLM Proxy's `/v1/models` endpoint currently returns only basic model metadata. Downstream agents need pricing information (prompt and completion token costs) to estimate costs before execution, compare models, enforce budgets, and display expected prices. This feature requests an opt‑in way to include pricing metadata in that response, reflecting the gateway's effective cost map and any deployment‑specific overrides.
工作内容
Locate the proxy route handling GET /v1/models, add an optional query parameter (e.g., `include_pricing=true`) or header to trigger pricing inclusion. For each model, fetch pricing from LiteLLM's model cost map and model_info/litellm_params, respecting API key/team access. Return null/omit when price unknown, document currency/unit (USD per token), and for model groups with varying prices decide on an aggregation rule (e.g., highest price). Update any relevant tests and documentation to describe the new behavior.
最佳实践
First reproduce the current /v1/models response, then implement the feature behind a flag to preserve backward compatibility. Write unit tests covering cases with known pricing, unknown pricing, and access‑controlled models. Follow the existing code style and reuse logic from `/model_group/info` where possible. After implementation, run the test suite and verify that existing integrations remain unchanged when the flag is not set. Add a short section in the docs explaining the opt‑in pricing field.
No comments or recent activity from maintainers on this issue; there is no evidence that it is being worked on or already resolved.
我现在先做什么
Set up a local development run, create a thread and run via a normal browser session, then call `GET /api/threads/{thread_id}/runs` with internal headers (`X-DeerFlow-Internal-Token` and `X-DeerFlow-Owner-User-Id`) and observe the empty response. This confirms the bug before applying the fix.
问题描述
Internal callers that use `X-DeerFlow-Internal-Token` and `X-DeerFlow-Owner-User-Id` receive empty results from `GET /threads/{thread_id}/runs` (and 404 for individual runs) because the endpoint filters runs by the synthetic internal user id 'default' instead of the owner user id stored in the request's ContextVar. Other endpoints like `/history` or `/messages` work correctly, and browser sessions return runs normally.
工作内容
1. Reproduce the bug locally with an internal token and a browser-created thread/run.
2. Examine `backend/app/gateway/routers/thread_runs.py` to see how `get_current_user` is used for filtering.
3. Implement a helper function `_run_scope_user_id` that returns `None` for trusted internal callers (identified by `user.system_role == INTERNAL_SYSTEM_ROLE`) and otherwise delegates to `get_current_user`.
4. Replace the `user_id = await get_current_user(request)` calls in `list_runs`, `get_run`, and the paginated endpoint with `_run_scope_user_id(request)`.
5. Add unit tests covering internal-token and regular-user scenarios, ensuring runs are returned for internal callers and filtered for regular users.
6. Run the existing test suite to verify no regressions.
7. Optionally update any relevant documentation about internal-token behavior.
最佳实践
First, reproduce the issue to confirm the root cause. Then make the smallest possible change: isolate the identity logic into a helper and apply it only to the affected endpoints. Write tests that simulate both internal and regular requests, asserting that internal calls see all runs for authorized threads while regular calls see only their own. Run the full test suite and check for any unintended side effects on other endpoints. Keep the change backward‑compatible for browser sessions.
Two comments: the author reiterates this is an RFC needing upstream work, and a downstream maintainer confirms the problem and provides metrics. No explicit feedback from LiteLLM maintainers yet, so there is no signal of acceptance or rejection from the project.
我现在先做什么
Search the repository for where LiteLLM converts exceptions into HTTP responses (e.g., `litellm/router.py` or `litellm/exceptions.py`). Add a breakpoint or log to capture the current error payload, then mock a 429 response to see what is returned today.
问题描述
LiteLLM internally classifies provider errors (quota exceeded, rate limited, auth failures, etc.) and tracks per‑deployment cooldown state, but this information is not exposed in a machine‑readable form. Downstream frameworks therefore maintain their own regex‑based error classifiers, leading to duplicated effort and drift when new providers are added. Exposing a structured error classification would let consumers make reliable fallback decisions without maintaining fragile pattern lists.
工作内容
Locate the code that builds error responses (likely in litellm/router.py or litellm/exceptions.py). Add a helper that maps an exception/provider status to the proposed JSON schema (category, retryable, retry_after_seconds, fallback_target, fallback_reason). Emit this as a header `x-litellm-error-classification` (JSON string) or inside the error response body under an `error.metadata` field. Ensure the header/field is added only on error responses, leaving successful responses unchanged. Write unit tests covering each category and edge cases (missing retry-after, null fields). Update any relevant documentation or docstrings. Run the existing test suite to verify backward compatibility.
最佳实践
First, reproduce the current error output by mocking a provider returning 429/402/etc. Look at how OpenRouter's `openrouter_metadata` is currently added to see the pattern for attaching extra data. Keep the change minimal: only add the new field, do not alter existing status codes or bodies. Follow the project's coding style (run ruff/black if present). Add tests that assert the header exists and contains valid JSON with expected keys. Before opening a PR, ask maintainers in a comment whether they prefer header vs. body placement and if any additional fields (like consecutive fail count) should be considered.
Commenters express strong interest, discuss design nuances (e.g., separating credential health from model routability), and note real‑world utility; there is no opposing feedback or maintainer request for clarification.
我现在先做什么
Open the litellm/provider.py (or base provider file) to locate where provider capabilities are defined, examine how other optional methods are added, and then add a stub probe_quota method to BaseProvider; after that, look at the OpenRouter provider implementation to see where to place the actual quota‑call.
问题描述
The issue requests a new optional SDK capability to proactively query upstream provider quota or balance information, distinct from LiteLLM's internal budget tracking. This would allow applications to detect exhausted credentials before launching costly tasks, enabling smarter routing and UI feedback. Currently, LiteLLM only reflects usage it observes, so external quota changes are invisible without provider‑specific hacks.
工作内容
Define a ProviderQuotaSnapshot dataclass; add an optional probe_quota method to the BaseProvider interface; implement it for at least one provider (e.g., OpenRouter using its /api/v1/key endpoint); integrate with LiteLLM's provider resolution and credential handling; add a SDK helper function aprobe_provider_quota; implement short‑TTL caching, timeouts, and ensure credentials are never logged; write unit tests with mocked HTTP responses; update documentation and type hints.
最佳实践
Follow LiteLLM's existing provider capability pattern (e.g., check for unsupported providers returning None or a NotSupported type); reuse the existing HTTP client and retry logic; keep the change backward‑compatible; add comprehensive unit tests that cover success, unsupported, auth failure, and quota‑exhausted cases; verify that no sensitive data appears in logs or snapshots; run the test suite and lint before submitting PR.
No comments or maintainer responses on the issue; no evidence of community discussion or ongoing work.
我现在先做什么
Run a local Agent V2 with a simple tool (e.g., a custom API plugin), open the Network tab, locate the log request/response, and verify that agent_thoughts and tool call details are present in the payload.
问题描述
In Dify 1.17.x, Agent V2 lacks a UI to view detailed execution logs such as tool calls, intermediate reasoning steps, per‑step token/latency metrics, and error traces. Users debugging agents cannot see which tools were invoked, what they returned, or where the reasoning failed, making production troubleshooting difficult. Although the backend already records this data (added in PR #38592), the Agent V2 log panel only shows basic message metadata and does not surface the richer trace information.
工作内容
1. Locate backend fields (e.g., agent_thoughts, tool_call_details) that store per‑step traces.
2. Examine the frontend AgentLogDetailPanel and related AgentLogMessage formatting to understand current data mapping.
3. Extend the panel to render tool‑call lists (name, input, output, status), intermediate reasoning chains, per‑step token/latency/timestamp, and error details when present.
4. Ensure the UI reuses existing components (e.g., collapsible sections, tooltip/error badges) and follows the project's TypeScript/React styling guidelines.
5. Add frontend unit/integration tests for the new log rendering scenarios.
6. Update any relevant documentation or inline comments to reflect the new log view.
7. Verify with a manual test: create an Agent V2 that uses a tool, trigger execution, open the log panel, and confirm all trace data appears correctly.
最佳实践
First reproduce the issue by running an Agent V2 with a tool and confirming that the backend returns agent_thoughts via API/network. Then trace the flow from the log API endpoint to AgentLogDetailPanel to identify where the data is dropped. Implement the smallest change that adds the missing fields without refactoring unrelated UI. Follow the existing pattern for displaying lists and error states, add accessible labels, and write tests that mock the trace data. Before opening a PR, run the test suite and ensure no linting or type errors appear.
Maintainers have commented, noting the issue is a reliability boundary and discussing duplicate concerns, but no resolution or maintainer‑assigned work is evident.
我现在先做什么
Set up a local test that streams an Azure OpenAI response with reasoning items, capture the raw SSE events from the upstream call and the events after the litellm bridge, and confirm the drop in reasoning events; then examine the translation code to add the missing mapping.
问题描述
The Responses-to-Chat bridge in LiteLLM does not forward incremental reasoning items from upstream LLM responses. It only attaches reasoning_items on completed/incomplete events, causing the streaming wrapper to drop most reasoning progress (e.g., 251 upstream SSE events reduced to 2 downstream). This loses reasoning state, breaks caching/replay, and can lead to incorrect token counting or duplicated assistant roles.
工作内容
Locate the responses-to-chat translation module, add mapping of upstream delta.reasoning_items to downstream chunks, implement item-ID based deduplication and state accumulation, ensure text-only streams retain the fast path, and add unit/integration tests that verify reasoning events are preserved end-to-end.
最佳实践
First reproduce the loss using a streaming Azure OpenAI call with reasoning enabled and count events before/after the bridge. Follow the existing test patterns in the repo, keep changes minimal, avoid modifying request messages or cache keys, and run the full test suite to ensure no regressions.
Comment from @jstar0 offering to take on the issue and proposing a clear scope; no maintainer response yet, but there is clear interest from a community member.
我现在先做什么
Write a minimal reproduction script that uses `AgentFrameworkAgent` with a tool reading `ctx.kwargs['user_id']` supplied via `function_invocation_kwargs`, triggers an approval, resumes via AG-UI, and checks that `user_id` is present. This will confirm the bug and give a baseline for the fix.
问题描述
The AG-UI approval/resume path executes approved tools before calling `agent.run(...)`, but it only builds tool runtime kwargs from `run_kwargs`. Consequently, values passed via `agent.run(..., function_invocation_kwargs={...})` (e.g., `user_id`) are missing from `FunctionInvocationContext.kwargs` during the approved‑tool execution, breaking the documented runtime‑context contract.
工作内容
1. Locate `python/packages/ag-ui/agent_framework_ag_ui/_agent_run.py` and the `_resolve_approval_responses` function.
2. Modify the construction of `custom_args` to merge `function_invocation_kwargs` (passed from the outer `run_agent_stream` call) with the existing `run_kwargs`‑derived args, ensuring no overlap with `options`.
3. Add a unit test that registers a tool reading a key from `ctx.kwargs` (supplied only via `function_invocation_kwargs`), runs an AG-UI stream with `approval_mode='always_require'`, approves the pending call, and asserts the key is present.
4. Run the existing AG-UI test suite (`uv run poe syntax` and relevant unit tests) to verify no regressions.
5. Update any necessary docstrings/comments to reflect the change.
最佳实践
First reproduce the issue with a minimal script that demonstrates missing `user_id` after approval. Then make the smallest possible change to `_resolve_approval_responses` that threads the `function_invocation_kwargs` through. Run the full test suite for the AG-UI package and ensure the new test passes. Keep the change isolated to the Python AG-UI adapter; do not modify the core `Agent.run` path.
No maintainer comments on the issue or the PR; only the author has posted, so there is currently no evidence of community engagement.
我现在先做什么
Open PR #40634, examine the hook implementation, run the existing test suite, then add or verify unit tests for the X‑Trust verification logic.
问题描述
LiteLLM proxies millions of LLM requests but lacks a built‑in way to distinguish human‑generated traffic from bots. The X‑Trust header provides a lightweight, signed HTTP header that can convey a trust score without KYC or PII. Adding native support would let teams annotate each request with this score for metering, rate‑limiting, or deprioritizing bot traffic.
工作内容
Review PR #40634, ensure the hook follows LiteLLM's custom hook interface, verify HMAC‑SHA256 signature logic, add unit tests for valid/invalid signatures, update any relevant documentation (hooks/README), and confirm no performance regression or breaking changes.
最佳实践
Run the full test suite, keep changes minimal and focused, make the header optional and non‑blocking, follow existing patterns for optional metadata annotation, and seek maintainer feedback on the PR before merging.
No maintainer feedback beyond the author's follow‑up question; no explicit endorsement or rejection is visible.
我现在先做什么
Checkout the branch the maintainers indicate (e.g., litellm_internal_staging or main), then use `git fetch origin pull/30238/head:asqav-rebase && git rebase <target-branch>` to rebase the changes, resolve conflicts, and run `pytest` on the logging-related tests to verify the build.
问题描述
The asqav audit‑log callback was added in PR #30238 but was merged into a dropped staging branch, so the feature never appeared in any released version. Users who want the built‑in `callbacks = ["asqav"]` option currently cannot use it; they must rely on the external CustomLogger adapter instead.
工作内容
Rebase the changes from PR #30238 (including the optional cloud‑signing layer from #31100) onto the current target branch (main or litellm_internal_staging), resolve any conflicts, ensure the 26/26 integration tests and dispatch test pass, run ruff/lint, and optionally split the change into two PRs (local ledger and cloud‑signing). Verify that the callback is registered and usable in a fresh install.
最佳实践
First confirm the correct base branch by asking maintainers (as the issue author did). Then create a new branch, apply the rebased commits, run the full test suite, and add any missing unit tests for the callback registration. Keep changes minimal, follow the project's contribution guide, and open a PR requesting review, linking to the original PR for context.
No comments have been posted on the issue; there is no observable maintainer or community activity indicating work in progress or resolution.
我现在先做什么
Open security.py, find the lines around 2477-2478 and 2482/2500 referenced in the issue, then locate the LabelTrackingFunctionMiddleware logic that performs `[var_xxx]` substitution; add a 30‑minute spike to sketch where to store the list of rewritten argument positions in the invocation context.
问题描述
The framework's LabelTrackingFunctionMiddleware expands `[var_xxx]` placeholders into tool arguments before execution, while PolicyEnforcementFunctionMiddleware blocks such forwarding unless the destination tool opts in via `accepts_untrusted=True`. Tools that opt in currently have no way to discover which of their arguments were rewritten by the expansion, preventing them from safely reporting errors (e.g., rejecting a filename) without inadvertently leaking hidden content. This feature request asks for a mechanism to expose the set of argument positions that were rewritten by variable expansion.
工作内容
Locate LabelTrackingFunctionMiddleware (variable expansion) and PolicyEnforcementFunctionMiddleware (security gating) in security.py; add a field to the invocation context (e.g., `context.metadata['expanded_argument_indices']`) that records which argument positions were modified during expansion; ensure the field is populated before PolicyEnforcementFunctionMiddleware runs and cleared after invocation; add unit tests verifying the metadata is correct for various expansion scenarios; update any relevant documentation or docstrings.
最佳实践
First reproduce the issue by running a minimal script that uses a tool with `accepts_untrusted=True` and passes a `[var_xxx]` argument; locate the exact lines where expansion occurs and where the security check gates forwarding; implement the smallest possible change that records the rewritten indices without affecting existing behavior; write tests that assert the metadata matches expectations for both expanded and non-expanded arguments; run the existing test suite to ensure no regressions; if needed, add a brief note in the documentation about the new metadata field.
A maintainer (@modelpath-dev) has commented they will take the issue and are already looking into the hydration logic, indicating active interest but no fix yet.
我现在先做什么
Clone the repository, install dependencies, run the provided `repro.mjs` script to observe the missing `/stream/events` request, then locate the hydration checking code in the SDK.
问题描述
In LangGraph.js SDK v2, the hydration process incorrectly treats an active run whose `next` checkpoint array is empty as idle, causing it to never subscribe to the `/stream/events` endpoint. As a result, the client does not receive live updates for the run, breaking real‑time streaming functionality.
工作内容
1. Reproduce the issue using the provided `repro.mjs` script to confirm the missing subscription.
2. Locate the hydration logic in the `@langchain/langgraph-sdk` package (likely in `src/hydration.ts` or similar).
3. Identify the condition that checks `state.next.length` (or equivalent) and treats an empty array as idle.
4. Modify the condition to allow an empty `next` array while still considering the run active, ensuring that a subscription to `/stream/events` is initiated.
5. Add a unit test that mirrors the reproduction case to verify the fix and guard against regression.
6. Run the existing test suite to ensure no regressions.
最佳实践
First reproduce the failure locally. Make the smallest possible change to the hydration decision logic. Ensure the change is covered by a test that asserts an active run with empty `next` triggers a stream subscription. Keep the PR focused, update any relevant documentation if needed, and respond to maintainer feedback promptly.
One comment from Nakagawa-master offers design suggestions but no resolution or PR activity; no evidence of maintainer assignment or ongoing work.
我现在先做什么
Clone the repo, create a test script that ingests two documents with identical content hash, then re-ingest only one, and verify via docstore.docs.keys() that the removed document is deleted. This will confirm the bug and give a baseline for fixing the delete pass.
问题描述
The ingestion pipeline's UPSERTS_AND_DELETE mode fails to delete a document when another stored document shares the same content hash, because the delete pass enumerates existing IDs via a lossy hash->doc_id map. Additionally, the transformation cache uses a non‑injective key that can cause a cache hit to return a transformed node with the wrong ref_doc_id, leading to provenance errors.
工作内容
1. Locate _handle_upserts/_ahandle_upserts in llama_index/core/ingestion/pipeline.py and the docstore method get_all_document_hashes in llama_index/core/storage/docstore/keyval_docstore.py. Replace the delete pass's use of existing_doc_ids_before = set(self.docstore.get_all_document_hashes().values()) with a correct enumeration of stored document IDs, e.g., using self.docstore.docs.keys() or self.docstore.get_all_ref_doc_info(). 2. Identify where the transformation cache key is built (likely in the ingestion pipeline's transformation cache or node_postprocessor) and modify the key to include identity-bearing information such as ref_doc_id, relationships, and content hash, making it injective. 3. Add unit tests that reproduce the hash‑collision delete failure and the cache‑key provenance issue, asserting correct deletion and correct ref_doc_id after cache hit. 4. Ensure async and sync paths are both updated and tested.
最佳实践
First reproduce the bug with a minimal script that creates two documents with identical content but different IDs, runs ingestion twice, and checks that the removed document is deleted. Then examine the existing code paths to understand where the hash map is used and where the cache key is constructed. Make the smallest possible change: replace the lossy enumeration with a direct ID enumeration and augment the cache key with identity fields. Run the full test suite to verify no regressions, and add the new test cases to prevent future regression.
Maintainer commented that dropping params is by design and suggested a generic dropped‑params warning or header instead of per‑parameter rules. No consensus or decision has been reached yet, and no fix has been implemented.
我现在先做什么
Open `litellm/llms/openai/chat/gpt_5_transformation.py`, find the `if effective_effort == "xhigh"` block inside `map_openai_params`, and inspect how `drop_params` is used. Then run the reproduction script to confirm the current behavior before making any changes.
问题描述
When a model's capability map does not set `supports_xhigh_reasoning_effort`, LiteLLM silently removes the `reasoning_effort='xhigh'` parameter instead of refusing the request or warning the caller. This causes the call to proceed with baseline reasoning (zero reasoning tokens) and a 200 response, making the downgrade invisible and potentially leading to unexpected behavior and cost discrepancies.
工作内容
Locate the transformation logic in `litellm/llms/openai/chat/gpt_5_transformation.py` (specifically `map_openai_params` and the `if effective_effort == "xhigh"` branch). Replace the silent `drop_params` removal with either an `UnsupportedParamsError` or a visible warning/header. Add unit tests that verify the error/warning is raised for models lacking the capability and that the parameter is forwarded when the capability exists. Ensure existing tests continue to pass.
最佳实践
First reproduce the issue using the provided snippet. Then examine the existing test suite for similar param‑handling tests to follow the same pattern. Make the minimal change: only alter the xhigh branch to raise or warn when the capability flag is false. Verify that `drop_params=False` still raises as expected and that `drop_params=True` now results in an explicit error or warning rather than silent removal. Run the repo's test suite to confirm no regressions.
Clone the repo, simulate a depth-1 checkout (`git fetch --depth 1 origin main`) and run `git show main:schema.prisma` to confirm it fails, then examine .github/workflows/_test-unit-base.yml to see the current checkout configuration.
问题描述
The repository's CI lets a PR pass even when changes to schema.prisma are not accompanied by a corresponding SQL migration. The existing migration test is skipped without DATABASE_URL, and the substitute test that compares schemas ignores git show failures and uses a shallow checkout, so it can report no drift even when the schema is out of sync. This allows releases that lack required migrations to be deployed, causing runtime 500 errors when the proxy queries missing columns.
工作内容
Update the GitHub Actions unit workflow to fetch the full history (fetch-depth: 0) or explicitly checkout the main branch, add a Postgres service container, modify tests/proxy_migration_tests/test_db_schema_migration.py (or create a new test) to run `prisma migrate diff --from-url ... --to-schema-datamodel schema.prisma --exit-code` against an empty database, and ensure the job is required for PRs. Also fix the helper `get_schema_from_branch` to check the subprocess return code and raise on failure.
最佳实践
First reproduce the issue locally by running the test with a depth-1 checkout and a missing migration to confirm it passes incorrectly. Then apply the minimal changes to the workflow and test, verify that the test now fails when a schema change lacks a migration and passes after adding the matching SQL. Keep changes limited to the CI and test files, update any relevant documentation, and ensure the new job is added to the list of required status checks.
No comments or maintainer responses on the issue; no evidence of community discussion.
我现在先做什么
Open the repository, locate `workflow.py` (or equivalent) where `Workflow.run` is defined, and add an `options: dict | None = None` parameter; then run a quick test to confirm the call no longer raises a TypeError.
问题描述
The issue requests a first‑class background execution API for workflows that mirrors the agent Background Responses pattern: start a long‑running workflow, get a continuation token or run ID, and poll until completion. Currently `workflow.run(...)` and `workflow.as_agent().run(...)` do not accept an `options` argument with `background: True`, forcing users to implement their own task wrapping or rely on checkpoint storage, which does not provide a stable pollable handle.
工作内容
Add an optional `options` parameter to `Workflow.run` and `WorkflowAgent.run`; when `options.get('background')` is True, generate a continuation token (or reuse checkpoint ID) and return an object exposing `.continuation_token` and status methods; implement internal logic to store intermediate state via checkpoint storage and allow resumption via the token; update docstrings and add unit/integration tests for the background flow; ensure backward compatibility.
最佳实践
First reproduce the TypeError by calling `workflow.as_agent().run(..., options={'background': True})`; locate the signatures of `Workflow.run` and `WorkflowAgent.run` in the codebase; add the `options` kwarg with a default of None; pass it down to the underlying runner; implement token generation (e.g., a UUID or checkpoint ID) and return a lightweight result object; write tests that start a workflow in background, poll using the token, and verify completion; run existing test suite to ensure no regression; update any relevant documentation or examples.
Maintainer @Kaustubh1235 commented they will take the issue, indicating community attention but no PR or fix yet.
我现在先做什么
Clone the repo, run the Agent Server locally, and execute the provided probe script to confirm that a cancelled run still writes to state. Then search the codebase for 'graph.streamEvents' to locate the call site in the run handler.
问题描述
When a run is cancelled via the Agent Server's /threads/{threadId}/runs/{runId}/cancel endpoint, the server correctly marks the run as interrupted and ends the SSE stream, but the underlying JavaScript graph continues to execute to completion. The root cause is that the AbortSignal associated with the HTTP request is not forwarded to the graph's streamEvents() call, so the graph never observes the cancellation signal.
工作内容
Locate the Agent Server HTTP handler that processes run.start / run execution (likely in packages/langgraph-api/src/server/run.ts or similar). Identify where graph.streamEvents() is invoked for a JavaScript graph. Ensure the AbortSignal from the incoming request (req.signal) is extracted and passed as the signal option to streamEvents(). Add a unit or integration test that verifies a cancelled run stops a long‑running JS node (using the provided probe). Update any relevant TypeScript definitions if needed.
最佳实践
First reproduce the issue locally using the provided example to confirm the bug. Then make the minimal change: pass the signal parameter. Verify that the fix does not break non‑cancelled runs. Add a test that asserts the graph's side effects (state writes) are aborted when cancelled. Keep the change isolated to the server layer; avoid modifying the core graph library unless necessary.
Maintainer errmakov has engaged on the BOM aspect and offered to take it; no explicit maintainer approval or rejection yet. Community discussion is limited to the issue thread and linked PRs.
我现在先做什么
Fetch the branches for PRs #2790, #2792, #2793, run the reproduction script from the issue description, and verify that the awaiting caller now receives the specific transport error (or that the BOM case no longer hangs).
问题描述
When a stdio transport encounters an error (e.g., oversized message, invalid UTF‑8 BOM), the SDK logs the precise cause via `transport.onerror` but any awaiting caller receives only a generic 'MCP error -32000: Connection closed' (or hangs for BOM). This hides the real failure reason, making debugging and error handling impossible for code that uses `await client.listTools()` or similar calls.
工作内容
Modify the stdio client transport to capture the last transport error and attach it to rejected promises (e.g., via `error.cause`). Update `ReadBuffer` to properly recover after an oversized message (resume at next newline) and to strip a leading UTF‑8 BOM before JSON parsing. Add unit tests covering buffer overflow, BOM, and normal error paths, ensuring existing `onerror` behavior is preserved.
最佳实践
First reproduce the issue with the provided server/client snippet. Then examine the existing PRs #2790, #2792, #2793 to see if they already implement the needed changes. Run the reproduction against those branches to confirm the error message is now included in the rejection and the BOM case resolves. If the PRs are sufficient, review and merge them; otherwise, implement the missing pieces, keep changes minimal, and add tests before submitting a PR.
Only an automated triage bot comment is present; no maintainer or contributor has yet responded or indicated work in progress.
我现在先做什么
Run the supplied Python script to confirm the swapped outputs, then open python/packages/core/agent_framework/_workflows/_functional.py and examine RunContext._get_step_cache_key to see how the cache key is built.
问题描述
The functional workflow's checkpoint mechanism uses a per-step call index to identify cached results. When a workflow is restored from a checkpoint, those indexes are reset, causing concurrent branches that invoke the same @step to receive each other's cached results. This leads to silent data corruption where the logical association between a step invocation and its result is swapped during replay.
工作内容
Locate the cache key generation in python/packages/core/agent_framework/_workflows/_functional.py (RunContext._get_step_cache_key and StepWrapper.__call__). Replace the mutable call_index with a stable identifier (e.g., a UUID or invocation-specific token) that is preserved across checkpoint save/restore. Ensure the identifier is stored with the step execution state and replayed correctly. Add or update tests in python/packages/core/tests/workflow/test_functional_workflow.py to verify that concurrent step calls maintain correct result mapping after checkpoint replay. Run the existing failing tests to confirm they pass.
最佳实践
First reproduce the issue using the provided code snippet to see the swapped outputs. Read the triage notes to understand the exact functions involved. Make the smallest possible change that preserves existing behavior for non-replay scenarios. Ensure thread-safety if applicable. After implementing the fix, run the full workflow test suite to avoid regressions. If any documentation mentions the caching contract, update it accordingly.
No comments or maintainer feedback on the issue; no evidence of community discussion.
我现在先做什么
Locate an existing search tool (e.g., brave_search_tool/) and copy its directory structure as a template for anysearch_tool/, then begin implementing the AnySearchTool class with optional api_key support.
问题描述
Users want a zero‑configuration web search tool that works without an API key, lowering the barrier for newcomers to try CrewAI with web search. Currently all built‑in search tools require API keys or extra packages, forcing users to sign up before they can run a crew that needs web search.
工作内容
Create a new anysearch_tool/ directory mirroring brave_search_tool/ (anysearch_tool.py, __init__.py, README.md). Implement AnySearchTool subclassing BaseTool, making the api_key optional and falling back to anonymous requests (no Authorization header). Add unit tests that mock requests and verify both anonymous and keyed calls. Register the tool in the two package __init__.py files (alphabetical order). Add documentation stubs in docs/edge/{en,ar,ko,pt-BR}/. Ensure no changes to existing tools, specs, or dependencies.
最佳实践
Follow the exact pattern of existing search tools: reuse BaseTool, keep HTTP logic in a helper method, raise clear errors on non‑200 responses, add type hints, and include a simple README. Write tests that mock requests.get to avoid external calls, cover success, error, and anonymous‑mode paths. Run the existing test suite to confirm no regressions before submitting the PR.
No comments or recent activity on the issue; no linked PRs or discussions indicating maintainer engagement.
我现在先做什么
Clone the repo, find the AgentSession and Foundry hosted session creation methods (likely in Microsoft.Agents.Foundry or similar), examine how ChatOptions are currently built, and write a small test that creates a session and checks whether the user identity header is sent on subsequent runs.
问题描述
The Foundry-hosted user identity must be supplied on every agent run via ChatOptions.WithFoundryHostedAgentUserIdentity, which prevents reusing an AgentSession for a different delegated user and forces callers to pass the identity each time. The request is to store the delegated user identity within the AgentSession so it is automatically sent with each reuse, reject conflicting per-run identities, and maintain backward compatibility for those who prefer per-run identity.
工作内容
Modify the AgentSession class to store a delegated user identity property; update CreateFoundryHostedAgentSessionAsync to accept and persist this identity; ensure the identity is serialized/deserialized with the session; adjust the run path to automatically add the x-ms-user-identity header from the stored value unless overridden; add validation to reject conflicting per-run identities; extend unit tests for serialization, automatic header injection, and conflict scenarios; add live integration tests covering the new API; update documentation/comments to note that separate users need separate AgentSession instances.
最佳实践
First reproduce the current behavior by creating a session, running twice with different identities, and confirming the header is missing on the second run. Locate the existing Foundry hosted session code and follow the pattern used for other session-scoped options. Make minimal changes: add a nullable string field, update constructors, and adjust the internal method that builds ChatOptions. Write tests before changing production code to verify expectations. Keep the existing per-run ChatOptions API intact and clearly document the new session-sticky behavior.
Write a unit test that mocks _FoundryAgentChatClient.call to raise ReadError (or APIError 5xx), invoke workflow.run on a simple workflow, assert that the workflow retries from the last checkpoint (i.e., does not re‑run prior successful agents), eventually either succeeds after retries or raises the exception after max attempts, and verify that _is_running is reset so a second .run() call does not raise RuntimeError.
问题描述
When Azure AI Foundry returns transient errors such as ReadError, APIError 5xx, or httpx.RemoteProtocolError, the MAF workflow aborts entirely instead of retrying the failed agent step from the last checkpoint. Additionally, the workflow’s internal _is_running flag remains true after a crash, preventing subsequent .run() calls on the same instance. This causes production‑visible failures and forces users to wrap workflow.run() in their own retry loops.
工作内容
Modify Workflow.run/AgentExecutor to intercept exceptions from _FoundryAgentChatClient, classify them as transient‑error classification (ReadError, APIError 5xx, RemoteProtocolError, APIConnectionError, APIStatusError 5xx, TimeoutError), load the latest checkpoint for the workflow, re‑execute the failing agent step with configurable max attempts and backoff, ensure _is_running is reset in a finally block, add new configuration parameters (max_agent_retry_attempts, retry_backoff_base, etc.), and update any related documentation.
最佳实践
First reproduce the bug with a mock that throws a transient exception; study the existing checkpoint/save‑restore mechanism; follow the project’s error‑handling and testing patterns; keep changes minimal and backward compatible; add unit tests for the retry path and for _is_running reset, plus integration tests using a fake Foundry client; run the full test suite to verify no regressions; update README or config docs if new options are exposed.
Only one external comment referencing Aegisora; no maintainer responses or activity on the issue, indicating limited direct community engagement.
我现在先做什么
Examine the existing .NET command/tool execution flow (e.g., where ToolApprovalAgent is invoked) to understand how approvals are currently triggered, then sketch the IAgentCommandSandbox interface and locate a suitable place to inject it.
问题描述
Users of the .NET agent framework experience approval fatigue because every command/tool execution requires explicit user approval, even for safe, read-only or workspace‑confined operations. This reduces usability and slows down local automation workflows. Introducing a sandbox abstraction would allow commands to run in a restricted environment by default, only prompting for approval when the sandbox policy is violated, thereby reducing unnecessary interruptions while keeping risky actions explicit.
工作内容
Define the sandbox contract (IAgentCommandSandbox, SandboxPolicy, CommandRequest, SandboxResult) in the .NET codebase; provide a default implementation (e.g., using Windows restricted tokens or a simple in‑process policy) and a pluggable interface for alternative backends (containers, remote executors); integrate the sandbox with existing ToolApprovalAgent and AIContextProvider so approval is only requested on sandbox‑reported elevation; add unit tests for the sandbox logic and integration tests with approval flow; update documentation and samples to show how to use the sandbox.
最佳实践
Keep the abstraction minimal and pluggable to avoid locking users into a single implementation; follow the repository's coding style and naming conventions; write tests that mock the sandbox to verify approval behavior; ensure cross‑platform considerations are noted (Windows reference provided, but other platforms can implement their own backend); coordinate with maintainers early to confirm scope and avoid duplicated effort.
CrewAI's E2B sandbox tools create and connect to E2B sandboxes without identifying themselves, so E2B cannot distinguish traffic originating from CrewAI from other SDK users. This prevents E2B from attributing usage, version tracking, and providing tailored support or analytics for CrewAI users.
首先运行现有的 E2B 工具测试确保基线绿色;查看现有的版本获取方式(importlib.metadata.version)保持一致;保持更改最小,只在共享基础工具中添加逻辑;使用 mock.assert_called_once_with 检查调用顺序;在提交前运行完整的 test suite 和 lint。
No comments or activity from maintainers or contributors; no evidence that the issue has been addressed.
我现在先做什么
Clone the repository, locate the SequentialBuilder class in agent_framework/orchestrations, and add a temporary debug print or test to confirm that the second agent receives history ending with an assistant message. Then create a simple mock model that returns empty text when the last message is assistant to verify the problem.
问题描述
When using SequentialBuilder to chain multiple agents, the second (and later) agents receive the conversation history that ends with an assistant message from the prior agent. Certain LLMs (e.g., qwen3.8-27b@4bit) return empty completions when the prompt ends with an assistant message, causing the downstream agent to produce no text and silently break the workflow. This affects any multi-agent scenario that relies on the default chaining behavior of SequentialBuilder.
工作内容
Examine the SequentialBuilder and AgentExecutor implementation to see how conversation history is built for each participant. Identify where the history is passed to the model runner. Propose a fix such as ensuring the history passed to subsequent agents always ends with a user message (e.g., by appending a minimal user prompt or adjusting context_mode). Add unit tests using a mock model that returns empty on assistant-ending history to verify the fix and ensure no regression for existing behavior.
最佳实践
First reproduce the issue locally with a mock LLM that mimics the empty-output behavior. Trace the code path from SequentialBuilder.run to AgentExecutor.from_response and the model call. Keep changes minimal and focused on the history construction logic. Update any relevant documentation or comments about chaining behavior. Run the existing test suite to confirm no regressions.
One maintainer comment acknowledges the issue and plans to investigate; no resolution or fix has been posted yet.
我现在先做什么
Run the provided workflow on a windows-latest runner (or enable debugging in the existing CI) and add logging/timestamps inside BrowserSession.kill() to see where the call blocks; alternatively, run the test locally with added debug to confirm normal behavior and compare with CI logs.
问题描述
On Windows GitHub CI runners, repeatedly starting and stopping a BrowserSession with keep_alive=True causes the teardown (await browser_session.kill()) to hang indefinitely, leaving orphaned Chrome processes that survive the job timeout and block the test suite. The hang does not occur on a local Windows 11 machine, indicating it is specific to the CI environment (likely headless Chrome with restricted permissions or different process hierarchy).
工作内容
Examine the BrowserSession.kill() implementation and related event bus/watchdog cleanup logic; add debugging to see where the call blocks on Windows CI; ensure child Chrome processes are terminated (e.g., by using psutil to kill the process tree or calling taskkill /F /T); add a timeout safeguard to kill() so it does not block indefinitely; verify that after kill() no Chrome processes remain; add a test that reproduces the start/kill loop on a Windows runner (or simulate the CI conditions) and assert teardown completes within a reasonable time.
最佳实践
First reproduce the issue using the provided workflow on a windows-latest runner with extra logging; isolate whether the block is in kill() or in the subsequent start() by adding timestamps; prefer minimal changes that ensure proper process tree termination; add a unit/test that runs the fixture loop and checks for orphan processes via psutil; keep changes scoped to BrowserSession teardown to avoid regressions; communicate findings in a comment before submitting PR.
No comments or maintainer feedback on the issue; no evidence of ongoing work or discussion.
我现在先做什么
Search the repository for memory-related files (e.g., crewai/memory/__init__.py, short_term_memory.py, long_term_memory.py) to locate where memory read/write operations are performed, then add a conditional callback/logging point in those methods.
问题描述
Developers using CrewAI with memory enabled lack visibility into memory operations: they cannot see what agents read/write, when entries become stale or overwritten, why decisions are based on memory, or how memory flows between agents. This hinders debugging and performance tuning of multi-agent crews.
工作内容
Identify memory read/write points in the existing memory backend (short-term, long-term, entity, user). Add observable hooks (callbacks or structured logging) that capture agent name, timestamp, memory type, and content preview. Implement a crew.memory_snapshot() method returning a structured view of all memory stores. Ensure backward compatibility, add unit tests for the new hooks and snapshot, and update documentation with usage examples.
最佳实践
First, reproduce a simple crew with memory enabled to confirm baseline behavior. Locate the core memory classes (e.g., in crewai/memory/). Introduce an optional observability flag or callback list that defaults to disabled. Instrument read/write methods to invoke callbacks without altering existing logic when disabled. Write tests that verify callbacks receive correct events and that snapshot returns expected structure. Keep changes minimal and isolated to avoid breaking existing functionality. Update docs/README with example code for both callback and snapshot approaches.
One comment from @Undermoon1412 offering to take the reserved-name collision part as a focused PR, showing active interest; no further discussion or maintainer feedback beyond that.
我现在先做什么
Run the application, create a custom agent with an empty skill allowlist, open the chat, and observe the slash suggestions/picker for skills that should be hidden; simultaneously add a skill named 'context' and type '/context compact' to confirm the skill is incorrectly suggested and triggers compaction.
问题描述
The skill feed used by both slash suggestions and the skill picker is not scoped to the current agent, so agents with an explicit skill allowlist (including empty) still see unusable skills. Additionally, a skill named 'context' conflicts with the built‑in '/context compact' command because 'context' is not reserved, causing the skill to be suggested and accidentally triggering compaction when the user types '/context compact'.
工作内容
1. Modify the shared skill feed (useSkills in frontend/src/components/workspace/input-box.tsx) to accept an agentId or use a selector that intersects the fetched catalog with the active agent's skill allowlist. 2. Update all consumers (slash suggestions at input-box.tsx:~1300, picker's getSelectableSkills) to use the scoped feed. 3. Reserve the skill name 'context' in the slash skill contract: add it to RESERVED_SLASH_SKILL_NAMES / COMPOSER_BUILTIN_COMMAND_NAMES in frontend/src/core/skills/slash.ts and ensure the corresponding contract fixture (contracts/slash_skill_contract.json) is updated. 4. Add tests verifying that a skill named 'context' is never suggested for slash commands and that '/context compact' always resolves to the compact action. 5. Run existing contract tests to confirm frontend/backend alignment.
最佳实践
First reproduce both issues locally: create a custom agent with an empty skill list and verify unwanted skill suggestions; add a skill named 'context' and confirm '/context compact' triggers compaction instead of the skill. Make minimal changes: scope the feed at the source rather than duplicating filters. Update the contract and run the existing test suite to keep frontend and backend slash parsing in sync. Ensure any new unit tests cover the reserved-name behavior and the agent-scoped filtering.
No comments on the issue; the only community signal is the linked PR #5236, which indicates the proposal is under review.
我现在先做什么
Review PR #5236, check out the branch, run the application locally and test the archive/restore workflow on both desktop and mobile views to confirm the feature works as described.
问题描述
Completed chats remain in the recent list, making it hard to find active conversations. Users still need those chats and their artifacts for reference, so deleting them is undesirable. Archiving would move finished chats out of the daily view while preserving messages, files, ownership, pin state and original links, with a dedicated archived view and one‑click restore.
工作内容
Add an 'Archive chat' entry to the sidebar menu with an undo toast; add 'Recent chats / Archived' tabs above the chats search field; implement backend PATCH to set boolean `deerflow_archived` on threads, ensuring owner checks and not touching `updated_at`; modify `/api/threads/search` to accept optional `archived` filter and apply it before pagination in both SQL and memory stores; update frontend to show restore action for archived chats in headers and list rows; preserve all metadata during archive/restore; handle concurrent writes by merging only the changed flag and cancelling stale reads; write unit and integration tests for archive, undo, restore, pagination, owner isolation and failure cases.
最佳实践
Start by reviewing the linked PR #5236 to understand current implementation; reproduce the issue by checking that completed chats clutter the recent list; verify archive hides the chat, undo restores it, and restore works from the archived tab; ensure activity time, pin state, files and original links remain unchanged; test owner isolation (non‑owners cannot archive/restore); test concurrent archive/pin requests to confirm no race conditions; follow existing code style, keep changes minimal and avoid new tables or migrations; add tests covering the new API flag and UI flows.
No comments or recent activity from maintainers; no evidence of community discussion or ongoing PRs.
我现在先做什么
Clone the repository, run the reproduction code locally, and curl the `/.well-known/oauth-protected-resource` endpoint and a 401 response to confirm the incorrect PRM location and missing `resource_metadata` header.
问题描述
When an MCP server is hosted under a path (e.g., /mcp), the default configuration of `mcpAuthRouter` and `requireBearerAuth` produces OAuth discovery metadata at the wrong location (`/.well-known/oauth-protected-resource` with a resource value of the host only) and omits the `resource_metadata` parameter in WWW-Authenticate headers on 401 responses. This violates the MCP authorization spec and RFC 9728, causing spec‑compliant clients (Gemini CLI, Antigravity) to fail silently while permissive clients appear to work.
工作内容
Locate the `mcpAuthRouter` implementation in `server/auth/router.ts` and the `requireBearerAuth` middleware in `server/auth/middleware/bearerAuth.ts`. Identify where `resourceServerUrl` and `resourceMetadataUrl` fall back to `baseUrl`/issuerUrl. Modify the fallback logic to incorporate the request path (or expose an optional `mountPath` parameter) so that Protected Resource Metadata is served at `/.well-known/oauth-protected-resource/<path>` and the `resource` value matches the full endpoint URL. Ensure the WWW-Authenticate header includes `resource_metadata` when it is missing. Add unit tests that verify PRM endpoint location, resource value, and header compliance for both root and sub‑path mounts. Update any relevant documentation or README examples to reflect the required parameters.
最佳实践
First reproduce the issue using the provided snippet and inspect the `/.well-known/oauth-protected-resource` endpoint and 401 response headers. Then read the existing test suite for auth/router and bearerAuth to understand testing patterns. Implement the fix with the smallest possible change that preserves existing behavior for root‑mounted servers. Write tests that cover both cases and run the full CI suite to ensure no regressions. Finally, verify the fix with a spec‑compliant client (e.g., Gemini CLI) to confirm discovery succeeds.
Review the linked PR #5117 to see what has been implemented, run the repository locally, create a test run that emits multiple artifacts via present_files, and verify whether the endpoint behaves as described or identify missing pieces (validation, streaming, UI hook).
问题描述
Users currently must download each artifact file from a DeerFlow run individually. A run can produce several related outputs (e.g., report files, website assets, data packages) that would be more efficiently retrieved as a single ZIP archive. The feature needs a run‑scoped endpoint that bundles only the files explicitly presented by that run, without exposing arbitrary file paths, and must safety‑check the archive to avoid exposing workspace contents or serving partially built archives when files change during creation.
工作内容
1. Implement POST /api/threads/{thread_id}/runs/{run_id}/artifacts/archive endpoint (backend). 2. Derive the file list from the terminal run.delivery receipt created by present_files; reject any client‑supplied paths. 3. Validate each candidate file: regular file, within user's outputs directory, no symlinks, traversal, reserved paths, etc.; fail the whole request if any validation fails. 4. Build the ZIP off the main event loop (e.g., using a thread pool) with limits on file count, per‑file size, total size, and build time; stream the completed ZIP only after successful construction. 5. Add UI action (button/link) for completed runs that calls the endpoint and handles the returned Blob. 6. Write unit tests for validation logic and integration tests that run a multi‑file delivery, call the endpoint, and verify the ZIP contents match the presented files. 7. Update documentation/API specs as needed.
最佳实践
First reproduce a run that emits multiple artifacts via present_files. Examine the run.delivery receipt to confirm the expected file list. Implement the endpoint incrementally: start with a stub that returns a static ZIP, then add file gathering, validation, and streaming. Test edge cases: symlinks, directory traversal, oversized files, concurrent modifications, and ensure the endpoint returns an error (no partial ZIP) when validation fails. Use existing authentication middleware; do not duplicate auth checks. Keep the ZIP compression method as ZIP_STORED to bound CPU usage. Add tests that simulate file replacement during archiving to verify the detection and failure‑closed behavior.
The issue has only received automated triage notices and a comment from a community member labeling it as a feature request awaiting approval; there is no explicit maintainer feedback or ongoing work, so we have no evidence of community activity beyond the triage bot.
我现在先做什么
Open the repository, find the file that defines the workflow step class or the composition helpers (e.g., src/workflow/Workflow.ts or src/workflow/controlFlow.ts), and examine how the child workflow ID is currently used to generate output keys in .parallel and .branch. Then write a small test that invokes a child workflow with a proposed invocationId and verify the current output key.
问题描述
Nested workflow composition currently forces the child workflow's definition ID to serve as both its identity and the key used by parents for results and output, preventing parents from giving a locally meaningful name to a reusable child. This limits ergonomics in patterns like .parallel() and .branch() where output keys are tied to the child's definition ID, and forces extra mapping steps just to rename keys. Allowing a separate local invocation ID would let parents reference the step by a chosen name while preserving the child's original ID for execution, persistence, and inspection.
工作内容
Add an optional invocationId parameter to workflow composition methods (.then, .parallel, .branch, .foreach, .dowhile, .dountil). Update internal step representation to store both the child's definition ID and the invocation ID. Modify .parallel and .branch to key output objects by invocation ID when provided, falling back to definition ID. Ensure TypeScript inference reflects the new keys. Update serialization/deserialization to persist both IDs. Write unit tests covering each composition method, nested combinations, and edge cases. Update documentation and run the CI suite to verify no regressions.
最佳实践
First reproduce the current behavior by creating a nested workflow and checking output keys or parent step references. Locate the workflow composition implementation in the codebase (likely in src/workflow/*.ts). Make minimal changes that pass existing tests. Add tests that assert both the child's definition ID and the invocation ID are stored and used correctly. Ensure serialization round‑trip preserves both IDs. Keep changes backward compatible; if invocationId is omitted, behavior should match today. Run the full test suite and request review from maintainers before merging.
Only the triage bot comment exists; no maintainer or community discussion yet, so there is no evidence of maintainer stance or ongoing work.
我现在先做什么
Locate the memory scope definitions in the codebase (e.g., search for 'scope' in src/memory/ directory) and examine how WorkingMemory and ObservationalMemory use the scope parameter to understand the current implementation.
问题描述
Mastra's memory system currently only supports thread or resource scopes, which forces a choice between isolating memory per user (via userId as resourceId) or sharing memory per team (via teamId as resourceId). Enterprises need both: private user-specific memory and shared team/org memory concurrently. Without hierarchical scoping, agents cannot simultaneously access isolated user preferences and collaborative team context, limiting multi-tenant applications.
工作内容
Examine memory-related files (e.g., src/memory/workingMemory.ts, src/memory/observationalMemory.ts, src/memory/memoryConfig.ts). Add support for hierarchical scopes, e.g., allow scope to be an array like ['user','team'] or accept multiple resourceId bindings. Update WorkingMemory constructor and methods to accept and combine scopes. Ensure backward compatibility with existing string scopes. Add unit tests for new scope combinations and verify isolation/sharing behavior. Update documentation and JSDoc to reflect new usage.
最佳实践
First reproduce existing behavior with thread/resource scopes to ensure no regression. Follow the existing pattern for scope handling; keep changes minimal and isolated to memory layer. Write tests covering edge cases (empty scopes, mixed types). Run CI and ensure lint passes. Open a draft PR early to get maintainer feedback on design before implementing full solution.
Commenters show interest (razdgann suggests accounting improvements, michaelmanly offers to help test) and the author indicates they will test the fix in the upcoming v1.102.0 release. No explicit maintainer acknowledgment yet, but there is engagement.
我现在先做什么
Deploy a local LiteLLM proxy backed by PostgreSQL, configure two Azure OpenAI deployments sharing a key, use the Admin UI to rename a model alias, then manually trigger a price-data reload and observe whether subsequent requests log zero spend.
问题描述
An Admin UI edit of a model alias causes LiteLLM to persist catalog-derived pricing fields (input/output cost, cache, priority, etc.) into the deployment's model_info record. After a subsequent automatic price-data reload, these persisted custom prices interfere with cost calculation, causing successful Azure requests to be logged with zero spend despite actual token usage and correct provider metadata. This leads to inaccurate cost reporting and spend tracking.
工作内容
1. Set up a local LiteLLM proxy with PostgreSQL backend and configure multiple Azure OpenAI deployments sharing a credential. 2. Use the Admin UI to rename a model alias without changing pricing. 3. Trigger a price-data reload (wait for the scheduled interval or call the reload endpoint). 4. Send requests to the deployments and verify that spend is recorded correctly before and after the reload. 5. Locate the code path where Admin UI saves model_info (likely in the proxy's model management endpoint) and ensure derived pricing fields are stripped before persisting. 6. Add unit/integration tests that simulate the UI edit, reload, and cost verification.
最佳实践
First reproduce the issue locally to confirm the exact conditions. Isolate the change to the model-info persistence logic, making the minimal modification to strip derived cost fields. Verify that existing functionality (explicit custom pricing, cost-map reloads) remains intact. Add a test that asserts spend is non-zero after a reload when no explicit cost overrides are present. Follow the project's PR template, update any relevant documentation, and request review from maintainers.
Maintainer @pragati243 and contributor @gosucore have discussed trade‑offs; @Srijan229 and @Nakagawa-master have added further analysis. No decision has been made yet, indicating active interest but pending maintainer guidance.
我现在先做什么
先确认 issue 仍能复现,再搜索相关代码和测试。
问题描述
The `update_ref_doc()` method currently deletes the old document before inserting the new one. If the insert operation fails after the delete succeeds, the document becomes temporarily or permanently unavailable, creating a failure window that is unsafe for production ingestion pipelines.
工作内容
1. Locate the sync and async implementations of `update_ref_doc()` across the core index and storage backends. 2. Design an opt-in safe replacement mode (e.g., `safe=True` or `insert_first=True`) that performs insert‑then‑delete or uses backend‑specific atomic replace when available. 3. Refactor the method so all fallible preparation steps (parsing, transformation, embedding, validation) happen before any mutation of the existing document. 4. Add regression tests that simulate insertion failure to verify the old document remains accessible. 5. Ensure async/sync parity and update documentation for the new flag.
最佳实践
First reproduce the failure window by mocking a failing insert after delete. Read the existing `update_ref_doc`, `delete_ref_doc`, and `insert` flow in the base classes and specific vector/store implementations. Keep the current default behavior unchanged to avoid breaking changes. Implement the safe mode as an optional parameter, guard it with clear docstrings, and add unit tests covering success, preparation failure, and insertion failure for both sync and async paths. Finally, run the existing test suite to ensure no regressions.
No comments or activity from maintainers on this issue; no evidence of ongoing work.
我现在先做什么
Open the file containing MongoDBAtlasVectorSearch (likely in llama_index/vector_stores/mongodb_atlas.py) and search for where the vector search query is built; identify the place to inject autoEmbed and reranker parameters.
问题描述
The MongoDBAtlasVectorSearch integration in LlamaIndex currently lacks support for MongoDB Atlas's autoEmbed feature and the native reranker stage. Users who want to leverage these capabilities must either manually handle embedding or forego reranking, limiting the usefulness of the vector store for advanced RAG pipelines.
工作内容
Locate the MongoDBAtlasVectorSearch class, examine how vector search options are passed to the MongoDB driver, add new parameters for autoEmbed configuration and reranker stage, ensure they are optional and backward‑compatible, update docstrings and any example usage, add unit tests that verify the new options are correctly forwarded, and update the relevant documentation section.
最佳实践
First check existing vector store implementations (e.g., PineconeVectorSearch, QdrantVectorSearch) to see how they expose driver‑specific features; keep the API consistent; write minimal changes that only affect the MongoDB path; add tests that mock the MongoDB client to assert the options are included; run the existing test suite to ensure no regression; open a draft PR for early maintainer feedback.
Open the artifact panel source code, find where artifact MIME types are handled, and add a temporary log to confirm that CSV/TSV artifacts reach that path; then experiment with Papa Parse in a worker to render a simple table of the first 20 rows.
问题描述
DeerFlow currently shows CSV/TSV artifacts as raw text, forcing users to download or parse delimiters to inspect column names and sample rows. This adds friction during data‑analysis workflows where a quick glance at the data would keep the conversation flowing. Implementing a read‑only table preview directly in the artifact panel would let users immediately see structure and a few records without leaving the UI.
工作内容
Locate the artifact rendering code in the frontend (likely in the artifact panel component). Add a MIME‑type check for text/csv and text/tsv, then render a table view using Papa Parse inside a cancellable Web Worker. Implement pagination, horizontal scrolling, and a limit of 200 rows × 50 columns. Keep the existing source view and download button accessible. Write unit tests for the preview component and update any relevant documentation or storybook entries.
最佳实践
First reproduce the issue by generating a CSV/TSV artifact and confirming it appears as plain text. Read the existing artifact panel implementation to understand how extensions are added. Keep changes isolated to a new preview sub‑component to minimize risk. Use a worker to avoid blocking the UI, and expose a cleanup mechanism to terminate the worker on artifact change. Verify behavior with edge cases (no header, empty file, very wide rows). Ensure the preview respects the existing theme and accessibility standards.
Issue is awaiting maintainer triage (needs triage label). The author has referenced a related issue and a maintainer has expressed interest, but there is no explicit approval or assigned work yet.
我现在先做什么
Open packages/core/src/agent/workflows/prepare-step/map-results-step.ts and locate where the span is ended on suspend; examine how the span is created and stored so you can prevent ending it and instead keep a reference for later resume.
问题描述
When an agent suspends for tool-call approval, the original AGENT_RUN span is ended with a suspended status, causing Langfuse to treat that suspend payload as the trace output. After resume a new span is created, but Langfuse still reads input/output from the original (now-ended) root span, so the session view shows the suspension message instead of the final assistant reply. The desired behavior is to keep a single logical turn root across suspend/resume, preserving the original user message as input and the final assistant response as output.
工作内容
Modify the suspend flow in packages/core/src/agent/workflows/prepare-stream/map-results-step.ts to avoid ending the original span and instead keep it open; update the resume flow in packages/core/src/agent/agent.ts to reuse the same span or propagate the final output back to the original root; adjust @mastra/langfuse exporter to set langfuse.trace.output on the root span when a resumed span finishes; add or update tests (e.g., resume-span-tracing.test.ts) to verify that the trace input/output reflect the full turn.
最佳实践
First reproduce the issue by running an agent with a tool-call approval and inspecting the Langfuse trace; make minimal changes that do not mutate already-exported suspend spans; ensure existing tests pass; add a test case that asserts the trace output equals the final assistant message after resume; keep changes backward compatible and document any new behavior in relevant README or comments.
Only the automated triage notice from the mastra‑needs‑triage bot is present; there is no maintainer comment or ongoing discussion, so there is no clear signal of community engagement beyond the initial report.
我现在先做什么
Clone the repository, run the reproduction script from the issue to verify that processes remain after a timeout, then examine `src/dockerProcessHandle.ts` (or equivalent) to see the current `kill()` implementation.
问题描述
The `@mastra/docker` DockerSandbox reports exit code 137 when a command times out or `handle.kill()` is called, but the processes started by that command continue to run inside the container. This happens because `DockerProcessHandle.kill()` uses the PID from the Docker daemon's namespace (obtained via `exec.inspect().Pid`) and attempts to kill it inside the container, where that PID refers to nothing or an unrelated process. Consequently, the kill is ineffective, orphaned child processes accumulate as zombies, and the container's pidsLimit is eventually exhausted, causing subsequent commands to fail.
工作内容
1. Locate the `@mastra/docker` source, specifically `DockerSandbox` and `DockerProcessHandle.kill()`.
2. Understand how Docker exec IDs map to processes inside the container (e.g., using `docker exec` to run a marker‑based cleanup or using `nsenter` to enter the container’s PID namespace).
3. Modify `kill()` to reliably terminate the target process and all its descendants inside the container (e.g., by tagging the exec with a unique env var and running a second exec that finds and kills all processes bearing that marker, or by using `docker exec <container> nsenter --target 1 --pid -- kill -9 <pid>`).
4. Ensure the container’s default command reaps zombies (consider exposing `HostConfig.Init` or adding a reaping init process).
5. Add automated tests that verify: after a timeout or manual kill, no stray processes remain, pids.current returns to its baseline, and concurrent commands succeed.
6. Update documentation if any new configuration options are introduced.
最佳实践
First reproduce the issue using the provided snippet to confirm the stray processes. Read the existing `DockerProcessHandle.kill()` code and surrounding Docker SDK calls. Make minimal changes that isolate the kill logic to a helper function. Test with both simple commands (`sleep`) and more complex workloads (e.g., headless Chromium) to ensure child processes are reaped. Verify that the fix does not break existing behavior for commands that finish within timeout. Keep the change backward compatible and avoid introducing privileged flags unless absolutely necessary.
Only the triage bot has commented; there is no evidence of maintainer discussion or activity on the issue.
我现在先做什么
Review the code introduced in PR #23024 to find where background task execution state is stored and where the stale‑task recovery check occurs; then attempt to run two manager instances against the same storage to observe the current unsafe behavior.
问题描述
The background task executor currently stores ownership only in-process. When multiple Mastra managers share the same storage, a task marked as running cannot be safely reclaimed because there is no way to prove the original owner is dead. This leads to possible duplicate execution or premature reclamation during stale-task recovery.
工作内容
Add a persisted ownership record (owner ID + lease expiry) for each background task; implement atomic acquire/reclaim operations on the storage layer; add a heartbeat mechanism to renew leases; fence writes (completion, failure, cancellation, retry) so a superseded owner cannot commit terminal state; evaluate and document the default value of recoverStaleTasksOnStart; preserve existing process-affine routing; write unit and integration tests covering concurrent managers, restarts, and lease expiry.
最佳实践
First examine PR #23024 to locate the current executor and storage interfaces; reproduce the race by running two managers against a shared store and attempting to reclaim a running task; implement the lease logic as a thin wrapper around existing storage calls; keep changes minimal and follow the project's error-handling and testing patterns; add tests that simulate manager restarts and lease expiration; update any relevant documentation or comments about the stale-task recovery flag.
Only the author has pinged a maintainer (@Vidit-Ostwal) with no response; there is no further discussion or maintainer acknowledgment.
我现在先做什么
Locate the MongoDBVectorSearchTool implementation (lib/crewai-tools/src/crewai_tools/tools/mongodb_vector_search_tool) and copy its structure as a starting point for the Azure tool, then verify which Azure SDK packages are needed for vector search operations.
问题描述
Users who want to use Azure DocumentDB as a vector store for CrewAI agents currently lack a dedicated tool and must write custom retrieval code, duplicating connection handling, embedding generation, indexing guidance, and query logic that already exists for MongoDB.
工作内容
Create a new tool package under crewai_tools/tools/azure_documentdb_vector_search_tool/ implementing AzureDocumentDBVectorSearchTool, its config and schema classes; reuse CrewAI's embedding pattern; add unit tests and a basic integration test (using mocks or Azure emulator); document setup, environment variables, ingestion example, and agent usage in a README; expose the tool in the package's __init__.py; ensure optional dependency handling.
最佳实践
Study the existing MongoDBVectorSearchTool for structure and patterns; keep Azure-specific concerns isolated; make the Azure SDK an optional dependency; write tests that mock Azure calls to avoid requiring a real DB in CI; follow the project's contributing guide for code style and PR template; update documentation and examples before requesting review.
No evidence of recent discussion or maintainer feedback; the issue has zero comments.
我现在先做什么
先确认 issue 仍能复现,再搜索相关代码和测试。
问题描述
The issue requests a supported way for asynchronous Agent/Team runs to use synchronous storage adapters without requiring users to patch private Agno functions. Currently, async runs bypass the event loop by replacing internal session‑persistence helpers, which breaks on upgrades and misses certain paths like Team continuations or worker writes. A clean, typed async boundary is needed to preserve snapshot ordering, cancellation handling, and FIFO semantics while letting storage owners keep control over scheduling.
工作内容
Examine BaseDb and its sync persistence methods; understand how Agent and Team invoke them for session reads, session‑row writes, and run writes. Design and add async counterparts (e.g., async_save_session, async_load_session) that preserve preparation semantics, snapshot isolation, and ordering guarantees. Update Agent/Team code paths to route through the new async boundary when running in an async context, ensuring worker/fork paths either participate with fencing or are explicitly excluded. Write unit/integration tests using a recording adapter to verify no bypasses and that persisted state matches sync behavior. Update documentation and provide a migration guide for users currently relying on private function replacements.
最佳实践
First reproduce the existing private‑patch workflow in a test to confirm the exact behavior that must be preserved. Follow the project's async patterns (e.g., using anyio or asyncio threads) and keep the default behavior of sync adapters unchanged (thread‑affine). Make changes minimal and backward‑compatible: existing sync adapters should continue to work without modification. Add comprehensive tests covering normal saves, Team continuations, fork/introduction writes, and worker fenced updates. Before opening a PR, discuss the proposed API on the issue to align with maintainers.
No comments or reactions on the issue; no evidence of maintainer or community discussion yet.
我现在先做什么
Download Olaservo's @olaservo/ext-skills prototype, examine its structure, and post a comment asking the maintainers whether the Skills APIs should live in a new workspace package or be added to the existing client/server packages, and whether resources/directory/read should be included in the first phase.
问题描述
The SEP-2640 Skills extension is standardized and has conformance tests, but the TypeScript SDK lacks dedicated APIs for it. Users currently need to implement custom handlers, which duplicates effort and reduces discoverability. Adding first-class Skills APIs would let developers use the extension via idiomatic SDK methods and ensure compliance with the conformance suite.
工作内容
1. Extract shared schemas/types from Olaservo's prototype and add them to the SDK (e.g., skill definitions, request/response structures). 2. Implement server-side registration helpers and filesystem discovery for skill resources. 3. Implement client-side helpers for skills/list and skills/get calls, plus verified resource reads. 4. Optionally add resources/directory/read support, documentation, and examples. 5. Write unit/integration tests and run the conformance test from modelcontextprotocol/conformance#330 to verify correctness.
最佳实践
Start by reviewing Olaservo's Apache-2.0 code and the conformance test to understand the exact API surface. Keep changes minimal: add new files under appropriate packages (client/server or a new workspace package) and export only the needed functions. Write tests before implementation where possible, and ensure linting and type checking pass. Open a short discussion with maintainers to decide on package placement and whether to include resources/directory/read in the first phase.
One comment from a user offering help; no maintainer response or indication of interest.
我现在先做什么
Look for an existing tool-using agent example in the CrewAI repository (e.g., in examples/ or tests/) that can be run with minimal setup; if none exists, draft a simple agent that uses a built-in tool like a calculator or HTTP request.
问题描述
The user wants to obtain a live runtime trace from a CrewAI agent using the SABLE reliability evaluator to demonstrate agent reliability. They do not require any changes to CrewAI; they just need a runnable CrewAI agent that uses tools, whose tool calls and state can be captured for SABLE's deterministic replay.
工作内容
Identify or create a minimal CrewAI agent that uses at least one tool (e.g., a web search or calculator). Run the agent with SABLE's instrumentation to capture tool calls/results and state hashes. Generate the trace artifact and upload it to GitHub Actions as proof.
最佳实践
First reproduce a simple tool-using agent from CrewAI examples. Ensure the agent runs deterministically or log enough info for SABLE. Use SABLE's quickstart to integrate tracing. Keep changes minimal; if no code change is needed, just document steps. Verify the trace can be replayed by SABLE's evaluator.
Only one comment from a maintainer asking for clarification; no further discussion or indication of work in progress.
我现在先做什么
Set up a minimal Azure AI Foundry agent with Code Interpreter, publish it to Microsoft 365 Copilot/Teams, trigger a file generation, and capture the download link and its HTTP response to confirm the failure mode.
问题描述
The issue reports that downloadable files generated by a Code Interpreter-enabled Azure AI Foundry agent work when tested inside Foundry, but after publishing the agent to Microsoft 365 Copilot and Microsoft Teams the download links become unresponsive. The user wants to know whether this functionality is supposed to work post‑publish, if it is a known limitation that should be documented, or if there is a bug/workaround to fix the broken links.
工作内容
Reproduce the scenario: create an Azure AI Foundry agent with Code Interpreter, publish it to M365 Copilot/Teams, trigger a file‑generation request, inspect the download URL and any HTTP responses (status, CORS, auth headers). Compare with the working Foundry case to identify where the link generation or delivery diverges (e.g., different domain, token scope, proxy). If the link is malformed or blocked, propose a fix (adjust URL generation, add proper CORS/auth headers, or update documentation if it is intentionally unsupported).
最佳实践
Start by reproducing the issue in a controlled environment; capture network traffic to see the exact failure point. Review the agent framework code that builds download links for Code Interpreter output, especially any environment‑specific configuration (Foundry vs. Copilot/Teams). Keep changes minimal: if a bug, fix the URL builder or add missing headers; if a limitation, update the publishing documentation with a clear note. Write a test that verifies the download link works after publishing, and add it to the CI if possible.
One community comment (@CryoThrust) offers design suggestions but no explicit maintainer endorsement or ongoing work. No clear signal that maintainers are actively planning or rejecting this feature.
我现在先做什么
Examine the existing workflow management API (e.g., endpoints under /api/workflows) and the current import/export logic to understand the data model and validation steps. Then sketch a minimal MCP read‑only endpoint (list workflows with basic metadata) and propose it in a comment to gather maintainer feedback before proceeding.
问题描述
The user wants to add Model Context Protocol (MCP) support to Dify's workflow application management layer so that external clients like Codex or Claude Code can programmatically list, create, update, import/export workflows and view logs. Currently they must manually edit workflow YAML files and re-import them via the UI, which is cumbersome for automated workflow maintenance. Implementing MCP would provide a programmable control‑plane interface, improving integration with AI‑assisted development tools and enabling smoother DevOps workflows.
工作内容
Design and implement MCP endpoints for workflow management: list/get workflows, create workflow, update workflow (with revision/ETag checks), import/export workflow DSL with validation and dry‑run support, and log retrieval. This involves adding MCP service definitions, integrating with existing workflow service and storage layer, ensuring proper authentication/authorization, adding version‑aware mutation handling, writing unit and integration tests, and updating documentation.
最佳实践
First clarify the control‑plane boundary: separate workflow definition mutation from runtime invocation/log streaming. Make every mutating operation revision‑aware (require expected version/ETag) to avoid silent overwrites. Treat export/import as a validated DSL transaction with schema/version checks and dry‑run feedback. Scope credentials and plugin bindings to workspace/tenant, never exposing secrets in MCP schemas or logs. For long‑running operations, return an operation ID and provide separate status/log retrieval endpoints. Start with a minimal read‑only slice (list/get plus validation metadata) to gather feedback before extending to mutating ops.
The issue is labeled "reproduced" and includes triage notes from the bot, indicating maintainers are aware of test failures but have not yet provided a fix or guidance. There is no evidence of an active fix or a maintainer response, so the community is waiting for a resolution.
我现在先做什么
Open the repo, read `python/packages/core/agent_framework/_workflows/_checkpoint_encoding.py` and the failing test `python/packages/core/tests/workflow/test_checkpoint_encode.py`. Run the specific test to see the failure, then start implementing collision detection and fallback to pickle for colliding dicts.
问题描述
Checkpoint encoding converts dictionary keys to strings via `str(k)` before writing JSON, causing distinct Python keys like `1` and `"1"` to collapse to the same JSON key and silently overwrite values. This data loss occurs when a workflow checkpoint stores a dict with colliding stringified keys, breaking data fidelity and reliability. The bug is valuable to fix because checkpoint storage must preserve exact state for recovery.
工作内容
Inspect `python/packages/core/agent_framework/_workflows/_checkpoint_encoding.py` to understand the current encode/decode logic. Add collision detection: when `len({str(k) for k in value}) != len(value)`, the dict should be serialized via the existing pickle envelope (the reserved marker). Update decode logic to correctly restore pickled dicts. Add a test case (`test_encode_round_trips_dict_with_colliding_stringified_keys`) that validates the fix and ensure existing non‑colliding tests still pass.
最佳实践
Keep changes minimal to preserve backward compatibility for non‑colliding dicts. Run the full test suite to avoid regressions. Follow the repository's conventions for error handling and use existing markers/pickle envelope. Communicate with the maintainer before merging if any design doubts arise.
A contributor (QianJinGuo) has explicitly volunteered to take the issue and outlined an incremental plan; maintainers have not yet assigned it, and there is no opposing feedback.
我现在先做什么
Review the recent ABC‑to‑Protocol PRs (#37200, #37201, #37182, #37199) and the stub examples mentioned by Dosu, then inspect api/libs/smtp.py and api/libs/sendgrid.py to understand their current interfaces and draft the corresponding Protocol definitions.
问题描述
The issue asks to replace heavy use of @patch/Mock in unit tests with typing.Protocol-defined interfaces, allowing lightweight stub/fake implementations for testing and enabling property-based/fuzz testing. Currently many tests patch external services like SMTP and SendGrid, leading to brittle test suites.
工作内容
Define typing.Protocol contracts for the SMTP and SendGrid client modules (api/libs/smtp.py, api/libs/sendgrid.py), create concrete stub/fake classes that implement these protocols, update the corresponding unit tests to use the stubs (and optionally Hypothesis for property-based testing), and remove unnecessary @patch/mock usage while preserving needed isolation.
最佳实践
Follow the existing Protocol-to-ABC migration examples in the repo (e.g., InMemoryPauseStore, InMemoryHumanInputFormRepository). Ensure stubs faithfully mimic the minimal behavior required by callers. Run the full test suite after changes to confirm no regression. Add a few property-based tests to demonstrate the benefit. Keep mocks only where external side effects are truly needed.
No maintainer feedback beyond the author’s query and a bot comment about Dosu; there is no explicit endorsement or discussion, so there is no clear community signal.
我现在先做什么
Open the agent retirement service (api/services/agent/retirement_service.py) and its test file, run the existing tests to see what is currently covered, and note which aspects of the proposed contracts are already tested.
问题描述
The issue asks to strengthen backend tests so they verify business contracts and invariants, moving beyond shallow assertions to catch plausible business errors such as missing tenant filters, partial updates after failure, or duplicate effects. It proposes a phased approach beginning with the agent retirement/cleanup lifecycle to define contracts, map existing tests, and add or improve test cases that validate observable outcomes and failure behavior.
工作内容
Read the agent retirement and deletion services and their test files; define 5-10 explicit contracts covering outcomes, ownership, isolation, repetition, failure, and irrelevant changes; map current tests to these contracts to identify gaps and overly implementation‑specific assertions; add or modify test cases to assert the contracts using the public entry point and SQLite (or PostgreSQL) database; ensure the new tests fail on plausible incorrect implementations; update any relevant documentation or comments.
最佳实践
Focus on observable behavior and public APIs; avoid asserting internal call structures unless they are part of the contract; start with concrete failure scenarios that would indicate a business bug; keep changes minimal and targeted; run the full test suite to prevent regressions; discuss contract definitions with maintainers before implementing large changes.
Maintainer @Vidit-Ostwal assigned the issue to the author, indicating openness to the feature; no opposing or dismissive comments are present.
我现在先做什么
Examine an existing tool implementation (e.g., YouTubeSearchTool) to understand the expected structure, then create a skeleton SupabaseTool file with the class definition, constructor, and a stub run method that prints the action dict.
问题描述
CrewAI lacks a built-in tool for interacting with Supabase, forcing developers who want to store conversation history, agent memory, logs, or structured data to write custom integration code. Adding a SupabaseTool would provide a standardized, reusable way for agents to perform CRUD operations on Supabase tables, aligning with the existing tool ecosystem.
工作内容
Create a new SupabaseTool class following the pattern of existing tools (e.g., YouTubeSearchTool). Use the official supabase-py client, accept SUPABASE_URL and SUPABASE_KEY via constructor or environment variables, expose a run(action_dict) method supporting insert, select, update, and delete actions. Add unit tests for each operation, update the documentation/tool reference, and provide a simple usage example.
最佳实践
Mirror the implementation style of current CrewAI tools: keep the class lightweight, handle missing credentials gracefully, write tests that mock the Supabase client to avoid external dependencies, ensure the PR includes clear description and links to the issue, and respond promptly to reviewer feedback.
No maintainer comments or reactions on the issue; no evidence of community discussion or endorsement.
我现在先做什么
Read the existing Evaluator protocol and any current evaluator samples in the repository to understand the required interface, then try installing Hermes Rubric in a temporary virtual environment to inspect its assessment output format.
问题描述
The user wants a documented example of a third-party Python evaluator that uses the Agent Framework's Evaluator protocol while preserving Hermes Rubric's evidence metadata (citations, coverage, receipt) instead of collapsing results to a bare score. This would help users who need detailed provenance from evaluations without losing interpretability. The request is made before any code is written, seeking maintainer guidance on where the sample should live and how to handle item status mapping.
工作内容
Implement a sample evaluator class that imports the Framework's EvalItem, EvalResults, etc., calls Hermes Rubric's assess_async, maps aggregate and per-dimension scores to EvalScoreResult, stores evidence, coverage, limitations, and receipt in EvalScoreResult.sample or EvalItemResult.metadata, translates AssessmentError to item status='error' with error_code/message, and provides no default rubric/backend. Add unit tests covering successful mapping, partial coverage, error handling, and missing optional dependency. Update documentation or add a file under python/samples (or note external location) with installation instructions.
最佳实践
First examine existing evaluator samples and the Evaluator protocol definition to match signatures and return types. Use a mock or isolated test environment for Hermes Rubric to avoid external dependencies during unit tests. Keep the sample lightweight: no default rubric, no pass/fail logic, and explicit error propagation. Ensure the optional dependency is imported lazily with a clear ImportError if missing. Follow the repo's contribution checklist for code style, type hints, and docstrings.
Only the automated triage bot notice and one external comment from @shleder about sandbox boundary on resume; no maintainer feedback or discussion yet.
我现在先做什么
Review the existing @mastra/acp package and the Workflow/Workspace APIs to understand current extension points, then sketch a minimal adapter interface in TypeScript that captures session lifecycle operations and capability reporting.
问题描述
Mastra currently integrates coding agents only at the transport level via ACP, leaving session persistence, sandbox lifecycle, cancellation, and observability to user code. This means workflow durability can be lost when workers restart, workflows are cancelled, or approvals suspend execution, requiring custom coordination to avoid orphaned processes or duplicate runs.
工作内容
Design a coding-agent adapter interface; implement an ACP-based adapter; integrate adapter executions as durable child steps of workflows (propagating cancellation, suspend/resume, sandbox reattachment); add event streaming for commands, tool use, file changes; hook into Mastra's observability/Studio; write unit and integration tests; update documentation.
最佳实践
First, study @mastra/acp, Workflow, and Workspace code to locate extension points. Draft a minimal TypeScript adapter contract covering start, reconnect, sendInput, interrupt, suspend, resume, cancel, status, and capabilities. Build a prototype for ACP, ensuring sandbox boundary is reapplied on resume. Verify workflow cancellation propagates, test resume after worker restart prevents duplicate runs, and validate observability emits expected events. Iterate with maintainer feedback before expanding to other agents.
One comment from maintainer willem-bd advises to narrow the scope, clarify offline vs online dependencies, align with #5238 on retrieval contracts, and define data consistency and opt‑in mechanics; indicates need for further discussion before acceptance.
我现在先做什么
Examine the feat/rag-knowledge-base branch to see the current implementation, run its tests locally, and then ask maintainers for clarification on offline deployment scope, dependency choices, and how to split work into independently deliverable milestones.
问题描述
The issue proposes adding an optional built‑in knowledge‑base subsystem (Harness RAG) to DeerFlow that provides offline‑capable parsing, embedding, indexing, and three retrieval tools with a workspace UI, diverging from the current external‑engine‑only RAG approach. It seeks maintainer feedback on whether this direction aligns with project goals and how it relates to existing external‑RAG efforts (#5238) and the LLM Wiki memory concept.
工作内容
Implement backend services (knowledge_service.py, routers, config), add Alembic migrations for new tables, integrate Qdrant/embedding pipeline, add three built‑in retrieval tools (hybrid_search/wiki_search/graph_search) with opt‑in tool group, develop frontend workspace knowledge UI (document list, tabs, parsing progress), enforce owner‑based access control, add unit/integration tests, update config.example.yaml and documentation, ensure CI passes.
最佳实践
First review the feat/rag-knowledge-base branch and run its tests to understand current state; clarify offline deployment dependencies and scope with maintainers; implement work in vertical slices (backend API → UI → tools) behind feature flags; write tests for each component; keep migrations backward compatible; keep opt‑in default to preserve existing behavior; document deployment requirements and offline alternatives.
Hard 3-5 days to prototype, 1-2 weeks for a production‑ready integration
可处理性
Level 2 Solvable but Costly
清晰度 / 值得做
Partial / Maybe
社区信号
Only the author and one commenter discuss the idea; no maintainer or triager has responded, indicating no explicit community endorsement or opposition.
我现在先做什么
Clone the Foundgine .NET repository, run its samples to understand how to call its semantic resolution and execution APIs, and identify the corresponding extension points in the agent framework where tool execution is invoked.
问题描述
The issue proposes integrating Foundgine, a semantic execution layer, beneath the Microsoft Agent Framework to provide a unified boundary for intent resolution, authorization, validation, and execution. Currently, agent tools may directly access application capabilities, leading to duplicated authorization and validation logic. Adding Foundgine would centralize these concerns, but the issue does not specify a concrete problem or missing functionality in the existing codebase.
工作内容
Study Foundgine's .NET API, design an abstraction layer within the agent framework to route agent intents through Foundgine, implement the glue code, add unit tests for intent resolution and execution, update documentation, and ensure compatibility with existing providers.
最佳实践
First reproduce a simple agent tool call, then locate where the framework invokes tool execution. Create a minimal interface that delegates to Foundgine, implement it behind a feature flag, write tests that verify authorization and plan enforcement, and iterate with maintainer feedback before expanding scope.
No explicit maintainer endorsement; only a comment from CryoThrust offering design feedback. No evidence of maintainer activity or assigned owner.
我现在先做什么
Locate the OpenAPI group code (likely under /api/openapi or similar) and review how existing resources are defined; then examine the community Terraform provider prototype to list the exact workspace resources that need to be exposed via OpenAPI.
问题描述
The issue proposes adding IaC support to Dify's OpenAPI group so that entire workspaces—including apps, plugins, credentials, datasets, and their dependencies—can be defined, versioned, and deployed consistently across environments. Currently Dify only allows exporting/importing individual application DSLs, which does not cover workspace‑level migration or secret handling.
工作内容
Examine the existing OpenAPI implementation to understand how resources are exposed; design a workspace‑level resource schema (apps, plugins, credentials, datasets) with stable IDs and explicit dependency edges; implement CRUD endpoints for these resources, adding idempotent apply/plan/dry‑run logic, secret‑reference handling, and import/version‑migration safety checks; write unit/integration tests; update OpenAPI spec and documentation.
最佳实践
Follow the current pattern for defining OpenAPI resources in the repo; start with a minimal MVP (e.g., workspace CRUD) before adding dependency resolution; ensure secrets are only references or write‑only bindings; implement a plan/dry‑run phase and revision‑aware apply; add automated tests for idempotency and error cases; keep changes backward compatible and update the OpenAPI spec accordingly.
Only the issue author has commented, sharing a blog post about the spec. No maintainer responses or signs of ongoing work are visible.
我现在先做什么
Find the Python MCP client/server module (likely under agent_framework/services/mcp or similar), examine how the current initialize handshake and session ID are used, and write a quick prototype that builds a stateless request with _meta fields for a single method (e.g., tools/list) to confirm the version detection approach works.
问题描述
The Python MCP integration currently relies on the 2025-era session-based model (initialize handshake, Mcp-Session-Id, stateful streams). The 2026-07-28 revision of the Model Context Protocol removes sessions and the handshake, makes each request self-contained with version/capabilities in _meta, introduces server/discover, changes subscriptions/listen, moves tasks to an extension, updates MRTR patterns, and requires resultType on all results. The agent-framework Python SDK must be updated to support this stateless revision while preserving compatibility with existing 2025-era servers and clients.
工作内容
Locate the MCP client/server implementation in the Python SDK; add version detection logic to choose between 2025 and 2026-07-28 modes; refactor request building to embed protocolVersion/clientCapabilities/_meta and drop Mcp-Session-Id handling; implement server/discover endpoint; adjust subscriptions/listen to use the new POST-response stream pattern; update tasks handling to reflect the moved extension; enforce resultType presence and map missing values to 'complete'; ensure MRTR works via InputRequiredResult and inputResponses; modify error mapping (McpError → MCPError) and any snake_case/camelCase changes as noted in #7446; add unit tests for both protocol eras; update documentation and examples; run existing test suite to confirm backward compatibility.
最佳实践
Start by reading the existing MCP wrapper code and the .NET PRs (#7773, #7774, #7824) to see how version negotiation was implemented there; create a small spike that statelessly calls tools/list against a mock 2026-07-28 server to verify _meta handling; use feature flags or runtime version detection rather than hard‑coding; keep the 2025‑era code paths intact and guard them with version checks; write tests that exercise both eras and verify that mismatched versions raise UnsupportedProtocolVersionError; run the full test suite before opening a PR; keep changes focused and submit incremental PRs if needed.