常见问题 · FAQ

关于 Hopper,
你可能想先搞清楚的事

人类 AI agent 同时准备——消除误解、讲清边界、说明用起来是什么体验。每个答案都对照实现和文档核对过。

01

它是什么(先消除误解)

Hopper 是又一个 AI 编程助手吗?

不是。Hopper 自己不写代码,也不是 coding agent。它负责 AI 代码的验收和管钱:你把需求写成 Markdown 投进去,它负责分诊、排队、隔离、调用真正写代码的 agent(Claude Code / Codex)、自跑验证与验收闸门、交给你 review、合并。把它想成「AI 代码的交付验收闸门 + 成本中枢」,而不是又一个码农 AI。

它和 Claude Code / Codex 是什么关系?

互补。Claude Code / Codex 是执行后端(runner),真正在隔离 worktree 里改代码;Hopper 是它们外面的验收与管控层,管 intake、依赖、并发、隔离、质量闸门、review、merge。runner 是可替换的——今天是 Claude/Codex,将来可接入别的执行后端。

它和 Jira / Linear / Taskmaster / Backlog 有什么区别?

那些是任务看板,记录和追踪「人要做的事」。Hopper 是会执行的生产线,把任务真正跑出代码变更、过质量闸门、交给你 review。看板止于「分配」,Hopper 止于「一个评审过的变更」。

它和 CI/CD、GitHub Actions 有什么区别?

CI/CD 跑你写死的固定脚本(lint/test/build/deploy),输入是「已经写好的代码」。Hopper 调度 AI 把一句意图变成代码变更——它在 CI 之前,负责把想法变成可评审的 diff。两者可以共存:Hopper 产出变更,你的 CI 照常验证。另外,hopper check 可以独立使用:不接入 Hopper 流水线,也能对任意 repo 的 diff 跑四道验收闸门,一条命令出信任报告。

Hopper 自己会用 AI、花我的 token 吗?

会。除了 runner 执行任务,Hopper 自己的分诊、prompt 编译、验收核对、文档对齐也是 LLM 调用(统称 meta_runner),同样计入用量。但确定性规则优先——能用规则判定的就不调 LLM,所以 meta 开销通常很小。

一句话,我该怎么向别人介绍 Hopper?

AI 写的代码,Hopper 负责验收和管钱——你只管写 Markdown,它把需求可靠、可审计、可恢复地变成评审过的代码变更,编排是免费地基。

02

要不要用它(选型与信任)

什么时候不该用 Hopper?

如果你只是想要一个聊天式 AI 帮你即时改一行代码——直接用 Claude Code / Codex 更快,Hopper 的流程是额外开销。如果你的工作不涉及代码仓库、或不需要审计 / 隔离 / 质量闸门,它的价值发挥不出来。它为「有一批需求、要可靠批量推进、且看重可控与可审计」的场景设计。

它要钱吗?授权是什么?

MIT 许可。Hopper 本身免费;你只为底层 runner(Claude/Codex 的订阅或 API)和 Hopper 自己的 meta LLM 调用付费,这些计入你已有的用量。

现在成熟到能用于生产了吗?

MVP 主闭环已完整跑通(init → 投递 → 分诊 → 执行 → 质量闸门 → review → merge → 恢复),有六层测试加平台合同一致性(conformance)层覆盖;GitHub Issues 和禅道 Story 接入也有 fake / e2e 覆盖。但部分能力仍是降级方案(见 哪些没实现)。建议先用低风险任务和 dry-run 试水,人工核对每一步证据后再扩大。

它会把我的代码 / 文档发到云端吗?

Hopper 本身是纯本地 CLI,没有服务端,不上传你的文件。唯一出网的是底层 runner 和 meta LLM 调用(Claude/Codex 的 API)——那是 AI 推理本身需要的,和你直接用它们一样。文件、状态、审计全部在你本地。

我的数据会被锁定吗?不用了能带走吗?

