Skip to content

[Grok/dsh 52] 个人与项目工作流目录 #184

Description

@Blackman99

Parent

#132

Ticket: 52

Status: ready-for-agent

User Stories: 48, 49(见父规格)

What to build

用户发现、保存并运行个人或项目原格式工作流,进度出现在同一运行视图,而不必先配置插件或网页服务。

Acceptance criteria

  • 目录优先级、补全、保存规则、参数和预算选项真实生效,发现不等于自动执行未信任脚本。
  • 用户/项目同名、无效脚本、无可写目录及运行中编辑的行为明确;恢复不悄悄换成编辑后脚本。
  • 从目录选择到 dsh 子代理再到运行结果完整验证;文本模式提供真实可用概览。
  • 插件目录贡献和服务型内置流程另票交付,不以它们的依赖阻塞本票,不将空内置目录称为全部工作流完成。

Blocked by

Delivery contract

用户于2026-09-20批准当前测试与任务拆分。按父规格的已安装产物/真实终端和公开协议测试验收;实际实现须带适用的文档、Changeset及必要检查。ready-for-agent表示任务已定义,不表示前置任务已完成,也不授权自动开始本轮实施、购买付费资源或发布软件版本。

Activity

  1. Blackman99 commented on Sep 25, 2026

    @Blackman99
    OwnerAuthor

    Ticket 52 / #184 已合入 rewrite/grok-dsh-20260920 的 ce09b16。

    行为

    • 目录:<项目根>/.grok/workflows(git 根;不在 git 中时为工作目录;仅在已信任的文件夹中加载)和 $GROK_HOME/workflows 中以 meta.name 命名的 <名称>.rhai。同名时项目优先,未信任时只加载个人目录。发现只解析 meta,从不运行脚本;解析失败、元数据无效、文件名与 meta.name 不符、符号链接、超过 1 MiB 的文件带原因跳过,符号链接的目录不扫描。
    • /workflows 用几行概括目录(作用域、被遮蔽的个人副本、无效文件、扫描的文件夹,并说明内置和插件工作流不在此目录中、单独交付);/workflows <名称> 显示描述、适用场景、运行方式、路径和遮蔽关系,或同名文件未加载的原因。
    • 斜杠菜单补全 /<名称>(名称被命令、技能或自定义命令占用时不提供,只能用 /workflow <名称>);/<名称> [参数]、/workflow <名称> [参数] 和模型的 source: { type: "name" } 都启动后台运行,经 dsh 子代理执行,结果回到会话。
    • 参数采用参考格式:--agent-budget N、--effort LEVEL(用于没有自行设置 effort 的子代理),然后是 JSON 对象或文本(args.query / args.objective)。预算真正生效(超出时 budget_limited)。
    • 未知名称、无效文件(workflow 'x' is not loaded: <路径> is invalid: …)、同一作用域重复定义(有歧义)都会明确拒绝,不启动任何东西。
    • 运行保留启动时解析到的脚本:运行中编辑或删除文件不影响它,恢复重放保存的副本,只有下一次启动才读取新文件。
    • 模型在每个回合第一步收到参考格式的清单(变化时才重发,清单清空时会收到“已过期”说明);宿主侧 /<名称> 启动会连同运行 id 告知模型。
    • /workflow save <名称> 把运行保存的脚本写入 <项目根>/.grok/workflows/<meta.name>.rhai:只适用于以自身 meta.name 显示的运行(name-2 句柄拒绝),只在已信任的文件夹,不经过符号链接目录,原子创建、从不覆盖已有文件。没有可写的项目目录时(未信任、.grok 不是目录等)不写任何东西,并给出运行脚本位置和可复制到的 $GROK_HOME/workflows/<名称>.rhai。

    验证(全部只在 Linux 上)

    • scripts/rust-workflow.spec.mjs:32/32 通过,其中新增 4 个:按名称启动(信任时项目优先、未信任时个人副本、真实 dsh 子代理)、模型看到的清单及其变化说明、无效文件和非法名称;/<名称> 与 /workflow <名称> 的文本/JSON 参数、--agent-budget、--effort high 传到子代理;运行中编辑文件并暂停/恢复仍用原脚本、新启动读取新文件;/workflow save 成功、已存在、重复句柄、未信任、不可写目录。
    • python3 scripts/rust-workflow-pty-test.py(staged 原生二进制)通过:新增 /workflows、/workflows <名称>、无效文件原因、斜杠菜单补全 /digest 后带参数运行并在任务面板看到运行和子代理、无效的 /<名称>、/workflow save 及拒绝覆盖、保存后菜单出现新名称、-p 按名称运行。rust-goal-pty-test.py 在 rebase 到 [Grok/dsh 48] 目标执行与停止条件 #180 后也通过。
    • pnpm test:2467 通过、1 失败(已知的 reference-evidence.spec 超时)。
    • cargo test -p codsh-rust:598 通过、4 失败(已知的 2 个 filesystem_sandbox,以及时好时坏的 privacy/voice 本地 HTTP 测试,本次未改动这些模块);其他 crate 1043 通过、0 失败。workflow_catalog:: 单元测试覆盖优先级、信任、无效/符号链接文件、清单上限和每种保存拒绝。
    • cargo fmt --check、clippy(0 warning)、pnpm run typecheck 通过。

    未验证

    • macOS 与 Windows 未验证。

    未实现 / 已知限制

    main、npm 和默认版本都没有改动。

    解除阻塞的后续

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions