Skip to content

建议保留 Skill 目录中的完整 description,或允许配置当前 160 截断上限 #121

Description

@635237669

问题

agentdock_context 返回的 Skill description 被硬截到 160,可能在模型选择 Skill 之前丢失触发条件、排除条件或与相邻 Skill 的边界。

这是一个非紧急的改进建议:完整 SKILL.md 仍然可以正常读取,问题主要在初始目录的路由信息不完整。

环境与观察

  • AgentDock v0.8.3(commit bd92f80eb47a
  • macOS / arm64
  • 使用 ChatGPT Web 连接 AgentDock;同时直接调用本机 MCP 的 agentdock_context 核验

直接调用本机 MCP 也能复现 description 在 160 处截断,因此不是 ChatGPT 页面显示导致的截断。已核对的长描述条目在原始 Skill 中保持完整,但目录仅返回前缀。

代码位置

v0.8.3 / internal/app/agentdock_context.goskillCapabilityIndex()

Description: truncateString(strings.TrimSpace(skill.Description), 160),

本次检查时 main 中仍有同样的逻辑。

复现方式

  1. 安装并激活一个 description 超过 160 的 Skill,且将一个有意义的触发条件或排除条件放在后半段。
  2. 调用 agentdock_context
  3. 比较 skills 中该条目的 descriptionread_file 读取 skill://<name>/SKILL.md 得到的完整 frontmatter。

实际:目录描述被截断,条目没有标记 description 不完整。

这也不只影响用户自定义 Skill。本次检查官方 agentdock-skills/catalog.json 时,27 个 Skill 中有 9 个 description 超过 160 字符,例如 code-debrief(348)、wallos(316)、linkwarden(251)。这里的长度统计是完整文本字符数。

影响

当前运行规则要求模型先根据索引的 name 和 description 选择 Skill,然后读取完整正文。如果关键的 “Use when…” 或 “Do not use…” 条件位于被截掉的部分,模型在选择阶段就看不到它。选中之后读取全文,不能完全弥补选择阶段的信息缺失。

这说明存在路由信息丢失;并不是声称每次调用都会选错 Skill。

建议

优先考虑在 Skill 索引中保留完整 description,仍然只按需读取完整 SKILL.md 正文,以保留渐进式加载的结构。

如果需要控制目录大小,也可以考虑:

  • 提供可配置的 description 长度上限,允许提高或关闭截断;
  • 截断时明确标记 description 不完整,并提供读取完整描述的方式。

相关的 #60common_skills 引入了更短的描述限制;本 issue 主要讨论已安装 AgentDock Skills 的 160 截断,通用目录是否同步调整可以另行决定。

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

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions