Communitygithub.com

helm:实时可操控单任务看板

一个网关AI编程助手工作时保持的、可实时查看和操纵的单个任务看板。您可以一边观察,一边在中途编辑目标方向。

helm:实时可操控单任务看板 是什么?

helm 是一个轻量级的实时任务看板,专为 AI 编码助手(如 Claude Code)设计。它通过在浏览器中打开一个单任务看板,让人类开发者能够实时观察 AI 的工作进展,并在任何时候修改任务目标或调整方向。AI 通过廉价的 `helm` 命令(每次调用仅消耗少量 token)更新看板状态,例如初始化看板、设置计划步骤、记录事件、标记决策或提出需要人类输入的问题。看板由简短的本机 Node.js 服务器驱动,通过 SSE 流式传输变化,并在无人查看时自动退出。helm 的核心理念是“诚实而经济”——让频繁的状态更新保持廉价,同时提供足够的信息透明度,确保 AI 与人类在任务目标上保持同步。支持所有运行 Node.js 的平台。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add chasey-myagi/helm

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

helm

一个实时的单任务看板。人类在浏览器中保持其打开;您在干活时通过廉价的 helm 调用来更新它;一个短命的本地服务器将变化流式传输到页面。人类可以随时接管——编辑目标 / 指导方向——而您在下一个检查点遵循之。

两个规则

  1. 永远只调用 helm。绝不要手写或编辑 HTML、服务器或 state.json。 每次 helm 调用只消耗少量 token,这恰恰是关键点:保持看板诚实地随着工作更新而保持低成本。重新生成一个样式化的页面会多花费 10 倍成本,彻底违背初衷。
  2. 在每次检查点重新读取人类的指导(计划步骤之间、在执行任何不可逆操作之前),使用 helm goal。人类通过页面操纵方向;您只有主动查看才能看到。如果目标或指导发生了变化,遵循新版本并通过 event 说明。

助手程序

helm 以构建好、无依赖的 Node 脚本形式发布在 dist/helm.mjs(它能在裸机上运行 node ——无需 npm install,无需在安装时构建)。获取其路径一次并重复使用:

HELM="<此技能目录>/dist/helm.mjs"   # 例如 ~/.claude/skills/helm/dist/helm.mjs

通过此路径调用 —— "$HELM" … 可通过其 shebang 工作,或使用 node "$HELM" …。不要将其别名为裸 helm(如果您使用 Kubernetes 的话 —— 那是另一个 helm)。init 之后,看板会自动通过从当前工作目录向上查找找到,因此后续调用无需 --dir。

工作流程

  1. 初始化一次,在值得观察的任务开始时。赋予其目标,这样人类从一开始就能进行操纵:

    "$HELM" init --title "将认证迁移到 JWT" --agent "Claude Code" --model claude-opus-4-8 \
                 --goal "将会话从 cookie 迁移到无状态 JWT,不丢失任何用户"
    

    这将启动服务器并打开浏览器。告知用户看板已启动,他们可以随时在其中编辑目标 / 指导方向。

  2. 规划步骤,以便人类看到工作的整体形状,然后逐步推进。step N 将前一步标记为完成,使 N 成为当前活动,并更新进度 —— 一次调用完成所有更新:

    "$HELM" plan "备份用户" "添加 RS256 签发/验证" "迁移会话" "切换" "回归测试"
    "$HELM" step 2
    
  3. 随进展叙述 —— 小而频繁、诚实。每次调用一个:

    "$HELM" event ok   "用户表已备份到 backups/users.sql"
    "$HELM" event warn "有3个会话使用旧版 cookie 形状,需要手动迁移"  # 陷阱也放在这里
    "$HELM" decide "选择 RS256 而非 HS256,以便服务仅用公钥验证"
    "$HELM" decide "优先使用暂存环境,生产环境等待人类确认" --assumption     # 标记未确认的假设
    
  4. 检查点 —— 读取人类的指导并遵循:

    "$HELM" goal      # 打印目标 + 指导;如果人类编辑过,此行会说明——遵循之
    

    如果方向改变了,适应并记录:"$HELM" event info "指导方向改变 → 只做暂存环境"。

  5. 一旦出现真正的阻塞项就立即公开;得到答复后解决之:

    "$HELM" ask "先迁移暂存数据库还是生产数据库?"   # 仅限真正需要人工介入的问题
    "$HELM" status "等待您对生产数据库的决策" --state blocked   # blocked/new 问题会通知人类
    "$HELM" resolve 1
    
  6. 完成: "$HELM" done "所有会话已迁移,测试通过"。看板仍可查看,然后在无人查看时服务器自动退出。"$HELM" stop 立即结束;"$HELM" open 重新打开。

