AGC DIrectProject读取skill根目录下的SKILL.md有困难 #244

Closed
opened 2026-09-02 14:25:14 +08:00 by k88936 · 6 comments
Member

问题:

codex在(自主)尝试读取某个skill时使用agc_read_skill_resource工具, 但这个工具拒绝提供SKILL.md的内容, 多次尝试后codex使用普通文本读取

当前实现:

当前mcp提供了agc_read_skill_resource工具:

      - docs/technical/【技术方案】AI游戏创作智能体App实施计划-2026-06-24.md:1189
      - 规则是:
          - 完整 SKILL.md 由 Codex 原生 Skill loader 按命中加载;
          - agc_read_skill_resource 只读取 Skill 声明的 references/*.md;
          - 不是用 MCP 再暴露一份根 SKILL.md。

并且提示词有要求codeagent使用这个工具来读取skill的reference内容:

  - apps/ai-game-creator-shell/src-tauri/resources/agc-skills/agc-project-structure/SKILL.md:20

(这里我估计模型看完一个SKILL.md记住了这个, 然后试着模仿, 用它来读另一个skill的根SKILL.md了)

实际上codex loader自动加载的只有元数据, 不是SKILL.md的完整内容
在本地, codex会把skill当作普通的文本文档来读取

# 问题: codex在(自主)尝试读取某个skill时使用agc_read_skill_resource工具, 但这个工具拒绝提供SKILL.md的内容, 多次尝试后codex使用普通文本读取 # 当前实现: 当前mcp提供了agc_read_skill_resource工具: ``` - docs/technical/【技术方案】AI游戏创作智能体App实施计划-2026-06-24.md:1189 - 规则是: - 完整 SKILL.md 由 Codex 原生 Skill loader 按命中加载; - agc_read_skill_resource 只读取 Skill 声明的 references/*.md; - 不是用 MCP 再暴露一份根 SKILL.md。 ``` 并且提示词有要求codeagent使用这个工具来读取skill的reference内容: ``` - apps/ai-game-creator-shell/src-tauri/resources/agc-skills/agc-project-structure/SKILL.md:20 ``` (这里我估计模型看完一个SKILL.md记住了这个, 然后试着模仿, 用它来读另一个skill的根SKILL.md了) 实际上codex loader自动加载的只有元数据, 不是SKILL.md的完整内容 在本地, codex会把skill当作普通的文本文档来读取
Author
Member

我建议去掉这个工具, all in codex自己读文本.

它的目的,是让 Skill 引用文档经过:

  • 固定 Skill 名白名单;
  • manifest 文件白名单;
  • 仅 references/;
  • 仅一层安全相对路径;
  • 仅 .md;
  • 禁止 ..、绝对路径、盘符、UNC。

事实上codex在sandbox内也能够使用原生命令绕过这些限制

我建议去掉这个工具, all in codex自己读文本. > 它的目的,是让 Skill 引用文档经过: > > - 固定 Skill 名白名单; > - manifest 文件白名单; > - 仅 references/; > - 仅一层安全相对路径; > - 仅 .md; > - 禁止 ..、绝对路径、盘符、UNC。 事实上codex在sandbox内也能够使用原生命令绕过这些限制
k88936 added a new dependency 2026-09-02 14:40:05 +08:00
k88936 added this to the 陶泥儿gameAgent project 2026-09-02 14:41:17 +08:00
Member
@lhk229
Owner
#236
Member

结论:它更像“契约/产品决策澄清”,不是已确认的代码缺陷。

  • agc_read_skill_resource 拒绝根目录 SKILL.md 是当前设计,不是异常。实现明确只接受 manifest 白名单中的 references/*.md:skill_pack.rs:245
  • 工具描述和测试都锁定了这个边界,根 SKILL.md 被拒绝已有回归测试:direct_tools_mcp.rs:47direct_tools_mcp.rs:1485
  • 权威方案规定:根正文由 Codex 原生 Skill loader 按需加载,MCP 工具只读取审核过的一层引用:实施计划:1186
  • 真正的功能缺口是“普通自然语言点名 Skill”没有转成结构化 Skill 输入。当前 turn 输入只组装文本/图片,没有 type: "skill":codex_app_server.rs:718codex_app_server.rs:865。这与 #236 的描述一致。
    不建议直接按评论删除 agc_read_skill_resource:这样会影响至少 5 个内置 Skill 的 references 读取契约,同时要连带修改 manifest、提示词、审计白名单、测试和文档。建议:
  1. #244 标为 needs-info/needs-triage,并明确关联 #236。
  2. 先补充产品契约:是否要求普通中文点名必须确定性生效,是否接受 $skill-name,是否需要 UI 选择入口。
  3. 若保留工具,补强提示词,明确“不要用该工具读取根 SKILL.md,根正文由 Codex loader 处理”。
  4. 若最终决定移除,再单独建实施 PR,配套迁移和回归验收。
结论:它更像“契约/产品决策澄清”,不是已确认的代码缺陷。 - agc_read_skill_resource 拒绝根目录 SKILL.md 是当前设计,不是异常。实现明确只接受 manifest 白名单中的 references/*.md:[skill_pack.rs:245](/home/dsk/Genarrative/apps/ai-game-creator-shell/src-tauri/src/agent/skill_pack.rs) - 工具描述和测试都锁定了这个边界,根 SKILL.md 被拒绝已有回归测试:[direct_tools_mcp.rs:47](/home/dsk/Genarrative/apps/ai-game-creator-shell/src-tauri/src/agent/direct_tools_mcp.rs)、[direct_tools_mcp.rs:1485](/home/dsk/Genarrative/apps/ai-game-creator-shell/src-tauri/src/agent/direct_tools_mcp.rs) - 权威方案规定:根正文由 Codex 原生 Skill loader 按需加载,MCP 工具只读取审核过的一层引用:[实施计划:1186](/home/dsk/Genarrative/docs/technical/【技术方案】AI游戏创作智能体App实施计划-2026-06-24.md) - 真正的功能缺口是“普通自然语言点名 Skill”没有转成结构化 Skill 输入。当前 turn 输入只组装文本/图片,没有 type: "skill":[codex_app_server.rs:718](/home/dsk/Genarrative/apps/ai-game-creator-shell/src-tauri/src/agent/codex_app_server.rs)、[codex_app_server.rs:865](/home/dsk/Genarrative/apps/ai-game-creator-shell/src-tauri/src/agent/codex_app_server.rs)。这与 #236 的描述一致。 不建议直接按评论删除 agc_read_skill_resource:这样会影响至少 5 个内置 Skill 的 references 读取契约,同时要连带修改 manifest、提示词、审计白名单、测试和文档。建议: 1. 将 #244 标为 needs-info/needs-triage,并明确关联 #236。 2. 先补充产品契约:是否要求普通中文点名必须确定性生效,是否接受 $skill-name,是否需要 UI 选择入口。 3. 若保留工具,补强提示词,明确“不要用该工具读取根 SKILL.md,根正文由 Codex loader 处理”。 4. 若最终决定移除,再单独建实施 PR,配套迁移和回归验收。
Author
Member

#236

比较:
236 是类似codex的@some-skill会自动把skill注入发送的prompt功能没有实现
这个是agent主动读skill文件容易用错工具, 浪费几次请求

> #236 比较: 236 是类似codex的@some-skill会自动把skill注入发送的prompt功能没有实现 这个是agent主动读skill文件容易用错工具, 浪费几次请求
Author
Member

不建议直接按评论删除 agc_read_skill_resource:这样会影响至少 5 个内置 Skill 的 references 读取契约,同时要连带修改 manifest、提示词、审计白名单、测试和文档。建议:

  1. #244 标为 needs-info/needs-triage,并明确关联 #236。
  2. 先补充产品契约:是否要求普通中文点名必须确定性生效,是否接受 $skill-name,是否需要 UI 选择入口。
  3. 若保留工具,补强提示词,明确“不要用该工具读取根 SKILL.md,根正文由 Codex loader 处理”。
  4. 若最终决定移除,再单独建实施 PR,配套迁移和回归验收。

so 怎么办, 影响面不是问题

> 不建议直接按评论删除 agc_read_skill_resource:这样会影响至少 5 个内置 Skill 的 references 读取契约,同时要连带修改 manifest、提示词、审计白名单、测试和文档。建议: > 1. 将 #244 标为 needs-info/needs-triage,并明确关联 #236。 > 2. 先补充产品契约:是否要求普通中文点名必须确定性生效,是否接受 $skill-name,是否需要 UI 选择入口。 > 3. 若保留工具,补强提示词,明确“不要用该工具读取根 SKILL.md,根正文由 Codex loader 处理”。 > 4. 若最终决定移除,再单独建实施 PR,配套迁移和回归验收。 so 怎么办, 影响面不是问题
Sign in to join this conversation.
3 Participants
Notifications
Due Date
No due date set.
Blocks
Reference: GenarrativeAI/Genarrative#244