Skip to content

fix(general-skills): materialize package files for Harness execution - #191

Open
Serious-H wants to merge 1 commit into
OpenBMB:mainfrom
Serious-H:feat/general-skill-native-execution
Open

fix(general-skills): materialize package files for Harness execution#191
Serious-H wants to merge 1 commit into
OpenBMB:mainfrom
Serious-H:feat/general-skill-native-execution

Conversation

@Serious-H

Copy link
Copy Markdown

问题背景

当前 Harness 在调用 GeneralSkill 时,会将 SKILL.md 和包内容摘要加载到模型上下文,但不会将技能包中的真实文件物化到当前 TaskFrame 工作区。

因此,对于包含 scripts/data/assets/ 等文件的已上传技能包,Agent 虽然能从技能说明中得知应执行某个脚本,但实际工作区中不存在该脚本。模型可能转而通过 write_file 重写脚本,导致已审核、已打包的技能实现无法被直接复用。

本次改动

  • 在 Harness 读取 GeneralSkill 时,将当前技能包快照物化到当前 TaskFrame:

    .harness/skill_packages/{slug}--{digest}/

  • 向 Agent 返回 package_workspace.relative_path,使其能够定位真实的 SKILL.mdscripts/data/assets/ 等包内文件。

  • 更新 Harness Agent 指令:包内已有明确脚本时,直接通过 exec_command 执行;不通过 write_file 重写或复制该脚本。

  • 抽取共享的技能包物化实现,旧 GeneralSkill runner 复用该实现,避免两条执行链路对包文件还原行为不一致。

  • .harness/ 下的技能包文件继续排除在用户可见 Artifact 发现范围之外。

未涉及范围

  • 未修改 GeneralSkill 的数据模型、上传协议或权限模型。
  • 未修改 Python 运行时、依赖安装与沙箱策略。
  • 未实现跨 TaskFrame 或跨会话文件流转。

验证

自动化测试:

  • backend/.venv/bin/python -m pytest backend/tests/test_harness_v2.py -q:55 passed
  • backend/.venv/bin/python -m pytest backend/tests/test_general_skills.py -k runner -q:8 passed
  • 对本次变更文件执行 Ruff 导入与未定义名称检查,通过。

浏览器校验:

  • 路由:/chat/
  • 用户角色:管理员
  • 使用包含真实脚本文件的 GeneralSkill 进行执行验证。
  • SRT 沙箱开启、关闭两种配置下,均确认 Agent 能执行技能包内的既有脚本并成功完成任务。

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant