浏览 AI使用教程
Claude Code首次任务:限定目录、验证与撤销
Claude Code 第一次进入仓库时,任务边界比提示词长度更重要。限定目录、保留现有改动,并约定验证与撤销方式,才能知道它究竟改了什么。
沿完整工作流推进
前一阶段的可检查结果,是下一阶段的输入;中间证据不足时停在当前阶段。
一句“修一下登录”,可能让三个应用一起被改
教学任务:一个 monorepo 同时有 web 与 admin 登录模块。只修改 web 的空密码提示,admin 已有未提交改动;先用明确文件路径和测试把任务范围锁住。
以下为教学练习,不模拟真实密码验证系统;good 只是断言用固定输入。规则文字不是强制沙箱,仍要查看实际工具请求和 diff。
- 目录与动作边界已复述
- 无关未提交改动保持原样
- 撤销本次改动不会影响别人工作
先确认这次任务的起点、边界和交付
| 需要确认 | 本例内容 |
|---|---|
| 现有材料 | Git、Node.js 20+;Claude Code 已完成安装和连接;练习文件为 apps/web/login.mjs、apps/web/login.test.mjs,apps/admin/note.txt 模拟已有改动。 |
| 不能越过的边界 | 允许读取依赖包,但只修改 web 登录页及其测试;不覆盖 admin 改动,不提交、不部署。 |
| 要交付的结果 | 第一次任务、diff 和回滚记录 |
从“准备独立练习副本”走到“复测与局部恢复”
| 当前阶段 | 实际处理 |
|---|---|
| 准备独立练习副本 | 使用下方两个文件建立 apps/web,并在 apps/admin/note.txt 写入任意标记。用 Git 提交练习基线后,再修改 admin 标记,记录已有差异。 |
| 先运行基线 | node --test apps/web/login.test.mjs 应先通过。失败时修正文件路径或 Node 版本,不让 Agent 一边修环境一边改需求。 |
| 发出范围明确的任务 | 只改 web 模块与测试,给出预期文案和不得改变的错误密码行为;读取共享模块可以另行说明,修改授权不能自动扩大。 |
| 审查必要权限 | 允许读取当前练习文件并运行已查看的测试。若请求安装依赖、写 admin 或提交 Git,本例不需要,保留请求并停止该动作。 |
| 复测与局部恢复 | 比较 web diff 与 admin 基线;确认 web 两文件自基线以来无他人修改后,用 git restore --worktree -- apps/web/login.mjs apps/web/login.test.mjs 撤销练习,重跑原断言。 |
web 的空密码提示与非空分支
apps/web/login.mjs
教学函数
export function loginMessage(password) {
if (!password) return '登录失败';
return password === 'good' ? '欢迎' : '登录失败';
}
apps/web/login.test.mjs
基线断言
import test from 'node:test';
import assert from 'node:assert/strict';
import { loginMessage } from './login.mjs';
test('空密码', () => assert.equal(loginMessage(''), '登录失败'));
test('错误密码', () => assert.equal(loginMessage('wrong'), '登录失败'));
test('正确输入', () => assert.equal(loginMessage('good'), '欢迎'));
对准 apps/web,拒绝同名目录漂移
任务卡
首次项目修改
在当前练习仓库,只允许修改 apps/web/login.mjs 与 apps/web/login.test.mjs。 把空密码提示改成“请输入密码”;wrong 和 good 的返回结果不变。 apps/admin/note.txt 有已有改动,禁止碰它。先读取 Git 状态与本例文件,说明修改计划。 完成后运行 node --test apps/web/login.test.mjs,展示 diff 和退出码。 不安装依赖、不访问网络、不提交、不部署;出现路径不符或基线失败时先报告。
按本次任务检查请求
| 请求 | 本例处理 | 理由 |
|---|---|---|
| 读 apps/web 与 Git 状态 | 允许 | 查清目标和已有改动 |
| 运行指定 Node 测试 | 先查看脚本,再允许 | 验证完成标准 |
| 改 apps/admin | 停止 | 超出文件范围 |
| 安装新断言库 | 不需要 | 本例只用 Node 内置测试 |
| 提交或部署 | 不执行 | 练习只验收工作区差异 |
完成后的第一次任务、diff 和回滚记录
预期交付为 web 两个文件的 diff、node --test apps/web/login.test.mjs 的结果,以及 admin 原有差异未变化的对照。空密码提示应变为“请输入密码”,错误密码仍为“登录失败”。未在真实账号运行 Claude Code,不能将此预期写成实测。
为什么“限定了目录,Agent 仍建议修改共享包”还不能交付
限定了目录,Agent 仍建议修改共享包
- 原因
- 根因可能在依赖,但修改授权没有扩大
- 怎么改
- 先报告证据和影响文件,等待明确扩大范围;不要把建议自动执行
