Repository navigation
[Grok/dsh 73] 插件工作流目录贡献 #205
Copy link
Copy link
Closed
Labels
ready-for-agentAgent-grabbable workAgent-grabbable work
Description
Activity
- added a commit that references this issue
on Sep 25, 2026 已集成到
rewrite/grok-dsh-20260920:6efa5ed(快进推送,基于 #178 的 338e9c7)。行为
- 活动插件(已安装、已信任、已启用、文件存在;项目插件还需要工作区信任)
workflows/(或清单中的workflows路径/列表)里的.rhai文件,走与 [Grok/dsh 52] 个人与项目工作流目录 #184 相同的目录扫描和 Rhai/dsh 执行路径,排在项目和个人工作流之后。发现只读取meta,安装和列出都不运行脚本。 - 名称冲突和优先级是显式的。参考实现的 registry 没有插件作用域,所以沿用 [Grok/dsh 34] 插件内容启停与扩展视图 #166 的插件资产规则:
<插件>:<名称>始终可以运行;裸名称只在没有同名项目/个人工作流、也没有其他活动插件提供时才指向插件。两个插件提供同名工作流时,裸名称以有歧义为由拒绝,并给出两个限定名称。同一插件内重名时,限定名称有歧义。 plugin list --json、inspect和/plugins展开行列出插件的工作流及无效文件。/workflows显示插件工作流和它的调用名、只能用限定名运行的工作流、冲突以及未加载的插件工作流。/workflows <插件>:<名称>显示版本、许可、作用域、信任状态、来源和提交。- 停用、被阻止、缺失或被遮蔽的插件,其工作流(裸名称和限定名称)都会带着插件状态被拒绝;卸载后名称变为未知。
- 运行开始时,engine 的
started行带上origin(作用域、路径、插件名、版本、提交、来源、许可),它和脚本副本一起写入launch.json/run.json,并在/workflow runs中显示为Source: plugin demo 1.0.0。 - 更新或停用不影响正在运行的流程。暂停的插件运行在恢复前会先检查插件:插件停用或已卸载时拒绝恢复,并提示重新启用;插件更新后仍重放启动时的原始脚本,概览会注明当前安装的版本。新的启动读取更新后的插件。
验证(全部只在 Linux 上)
-
cargo test -p codsh-rust:606 通过,4 个已知失败(2 个filesystem_sandbox,以及时好时坏的 privacy/voice),与本工单无关。新增的workflow_catalog::单元测试覆盖限定/裸名称与优先级、两个插件同名、插件内重名、无效插件文件、四种非活动状态和名称校验。新增的plugin::测试覆盖 workflows 布局、贡献和workflow_sources随启用/卸载的变化。 -
cargo test --workspace --exclude codsh-rust:1043 通过。cargo fmt --check和 clippy 均无问题。 -
pnpm run typecheck通过。pnpm test:2481 通过,1 个已知的reference-evidence超时。 -
scripts/rust-workflow.spec.mjs新增 3 个用例,用 debug 二进制真实执行plugin install --trust/enable/update/disable/uninstall,覆盖:- 安装不运行任何东西,未启用时拒绝
- 模型清单
demo:review与裸名称运行真实 CHILD_SAY 子代理- origin 写入
run.json/launch.json - 个人工作流接管裸名称
- 停用/卸载后拒绝新启动
- 两个插件同名
- 暂停后更新插件,恢复仍跑原脚本,新启动跑新版本
- 停用/卸载后拒绝恢复
-
PTY:
scripts/rust-workflow-pty-test.py新增第三个会话,通过启动器安装并启用真实插件,覆盖:/workflows与/workflows demo:digest/lint、/demo:digest运行真实子代理/workflow runs的来源行-p用限定名运行,plugin disable后被拒绝
rust-plugin-content-pty-test.py和rust-goal-pty-test.py也都通过。
未验证
- macOS 与 Windows。
- 市场(git)来源插件的工作流:只验证了本地路径安装,但它们走同一个 registry 和布局路径。
未实现 / 已知限制
- 内置(bundled/builtin)工作流不在本工单范围内,仍单独交付。
- 输入
/<名称>后直接按 Enter,会先接受斜杠菜单的补全项;这是现有补全行为,本工单未改。 - dsh 重启后恢复的运行本来就不可恢复([Grok/dsh 51] 工作流运行视图与暂停恢复 #183 的限制),与插件无关。
/workflow save仍可以把插件运行的脚本副本保存到项目目录;保存之后,项目副本会接管裸名称。
main、npm 和默认版本都没有改动。
解除阻塞的后续
- [Grok/dsh 79] 完整对齐审计与候选版本验收 #211 把 [Grok/dsh 73] 插件工作流目录贡献 #205 列为阻塞项,但还有 24 个其他阻塞项未关闭,所以目前没有工单因本工单而解除阻塞。
- 活动插件(已安装、已信任、已启用、文件存在;项目插件还需要工作区信任)
Metadata
Metadata
Assignees
Labels
ready-for-agentAgent-grabbable workAgent-grabbable work
Parent
#132
Ticket: 73
Status: ready-for-agent
User Stories: 41, 48, 49(见父规格)
What to build
用户通过插件安装和管理原格式工作流,在统一目录中查看来源并实际运行,禁用后不再可调用。
Acceptance criteria
Blocked by
Delivery contract
用户于2026-09-20批准当前测试与任务拆分。按父规格的已安装产物/真实终端和公开协议测试验收;实际实现须带适用的文档、Changeset及必要检查。ready-for-agent表示任务已定义,不表示前置任务已完成,也不授权自动开始本轮实施、购买付费资源或发布软件版本。