← 全部极客知识库

主流 Agent 入门教程 / ZCode

7. 目标模式完成复杂升级

原文备份 · 第 9 / 12 篇 · 查看极客时间原知识库 ↗

本篇目录 · 12 节

来源:ZCode

前几课的任务都能在一两轮内完成。现在项目已有稳定基线,要同时增加近七天统计、JSON 导出和键盘可操作性,还要回归原有功能。继续靠你反复说“下一步”很容易漏项,这才是使用目标模式的时机。

目标模式解决“做到什么程度才算结束”;执行模式解决“过程中哪些操作需要确认”。二者不是同一个开关。

起始状态

开始前确认:

  • 工作区仍是 focus-board;
  • AGENTS.md、index.html、styles.css、app.js 都存在;
  • 持久化、三种筛选和刷新后的完成状态都正常;
  • git status --short 没有未审查改动。

如果 Git 状态不为空,先审查并处理当前差异。不要让一个长任务建立在来源不明的修改上。

把“大升级”改写成可校验目标

“把应用完善一下”没有明确终点。目标模式需要能从文件、页面或测试结果中核对的完成标准。本课采用以下定义:

  • 显示最近 7 天创建数、完成数和完成率;
  • 导出当前全部事项为 JSON 文件;
  • 只用键盘也能完成主要操作;
  • 原有持久化、筛选、统计和窄屏行为不退化;
  • 最终给出实际浏览器验证记录和变更清单。

创建任务并选择执行模式

新建项目任务,让 AGENTS.md 从任务开始就进入上下文。把执行模式设为“自动编辑”:它可以连续修改低风险项目文件,但命令和其他高风险操作仍可能停下来确认。

不要停留在“计划模式”。官方说明 /goal 与计划模式的工作方式冲突,在计划模式或当前任务仍在运行时不能设置目标。目标模式

目标模式可能自动运行多轮并持续消耗模型额度。开始前确认当前套餐或 API 余额足够,并在目标摘要中观察迭代;达到目标用量上限时,ZCode 会停止自动推进,而不是无限运行。

设置目标

在输入框输入 /goal,从建议面板选择命令,后面接上下面的目标内容;也可以直接整段粘贴:

/goal 在遵守 AGENTS.md 且不添加依赖、后端或新存储键的前提下,完成“今日专注清单”的以下升级:

1. 基于现有 createdAt 计算浏览器本地时区的最近 7 个自然日(含今天及前 6 日,不含未来日期)内创建的事项数、其中已完成数和完成率;无数据时完成率显示 0%,不能出现 NaN。
2. 增加“导出 JSON”按钮,将当前全部事项导出为 focus-board-backup.json;导出内容保留 id、text、completed、createdAt,不能只导出当前筛选结果。
3. 保证输入框、添加按钮、三个筛选控件、事项完成控件、删除按钮和导出按钮可以用 Tab 到达,并有清楚的焦点样式;在输入框按 Enter 可以添加事项。
4. 保留 localStorage 键 focus-board.tasks、原有添加/完成/删除、总数统计、三种筛选、刷新持久化和 375×812 窄屏可用性。
5. 完成后用内置浏览器创建至少两条事项、完成一条、刷新、切换三种筛选、仅用键盘添加一条并触发导出,逐项报告实际结果;再列出所有修改文件和仍存在的限制。

只有文件改动、浏览器操作结果和下载文件检查都有证据时才算完成。

设置成功后,界面会出现目标摘要卡,显示当前目标、迭代和待办。每轮结束时 ZCode 会单独校验;没有完成会自动进入下一轮,而不是等你发送“继续”。官方文档明确说明,计划或口头总结本身不能作为完成实据。

运行中什么时候介入

目标模式不是无人监管。遇到下面情况应暂停:

  • 准备安装依赖或修改 focus-board.tasks;
  • 开始实现导入、账号、同步等目标外功能;
  • 多轮重复同一个失败,没有新的诊断信息;
  • 需要离开电脑,且后续可能出现权限或下载确认。

在输入框执行:

/goal pause

目标记录、已产生文件和迭代历史会保留。纠正范围后执行:

/goal resume

如果需求本身需要换掉,使用 /goal replace <新目标>;不要让旧验收标准和新方向混在一起。

不依赖完成总结的人工验收

目标显示完成后,先查看 Review,确认通常只修改 index.html、styles.css 和 app.js,AGENTS.md 不应被任务自行改写。然后手动完成下面的检查。

近七天统计

  1. 清空列表,统计应为 0、0、0%。
  2. 添加两条新事项,近七天创建数应增加 2。
  3. 完成其中一条,近七天完成数应为 1,完成率应为 50%。

本课创建的事项都处于最近七天,可以验证基本计算闭环。对于七天以前的数据边界,先检查 app.js 是否基于 createdAt 比较时间,而不是直接统计全部事项;更深入的日期边界测试可以作为后续练习。

JSON 导出

保持“进行中”筛选,只让一条事项显示,然后点击“导出 JSON”。打开下载的 focus-board-backup.json,确认数组中仍包含全部事项,而不只是当前可见项;每项都有 id、text、completed、createdAt。

导出只在本机生成文件,不应上传到网络。JSON 中可能包含你的事项文字,分享前要自己检查内容。

键盘操作

先用鼠标点一下页面空白处,然后:

  1. 连续按 Tab,焦点应依次到达输入、添加、筛选、事项操作和导出按钮;
  2. 每个焦点位置应有可见轮廓,不能只能靠猜;
  3. 在输入框键入“键盘测试”,按 Enter,事项应被添加;
  4. 使用 Space 或 Enter 激活当前聚焦的完成控件和按钮。

审查并保存最终版本

运行:

git diff -- index.html styles.css app.js
git status --short

确认差异只服务于三项目标,没有更换存储键或引入外部依赖。审查通过后提交:

git add index.html styles.css app.js
git commit -m "feat: add weekly stats and JSON export"
git status --short

最后一条应没有输出。

本课结束状态

主项目已经形成一个可使用、可刷新、可筛选、可导出并支持基本键盘操作的本地应用。你也完成了一个真正需要多轮推进的目标,而不是为了展示功能而启动长任务。

下一课不再扩展这个项目,而是用三组不同材料检查技能迁移:修复陌生缺陷、阅读小型仓库、把重复发布检查保存为 Command。

七日边界的固定验收

让统计函数接受可注入的参考日期,测试中固定为本地 2026-10-02 中午,不修改系统时钟。构造四条数据:10-02 已完成、09-26 未完成、09-25 已完成、10-03 已完成。预期窗口内共 2 条,完成 1 条,完成率 50%;09-25 和未来记录不计入。再用空数组验证 0%,在本地零点附近验证按日期而非滚动 168 小时计算。