<!-- codsh-publication:grok-cli-dsh-rewrite:ticket-34 --> ## Parent https://github.com/Blackman99/codsh/issues/132 **Ticket:** 34 **Status:** ready-for-agent **User Stories:** 37, 38, 41(见父规格) ## What to build 用户启用已安装插件后能实际使用它提供的规则、命令、Skills 和 Hooks,停用后相应能力撤回。 ## Acceptance criteria - [ ] 插件贡献经现有统一发现与执行入口生效,不创建另一套权限或命令处理系统。 - [ ] 重复命名、部分失败、版本更新、停用与移除在目录和实际执行中一致。 - [ ] 执行仍依照项目信任和明确权限;安装授权不等于运行任意工具的授权。 - [ ] 通过包含多种贡献的临时插件验证用户操作到 dsh 行为;后续 MCP/工作流贡献由对应任务补验。 ## Blocked by - #163 — Ticket 31: 项目规则、Skills 与自定义命令 - #164 — Ticket 32: Hooks 生命周期与阻断语义 - #165 — Ticket 33: 插件来源与安装生命周期 ## Delivery contract 用户于2026-09-20批准当前测试与任务拆分。按父规格的已安装产物/真实终端和公开协议测试验收;实际实现须带适用的文档、Changeset及必要检查。ready-for-agent表示任务已定义,不表示前置任务已完成,也不授权自动开始本轮实施、购买付费资源或发布软件版本。
Activity
feat(rust): plugin content enable/disable and extension view (#166)
Blackman99 commentedon Sep 25, 2026
已集成到
rewrite/grok-dsh-20260920:5866e2a452a09d..5866e2a(普通 fast-forward,未 force-push)。origin/rewrite/grok-dsh-20260920在提交时仍为452a09d,rebase 为空操作,无冲突;与并行的 [Grok/dsh 43] 后台命令与完成唤醒 #175 / [Grok/dsh 49] Rhai 工作流执行 dsh 子代理 #181 没有交叉提交。功能
plugin enable|disable(及/plugins中的 Space)让已安装且受信任的插件真正生效或撤回:rules、skills、commands 通过现有资产发现合并(/plugin:name,无原生/内置/其他插件冲突时保留裸名),agents 以plugin:agent类型加入子代理策略,command hooks 交给 dsh 的 hook runner(设置GROK_PLUGIN_ROOT/GROK_PLUGIN_DATA及CLAUDE_*别名,数据目录$GROK_HOME/plugin-data/<name>)。blocked。启用不授予任何工具权限。rules/skills/commands/agents/hooks路径限制在插件根目录内;内联 hooks、非 command handler、重名、保留命名空间冲突、缺失根目录都作为逐插件问题报告,一个坏插件不会隐藏其他插件。plugin list --json/inspect/ 展开的/plugins行显示状态(active/disabled/blocked/missing/shadowed)、贡献摘要和问题;list --json保留status: "installed",新增state、stateDetail、contributions。.changeset/rust-plugin-content.md(codsh-cli / codsh-bundle patch)。scripts/rust-plugin-content.spec.mjs(2 个单元 + 2 个真实 dsh e2e,keyless mock + 临时 home),scripts/rust-plugin-content-pty-test.py(Linux/macOS,已加入test:rust:pty)。检查(Linux,干净 env,真实计数)
pnpm typecheck:通过。pnpm test:89 个文件,2368 通过 / 1 失败(已知的reference-evidence.spec.mjs"drives interactive help" 在负载下 5s 超时;单独以--testTimeout=60000运行 11/11 通过)。新 spec 4/4,rust-hooks.spec.mjs5/5。cargo test --locked --workspace --no-fail-fast:530+498+42+61+2+379 通过,4 个失败均为已知:filesystem_sandbox的strict_requests_network_isolation...、trusted_project_custom_applies...,以及不稳定的privacy::drafts_stay_local...、voice::substitute_route...(单独重跑均通过)。cargo fmt --check:通过。cargo clippy ... --all-targets -- -D warnings:仅有既有的filesystem_sandbox.rs未使用tail_marker与 needlessreturn;加-A dead_code -A clippy::needless_return后通过。pnpm run build:rust后的 PTY:rust-plugin-content-pty-test.py、rust-subagent-pty-test.py、rust-plan-pty-test.py、rust-queue-pty-test.py均通过。未验证
scripts/rust-*-pty-test.py(如 plugin、hook、permission、assets、turn、resume)以及安装产物脚本未在 Linux 上运行。main、npm、默认版本和 PR #213 均未改动;未发布、未 release。解锁后续:#195(Ship)、#204、#205。