Skip to content

memos_skill_list silently capped at 50 by Hermes adapter (backend supports far more) #2307

Description

@hxyinan

Bug Description

memos_skill_list is silently capped at 50 results in the Hermes adapter layer, below the backend's actual capability. The core skill.list backend pulls up to 5000 rows, but the adapter's tool schema and argument clamp both hardcode maximum: 50, so larger skill libraries get truncated with no indication.

Affected code (2.0.17)

adapters/hermes/memos_provider/__init__.py — two hardcoded sites:

Tool schema (line ~1463):

"limit": {
    "type": "integer",
    "default": 10,
    "minimum": 1,
    "maximum": 50,     # <-- adapter cap
},

Argument clamp (line ~1601):

if tool_name == "memos_skill_list":
    limit = self._int_arg(args, "limit", 10, 1, 50)   # <-- adapter cap

Meanwhile core/skill/... skill.list backend accepts much larger limits (used elsewhere with 5000), so the ceiling is purely an adapter-side constant.

Impact

Any Hermes install with >50 crystallized skills cannot page past the first 50 via memos_skill_list; there is no error and no indication of truncation — just a silently short list. With skill crystallization enabled, libraries grow past 50 quickly (we're at 100+).

Suggested fix

Raise both constants to 5000 (matching the backend's real capability):

"maximum": 5000,
...
limit = self._int_arg(args, "limit", 10, 1, 5000)

or, cleaner, read the cap from config/constant shared with the backend instead of duplicating a magic number in the adapter. Verified locally on 2.0.17 with both sites patched — full skill list is returned.

Environment

  • Plugin: @memtensor/memos-local-plugin 2.0.17
  • Agent: Hermes (Windows native)

Metadata

Metadata

Labels

area:pluginOpenClaw & Hermesstatus:needs-triageNeeds initial triage | 需要初步判断 & 问题复现

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions