Repository navigation
feat(skill): decouple read-only skills from Box execution - #2512
huanghuoguoguo wants to merge 9 commits into
Conversation
|
@dadachann Analyze and check if this PR is okay for merging, if the design is good, fix the CI errors. |
|
👋 I’m dadachann, the LangBot community maintenance agent. I’ve picked up the review/task on this pull request and will share findings and next steps here. |
|
We agree with moving centralized Skill management into Core. To complete this separation, we propose the following consistency contract for the paired Core/SDK changes. These are design requirements, not claims that the current PR already implements them. Ownership and publication
Activation and sandbox materialization
Updates and sandbox reuse
Restart, deletion, and recovery
Gaps to address in the current implementationThe current Minimum acceptance coverage should include: activating v1 then publishing v2 still reads/executes v1 in the existing run; a new run uses v2; interrupted transfer never executes partial content; Core-only and Box-only restarts preserve or explicitly reject the pinned revision; concurrent runs do not switch each other's versions; conflicting updates are rejected; and deleted files do not survive in a newly prepared revision. |
Codecov Report❌ Patch coverage is 📢 Thoughts on this report? Let us know! |
bbde0f7 to
3987051
Compare
|
@RockChinQ 想结合当前 Agent 与 Pipeline 同级的架构,重新确认一下 #2410 的真实需求和本 PR 的设计边界。 我的判断是:Skill 从 Box 解耦的方向合理,需要调整的是公共接入层和运行状态管理,不需要推翻“没有 Box 也能使用 Skill”这个目标。 真实需求用户安装写作规范、检查清单、Markdown 参考资料等 Skill 后,即使没有部署 Box、关闭了 Box,或没有沙盒执行权限,也应能通过已授权的 Agent / Pipeline 发现、激活和读取它。 这里应按操作划分能力: Agent 与 Pipeline 应使用同一套 Skill 语义Agent 和 Pipeline 是同级入口,Skill 应属于 Workspace 的公共资源,不应由 Pipeline 拥有。两种入口分别把自己的资源选择投影为运行时授权,再由公共层完成目录加载、授权过滤和激活。 当前 多 Agent / SaaS 的共享边界建议明确为:共享已发布 Skill,隔离运行状态;发布新版不改写在用旧版。
现有不可变发布和冲突检查值得保留。本地临时验证已确认:跨 Workspace 同名包隔离、重复创建拒绝、两个 Repository 并发更新只有一个成功、发布 v2 后仍可读取 v1。 自部署与 Cloud 需要补齐的部分
另外,表单保存后未更新 revision 导致连续保存冲突,是需要直接修复的实现 Bug。图片/PDF 的受控引用是 #2410 更广的资源需求,建议单独确认是否本次交付,不应成为纯文本 Skill 脱离 Box 的前置条件。 想请你确认:本次是否以“自部署和 Cloud 中,Agent / Pipeline 均可在无 Box 时使用已授权的指令与文本资源 Skill,且不引入跨运行/租户干扰”为核心验收?版本固定按 run 还是会话?共享 Box 的状态保留契约是什么? 确认后可以据此收敛改动,避免为了只读激活一次性扩展成完整的分布式 Skill 执行系统。 检查基于 Core |
Related: #2410. The broader issue is not fully satisfied yet; see the remaining gaps below.
Paired SDK change: langbot-app/langbot-plugin-sdk#128. This branch pins SDK commit
661b1475091000c94595016d3a4914ff3a1ad81dinpyproject.tomlanduv.lock.Goal and capability boundary
A user should be able to use a writing guide, review checklist, or Markdown reference Skill without deploying or enabling Box. Loading a Skill's instructions is a read operation; it should not require an execution sandbox.
The boundary is based on the requested operation, not on classifying the entire package as a "read-only Skill": even a package containing scripts can have its instructions activated and its text resources read without executing those scripts.
Activation does not grant execution permissions. When execution is unavailable, it must not claim that package files are mounted. When execution is requested, it must consume the same revision as the activated instructions and resource reads.
Implementation
skills.rootoutside the Box mount allowlist needs explicit configuration.Remaining correctness and acceptance gaps
The capability separation above is the intended design. The following issues concern the current implementation and the broader acceptance contract:
globalsession, a changed set recreates the container. Alternating runs with different sets repeatedly recreate it. Workspace files survive; processes and container-local temporary state do not. The SDK waits for admitted executions before replacement, but this does not preserve state across tool calls. Resolve or explicitly agree this execution behavior before merging.base_revisionand receives a conflict. The form must adopt the revision returned by the successful update.Validation
Review rerun on 2026-09-29, Core
3987051with SDK661b147source:Previously recorded validation (2026-09-28)
661b147source: 5,237 passed, 11 skipped.uv lock --checkpassed locally (offline, uv 0.12.15) and on host 186 (uv 0.12.17). Ruff checks and formatting passed. Frontend build and 189 unit tests passed; frontend lint had 0 errors and 31 warnings.Merge readiness
Do not treat passing CI as full acceptance of #2410. Address the correctness issues above, agree the shared-session behavior and remaining issue scope, and merge the paired SDK change before coordinated deployment. At the 2026-09-29 review, GitHub reported conflicts with
master; resolve them and rerun the relevant checks.