从 raw_id 中提取最后一个符合 call_... 模式的 id,若无匹配则返回原值或 None
(raw_id)
| 371 | |
| 372 | |
| 373 | def _extract_tool_id(raw_id): |
| 374 | """从 raw_id 中提取最后一个符合 call_... 模式的 id,若无匹配则返回原值或 None""" |
| 375 | if not raw_id: |
| 376 | return None |
| 377 | if not isinstance(raw_id, str): |
| 378 | raw_id = str(raw_id) |
| 379 | |
| 380 | s = raw_id |
| 381 | prefix = "call_" |
| 382 | positions = [m.start() for m in re.finditer(re.escape(prefix), s)] |
| 383 | if not positions: |
| 384 | return raw_id |
| 385 | |
| 386 | # 取最后一个前缀位置,截到下一个前缀或结尾 |
| 387 | start = positions[-1] |
| 388 | end = len(s) |
| 389 | for pos in positions: |
| 390 | if pos > start: |
| 391 | end = pos |
| 392 | break |
| 393 | |
| 394 | tool_id = s[start:end] |
| 395 | return tool_id or raw_id |
| 396 | |
| 397 | |
| 398 | async def _initialize_skills(mcp_servers, temp_dir): |
no test coverage detected