✨ feat(vscode): 代码阅读认出 Python 数据类(@dataclass),整块换成「数据类」卡片,选项和字段的默认值、field 参数写成大白话

This commit is contained in:
cruldra committed 2026-09-26 23:31:06 +08:00
1 parent 6f2c220908
commit c5c5d2b517
10 files changed
+709 -78

No files matched your search

@@ -0,0 +1,56 @@
# luffy-agent-platform 的 backend/src/luffy_agent/user/repositories.py、commerce/payments/_driver.py、core/sms/services.py、sandbox/runtime.py 节选:dataclasses 库规则的样例
from __future__ import annotations
from dataclasses import dataclass, field
from typing import Any, Literal
@dataclass(frozen=True)
class AdminUserRow:
"""admin 用户列表单行: 用户 + 归属渠道 + 是否曾被邀请。"""
user: User
channel: AcquisitionChannel
referred: bool
@dataclass(frozen=True, slots=True)
class RedirectPayResult:
payment_url: str
pay_action: Literal["redirect"] = field(init=False, default="redirect")
@dataclass(frozen=True, slots=True)
class SmsSent:
"""短信发送成功。"""
message_id: str
raw: dict[str, Any] = field(default_factory=dict)
@dataclass(frozen=True, slots=True)
class SandboxAccess:
"""sandbox 类工具的最小资源集 (任何沙箱工具都需要).
Attributes:
sandbox: 本 session 独占的 ``CodeSandbox`` 实例 (Protocol, 实际由
adapter 如 daytona / volcengine 提供).
sandbox_id: sandbox 唯一 id, 标识工作区所在沙箱.
session_id: agent session id (UUID 字符串); 工具签名里声明了
``session_id`` 参数的沙箱工具由此注入, 日志/链路追踪也用它.
app_id: 沙箱所属应用 id; 工作区仓库、侧车、版本线都按它定位. 不挂应用的
临时沙箱 (审阅用的制品工作区、MCP 预热) 为 None.
binding: 该沙箱当前的 :class:`SandboxBinding`, 构造时按 ``sandbox_id`` 查出
(查不到即已销毁)。不是入参 —— 令牌只能由交出沙箱的一方登记.
"""
sandbox: CodeSandbox
sandbox_id: str
app_id: str | None = None
session_id: str | None = None
binding: SandboxBinding = field(init=False, compare=False, repr=False)
def __post_init__(self) -> None:
object.__setattr__(self, "binding", sandbox_binding(self.sandbox_id))