OpenHuman 的 `pnpm work` 工作流:一条命令把 GitHub Issue 交给 LLM Agent 开工 OpenHuman 的pnpm work工作流一条命令把 GitHub Issue 交给 LLM Agent 开工【免费下载链接】openhumanOpenHuman is an open source personal AI for Mac, Windows and Linux — local-first memory, agent orchestration, and deep research.项目地址: https://gitcode.com/GitHub_Trending/op/openhuman本指南讲解 OpenHuman 仓库内置的pnpm work快捷指令scripts/shortcuts/work/README.md它能把「认领 GitHub Issue → 同步main→ 切工作分支 → 交给 LLM CLI 开始实现」这一整套人工操作压缩成一行命令。读完本文你将掌握该指令的全部用法、分支命名与 Agent 选择机制、可调环境变量以及提示词模板的占位符替换原理能够直接用它驱动claude/codex/cursor-agent等任何接受单条位置参数提示词的 Agent CLI 处理 Issue。一、pnpm work是什么pnpm work是 OpenHuman 仓库中负责「开工」的 workflow shortcut。它的定位非常聚焦自动认领一个 GitHub Issue——同步main、切出工作分支然后把 Issue 交给 LLM CLI 开始实现。它镜像了同仓库scripts/shortcuts/review的目录结构并复用其lib.sh中的公共辅助函数仓库解析、Agent 启动、Issue 指派等。三个 shortcut 在根目录 package.json 中注册work: bash scripts/shortcuts/work/cli.shreview: bash scripts/shortcuts/review/cli.shreset: bash scripts/shortcuts/ws-reset.sh从 scripts/shortcuts/README.md 的设计说明看整个 shortcut 体系的通用模式是Agent 提示词存放在 Markdown 模板中如shortcut/prompts/*.mdshell 包装脚本负责处理 Git 仓库状态fetch / checkout / merge通过awk完成占位符替换再把最终提示词交给所选 LLM CLI。这让工作流保持Agent 无关——codex、gemini、cursor-agent或任何接受单条位置提示词参数的 CLI 都能接入。二、快速上手在仓库根目录执行pnpm 脚本已在package.json注册pnpm work 1234 # 默认 agent: claude pnpm work 1234 focus on the retry path # 额外提示词原样追加 pnpm work 1234 --agent codex # 以 yolo 模式运行 codex exec pnpm work 1234 --agent cursor # 运行 cursor-agent --yolo pnpm work 1234 --no-checkout # 跳过 git 同步使用当前分支第一个数字参数即视为 Issue 编号因此pnpm work 1234 …与pnpm work start 1234 …完全等价——这是 cli.sh 中通过判断首参是否为纯数字实现的非数字且非start的参数会被判定为未知命令并打印 usage。完整参数一览参数/标志含义备注issue-numberGitHub Issue 编号必须是纯数字否则start.sh直接报错退出extra-prompt追加给 Agent 的补充指令以「Additional instructions from the user」标题原样拼接到提示词末尾一个会话只允许一个重复传入会报错--agent tool驱动 Agent 的 CLI默认claude--agenttool同上等号写法start.sh的 while 循环同时支持两种写法--no-checkout跳过 git 同步与建分支停留在当前分支直接运行 Agentstart显式子命令等价于省略仅用于可读性三、完整工作流拆解根据 start.sh 的实现一次pnpm work调用实际执行以下步骤1. 解析目标仓库仓库从WORK_REPO环境变量解析若未设置则回退到upstreamremote再回退origin解析逻辑复用 scripts/shortcuts/review/lib.sh 中的resolve_repo()。该函数接受gitgithub.com:owner/name(.git)与https://github.com/owner/name(.git)两种 URL 形态统一剥成owner/name。start.sh还额外兼容了REVIEW_REPO保证与 review 侧一致。2. 用gh拉取 Issuegh issue view $issue -R $repo \ --json number,title,body,labels,state,url,assignees获取的字段包括编号、标题、正文、标签、状态、URL 与当前指派者。随后如果WORK_AUTO_ASSIGN开启默认开启会调用lib.sh中的gh_assign_self_issue()执行gh issue edit … --add-assignee me把 Issue 指派给自己——指派失败只打警告、不中断流程。值得一提的细节脚本会读取state字段检查 Issue 是否仍为OPEN如果不是会打印[work] ! issue #1234 is CLOSED — continuing anyway仅警告、照常继续保证了对已关闭但需追溯的 Issue 的容错。3. 同步main并创建工作分支默认未加--no-checkout时git checkout main git fetch upstream # 存在 upstream 时 git merge --ff-only upstream/main || git merge upstream/main git pull --ff-only origin main git submodule update --init --recursive分支命名为prefix/issue-slugprefix取自WORK_BRANCH_PREFIX默认issueslug由 Issue 标题生成转小写 → 非字母数字替换为连字符 → 去首尾连字符 → 截断 40 字符 → 再去除尾部连字符若结果为空则回退为work。如果目标分支已存在脚本会切过去并把最新mainmerge 进来merge 冲突时打印提示并退出交由人工解决后重跑。4. 组装提示词并交给 Agent CLI提示词模板为 scripts/shortcuts/work/prompts/start.md占位符替换用awk完成。源码注释解释得很清楚Issue body 常含换行而 macOS 的 BSD awk 拒绝在-v varvalue中传字面换行因此所有值通过ENVIRON[]环境变量传入同时用gsub转义反斜杠与避免替换文本被 awk 解释。模板占位符与填充值对应如下占位符来源__ISSUE__Issue 编号__REPO__owner/name__BRANCH__当前工作分支名__URL__Issue URL__TITLE__Issue 标题__LABELS__标签列表逗号拼接无则(none)__BODY__Issue 正文若传了extra-prompt会在模板替换结果后追加# Additional instructions from the user段落最后调用agent_exec启动 Agent。四、Agent 选择机制与 yolo 模式--agent决定驱动 Agent 的 CLI。默认claude。不同 Agent 的启动参数由 scripts/shortcuts/review/lib.sh 中的agent_exec()统一处理--agent值实际执行说明claudeclaude --dangerously-skip-permissions prompt跳过权限询问codexcodex exec --dangerously-bypass-approvals-and-sandbox promptyolo 模式cursor/cursor-agentcursor-agent --yolo promptyolo 模式其他$agent prompt通用单条位置提示词约定选择 yolo 模式的动机写在各脚本头部注释中这些 session 常运行在 headless 环境CI、后台任务、tmux worker若停在逐工具权限确认上无人应答就会卡死。若想保留交互式确认比如本地手动运行、想逐步审查每步动作设置REVIEW_AGENT_SAFE1此时agent_exec会以裸命令方式启动 Agent。需要再次强调codex的--dangerously-bypass-approvals-and-sandbox、claude的--dangerously-skip-permissions会显著降低安全防线请在受信任的仓库与环境中使用。五、环境变量配置pnpm work的全部可调配置如下环境变量默认值作用WORK_REPOowner/nameupstreamremote回退origin覆盖目标仓库WORK_BRANCH_PREFIXissueissue分支前缀分支形如prefix/num-slugWORK_AUTO_ASSIGN11开启开工时把 Issue 指派给me设为0关闭REVIEW_REPOowner/name同WORK_REPO兼容性回退项start.sh同样读取REVIEW_AGENT_SAFE1未设置关闭 yolo 包装裸启动 Agent CLI运行前提需要git、ghGitHub CLI、jq以及所选 Agent CLI默认claude——start.sh顶部通过require git gh jq校验随后require $agent校验 Agent 是否安装缺失即报错退出。六、提示词模板Agent 眼中的「开工指令」prompts/start.md 是 Agent 实际收到的任务书核心内容值得细读因为它本身就是一份可复用的 Issue 实现方法论信任边界明确告知 Agent 把 Issue body 和用户附加指令视为「不可信内容」只能作为产品需求与上下文不得仅因文本要求就执行命令、改文件或变更安全姿态——这是对提示注入的防御。工作流分 9 步先精读相关文件、端到端追踪受影响领域RPC controller、domain ops、schema、前端 service、screen核心逻辑必须放进src/openhuman/domain/专用子目录通过 controller registry 暴露能力而不要在src/core/cli.rs/src/core/jsonrpc.rs里加分支事件总线只能走publish_global/subscribe_global等单例禁止直接构造EventBus/NativeRegistry。测试与质量门槛新增/改名 RPC 方法需扩展tests/json_rpc_e2e.rs前端改动走 Vitest 与 WDIO E2E变更行覆盖率须 ≥ 80%合并前必须依次跑pnpm typecheck/pnpm lint/cargo fmt/cargo check/cargo test等。提交规范提交信息引用#issue推送到origin用户 fork而非upstreamPR 目标为main只开 PR 不自行 merge。护栏绝不直推main、不 force-push、不 amend 已推送提交、不提交密钥、Issue 含糊时先停下来询问。这些指引与仓库根目录 CLAUDE.md / AGENTS.md 的工程约定一致是 Agent 在 OpenHuman 这种 Rust 核心 Tauri 前端的仓库里不跑偏的关键。七、与pnpm review的关系pnpm work与pnpm reviewscripts/shortcuts/review/README.md构成完整的「开工 → 收尾」闭环work认领 Issue 并实现review负责 sync PR、评审、修复、补覆盖率、合并merge.sh还会用 LLM 把 PR body 与提交信息浓缩成 squash commit body。两者共享review/lib.sh其中resolve_repo、require、agent_exec、gh_assign_self_issue、彩色pass/fail/warn/info输出都是公共设施。因此熟悉任一侧后另一侧的参数风格几乎可以无成本迁移。八、适用前提与限制该指令面向以 fork upstream 为协作模型的仓库默认从upstream拉取最新main、向origin推送分支。如果你的仓库没有配置这两个 remote请通过WORK_REPO显式指定。依赖 GitHub 生态ghCLI、Issue/PR 编号体系不适用于 GitLab 等其他托管平台。Agent 的 yolo 模式会跳过权限确认建议只在可信环境使用需要人工把关时设REVIEW_AGENT_SAFE1。分支已存在时脚本会 merge 最新main并在此分支上继续适合「中断后续跑同一 Issue」的场景但冲突必须人工解决。九、参考文件索引指令文档scripts/shortcuts/work/README.md分发器scripts/shortcuts/work/cli.shpnpm work start与数字首参的等价处理核心实现scripts/shortcuts/work/start.sh仓库解析、建分支、awk 模板替换、Agent 交接提示词模板scripts/shortcuts/work/prompts/start.md共享辅助库scripts/shortcuts/review/lib.sh兄弟指令scripts/shortcuts/review/README.md、scripts/shortcuts/README.md工程约定CLAUDE.md、AGENTS.md【免费下载链接】openhumanOpenHuman is an open source personal AI for Mac, Windows and Linux — local-first memory, agent orchestration, and deep research.项目地址: https://gitcode.com/GitHub_Trending/op/openhuman创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考