# PR #28095 完整报告

- 仓库：`sgl-project/sglang`
- 标题：[Fix] Unquote ResponseTool annotation breaking lint on all PRs
- 合并时间：2026-06-13 06:20
- 原文链接：http://prhub.com.cn/sgl-project/sglang/pull/28095

---

# 执行摘要

- 一句话：修复被引号包裹的 ResponseTool 注解破坏所有 PR 的 lint
- 推荐动作：立即合并，无需深度审查。这是一个标准的 lint 修复，简单且必要。

# 功能与动机

PR #25881 引入了带引号的返回注解 `-> "ResponseTool"`，ruff 自动修正确认规则（UP037）会在 `pre-commit` 中修改该行，导致 `lint` job 报错 "files were modified by this hook"，从而阻塞所有 PR 的 CI 流程（首先在 #28089 上观察到）。

# 实现拆解

1. 定位文件：`python/sglang/srt/entrypoints/openai/protocol.py` 中 `ResponseTool` 类的 `validate_function_tool` 方法。
2. 修改内容：将返回注解中的引号移除，由 `"ResponseTool"` 改为 `ResponseTool`。
3. 验证：改动后 `pre-commit run` 通过，不再触发 UP037 自动修复。
4. 无其他文件或测试配套变更。

关键文件：
- `python/sglang/srt/entrypoints/openai/protocol.py`（模块 协议层；类别 source；类型 core-logic；符号 validate_function_tool）: 唯一修改的文件；将 validate_function_tool 方法的返回注解从带引号的 "ResponseTool" 改为不带引号的 ResponseTool，消除了 ruff 自动修复的触发点。

关键符号：validate_function_tool

## 关键源码片段

### `python/sglang/srt/entrypoints/openai/protocol.py`

唯一修改的文件；将 validate_function_tool 方法的返回注解从带引号的 "ResponseTool" 改为不带引号的 ResponseTool，消除了 ruff 自动修复的触发点。

```python
# file: python/sglang/srt/entrypoints/openai/protocol.py

class ResponseTool(BaseModel):
    type: RESPONSE_TOOL_TYPES = Field(description="Type of tool to enable")
    name: Optional[str] = None
    description: Optional[str] = None
    parameters: Optional[Dict[str, Any]] = None
    strict: bool = False
    tools: Optional[List[Dict[str, Any]]] = None

    @model_validator(mode="after")
    def validate_function_tool(self) -> ResponseTool:  # 原为 -> "ResponseTool"，引号触发 ruff 自动修复
        if self.type == "function" and not self.name:
            raise ValueError("Function tools must include a name.")
        return self

```

# 评论区精华

该 PR 无 review 评论，仅作者提及修复原因和立即效果。讨论主要来自 PR body，说明了 #25881 引入的问题，以及本 PR 的一行修复方案。

- 暂无高价值评论线程

# 风险与影响

- 风险：风险极低。仅修改一行返回注解的写法，不改变任何运行时行为（Python 中带引号和不带引号的注解在运行时等价）。回归风险几乎为零。
- 影响：影响范围：所有使用 `main` 分支的开发者及其 PR 的 CI 流程。修复后 `lint` job 恢复正常，不再因该文件变更而失败。对用户无直接影响，仅改善开发体验。
- 风险标记：无

# 关联脉络

- PR #25881 Fix Responses API request handling: 本 PR 修复的问题由 PR #25881 引入，该 PR 添加了带引号的 `validate_function_tool` 注解。