refactor(types): describe lazy log message object contract

This commit is contained in:
jxxghp
2026-10-16 17:33:49 +08:00
parent acb9b85f90
commit 9dd1ace301
3 changed files with 13 additions and 13 deletions

View File

@@ -913,7 +913,7 @@ class LoggerManager:
return
writer.write_log(level, message, log_path / logfile)
def logger(self, method: str, msg: str, *args: Any, **kwargs: Any) -> None:
def logger(self, method: str, msg: object, *args: Any, **kwargs: Any) -> None:
"""按调用来源路由并输出一条日志。
主日志等级过滤看 `current_plugin_instance_id()`;资源日志独立接收 DEBUG,
@@ -925,6 +925,8 @@ class LoggerManager:
经宿主公共方法转发调用时,栈顶是宿主而不是发起调用的插件,按它判等级
会认错来源。
消息可为文本、异常或其它可格式化对象;格式化留在日志分流内部,调用方无需预先转成字符串。
这里只是一道提前短路,省掉被丢弃日志的栈帧内省与格式化;控制台输出端
由 `_ContextLevelFilter` 用同一个判据再判一次,两处结论因而一致。
"""
@@ -963,31 +965,31 @@ class LoggerManager:
log_method = getattr(configured_logger, method, configured_logger.info)
log_method(formatted_msg, **kwargs)
def scoped_info(self, msg: str) -> None:
def scoped_info(self, msg: object) -> None:
"""仅向已绑定资源输出 INFO 摘要,保持主日志的批次摘要密度。"""
self.logger("info", msg, scope_only=True)
def info(self, msg: str, *args: Any, **kwargs: Any) -> None:
def info(self, msg: object, *args: Any, **kwargs: Any) -> None:
"""输出 INFO 日志。"""
self.logger("info", msg, *args, **kwargs)
def debug(self, msg: str, *args: Any, **kwargs: Any) -> None:
def debug(self, msg: object, *args: Any, **kwargs: Any) -> None:
"""输出 DEBUG 日志。"""
self.logger("debug", msg, *args, **kwargs)
def warning(self, msg: str, *args: Any, **kwargs: Any) -> None:
def warning(self, msg: object, *args: Any, **kwargs: Any) -> None:
"""输出 WARNING 日志。"""
self.logger("warning", msg, *args, **kwargs)
def warn(self, msg: str, *args: Any, **kwargs: Any) -> None:
def warn(self, msg: object, *args: Any, **kwargs: Any) -> None:
"""兼容历史调用并输出 WARNING 日志。"""
self.warning(msg, *args, **kwargs)
def error(self, msg: str, *args: Any, **kwargs: Any) -> None:
def error(self, msg: object, *args: Any, **kwargs: Any) -> None:
"""输出 ERROR 日志。"""
self.logger("error", msg, *args, **kwargs)
def critical(self, msg: str, *args: Any, **kwargs: Any) -> None:
def critical(self, msg: object, *args: Any, **kwargs: Any) -> None:
"""输出 CRITICAL 日志。"""
self.logger("critical", msg, *args, **kwargs)

View File

@@ -106,9 +106,9 @@ ARCH-201 至 ARCH-204 均达到实现、验证、提交、推送和远端门禁
| Model/Oper 事务债务 | 0 | 自建 Session、自动事务装饰器、直接 commit/rollback 等基线均为零 |
| Module Contract | 215 specs / 211 methods / 263 calls | 动态方法名为 0;分类事实富化通过显式合同进入插件调度,旧 YAML 分类方法已移除;download 新增 custom_words 可选参数,旧 provider 签名通过显式合同兼容 |
| Event Contract | 53 | 均已有 payload model,但当前全部是 diagnostic enforcement |
| Python 源码量 | 372,299 行 | 本次重新扫描物理行数,排除 `app/plugins/**`;74 个文件超过 1,000 行,12 个超过 2,000 行;源码尺寸仅作观察 |
| Python 源码量 | 372,301 行 | 本次重新扫描物理行数,排除 `app/plugins/**`;74 个文件超过 1,000 行,12 个超过 2,000 行;源码尺寸仅作观察 |
| 长方法 | 309 个超过 80 行 | 本次 AST 扫描排除 `app/plugins/**`;61 个超过 150 行,17 个超过 250 行;新增函数仍受 C901/嵌套深度门禁约束 |
| 全量 mypy 历史债务 | 8,843 / 460 文件 | 通知排版补齐 Slack 消息块类型,历史债务减少 2 项;工作流资源过滤改用领域对象调用过滤链,恢复的节点输出在消费前归一化,并收紧可空资源列表的类型低水位;消息媒体交互类型债务已清零,canonical Facade 与 endpoint 类型边界已补齐,低水位只允许继续下降;微信 ClawBot 入站 item_list 媒体解析改为按子项键名分派后,类型错误减少 4 项;站点解析器分享率改用浮点初值,类型错误减少 20 项;本次下载与文件安全修复再减少 3 项;Transmission 进度回退值归一化再减少 2 项,逐文件逐错误码无增长 |
| 全量 mypy 历史债务 | 8,840 / 460 文件 | 通知排版补齐 Slack 消息块类型,历史债务减少 2 项;工作流资源过滤改用领域对象调用过滤链,恢复的节点输出在消费前归一化,并收紧可空资源列表的类型低水位;消息媒体交互类型债务已清零,canonical Facade 与 endpoint 类型边界已补齐,低水位只允许继续下降;微信 ClawBot 入站 item_list 媒体解析改为按子项键名分派后,类型错误减少 4 项;站点解析器分享率改用浮点初值,类型错误减少 20 项;本次下载与文件安全修复再减少 3 项;Transmission 进度回退值归一化再减少 2 项,逐文件逐错误码无增长 |
| Ruff 历史诊断 | 98 | 低水位门禁通过,但规则集只覆盖 `E4/E7/E9/F/I` |
| 覆盖率固定基线 | Application 80.00%,Domain 80.00% | Chain、Runtime、Agent、Adapter、Startup 未进入包级覆盖率门禁 |

View File

@@ -118,7 +118,6 @@
"union-attr": 2
},
"app/agent/llm/provider.py": {
"arg-type": 1,
"no-untyped-def": 1
},
"app/agent/mcp.py": {
@@ -608,7 +607,6 @@
"type-arg": 5
},
"app/application/mediaserver.py": {
"arg-type": 1,
"operator": 1
},
"app/application/messaging/agent.py": {
@@ -790,7 +788,7 @@
"type-arg": 1
},
"app/chain/message.py": {
"arg-type": 18,
"arg-type": 17,
"assignment": 2,
"no-any-return": 11,
"no-untyped-def": 4,