Skip to content

academic schedule 省略 --limit 时稳定 30s 超时(INTERNAL: context deadline exceeded),--timeout 无法覆盖 #2

Description

@genius-alray

环境

  • hduhelp-cli 0.4.70(revision d872171ea8808adfdc04cd6264c102ba440d3493,manifest 06fe166b77f674ac0eb7b74d0ec34f5afa31d63c9c78b447acd9e4f7dcb8a8f2)
  • Linux x86_64,官方 install.sh 安装
  • hduhelp-cli doctor --json 全部 ok;PAT 含 academic:schedule:read

现象

academic schedule 在省略 --limit 时稳定失败:

$ time hduhelp-cli academic schedule --json --no-input --no-open
{"code":"INTERNAL","message":"context deadline exceeded","hint":"运行 hduhelp-cli doctor --json;如问题持续,请携带版本与 request_id 报告","retryable":false}
# exit 1,耗时 30.012s

对照实验

调用 结果
academic schedule --limit 5 立即成功,返回正常课表
academic schedule --limit 2 --timeout 1s 1.006s 失败,说明 --timeout 本身生效
academic schedule --timeout 150s(无 --limit) 仍在 30.012s 失败,报 context deadline exceeded (Client.Timeout or context cancellation while reading body)

即:--timeout 能缩短超时,但无法把上限提到 30s 以上;不带 --limit 的全量请求必然超过 30s。

原因推测

help academic schedule 对 limit 的说明是:

--limit query integer/int32 单页最多返回条数,1-200。MCP 省略时默认 50;REST 旧客户端省略时保持兼容。

CLI 走 REST 语义,省略 --limit 时不下发分页参数,服务端返回整学期全量条目,超过约 30s 的客户端读取上限。

影响

hduhelp-academic skill 指引 agent「查询课表时选择本人学期课表或今明课表」。agent 按最自然的方式调用无参数课表会稳定失败,属于开箱即坏的主路径。

建议

  1. CLI 在 REST 模式省略 --limit 时也套用默认分页(如 50,与 MCP 一致);
  2. 或让 --timeout 成为真正的上限来源,允许长请求;
  3. 至少在 context deadline exceeded 的错误里提示「请加 --limit 分页」。

本地规避

调用课表时始终带 --limit(1-200,建议 50),并用 pagination.nextOffset 翻页。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions