Repository navigation
[Grok/dsh 52] 个人与项目工作流目录 #184
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 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 未验证。
未实现 / 已知限制
- 没有内置工作流和插件工作流目录([Grok/dsh 73] 插件工作流目录贡献 #205、[Grok/dsh 74] 内置研究流程端到端兼容 #206、[Grok/dsh 78] 内置会话学习流程兼容 #210 负责);空的内置目录不代表“全部工作流已完成”。
/workflow和/<名称>需要活动的 dsh 会话。- 斜杠菜单在每次打开时重新扫描目录(同步读取文件)。
/workflows显示在状态提示区(最多约 6 行),详细信息用/workflows <名称>;/workflow runs在运行很多时同样会被截断([Grok/dsh 51] 工作流运行视图与暂停恢复 #183 的现有行为)。- 每个作用域只有一个目录,因此同一作用域重复定义实际上无法出现,但已处理。
- 保存只写项目作用域;个人目录需要按回复给出的路径手动复制。
--effort按标准推理等级校验,子代理模型是否支持在启动子代理时才检查。resume_from和fork_context仍以明确错误拒绝。
main、npm 和默认版本都没有改动。
解除阻塞的后续
- [Grok/dsh 73] 插件工作流目录贡献 #205(插件工作流目录)
- [Grok/dsh 74] 内置研究流程端到端兼容 #206(内置 research 流程)
- [Grok/dsh 78] 内置会话学习流程兼容 #210(内置 session-learning 流程)
- 目录:
Metadata
Metadata
Assignees
Labels
ready-for-agentAgent-grabbable workAgent-grabbable work
Parent
#132
Ticket: 52
Status: ready-for-agent
User Stories: 48, 49(见父规格)
What to build
用户发现、保存并运行个人或项目原格式工作流,进度出现在同一运行视图,而不必先配置插件或网页服务。
Acceptance criteria
Blocked by
Delivery contract
用户于2026-09-20批准当前测试与任务拆分。按父规格的已安装产物/真实终端和公开协议测试验收;实际实现须带适用的文档、Changeset及必要检查。ready-for-agent表示任务已定义,不表示前置任务已完成,也不授权自动开始本轮实施、购买付费资源或发布软件版本。