[win32] 项目 skill 位于子目录(skills.paths 注册):助手侧加载正常,用户侧报 SKILL.md 打不开 #3

Open
opened 2026-09-11 18:28:45 +08:00 by willwang · 2 comments

环境

  • octopus 桌面端,win32,项目根 D:\deepin(git 仓库)
  • skill 布局:skill 文件位于子目录 financing-copilot/.octopus/skills/<name>/SKILL.md(非仓库根 .octopus/skills/
  • 配置:仓库根 octopus.json{"$schema": "https://eightarms.net/config.json", "skills": {"paths": ["financing-copilot/.octopus/skills"]}},JSON 校验通过、路径存在

症状

用户在客户端侧打开/加载项目 SKILL.md 报错(「打不开」)。具体报错原文暂缺(用户未提供截图/文本,已多次索要),故本票先登记现象与已验证事实,报错原文到位后补充评论。

助手侧已验证事实(同一份文件)

  1. 文件本体:hex 校验 UTF-8 无 BOM、---\r\n frontmatter 起始、CRLF 换行、5030 字节完整无损
  2. 注册:skill 出现在会话 available_skills 列表,description 与 frontmatter 一致(frontmatter 解析成功)
  3. 加载:skill 工具全文加载成功,base directory 正确解析到子目录,正文完整注入

即:同一份 SKILL.md,会话内 skill 管道(扫描→注册→加载)全链路正常;用户侧 UI 打开失败,怀疑为客户端 UI 层问题(.md 预览/关联/编码)而非 skill 管道问题。

已尝试修复

  • SKILL.md 行尾 LF→CRLF(对齐同仓库已验证可用的另一个 skill)
  • 新建根 octopus.json 注册 skills.paths(此前无配置,skill 默认扫描不到)

修复后助手侧可正常加载,用户侧仍报打不开。

想请教的问题

  1. skills.paths 指向仓库子目录是否为受支持的注册方式?
  2. 用户侧「SKILL.md 打不开」在什么条件下发生?客户端日志在哪个路径可以拿到具体报错?
  3. 客户端 UI 打开 SKILL.md 对编码/行尾/字段有无额外要求(BOM、CRLF、必填 frontmatter 字段)?

复现材料

  • 仓库:https://eightarms.net/willwang/deepin (私有,可授权访问)
  • 相关文件:octopus.json、financing-copilot/.octopus/skills/bp-review/SKILL.md、financing-copilot/.octopus/skills/ts-review/SKILL.md(后者为对照,此前已被正常扫描)
## 环境 - octopus 桌面端,win32,项目根 D:\deepin(git 仓库) - skill 布局:skill 文件位于子目录 `financing-copilot/.octopus/skills/<name>/SKILL.md`(非仓库根 `.octopus/skills/`) - 配置:仓库根 `octopus.json`,`{"$schema": "https://eightarms.net/config.json", "skills": {"paths": ["financing-copilot/.octopus/skills"]}}`,JSON 校验通过、路径存在 ## 症状 用户在客户端侧打开/加载项目 SKILL.md 报错(「打不开」)。**具体报错原文暂缺**(用户未提供截图/文本,已多次索要),故本票先登记现象与已验证事实,报错原文到位后补充评论。 ## 助手侧已验证事实(同一份文件) 1. 文件本体:hex 校验 UTF-8 无 BOM、`---\r\n` frontmatter 起始、CRLF 换行、5030 字节完整无损 2. 注册:skill 出现在会话 available_skills 列表,description 与 frontmatter 一致(frontmatter 解析成功) 3. 加载:skill 工具全文加载成功,base directory 正确解析到子目录,正文完整注入 即:同一份 SKILL.md,会话内 skill 管道(扫描→注册→加载)全链路正常;用户侧 UI 打开失败,怀疑为客户端 UI 层问题(.md 预览/关联/编码)而非 skill 管道问题。 ## 已尝试修复 - SKILL.md 行尾 LF→CRLF(对齐同仓库已验证可用的另一个 skill) - 新建根 octopus.json 注册 skills.paths(此前无配置,skill 默认扫描不到) 修复后助手侧可正常加载,用户侧仍报打不开。 ## 想请教的问题 1. `skills.paths` 指向仓库子目录是否为受支持的注册方式? 2. 用户侧「SKILL.md 打不开」在什么条件下发生?客户端日志在哪个路径可以拿到具体报错? 3. 客户端 UI 打开 SKILL.md 对编码/行尾/字段有无额外要求(BOM、CRLF、必填 frontmatter 字段)? ## 复现材料 - 仓库:https://eightarms.net/willwang/deepin (私有,可授权访问) - 相关文件:octopus.json、financing-copilot/.octopus/skills/bp-review/SKILL.md、financing-copilot/.octopus/skills/ts-review/SKILL.md(后者为对照,此前已被正常扫描)
Author

补充证据(来自用户侧使用现场):

  • 现象:客户端曾出现 skill 无法加载/打不开(bp-review)。助手侧(agent 扫描器)用相对路径 skills.paths: ["financing-copilot/.octopus/skills"] 一直能正常扫描与加载。
  • 用户侧随后把根 octopus.json 的该路径改为绝对路径 D:/deepin/financing-copilot/.octopus/skills 后可用。
  • 推断:客户端与助手侧对 skills.paths 相对路径的解析基准可能不一致(疑似受启动工作目录影响);助手侧从相对路径解析成功,客户端失败,改绝对路径后绕过。
  • 关联事实:子目录 skill(如 bp-review)SKILL.md 为 LF 行尾时客户端加载异常,转 CRLF 后助手侧加载正常——行尾敏感问题可能与本路径解析问题叠加,导致现场症状混乱。
  • 建议:核查客户端对 skills.paths 相对路径的解析 cwd(仓库根 vs 进程 cwd),或统一规范化;另核查 SKILL.md 行尾处理是否按平台规范。

仓库现场:willwang/deepin 根 octopus.json(相对→绝对路径的 diff 已提交留痕)。

补充证据(来自用户侧使用现场): - 现象:客户端曾出现 skill 无法加载/打不开(bp-review)。助手侧(agent 扫描器)用相对路径 `skills.paths: ["financing-copilot/.octopus/skills"]` 一直能正常扫描与加载。 - 用户侧随后把根 `octopus.json` 的该路径改为绝对路径 `D:/deepin/financing-copilot/.octopus/skills` 后可用。 - 推断:客户端与助手侧对 `skills.paths` 相对路径的解析基准可能不一致(疑似受启动工作目录影响);助手侧从相对路径解析成功,客户端失败,改绝对路径后绕过。 - 关联事实:子目录 skill(如 bp-review)SKILL.md 为 LF 行尾时客户端加载异常,转 CRLF 后助手侧加载正常——行尾敏感问题可能与本路径解析问题叠加,导致现场症状混乱。 - 建议:核查客户端对 `skills.paths` 相对路径的解析 cwd(仓库根 vs 进程 cwd),或统一规范化;另核查 SKILL.md 行尾处理是否按平台规范。 仓库现场:willwang/deepin 根 `octopus.json`(相对→绝对路径的 diff 已提交留痕)。
Author

新证据(同根因再现 + 影响面扩大):

  • 现象:financing-copilot/testdata/ts-blind/README.md(纯 ASCII 路径、UTF-8 内容完好)客户端「打不开」。字节级检查:全文 24 处 LF、0 处 CRLF——与此前 SKILL.md 案一致,客户端查看器对 LF 行尾的 .md 打不开。
  • 影响面:不止 SKILL.md(frontmatter 文件),普通 .md(README/knowledge/templates)同样受影响;已把工作区 9 个 LF 文件统一转 CRLF(含 testdata 两份盲测基线)。
  • 待确认:用户转 CRLF 后能否正常打开;若仍失败将补充报错原文。
  • 建议:客户端 md 查看器按行尾无关方式解析(读取时规范化 LF/CRLF),或在写入/检出处统一行尾策略。
新证据(同根因再现 + 影响面扩大): - 现象:`financing-copilot/testdata/ts-blind/README.md`(纯 ASCII 路径、UTF-8 内容完好)客户端「打不开」。字节级检查:全文 24 处 LF、0 处 CRLF——与此前 SKILL.md 案一致,客户端查看器对 LF 行尾的 .md 打不开。 - 影响面:不止 SKILL.md(frontmatter 文件),普通 .md(README/knowledge/templates)同样受影响;已把工作区 9 个 LF 文件统一转 CRLF(含 testdata 两份盲测基线)。 - 待确认:用户转 CRLF 后能否正常打开;若仍失败将补充报错原文。 - 建议:客户端 md 查看器按行尾无关方式解析(读取时规范化 LF/CRLF),或在写入/检出处统一行尾策略。
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Octopus/octopus-release#3