Skip to content

feat: integrate Git-backed Skill repository#6

Open
dydpop wants to merge 2 commits into
repo-devfrom
repo-version-pr
Open

feat: integrate Git-backed Skill repository#6
dydpop wants to merge 2 commits into
repo-devfrom
repo-version-pr

Conversation

@dydpop

@dydpop dydpop commented May 4, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • B 任务主交付:把 Skill Repository 从 demo/内存形态推进到 Git-backed、可版本化、可追溯、可治理的 SkillStorage。
  • 本 PR 以 repo-dev 为 base,干净承接现有 repo/search/graph 能力;没有从 runtime 分支夹带 C 任务历史。
  • 保留 memory fallback,同时默认新增 git repository backend,并通过 SkillWikiManager 作为唯一正式适配层。

贡献主体

  • 贡献主体:B 任务 Git-backed Skill 仓库集成与成品化适配。
  • 主要实现内容由本次 B 任务集成完成,重点负责:存储层、仓库适配层、Repository API、生命周期 diff/version 对接、接口兼容保护和回归测试。
  • 同时保护 A/C/D/E 已有接口:不删除 runtime 测试,不回退 execution schema,不绕过 SkillWikiManager 形成平行仓库路线。

借鉴来源

  • 参考并批判吸收了学长分支中的 Git repo/version 思路:
    https://github.com/Huangdingcheng/skillos/tree/feat/lbs-repo_version/skillos/skillos/storage/skill_repo
  • 吸收点:skills/{skill_name}/{version}.jsonversions.jsonmetadata/skills_index.jsonevents.jsonl、Git diff/history/status、版本创建、软/硬删除、状态流转、merge/sync/CLI 等方向。
  • 未直接合并该分支:该分支还包含对 execution/schema/tests 的回退式改动,和当前 C/E 稳定接口有冲突风险,因此本 PR 只选择性重实现 B 仓库能力。

Key Changes

  • 新增 skillos.storage.skill_repo.GitSkillStore:本地 Git-backed SkillStorage,支持 init/create/update/new-version/delete/transition/diff/history/events/status/rebuild-index/merge/sync。
  • 重做 layers/skill_repository/repository.pySkillWikiManager 统一适配 Git-backed 后端,保留上层调用所需的 get/list/create/update/delete/create_new_version/transition_state/record_execution/get_overview_stats 等接口。
  • 新增 /api/v1/repository/status/api/v1/repository/events/api/v1/repository/rebuild-index
  • /api/v1/lifecycle/{skill_id}/diff 优先走 Git/file diff,同时兼容旧的 VersionController 格式。
  • create_app 新增 repository_backendskill_storage_dirseed_demo 参数,默认走 git,保留 memory fallback。
  • 修复兼容点:/skills 使用公开 wiki.update/deleteSkillProvenance 使用 created_by_agentMemoryWikiManager.update 支持 dict 转模型,SkillLibrarianAgent 使用公开 wiki/graph 方法。
  • 补齐 ExecutionStepResult.step_index/result/outputs 兼容字段,避免影响 C/E 前端和执行接口。

Verification

  • python -m compileall -q skillos
  • python -m pytest tests\test_skill_repo_git_backend.py -q --no-cov:8 passed
  • python -m pytest tests -q --no-cov:149 passed
  • git diff --check

Notes

  • Git-backed storage默认路径为包内 skillos/skillos/storage/skill_repo/SkillStorage/,已加入 .gitignore,避免运行时仓库内容污染代码仓库。
  • 运行时 execution metrics 会持久化但默认不为每次执行制造 Git commit,减少 Git 历史噪声。
  • Git remote push/sync 保持显式操作,不做自动远程同步。

@dydpop

dydpop commented May 4, 2026

Copy link
Copy Markdown
Collaborator Author

补充一个本地预览小修,已推送到本 PR。

这次只处理两个已确认问题,没有扩大范围:

  • 后端启动 seed demo Skills 后,会把 Wiki 中的 Skill 同步到内存 Graph manager。
  • /api/v1/graph/stats/overview 现在能和 /api/v1/graph 中的节点统计保持一致。
  • 清理了 demo seed 里的历史乱码文案,Wiki / Graph 里看到的 Skill 描述和 prompt 现在是可读文本。

验证结果:

  • python -m compileall -q skillos\skillos\api\main.py skillos\skillos\api\memory_store.py skillos\skillos\api\routes\graph.py
  • python -m pytest skillos\tests\test_skill_repo_git_backend.py -q:9 passed
  • git diff --check
  • 使用干净本地 storage 启动后端后,/api/v1/graph/stats/overview 返回 nodes=16,并且 /api/v1/graph 里的 graph_stats.nodes 也是 16。

说明:当前 edges=0 是预期内的,因为本次没有强行把 demo seed 里的 sub_skill_ids 从 Skill name 改成真实 Skill ID,避免把这次小修扩大成 seed 关系映射重构。

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