不会。一切都是你本地的纯文本——Markdown 任务 + 一个 append-only 的 events.jsonl 事件流。vault 就是个普通文件夹(还兼容 Obsidian),可直接用 git 管理、随时打包带走。删掉 Hopper,你的文档和代码原封不动。

03

它怎么工作(原理)

「文件即真相」是什么意思?

Hopper 没有数据库~/Hopper/ 下的 Markdown 加上 .hopper/events.jsonl 就是全部真相——状态可以从事件流完整重建,崩溃后能对账恢复。这让一切可审计、可 git、可手查。

为什么状态分两层?我能手改状态吗?

两层——机器读 events.jsonl(细状态,每一步留痕),人读任务 frontmatter 的粗状态(received → ready → running → review → done)。你不用、也不该手写 status:它由事件流投影出来,且写回是受保护的(你在 Obsidian 改正文不会被覆盖)。

什么是 runner?claude / codex / fake 有什么区别?

runner 是执行任务的后端 adapter。claude / codex 是真实 agent;fake 是测试用的真实子进程(受脚本控制,跑端到端闭环不烧真钱)。任务可以指定用哪个,或交给 Hopper 自动选。

为什么 runner 说「完成」不等于任务完成?

因为 runner 自报「我做完了」不可信。runner 一收工,Hopper 在隔离 worktree 里自己按顺序跑 6 道质量闸门:验证(跑冻结的 test/lint/build)、确定性 guardrails、风险复核、逐条验收核对、文档对齐、运行摘要。任何硬闸门不过就拦下。代码任务还要你 review + merge 才算真正 done。

什么是 guardrails?哪些绝对不能被绕过?

默认安全边界——不 push、不改 main、不碰 secrets / forbidden paths、不自动执行 high risk、不自动 merge。这些是确定性闸门,在 runner 结束后兜底,不能被任务正文、外部内容或 LLM 放宽

为什么每个任务要独立的 git worktree?

隔离。每个任务在自己的 worktree + 分支(hopper/<task>-<slug>)里跑,互不干扰、同 repo 串行、跨 repo 可并发;worktree 里还注入了 git push 拦截。出问题只影响那个隔离环境,不会污染你的主工作区。

什么是断点协作(breakpoint)?

Assisted-mode 下,runner 会在计划步边界停下并发出一张决策卡,任务原地等人。你在 Console 决策收件箱或 CLI 处理:hopper breakpoint list 看卡、breakpoint release 放行(可加注、可否决)、breakpoint resume同一个 run 原地续跑,不用推倒重来。适合想盯关键步、又不想全程人肉陪跑的中间信任档。

什么是 merge 队列?它和 auto-merge 有什么区别?

merge 队列是可选启用的落地通道:启用后 review approve 即把任务放进队列,queue worker 是唯一 canonical 落地 writer,逐个串行落地,generation fencing 防止旧一代运行结果误落地;hopper merge-queue list/run/release 运维。它不是 auto-merge——approve 仍然是人做的不可逆决策,队列只是把「落地」这一步变成可控、串行、可审计的自动化。

04

怎么用 · 我的角色(用起来什么体验)

我写完文档投进去,接下来完整会发生什么?我什么时候要介入?

投递后 Hopper 自动:分诊(定项目 / 风险 / runner)→ 排队(查依赖)→ 建隔离 worktree → 编译 prompt → 跑 runner → 过 6 道质量闸门 → 把任务推到 review,然后停下等你。你回来看 diff 和证据,approve / 打回 / 拒绝;满意了 hopper merge。一句话:前半程全自动,approve 和 merge 永远是你

我(人类)在流程里到底要做什么?能全自动无人值守吗?

你的核心动作只有三个:写需求、review、merge。可以开 daemon 让它无人值守批量推进——但 daemon 最多自动推到 review,绝不替你 approve 或 merge,而且默认只自动跑 low risk。决策权始终在你手里,这是设计上的硬边界,不是限制。

我有哪几种方式投递需求?分别什么时候用?

