<!-- codsh-publication:grok-cli-dsh-rewrite:ticket-73 --> ## Parent https://github.com/Blackman99/codsh/issues/132 **Ticket:** 73 **Status:** ready-for-agent **User Stories:** 41, 48, 49(见父规格) ## What to build 用户通过插件安装和管理原格式工作流,在统一目录中查看来源并实际运行,禁用后不再可调用。 ## Acceptance criteria - [ ] 插件贡献走统一发现与 Rhai/dsh 执行通路,名称冲突和优先级按参考明确。 - [ ] 源码/许可、版本及信任状态可见,安装不自动执行脚本。 - [ ] 启停、更新、移除与已经运行的流程保持可靠身份,不替换运行中的原始脚本。 - [ ] 用真实插件工作流完成目录到运行结果验证,不让普通个人/项目目录等待此票。 ## Blocked by - #166 — Ticket 34: 插件内容启停与扩展视图 - #184 — Ticket 52: 个人与项目工作流目录 ## Delivery contract 用户于2026-09-20批准当前测试与任务拆分。按父规格的已安装产物/真实终端和公开协议测试验收;实际实现须带适用的文档、Changeset及必要检查。ready-for-agent表示任务已定义,不表示前置任务已完成,也不授权自动开始本轮实施、购买付费资源或发布软件版本。
Activity
feat(rust): plugin workflow catalog contributions (ticket 73 / #205)
Blackman99 commentedon Sep 25, 2026
已集成到
rewrite/grok-dsh-20260920:6efa5ed(快进推送,基于 #178 的 338e9c7)。行为
workflows/(或清单中的workflows路径/列表)里的.rhai文件,走与 [Grok/dsh 52] 个人与项目工作流目录 #184 相同的目录扫描和 Rhai/dsh 执行路径,排在项目和个人工作流之后。发现只读取meta,安装和列出都不运行脚本。<插件>:<名称>始终可以运行;裸名称只在没有同名项目/个人工作流、也没有其他活动插件提供时才指向插件。两个插件提供同名工作流时,裸名称以有歧义为由拒绝,并给出两个限定名称。同一插件内重名时,限定名称有歧义。plugin list --json、inspect和/plugins展开行列出插件的工作流及无效文件。/workflows显示插件工作流和它的调用名、只能用限定名运行的工作流、冲突以及未加载的插件工作流。/workflows <插件>:<名称>显示版本、许可、作用域、信任状态、来源和提交。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 子代理run.json/launch.jsonPTY:
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也都通过。未验证
未实现 / 已知限制
/<名称>后直接按 Enter,会先接受斜杠菜单的补全项;这是现有补全行为,本工单未改。/workflow save仍可以把插件运行的脚本副本保存到项目目录;保存之后,项目副本会接管裸名称。main、npm 和默认版本都没有改动。
解除阻塞的后续