频繁且小规模地更新。状态变更、完成一步、一个陷阱、一项决策、一个新工件——每次调用一个。只有每分钟跟踪现实情况,看板才值得存在。

命令

命令作用
helm init --title T [--subtitle S] [--agent A] [--model M] [--goal G] [--theme light|dark] [--no-open]创建看板,启动其服务器,打开它。
helm status TEXT [--state running|blocked|waiting|done] [--phase P] [--pct N]设置当前活动(NOW)行。blocked 会通知人类。
helm plan A B C … · helm plan --add TEXT设置计划步骤,或追加一个。
helm step N [--text NOW]前进到步骤 N:前一步标记为完成,N 变为活动,NOW + 进度更新。
helm event KIND TEXT附加一条时间线条目。KIND ∈ ok fail warn info run。陷阱/死胡同 → warn/fail。
helm decide TEXT [--assumption]记录一项决策;--assumption 将其标记为未确认(以便人类可以纠正)。
helm ask QUESTION · helm resolve N添加 / 移除一个“需要您输入”项(通知人类)。
helm goal · helm goal --set TEXT读取人类的目标 + 指导(在检查点执行此操作),或设置目标。
helm link LABEL URL · helm image PATH [--label L] · helm data LABEL VALUE附加一个工件(链接 / 图片 / 统计数据)。
helm meta [--title …] [--subtitle …] [--theme …] [--agent …] [--model …]后来编辑标头字段。
helm done [TEXT] · helm stop · helm open完成 · 立即停止服务器 · 重新打开看板。

约定(自动处理或需您遵守)

  • ask 仅用于真正的决策。 绝不要填入已解决的或反问式的问题。如果不需要人类介入,就保持空白——安静的看板才是诚实的看板。
  • --state 控制实时脉冲、颜色和通知。 在活动时使用 running;当您卡住或等待人类时使用 blocked/waiting(这些会通过桌面通知 + 标签页标题中的 🔴 计数来提醒他们);结束时使用 done。
  • 决策与假设。 对于您已承诺的选择使用普通 decide;对于您假设但未确认的事情使用 --assumption。假设标签正是人类能及早发现您走偏的地方,所以要诚实标记。
  • 来源页脚和活动图例会自动渲染——不要手动构建。
  • 该进程是短命的。 任务完成且无人查看时会自动退出,并且永远不会自行重启。如果在页面关闭期间有更新,它们仍会被保存;helm open 显示最新状态。

文件

运行时部分(已提交,无依赖——dist/):

  • dist/helm.mjs — 您用于每次更新的 CLI。
  • dist/server.mjs — 短命的本地服务器:提供 UI,通过 SSE 流式传输状态,接受指导写回,无人查看时自动退出。
  • dist/board.html — 看板 UI(双栏,薰衣草浅色 + 深色主题),由服务器提供。

构建方式(仅开发,无需运行):src/*.ts(类型化的 TypeScript 源码,共享一个 types.ts 用于数据模型),build.mjs(esbuild),package.json。编辑 src/ 后,运行 npm run build。查看 DEVRULES.md 了解不可协商的规则。

相关技能