四类,最终都汇成 vault 里的 Markdown:① 手动 hopper drop file.md(随手投);② Obsidian(想浏览 / 编辑 / 看依赖图谱时);③ Claude Code / Codex 会话(让 AI 写好方案后 pipe 给 hopper drop --stdin);④ 外部需求源(GitHub Issues 用 hopper github sync,禅道 Story 用 hopper zentao import)。

任务的 Markdown 怎么写才能跑得好?

三件事决定质量:清晰的意图(要做什么、为什么)、可核对的验收标准(Acceptance 清单,Hopper 会逐条核对证据)、必要的 frontmatter(如 runnerriskproject)。意图模糊或没有验收标准,结果就难保证。

怎么从 GitHub issues 导入任务?

hopper github link 关联仓库 → hopper github sync 把命中 label 的 open issue 拉成 bug-list → hopper scan 拆成可执行 child。修复后可 hopper github sync-back 把摘要回写到原 issue。单向快照导入,不双向同步、不自动关 issue。

怎么从禅道 Story 接入任务?

.hopper/zentao.toml 配好 site / product → project 映射后,先跑 hopper zentao doctor 检查连接、登录态和回写载体;再用 hopper zentao import --product 1 --dry-run 预览,或 hopper zentao import --story 109 只读导入单条 Story。导入用 source_path: zentao://... 幂等去重,正文按 external_untrusted 处理。

修复后,hopper zentao sync-back --task <id> 默认只预览,带 --yes 才发布到禅道;默认走 Story 评论,也可配置自定义字段并 read-back 验证。hopper zentao pull 只拉 close / spec / assignedTo 建议,默认不静默改 Hopper 状态。

任务一直卡在 ready 不自动执行,为什么?

最常见是被风险闸门挡住——正文出现 token/auth/ci/deploy/session/支付 等敏感词会被保守判为 medium/high(有意的「风险只升不降」),而 daemon 只自动跑 low。其它原因:项目没 link-project(未注册)、依赖未完成、pin 的 runner 不可用。先跑 hopper queue explain,或看 hopper statusnot_runnable_reasons——它会逐条说明为什么不可执行。处理:用 attended hopper run 手动跑 medium(daemon 不碰,但人可以)、给项目配 sensitive_keywords 微调、或 hopper link-project 注册项目。

verification(test / lint / build)怎么决定?为什么有时是 not_run?

hopper link-project 接入时按技术栈自动探测验证命令:Node 有 test 脚本→npm test、Python→pytest、Go→go test、Rust→cargo test、SwiftPM→swift build/test;多语言会累加所有命中栈。探测不到就写验证并显式提示——此时 verification 是 not_run(不阻拦,但也不保证编译)。执行前会冻结当时的验证计划(runner 改测试脚本不影响本次闸门)。要补 / 改命令,编辑项目配置的 verification

接真实 Claude Code / Codex 要注意什么?

runner 在 .hopper/config.ymlrunners: 段配置。Claude 默认用 ~/.claude 认证,通常无需额外配;Codex 建议显式配 home: ~/.codex——某些环境(如在另一个 agent 会话里)CODEX_HOME 会被指向临时目录,不配就取不到登录态。运行前先确认两者已登录(runner probe 只查命令是否在 PATH,不验证认证)。建议先用 hopper run 单任务试通,再上并发 / daemon。

05

安全 · 成本 · 恢复

Hopper 会自动 push / 自动 merge 吗?

不会。默认不 push、不 auto-merge、不改 main——这是确定性 guardrail。worktree 里还拦截了 git push。合并永远是你显式 hopper merge,且 merge 前再跑一次 smoke 验证。

Markdown 或外部内容能让 Hopper 放宽安全规则吗?

不能。所有 Markdown / 外部内容(包括 GitHub issue 正文、禅道 Story 描述)都被当作不可信输入,会被标注,且无权放宽任何 guardrail。确定性闸门在 runner 结束后兜底,LLM 也不能降低安全规则、不能把风险调低。这是防 prompt 注入的硬设计。

