已合并
[Feature]Add AgentHint feature for agent inference #692
zengwei创建于 19 天前
[Feature]Add AgentHint feature for agent inference #692
已合并
Pull Request已成功合入, 合并人@tobking
(感谢 zengwei 的贡献)atomgit-bot
19 天前 评论:
19 天前 评论:
变更摘要
本 PR 为 Agent 推理引入 AgentHint 特性,允许客户端通过请求体中的 agent_hint 字段传递会话管理、KV 缓存控制和上下文编辑等提示信息。核心变更包括:新增 AgentHintInfo 等 Pydantic 数据模型用于解析和规范化客户端输入;新增 block_offset_translator 模块将消息级索引转换为 PagedAttention 块坐标;在请求验证、分发和调度链路中集成 agent_hint 的解析与块偏移附加逻辑,使调度器能够感知会话亲和性和上下文编辑意图。
主要改动
- 新增
agent_hint.py数据模型模块:定义AgentHintInfo、CacheControl、ContextEdit、ContextManagement等 Pydantic 模型,以及parse_agent_hint()解析函数和_resolve_session_ids()会话 ID 规范化逻辑,支持从请求体与 HTTP 头中联合解析 session 标识 - 新增
block_offset_translator.py块偏移转换模块:实现BaseBlockOffsetCalculator抽象基类及Dsv4BlockOffsetCalculator/StandardBlockOffsetCalculator两个模型族计算器,通过attach_block_offsets()将CacheControl.msg_offset和ContextEdit.start/end转换为 PagedAttention 的block_offset、intra_block_offset、token_offset坐标 - 修改请求验证逻辑以支持 session-targeted 编辑:在
inference_server.py中新增_has_session_target_edit()辅助函数,将_validate_openai_request的空消息列表校验拆分为两种错误信息,允许存在 session 目标编辑时消息列表为空 - 在请求分发链路中集成 agent_hint 解析:在
dispatch.py的__create_request_info中调用ensure_minimum_messages_for_session_edits()和parse_agent_hint(),将解析结果注入RequestInfo.agent_hint_info字段 - 在调度策略中集成块偏移附加:在
kv_cache_affinity.py的KvCacheAffinityPolicy中于消息编码后调用attach_block_offsets(),并在TokenizerManager中暴露is_dsv4属性以支持 tokenizer 类型判定


atomgit-bot
19 天前 评论:
19 天前 评论:
代码审查
Now let me write the closing summary.
审查总结
审查覆盖范围
已逐一审查全部 6 个变更文件:
| 文件 | 审查结论 |
|---|---|
motor/coordinator/api_server/inference_server.py |
发现 2 个问题 (P2×1, P3×1) |
motor/coordinator/domain/agent_hint.py |
发现 2 个问题 (P3×2) |
motor/coordinator/domain/block_offset_translator.py |
发现 1 个问题 (P2×1) |
motor/coordinator/models/request.py |
无问题 |
motor/coordinator/router/dispatch.py |
无问题 |
motor/coordinator/scheduler/policy/kv_cache_affinity.py |
发现 1 个问题 (P3×1) |
按优先级统计
- P0: 0
- P1: 0
- P2: 2
_has_session_target_edit未检查manage_request,导致校验绕过与消息注入逻辑不一致,可能让空 messages 到达下游apply_chat_template引发崩溃block_offset_translator.py中compute_edit_block_offset及_prefix_diff_block_offset缺少block_size ≤ 0防护,配置异常时ZeroDivisionError
- P3: 4
_parse_cache_control日志范围写错 ([0, n]应为[1, n])- 未使用的导入
model_validator和Self _validate_openai_request错误消息不准确 ("non-empty array" 实际仅检查非 list)TokenizerManager.is_dsv4属性无外部调用方,死代码
整体风险评估
该 PR 新增 1780 行代码实现 AgentHint 特性,整体代码质量较高,解析与校验逻辑健壮,边界处理较完善。发现的 2 个 P2 问题均为边界场景(manage_request 校验缺口、配置异常时的除零保护),触发概率较低但影响可达请求级崩溃,建议在合入前修复。P3 问题均为代码整洁性改进,不影响功能正确性。
| 类型 | 数量 |
|---|---|
| 🔴 阻塞 | 0 |
| 🟡 建议 | 2 |
💬 仅评论


19 天前 添加了label:pr-audit-failed
xiangjie10
19 天前 评论:
19 天前 评论:
🔍 PR 规范审计未通过,以下项目需要修正:
- ❌ PR 未关联里程碑或 Issue
- ❌ PR 新增代码 1780 行超过 1000 行,且标题未标注"反合"
- ⚠️ PR 代码变更未包含测试用例(变更文件路径中均不包含 test 或 ut),请确认已经备注原因!
请修正后重新提交,或联系仓库管理员。


19 天前 添加了label:ascend-cla/yes
此处折叠了235条消息 查看更多
14 天前 解决了最后一个问题
jason lyu
14 天前 评论:
14 天前 评论:
/approve


14 天前 添加了label:approvedlgtm
14 天前 关闭了关联的issue
14 天前 合入了pull request
1. 合入背景
本 PR 为 Agent 推理引入 AgentHint 特性,允许客户端通过请求体中的 agent_hint 字段传递会话管理、KV 缓存控制和上下文编辑等提示信息。核心变更包括:新增 AgentHintInfo 等 Pydantic 数据模型用于解析和规范化客户端输入;新增 block_offset_translator 模块将消息级索引转换为 PagedAttention 块坐标;在请求验证、分发和调度链路中集成 agent_hint 的解析与块偏移附加逻辑,使调度器能够感知会话亲和性和上下文编辑意图。
关联 ISSUE:#463
2. 修改内容
3. 资料变更
对原有功能资料不涉及变更
4. 接口变更
对原有接口功能不涉及变更
5. 测试结果
测试场景1
测试场景2
6. CheckList
[x] 代码注释完备
[x] 正确记录维测日志
[x] 是否有UT用例
[x] 若涉及多线程场景,考虑了并发场景,不存在死锁问题