山石 SHANSHI

任务输入:上下文、约束、验收标准

agent 不需要完美提示词,但需要足够清楚的工作边界。最稳定的结构是:目标、上下文、约束、验收。复杂功能先让它采访你,写成规格,再开新会话执行。

本章目标

  • 会把一句模糊需求改写成可执行任务。
  • 知道哪些上下文应该直接交给 agent,而不是靠口头转述。
  • 能让它先计划、先采访或先提问,而不是直接开干。

四段式任务说明

四段式不是模板崇拜,而是让 agent 在同一条消息里看到“做什么、从哪里看、不要越过哪里、做到什么算完成”。研发场景里,少一段通常就会变成返工。

  • 目标:最终要交付什么行为或产物。
  • 上下文:相关路径、错误、截图、日志、参考实现、官方链接。
  • 约束:不能改的接口、风格、依赖、路径、权限和范围。
  • 验收:要跑的命令、要复现的步骤、要检查的页面状态或输出。

EXAMPLE

把“修一下搜索”改成可执行任务

搜索问题如果不给复现路径,它可能只改输入框样式或重写搜索逻辑。

不够好的写法

搜索有问题,帮我修一下。

更可执行的写法

目标:修复 /search 输入中文后结果闪烁的问题。
上下文:复现步骤是打开 /search,输入“AI”,快速删除再输入“Agent”;相关文件可能在 src/app/search 和 src/lib/search。
约束:不要重写搜索页,不新增状态库,不改变搜索 API。
验收:用浏览器复现同样步骤,确认结果稳定;运行 npm run lint;最后说明根因和未覆盖边界。

你应该期待的结果

  • 先按复现路径定位,而不是猜。
  • 改动范围被约束在搜索相关代码。
  • 验证和汇报能对应原始症状。

给它更丰富、更直接的上下文

能直接给原始材料,就不要自己二次转述。转述会丢细节,也会把你的猜测混进事实。让 agent 自己读文件、看截图、查日志、打开 URL,通常比你描述“应该在某某地方”更可靠。

  • 引用文件:用 @ 或明确路径让它读真实文件,而不是靠你口头描述。
  • 贴截图:UI 溢出、设计稿、报错弹窗,截图比文字更准确。
  • 喂日志:把错误输出、CI 日志、tail 结果直接给它,别只贴最后一行。
  • 给官方链接:涉及 API、框架、工具变化时,直接给权威 URL。
  • 让它自己查:能用 gh、aws、sentry-cli、MCP 或 shell 拿到的信息,不必你先整理成摘要。

CASE

UI 溢出问题

场景

你看到移动端图片或代码块超出边界。用截图和视口尺寸描述,比一句“样式有问题”更有效。

可以这样说

目标:修复 /manual/agent/complete-tutorial 在 390px 宽度下配图超出容器的问题。
上下文:我已截图标出问题元素;请先定位是哪类 figure/img 或 SVG 造成溢出。
约束:不要重做页面布局,不改文章内容,不改无关图片。
验收:用浏览器检查 390px 和桌面宽度;确认所有手册配图不横向溢出;运行 npm run lint。

验收点

  • 明确页面和视口。
  • 先定位具体元素。
  • 修复范围不扩大。
  • 用浏览器验收而不是只看 CSS。

复杂任务先看计划

改动面大、涉及共享逻辑、需求没想清、或你不熟悉代码时,先让它只读地给计划。计划的价值不是漂亮分步骤,而是暴露它是否读懂了目标、边界、影响面和验证方式。

  • 适合先计划:多文件改动、共享模块、数据迁移、权限、性能、复杂 UI、陌生代码。
  • 可以跳过计划:一句话能说清、影响面小、可回滚的机械改动。
  • 计划要能审:包含将改哪些文件、为什么、哪些不改、怎么验证。
  • 计划跑偏时:先修计划,不要让它硬按错误假设执行。

CASE

计划里出现越界动作

场景

你只想修移动端溢出,但它计划重构布局组件和调整全局样式。

可以这样说

这个计划范围过大。请收窄到复现移动端溢出、定位具体元素、做最小样式修复、验证 390px 和桌面宽度。不要重构组件,不改全局样式变量。改完再给我看新计划。

验收点

  • 计划被收窄。
  • 验证目标明确。
  • 不夹带重构。
  • 执行范围可 review。

大功能先让它采访你

真正复杂的功能,一开始往往连你自己也没想全。比写长 prompt 更有效的方式,是让它反过来采访你:专门问技术实现、交互细节、边界情况和取舍。问完后写成 SPEC.md,再开新会话执行。

新会话只带规格,不带采访过程中的试探和废话,上下文更干净。好的规格应该自包含:涉及哪些文件和接口、明确不做什么、最后怎么端到端验证。

CASE

评论功能不要直接实现

场景

评论功能会涉及登录、审核、通知、分页、删除、垃圾内容处理。直接实现大概率会做出你没想要的版本。

可以这样说

我想做评论功能:登录用户可以评论文章,支持回复。请先采访我,覆盖技术实现、交互细节、边界情况和取舍;不要问显而易见的问题,专挑我可能没想到的难点问。问完后把完整规格写进 SPEC.md,先不要写代码。

验收点

  • 先提问,不先写代码。
  • 问题聚焦容易遗漏的细节。
  • 最终产出可执行 SPEC.md。
  • 规格里有端到端验收步骤。

常见缺口

  • 只说“优化一下”,没有说明优化方向。
  • 只贴错误,没有说明怎么复现。
  • 只给目标,没有说明哪些文件、接口或依赖不能动。
  • 只要求完成,没有说明怎么验证。
  • 只说“参考官方文档”,没有给具体链接或版本。

照着做

把你最近想交给 agent 的一个模糊任务,按“目标 / 上下文 / 约束 / 验收”重写。先不要执行,只让它指出这份任务说明还缺哪些信息、哪些假设可能出错。