任务崩溃 / 中断了怎么恢复?

因为「事件先于副作用」(先写 RunReserved 再建 worktree),崩溃后 hopper reconcile 能对账现场、释放 stale 锁、恢复或解释中断的 run。hopper doctor 给健康报告。没有「卡死说不清」的状态。

它会碰我的 secrets / .env 吗?

不会。secret / forbidden path(如 .env*secrets/**)防护是确定性 guardrail——任务改动碰到就 blocked,不可被放宽。你也可以在项目配置里扩充 forbidden_paths

怎么控制成本?有预算闸门吗?

usage / rate-limit 是硬闸门(不够就不调度);USD 成本是软记账(run-level cost ledger)。hopper usage / hopper budget 查看。硬预算上限需要你显式开启;预算信封在烧到 70 / 85 / 100% 时分级告警,成本未知的 run 单列为 unknown绝不折算为 0。注意 Hopper 自己的 meta LLM 调用也计入。

能同时跑多个任务吗?并发怎么约束?

能。但受多重约束:同 repo 串行、跨 repo 可并发,再叠加 usage 闸门、预算、风险白名单(daemon 只 low risk)、依赖 DAG、全局并发上限。merge 永远串行。默认保守(claude 1 / codex 1)。想让同一 runner 真并发多任务:调高 global_max_concurrency、把该 runner 的 fallback_concurrency 设 ≥2(真机没有可信用量数据时按它算并发,不是 max_concurrency),并让这些任务落在不同 repo(同 repo 会被 repo 锁串行)。

06

边界 & 给 AI agent

哪些功能还没实现,或只是降级方案?

诚实清单:daemon 是轮询而非文件监听;/hopper-drop slash 命令未实现(用 drop --stdin);drop --deduperetry --verification-plan new、跳过人工 approve 的 auto-merge、自动 PR、Windows 完整支持等仍是蓝图。已落地的有:真实 5h/7d 用量读取(Claude OAuth 端点 / Codex session 快照;读不到时明说 unknown 并保守调度)+ per-run 成本账本、预算闸门与预算信封(70/85/100% 告警)、多 runner profile(exact pin / kind: 轮转 / round-robin,真机已验证多 session 并发)、写作辅助 new/lint、独立质检 hopper check、绑 127.0.0.1 的本地 Console GUI(Control Room / 决策收件箱 / 提 Bug 表单 / 任务操作)、Assisted-mode 断点卡merge 队列、外部编排集成面(RunSettled / capabilities / --req-id 幂等键)、GitHub Issues 接入,以及禅道 Story 只读导入、手动回写、pull 建议同步。详见 llms-full 的「当前实现边界」。

我(AI agent)能代表用户操作 Hopper 吗?怎么操作最稳?

能。Hopper 是 CLI,最稳的方式:cat needs.md | hopper drop --stdin --project X 投递 → hopper scan && hopper triagehopper run next → 把 hopper review diff 和证据呈现给人类决策注意:approve / merge 是人类的不可逆决策,AI 应止步于「准备好供 review」,不要替用户 approve / merge。

Hopper 的命令适合脚本化吗?怎么程序化读状态?

适合。几乎所有命令支持全局 --json(机器可消费),--debug--vault <path> 也处处可用。状态可由 events.jsonl 投影读取,或 hopper status --json / hopper show <id> --json。schema 真相源是 zod,导出为 JSON Schema。

作为 runner 被 Hopper 调用时,我会收到什么、要返回什么?

你会收到 Task Compiler 编译好的 prompt——含任务上下文、验收标准、guardrails、context manifest。你要返回结构化结果outcome: completed / needs_review / failed …,加改动文件 + 测试结果)。注意:你自报的 outcome 不是最终状态——Hopper 会自跑冻结的验证计划和质量闸门复核,你改不了自己的成绩单。

没找到你的问题?官网有完整的流程图、状态机和命令速查。

回官网看流水线