用途
/work 是一个针对当前任务的声明式技能:为这项任务单独创建一个 git worktree,并在其中完成工作。它只作用于用户此刻启动的这项任务,并不是一条“所有工作都必须在 worktree 中进行”的长期规则。
调用形式为 /work,可选附带 slug 或描述,例如 /work [slug]。
主要能力
- 读取仓库既有约定,并据此创建 worktree 与分支。
- 创建 worktree 后进入该目录,在其中执行用户请求的任务。
- 若已存在匹配的 worktree 或分支,则复用,不重复创建。
- 遵循仓库对 node_modules、.venv、符号链接等内容的处理方式。
- 在交接时告知用户 worktree 路径以及如何运行。
- 完成后可提交、推送分支,并向默认分支发起 PR/MR。
- 可主动提出清理分支已合并的 worktree。
使用方式
技能会先查看仓库当前的做法并照做,主要参考以下命令:
git worktree list # sibling dirs + branches git branch -a --sort=-committerdate | head -20 # branch prefix/slug pattern git remote show origin | sed -n 's/.*HEAD branch: //p' # default branch
需要确定的约定包括:
- 分支前缀:沿用占主导的前缀(例如 <initials>/<slug>);若没有明显约定则询问。
- worktree 目录:沿用同级目录的命名与位置(常见为与主检出相邻的 <repo>-<short>);短后缀与完整分支名不同也可以。
- 基础分支:默认为当前默认分支,除非用户指定其他分支。
- slug:来自 /work 的参数,否则取自任务描述。
创建命令示例:
repo="$(git rev-parse --show-toplevel)" parent="$(dirname "$repo")" default="$(git -C "$repo" remote show origin | sed -n 's/.*HEAD branch: //p')" git -C "$repo" fetch origin "$default" git -C "$repo" worktree add -b <prefix>/<slug> "$parent/$(basename "$repo")-<short>" "origin/$default" cd "$parent/$(basename "$repo")-<short>"
创建后在该 worktree 中执行任务,绝不在主检出目录中执行,也不在其他代理的 worktree 中执行。
适用场景
- 用户通过 /work 启动一项新任务,希望使用独立 worktree 隔离进行。
- 多个 worker 或子代理并行工作时,每个 worker 和子代理各自拥有独立的 hermes-agent worktree,worktree 路径写在其指令中。
- 修复使用 bb/* 分支;验证、类型检查和测试使用基于 origin/main 的 detached worktree。
- 每个 worktree 各自运行 npm ci。
限制与注意事项
- 绝不在 worktree 中使用 git stash:refs/stash 由该仓库的所有 worktree 共享,并行代理可能 pop 到你的条目,或你 pop 到他们的条目。若需针对基础分支测试,可将文件另存(git show HEAD:<path> > …)或使用一次性 worktree。
- 绝不在 ~/Developer/hermes-agent 中编辑、安装、构建、类型检查或测试;在那里运行 tsc -b 会在源码旁生成 .js 文件。
- 优先直接执行聚焦的修复;不要将常规的同级路径审计或清理委派出去;子代理仅保留给能明显节省时间的大型独立工作。
- 当仓库支持时,JavaScript 包命令和安装示例默认使用 pnpm;若仓库已有不同的包管理器/lockfile 约定,则遵循该约定,不要引入第二个 lockfile。
- UI 相关使用 ui-only + ui-system;测试使用仓库自身所用的方式。
- 若是在审查已有 PR 而非开展新工作,则使用 pr-triage。
暂未提供的信息
关于该技能的收费、价格、支持平台、具体效果等事实,资料中暂未提供。