實際影片長度:6:34.000。原文、繁中、雙語可點擊句子跳轉影片。
0:00.000–0:00.673
enHello,
0:00.673–0:01.122
ja大家好,
0:01.122–0:04.040
ja今天教大家怎么在Cloud Code中使用Hooks。
0:04.680–0:10.440
ja用好Hooks,能够减少大量的不必要反攻,让你的开发效率提升至少一倍。
0:10.640–0:12.840
ja首先我们解释一下Hooks是什么。
0:13.500–0:18.220
ja它其实是你设置的一个自动检察员,它会帮你监控Cloud Code,
0:18.720–0:23.500
ja确保Cloud Code能够自动的严格执行你设置的所有命令。
0:23.700–0:25.120
ja这样解释可能还是有点抽象。
0:25.740–0:29.040
ja接下来用几个案例告诉你Hooks能做一些什么。
0:29.040–0:31.700
ja第一个,拦截一些危险操作。
0:32.180–0:33.640
ja这也是我经常用的一个Hooks。
0:34.320–0:36.109
ja比如我项目中的一些核心文件,
0:36.109–0:38.920
ja我不希望Cloud Code直接去改动或删除,
0:39.480–0:41.460
ja那我就会设置一个Hooks。
0:42.100–0:45.240
ja当它识别到Cloud Code要做这样的危险操作的时候,
0:45.360–0:46.800
ja它会及时跳出来喊停。
0:47.480–0:48.540
ja第二个,自动存档。
0:49.040–0:52.520
ja我们经常需要把本次的迭代改动提交到Github,
0:52.860–0:56.420
ja但提交的时候,Cloud Code大多数时候不会自动留档,
0:56.420–0:59.640
ja或者不会自动记录本次迭代的改动点。
1:00.080–1:02.100
ja其实我们上一个视频也聊到了,
1:02.560–1:05.500
ja我们可以在cloud.md这样的一个项目说明书里,
1:06.040–1:07.020
ja向它提这个要求,
1:07.440–1:09.780
ja让它每一次提交之前都自动留档,
1:09.940–1:11.700
ja记录一下本次迭代的改动点。
1:11.700–1:16.441
ja但是Cloud Code并不会每次都严格按照cloud.
1:16.441–1:18.900
jamd这样的项目说明书去执行。
1:19.380–1:22.180
ja它有时候会漏掉项目说明书里面的要求。
1:22.720–1:24.000
ja我们如果使用Hooks的话,
1:24.120–1:27.800
ja就能够更稳定的确保每一次提交代码的时候,
1:28.320–1:31.280
ja都可以去留档,去记录本次迭代的改动点。
1:32.440–1:33.700
ja第三个,代码审查。
1:34.140–1:36.780
ja这是我们经常会用到的一个场景。
1:36.780–1:41.220
ja比如我们某个模块或者是模功能,
1:41.340–1:42.700
ja它去做了一个大的改版。
1:43.300–1:45.340
jaCloud Code其实它说它自己改完了,
1:45.860–1:48.180
ja但是很多时候它可能会战术性的偷懒。
1:48.900–1:51.640
ja所以我们Hooks可以去执行这样的一个review,
1:52.360–1:55.720
ja好好地去检查它本次改动的代码,
1:56.120–1:58.500
ja去确保它确实是改完了所有的模块,
1:58.500–1:59.200
ja而不是偷懒。
1:59.840–2:01.300
ja最后一个就是自动测试。
2:01.840–2:04.400
ja我们很多的模块是可以单独进行测试的,
2:04.400–2:08.600
ja某些模块它可能高频改动很多次UI或者是后端逻辑。
2:09.080–2:11.720
ja一些小的改动其实可以直接跑Hooks,
2:12.260–2:14.040
ja让它完成一个自动化测试的。
2:14.260–2:16.160
ja接下来我们看一下Hooks长什么样。
2:16.760–2:18.840
ja在我们的学习文档中给出了一个示例,
2:19.340–2:22.740
ja我们可以从示例中看到Hooks包含两个部分的内容,
2:23.200–2:24.320
enMetra和Hooks。
2:24.860–2:26.900
jaMetra其实代表了触发事件,
2:27.380–2:30.240
ja比如Cloud Code执行的一个Edit,
2:30.420–2:32.420
jaWrite,就是编辑或写入的操作。
2:32.420–2:35.640
ja第二个就是这个Hook对应的行为是什么。
2:36.100–2:37.780
ja行为里面其实包含两个字段,
2:37.940–2:38.700
ja第一个是类型,
2:38.840–2:40.060
ja第二个是执行的事件。
2:40.700–2:42.420
ja我们看一下总共有三种类型。
2:43.000–2:44.200
ja第一种类型叫Command,
2:44.300–2:44.820
ja就是命令。
2:45.320–2:47.900
ja它适用的情况是一些比较简单的规则,
2:48.020–2:49.220
ja它不需要额外判断,
2:49.320–2:51.680
ja通常来说就是一句命令的一个行为。
2:51.920–2:55.640
ja比如说碰到.enb后坠的文件,
2:55.840–2:56.560
ja你就拦住。
2:57.560–2:58.780
ja这就不需要判断,
2:58.900–3:00.320
ja不需要进行任何的语义判断,
3:00.320–3:02.100
ja也不需要进行任何的复杂操作。
3:03.120–3:04.980
ja第二个是Prom类型的。
3:05.280–3:06.260
ja它适用的情况就是,
3:06.400–3:07.860
ja我们需要去做一些简单的判断。
3:08.320–3:10.100
ja比如这里给出的一个例子就是,
3:10.740–3:13.320
ja早描Cloud Code工作过程中的对话历史,
3:13.700–3:17.700
ja去看一下它是不是把我要求的所有功能都完成了。
3:18.340–3:20.120
ja这个时候它只需要Review对话,
3:20.240–3:21.240
ja它不需要去看代码,
3:21.340–3:23.180
ja不需要去执行其他的额外操作,
3:23.180–3:26.360
ja所以它可以用Prom直接去完成。
3:27.680–3:28.740
ja第三个是Agent。
3:29.160–3:30.060
ja它相对来说,
3:30.500–3:32.060
ja比Prom就会更复杂一点。
3:32.460–3:34.360
ja它不只涉及简单的判断,
3:34.520–3:37.140
ja还会涉及到多部的判断或者是行为。
3:37.640–3:37.920
ja比如,
3:38.340–3:40.700
ja让它去执行一个自动化测试的事件,
3:41.360–3:44.200
ja让它继续要去测试这个UI是否,
3:44.540–3:46.700
ja像实现的代码或用户描述的需求一样,
3:46.900–3:49.600
ja以及让它去测试所有的点击事件是否正常。
3:49.600–3:52.700
ja所以这种情况下就需要一个Agent类型的Hook,
3:53.180–3:55.340
ja去完成本次的行为事件。
3:55.920–3:59.020
ja最后跟大家说一下我们怎么创建和管理Hooks。
3:59.700–4:01.720
ja首先创建Hooks非常简单,
4:01.820–4:03.860
ja就是让Cloud Code帮你创建就可以了。
4:04.380–4:06.620
ja我们打开一个正在开发中的项目,
4:07.300–4:09.300
ja然后给Cloud Code提一个要求,
4:09.880–4:11.080
ja让它帮我创建一个Hook,
4:11.760–4:15.040
ja每次UI重构都进行一次自动化测试,
4:15.380–4:17.420
ja并且仅在当前项目生效。
4:17.420–4:20.060
ja其实我们可以选择全局生效,
4:20.600–4:21.380
ja全局生效的话,
4:21.500–4:23.840
ja它就会放到本地的Cloud的目录下面,
4:24.300–4:25.340
ja然后我们点击发送,
4:26.120–4:28.560
ja它就开始帮我们去写这个Hooks。
4:29.400–4:29.640
enOK,
4:29.720–4:32.260
ja我们可以看到Hooks已经创建完成了,
4:32.720–4:34.780
ja整个过程大概花了一分钟左右的时间,
4:35.500–4:36.760
ja下一次启动这个绘画,
4:36.960–4:38.080
jaHooks就会自动生效。
4:39.160–4:42.360
ja为了测试一下这个Hooks是否正常工作,
4:42.840–4:44.640
ja我在这个项目里面提了一个要求,
4:44.640–4:47.400
ja我跟他说目前的UI他没有想象力了,
4:47.460–4:48.020
ja重构一下,
4:48.560–4:50.400
ja所以他就列了整个重构计划,
4:50.600–4:51.580
ja并且完成了重构,
4:52.100–4:53.440
ja但是在整个过程中,
4:53.520–4:56.760
ja我没有看到Hooks的检测和报锁的痕迹,
4:57.360–4:59.200
ja所以为了确保能正常工作,
4:59.700–5:01.120
ja我在他提交完代码之后,
5:01.200–5:02.440
ja还问了另外一个问题,
5:02.940–5:05.560
ja本次是否确认使用Hooks去检查UI,
5:05.920–5:07.680
ja然后从他的Thinking里面,
5:07.740–5:14.000
ja我看到他确实是使用了我们刚刚写的这个UI Review的Hooks去检查UI,
5:14.000–5:16.760
ja但是确实所有的代码都通过了,
5:16.860–5:17.760
ja没有任何的错误,
5:18.240–5:21.420
ja这样我们就可以确保这个Hooks是能正常工作的,
5:21.900–5:23.260
ja实际上大家在测试的时候,
5:23.380–5:28.100
ja也可以去故意让Cloud Code去写一些容易发现的错误,
5:28.140–5:30.260
ja或者是一些其他的bug埋进去,
5:30.680–5:32.240
ja然后去确保这个Hooks,
5:32.600–5:34.120
ja它是能够正常工作的,
5:34.160–5:35.340
ja并且检测出错误,
5:35.340–5:39.180
ja最后我们看一下怎么在Cloud Code里管理已经存在的Hooks,
5:39.700–5:43.180
ja我们只需要在输入框里面输入-hooks,
5:43.760–5:45.200
ja然后点击弹出来的选项,
5:45.880–5:47.560
en再点击continue terminal,
5:48.060–5:49.880
ja就是在中端里面进行管理,
5:50.740–5:52.220
ja然后我们打开一个中端的界面,
5:56.220–5:56.640
enOK,
5:56.720–6:00.220
ja我们就可以看到已经存在的所有Hooks就在这里,
6:00.220–6:04.760
ja我们可以在这里对Hooks进行删除编辑,
6:04.900–6:07.100
ja或者是禁用全部Hooks的操作,
6:08.160–6:08.640
ja好,
6:08.780–6:10.160
ja我们今天的课程就到这里了,
6:10.640–6:11.880
ja从下一期视频开始,
6:12.380–6:15.780
ja我们会跟大家逐步介绍Cloud Code的一些进阶玩法,
6:16.300–6:17.700
en包括Subagent,
6:18.020–6:18.500
enMCP,
6:18.960–6:19.520
enCloudSkills,
6:19.800–6:20.600
enAgent Team等等,
6:21.240–6:25.100
ja如果你有其他想要了解的关于Cloud Code的问题或技巧,
6:25.520–6:26.500
ja欢迎在评论区留言,
6:27.040–6:30.200
ja如果你想获得本次课程的全部资料,
6:30.220–6:32.000
ja可以在评论区留下,
6:32.160–6:32.580
ja求资料,
6:33.040–6:34.000
ja我们下期视频继续,
0:00.000–0:00.673
Hello,
0:00.673–0:01.122
大家好,
0:01.122–0:04.040
今天教大家怎么在Cloud Code中使用Hooks。
0:04.680–0:10.440
用好Hooks,能够减少大量的不必要反攻,让你的开发效率提升至少一倍。
0:10.640–0:12.840
首先我们解释一下Hooks是什么。
0:13.500–0:18.220
它其实是你设置的一个自动检察员,它会帮你监控Cloud Code,
0:18.720–0:23.500
确保Cloud Code能够自动的严格执行你设置的所有命令。
0:23.700–0:25.120
这样解释可能还是有点抽象。
0:25.740–0:29.040
接下来用几个案例告诉你Hooks能做一些什么。
0:29.040–0:31.700
第一个,拦截一些危险操作。
0:32.180–0:33.640
这也是我经常用的一个Hooks。
0:34.320–0:36.109
比如我项目中的一些核心文件,
0:36.109–0:38.920
我不希望Cloud Code直接去改动或删除,
0:39.480–0:41.460
那我就会设置一个Hooks。
0:42.100–0:45.240
当它识别到Cloud Code要做这样的危险操作的时候,
0:45.360–0:46.800
它会及时跳出来喊停。
0:47.480–0:48.540
第二个,自动存档。
0:49.040–0:52.520
我们经常需要把本次的迭代改动提交到Github,
0:52.860–0:56.420
但提交的时候,Cloud Code大多数时候不会自动留档,
0:56.420–0:59.640
或者不会自动记录本次迭代的改动点。
1:00.080–1:02.100
其实我们上一个视频也聊到了,
1:02.560–1:05.500
我们可以在cloud.md这样的一个项目说明书里,
1:06.040–1:07.020
向它提这个要求,
1:07.440–1:09.780
让它每一次提交之前都自动留档,
1:09.940–1:11.700
记录一下本次迭代的改动点。
1:11.700–1:16.441
但是Cloud Code并不会每次都严格按照cloud.
1:16.441–1:18.900
md这样的项目说明书去执行。
1:19.380–1:22.180
它有时候会漏掉项目说明书里面的要求。
1:22.720–1:24.000
我们如果使用Hooks的话,
1:24.120–1:27.800
就能够更稳定的确保每一次提交代码的时候,
1:28.320–1:31.280
都可以去留档,去记录本次迭代的改动点。
1:32.440–1:33.700
第三个,代码审查。
1:34.140–1:36.780
这是我们经常会用到的一个场景。
1:36.780–1:41.220
比如我们某个模块或者是模功能,
1:41.340–1:42.700
它去做了一个大的改版。
1:43.300–1:45.340
Cloud Code其实它说它自己改完了,
1:45.860–1:48.180
但是很多时候它可能会战术性的偷懒。
1:48.900–1:51.640
所以我们Hooks可以去执行这样的一个review,
1:52.360–1:55.720
好好地去检查它本次改动的代码,
1:56.120–1:58.500
去确保它确实是改完了所有的模块,
1:58.500–1:59.200
而不是偷懒。
1:59.840–2:01.300
最后一个就是自动测试。
2:01.840–2:04.400
我们很多的模块是可以单独进行测试的,
2:04.400–2:08.600
某些模块它可能高频改动很多次UI或者是后端逻辑。
2:09.080–2:11.720
一些小的改动其实可以直接跑Hooks,
2:12.260–2:14.040
让它完成一个自动化测试的。
2:14.260–2:16.160
接下来我们看一下Hooks长什么样。
2:16.760–2:18.840
在我们的学习文档中给出了一个示例,
2:19.340–2:22.740
我们可以从示例中看到Hooks包含两个部分的内容,
2:23.200–2:24.320
Metra和Hooks。
2:24.860–2:26.900
Metra其实代表了触发事件,
2:27.380–2:30.240
比如Cloud Code执行的一个Edit,
2:30.420–2:32.420
Write,就是编辑或写入的操作。
2:32.420–2:35.640
第二个就是这个Hook对应的行为是什么。
2:36.100–2:37.780
行为里面其实包含两个字段,
2:37.940–2:38.700
第一个是类型,
2:38.840–2:40.060
第二个是执行的事件。
2:40.700–2:42.420
我们看一下总共有三种类型。
2:43.000–2:44.200
第一种类型叫Command,
2:44.300–2:44.820
就是命令。
2:45.320–2:47.900
它适用的情况是一些比较简单的规则,
2:48.020–2:49.220
它不需要额外判断,
2:49.320–2:51.680
通常来说就是一句命令的一个行为。
2:51.920–2:55.640
比如说碰到.enb后坠的文件,
2:55.840–2:56.560
你就拦住。
2:57.560–2:58.780
这就不需要判断,
2:58.900–3:00.320
不需要进行任何的语义判断,
3:00.320–3:02.100
也不需要进行任何的复杂操作。
3:03.120–3:04.980
第二个是Prom类型的。
3:05.280–3:06.260
它适用的情况就是,
3:06.400–3:07.860
我们需要去做一些简单的判断。
3:08.320–3:10.100
比如这里给出的一个例子就是,
3:10.740–3:13.320
早描Cloud Code工作过程中的对话历史,
3:13.700–3:17.700
去看一下它是不是把我要求的所有功能都完成了。
3:18.340–3:20.120
这个时候它只需要Review对话,
3:20.240–3:21.240
它不需要去看代码,
3:21.340–3:23.180
不需要去执行其他的额外操作,
3:23.180–3:26.360
所以它可以用Prom直接去完成。
3:27.680–3:28.740
第三个是Agent。
3:29.160–3:30.060
它相对来说,
3:30.500–3:32.060
比Prom就会更复杂一点。
3:32.460–3:34.360
它不只涉及简单的判断,
3:34.520–3:37.140
还会涉及到多部的判断或者是行为。
3:37.640–3:37.920
比如,
3:38.340–3:40.700
让它去执行一个自动化测试的事件,
3:41.360–3:44.200
让它继续要去测试这个UI是否,
3:44.540–3:46.700
像实现的代码或用户描述的需求一样,
3:46.900–3:49.600
以及让它去测试所有的点击事件是否正常。
3:49.600–3:52.700
所以这种情况下就需要一个Agent类型的Hook,
3:53.180–3:55.340
去完成本次的行为事件。
3:55.920–3:59.020
最后跟大家说一下我们怎么创建和管理Hooks。
3:59.700–4:01.720
首先创建Hooks非常简单,
4:01.820–4:03.860
就是让Cloud Code帮你创建就可以了。
4:04.380–4:06.620
我们打开一个正在开发中的项目,
4:07.300–4:09.300
然后给Cloud Code提一个要求,
4:09.880–4:11.080
让它帮我创建一个Hook,
4:11.760–4:15.040
每次UI重构都进行一次自动化测试,
4:15.380–4:17.420
并且仅在当前项目生效。
4:17.420–4:20.060
其实我们可以选择全局生效,
4:20.600–4:21.380
全局生效的话,
4:21.500–4:23.840
它就会放到本地的Cloud的目录下面,
4:24.300–4:25.340
然后我们点击发送,
4:26.120–4:28.560
它就开始帮我们去写这个Hooks。
4:29.400–4:29.640
OK,
4:29.720–4:32.260
我们可以看到Hooks已经创建完成了,
4:32.720–4:34.780
整个过程大概花了一分钟左右的时间,
4:35.500–4:36.760
下一次启动这个绘画,
4:36.960–4:38.080
Hooks就会自动生效。
4:39.160–4:42.360
为了测试一下这个Hooks是否正常工作,
4:42.840–4:44.640
我在这个项目里面提了一个要求,
4:44.640–4:47.400
我跟他说目前的UI他没有想象力了,
4:47.460–4:48.020
重构一下,
4:48.560–4:50.400
所以他就列了整个重构计划,
4:50.600–4:51.580
并且完成了重构,
4:52.100–4:53.440
但是在整个过程中,
4:53.520–4:56.760
我没有看到Hooks的检测和报锁的痕迹,
4:57.360–4:59.200
所以为了确保能正常工作,
4:59.700–5:01.120
我在他提交完代码之后,
5:01.200–5:02.440
还问了另外一个问题,
5:02.940–5:05.560
本次是否确认使用Hooks去检查UI,
5:05.920–5:07.680
然后从他的Thinking里面,
5:07.740–5:14.000
我看到他确实是使用了我们刚刚写的这个UI Review的Hooks去检查UI,
5:14.000–5:16.760
但是确实所有的代码都通过了,
5:16.860–5:17.760
没有任何的错误,
5:18.240–5:21.420
这样我们就可以确保这个Hooks是能正常工作的,
5:21.900–5:23.260
实际上大家在测试的时候,
5:23.380–5:28.100
也可以去故意让Cloud Code去写一些容易发现的错误,
5:28.140–5:30.260
或者是一些其他的bug埋进去,
5:30.680–5:32.240
然后去确保这个Hooks,
5:32.600–5:34.120
它是能够正常工作的,
5:34.160–5:35.340
并且检测出错误,
5:35.340–5:39.180
最后我们看一下怎么在Cloud Code里管理已经存在的Hooks,
5:39.700–5:43.180
我们只需要在输入框里面输入-hooks,
5:43.760–5:45.200
然后点击弹出来的选项,
5:45.880–5:47.560
再点击continue terminal,
5:48.060–5:49.880
就是在中端里面进行管理,
5:50.740–5:52.220
然后我们打开一个中端的界面,
5:56.220–5:56.640
OK,
5:56.720–6:00.220
我们就可以看到已经存在的所有Hooks就在这里,
6:00.220–6:04.760
我们可以在这里对Hooks进行删除编辑,
6:04.900–6:07.100
或者是禁用全部Hooks的操作,
6:08.160–6:08.640
好,
6:08.780–6:10.160
我们今天的课程就到这里了,
6:10.640–6:11.880
从下一期视频开始,
6:12.380–6:15.780
我们会跟大家逐步介绍Cloud Code的一些进阶玩法,
6:16.300–6:17.700
包括Subagent,
6:18.020–6:18.500
MCP,
6:18.960–6:19.520
CloudSkills,
6:19.800–6:20.600
Agent Team等等,
6:21.240–6:25.100
如果你有其他想要了解的关于Cloud Code的问题或技巧,
6:25.520–6:26.500
欢迎在评论区留言,
6:27.040–6:30.200
如果你想获得本次课程的全部资料,
6:30.220–6:32.000
可以在评论区留下,
6:32.160–6:32.580
求资料,
6:33.040–6:34.000
我们下期视频继续,
0:00.000–0:00.673
enHello,
Hello,
0:00.673–0:01.122
ja大家好,
大家好,
0:01.122–0:04.040
ja今天教大家怎么在Cloud Code中使用Hooks。
今天教大家怎么在Cloud Code中使用Hooks。
0:04.680–0:10.440
ja用好Hooks,能够减少大量的不必要反攻,让你的开发效率提升至少一倍。
用好Hooks,能够减少大量的不必要反攻,让你的开发效率提升至少一倍。
0:10.640–0:12.840
ja首先我们解释一下Hooks是什么。
首先我们解释一下Hooks是什么。
0:13.500–0:18.220
ja它其实是你设置的一个自动检察员,它会帮你监控Cloud Code,
它其实是你设置的一个自动检察员,它会帮你监控Cloud Code,
0:18.720–0:23.500
ja确保Cloud Code能够自动的严格执行你设置的所有命令。
确保Cloud Code能够自动的严格执行你设置的所有命令。
0:23.700–0:25.120
ja这样解释可能还是有点抽象。
这样解释可能还是有点抽象。
0:25.740–0:29.040
ja接下来用几个案例告诉你Hooks能做一些什么。
接下来用几个案例告诉你Hooks能做一些什么。
0:29.040–0:31.700
ja第一个,拦截一些危险操作。
第一个,拦截一些危险操作。
0:32.180–0:33.640
ja这也是我经常用的一个Hooks。
这也是我经常用的一个Hooks。
0:34.320–0:36.109
ja比如我项目中的一些核心文件,
比如我项目中的一些核心文件,
0:36.109–0:38.920
ja我不希望Cloud Code直接去改动或删除,
我不希望Cloud Code直接去改动或删除,
0:39.480–0:41.460
ja那我就会设置一个Hooks。
那我就会设置一个Hooks。
0:42.100–0:45.240
ja当它识别到Cloud Code要做这样的危险操作的时候,
当它识别到Cloud Code要做这样的危险操作的时候,
0:45.360–0:46.800
ja它会及时跳出来喊停。
它会及时跳出来喊停。
0:47.480–0:48.540
ja第二个,自动存档。
第二个,自动存档。
0:49.040–0:52.520
ja我们经常需要把本次的迭代改动提交到Github,
我们经常需要把本次的迭代改动提交到Github,
0:52.860–0:56.420
ja但提交的时候,Cloud Code大多数时候不会自动留档,
但提交的时候,Cloud Code大多数时候不会自动留档,
0:56.420–0:59.640
ja或者不会自动记录本次迭代的改动点。
或者不会自动记录本次迭代的改动点。
1:00.080–1:02.100
ja其实我们上一个视频也聊到了,
其实我们上一个视频也聊到了,
1:02.560–1:05.500
ja我们可以在cloud.md这样的一个项目说明书里,
我们可以在cloud.md这样的一个项目说明书里,
1:06.040–1:07.020
ja向它提这个要求,
向它提这个要求,
1:07.440–1:09.780
ja让它每一次提交之前都自动留档,
让它每一次提交之前都自动留档,
1:09.940–1:11.700
ja记录一下本次迭代的改动点。
记录一下本次迭代的改动点。
1:11.700–1:16.441
ja但是Cloud Code并不会每次都严格按照cloud.
但是Cloud Code并不会每次都严格按照cloud.
1:16.441–1:18.900
jamd这样的项目说明书去执行。
md这样的项目说明书去执行。
1:19.380–1:22.180
ja它有时候会漏掉项目说明书里面的要求。
它有时候会漏掉项目说明书里面的要求。
1:22.720–1:24.000
ja我们如果使用Hooks的话,
我们如果使用Hooks的话,
1:24.120–1:27.800
ja就能够更稳定的确保每一次提交代码的时候,
就能够更稳定的确保每一次提交代码的时候,
1:28.320–1:31.280
ja都可以去留档,去记录本次迭代的改动点。
都可以去留档,去记录本次迭代的改动点。
1:32.440–1:33.700
ja第三个,代码审查。
第三个,代码审查。
1:34.140–1:36.780
ja这是我们经常会用到的一个场景。
这是我们经常会用到的一个场景。
1:36.780–1:41.220
ja比如我们某个模块或者是模功能,
比如我们某个模块或者是模功能,
1:41.340–1:42.700
ja它去做了一个大的改版。
它去做了一个大的改版。
1:43.300–1:45.340
jaCloud Code其实它说它自己改完了,
Cloud Code其实它说它自己改完了,
1:45.860–1:48.180
ja但是很多时候它可能会战术性的偷懒。
但是很多时候它可能会战术性的偷懒。
1:48.900–1:51.640
ja所以我们Hooks可以去执行这样的一个review,
所以我们Hooks可以去执行这样的一个review,
1:52.360–1:55.720
ja好好地去检查它本次改动的代码,
好好地去检查它本次改动的代码,
1:56.120–1:58.500
ja去确保它确实是改完了所有的模块,
去确保它确实是改完了所有的模块,
1:58.500–1:59.200
ja而不是偷懒。
而不是偷懒。
1:59.840–2:01.300
ja最后一个就是自动测试。
最后一个就是自动测试。
2:01.840–2:04.400
ja我们很多的模块是可以单独进行测试的,
我们很多的模块是可以单独进行测试的,
2:04.400–2:08.600
ja某些模块它可能高频改动很多次UI或者是后端逻辑。
某些模块它可能高频改动很多次UI或者是后端逻辑。
2:09.080–2:11.720
ja一些小的改动其实可以直接跑Hooks,
一些小的改动其实可以直接跑Hooks,
2:12.260–2:14.040
ja让它完成一个自动化测试的。
让它完成一个自动化测试的。
2:14.260–2:16.160
ja接下来我们看一下Hooks长什么样。
接下来我们看一下Hooks长什么样。
2:16.760–2:18.840
ja在我们的学习文档中给出了一个示例,
在我们的学习文档中给出了一个示例,
2:19.340–2:22.740
ja我们可以从示例中看到Hooks包含两个部分的内容,
我们可以从示例中看到Hooks包含两个部分的内容,
2:23.200–2:24.320
enMetra和Hooks。
Metra和Hooks。
2:24.860–2:26.900
jaMetra其实代表了触发事件,
Metra其实代表了触发事件,
2:27.380–2:30.240
ja比如Cloud Code执行的一个Edit,
比如Cloud Code执行的一个Edit,
2:30.420–2:32.420
jaWrite,就是编辑或写入的操作。
Write,就是编辑或写入的操作。
2:32.420–2:35.640
ja第二个就是这个Hook对应的行为是什么。
第二个就是这个Hook对应的行为是什么。
2:36.100–2:37.780
ja行为里面其实包含两个字段,
行为里面其实包含两个字段,
2:37.940–2:38.700
ja第一个是类型,
第一个是类型,
2:38.840–2:40.060
ja第二个是执行的事件。
第二个是执行的事件。
2:40.700–2:42.420
ja我们看一下总共有三种类型。
我们看一下总共有三种类型。
2:43.000–2:44.200
ja第一种类型叫Command,
第一种类型叫Command,
2:44.300–2:44.820
ja就是命令。
就是命令。
2:45.320–2:47.900
ja它适用的情况是一些比较简单的规则,
它适用的情况是一些比较简单的规则,
2:48.020–2:49.220
ja它不需要额外判断,
它不需要额外判断,
2:49.320–2:51.680
ja通常来说就是一句命令的一个行为。
通常来说就是一句命令的一个行为。
2:51.920–2:55.640
ja比如说碰到.enb后坠的文件,
比如说碰到.enb后坠的文件,
2:55.840–2:56.560
ja你就拦住。
你就拦住。
2:57.560–2:58.780
ja这就不需要判断,
这就不需要判断,
2:58.900–3:00.320
ja不需要进行任何的语义判断,
不需要进行任何的语义判断,
3:00.320–3:02.100
ja也不需要进行任何的复杂操作。
也不需要进行任何的复杂操作。
3:03.120–3:04.980
ja第二个是Prom类型的。
第二个是Prom类型的。
3:05.280–3:06.260
ja它适用的情况就是,
它适用的情况就是,
3:06.400–3:07.860
ja我们需要去做一些简单的判断。
我们需要去做一些简单的判断。
3:08.320–3:10.100
ja比如这里给出的一个例子就是,
比如这里给出的一个例子就是,
3:10.740–3:13.320
ja早描Cloud Code工作过程中的对话历史,
早描Cloud Code工作过程中的对话历史,
3:13.700–3:17.700
ja去看一下它是不是把我要求的所有功能都完成了。
去看一下它是不是把我要求的所有功能都完成了。
3:18.340–3:20.120
ja这个时候它只需要Review对话,
这个时候它只需要Review对话,
3:20.240–3:21.240
ja它不需要去看代码,
它不需要去看代码,
3:21.340–3:23.180
ja不需要去执行其他的额外操作,
不需要去执行其他的额外操作,
3:23.180–3:26.360
ja所以它可以用Prom直接去完成。
所以它可以用Prom直接去完成。
3:27.680–3:28.740
ja第三个是Agent。
第三个是Agent。
3:29.160–3:30.060
ja它相对来说,
它相对来说,
3:30.500–3:32.060
ja比Prom就会更复杂一点。
比Prom就会更复杂一点。
3:32.460–3:34.360
ja它不只涉及简单的判断,
它不只涉及简单的判断,
3:34.520–3:37.140
ja还会涉及到多部的判断或者是行为。
还会涉及到多部的判断或者是行为。
3:37.640–3:37.920
ja比如,
比如,
3:38.340–3:40.700
ja让它去执行一个自动化测试的事件,
让它去执行一个自动化测试的事件,
3:41.360–3:44.200
ja让它继续要去测试这个UI是否,
让它继续要去测试这个UI是否,
3:44.540–3:46.700
ja像实现的代码或用户描述的需求一样,
像实现的代码或用户描述的需求一样,
3:46.900–3:49.600
ja以及让它去测试所有的点击事件是否正常。
以及让它去测试所有的点击事件是否正常。
3:49.600–3:52.700
ja所以这种情况下就需要一个Agent类型的Hook,
所以这种情况下就需要一个Agent类型的Hook,
3:53.180–3:55.340
ja去完成本次的行为事件。
去完成本次的行为事件。
3:55.920–3:59.020
ja最后跟大家说一下我们怎么创建和管理Hooks。
最后跟大家说一下我们怎么创建和管理Hooks。
3:59.700–4:01.720
ja首先创建Hooks非常简单,
首先创建Hooks非常简单,
4:01.820–4:03.860
ja就是让Cloud Code帮你创建就可以了。
就是让Cloud Code帮你创建就可以了。
4:04.380–4:06.620
ja我们打开一个正在开发中的项目,
我们打开一个正在开发中的项目,
4:07.300–4:09.300
ja然后给Cloud Code提一个要求,
然后给Cloud Code提一个要求,
4:09.880–4:11.080
ja让它帮我创建一个Hook,
让它帮我创建一个Hook,
4:11.760–4:15.040
ja每次UI重构都进行一次自动化测试,
每次UI重构都进行一次自动化测试,
4:15.380–4:17.420
ja并且仅在当前项目生效。
并且仅在当前项目生效。
4:17.420–4:20.060
ja其实我们可以选择全局生效,
其实我们可以选择全局生效,
4:20.600–4:21.380
ja全局生效的话,
全局生效的话,
4:21.500–4:23.840
ja它就会放到本地的Cloud的目录下面,
它就会放到本地的Cloud的目录下面,
4:24.300–4:25.340
ja然后我们点击发送,
然后我们点击发送,
4:26.120–4:28.560
ja它就开始帮我们去写这个Hooks。
它就开始帮我们去写这个Hooks。
4:29.400–4:29.640
enOK,
OK,
4:29.720–4:32.260
ja我们可以看到Hooks已经创建完成了,
我们可以看到Hooks已经创建完成了,
4:32.720–4:34.780
ja整个过程大概花了一分钟左右的时间,
整个过程大概花了一分钟左右的时间,
4:35.500–4:36.760
ja下一次启动这个绘画,
下一次启动这个绘画,
4:36.960–4:38.080
jaHooks就会自动生效。
Hooks就会自动生效。
4:39.160–4:42.360
ja为了测试一下这个Hooks是否正常工作,
为了测试一下这个Hooks是否正常工作,
4:42.840–4:44.640
ja我在这个项目里面提了一个要求,
我在这个项目里面提了一个要求,
4:44.640–4:47.400
ja我跟他说目前的UI他没有想象力了,
我跟他说目前的UI他没有想象力了,
4:47.460–4:48.020
ja重构一下,
重构一下,
4:48.560–4:50.400
ja所以他就列了整个重构计划,
所以他就列了整个重构计划,
4:50.600–4:51.580
ja并且完成了重构,
并且完成了重构,
4:52.100–4:53.440
ja但是在整个过程中,
但是在整个过程中,
4:53.520–4:56.760
ja我没有看到Hooks的检测和报锁的痕迹,
我没有看到Hooks的检测和报锁的痕迹,
4:57.360–4:59.200
ja所以为了确保能正常工作,
所以为了确保能正常工作,
4:59.700–5:01.120
ja我在他提交完代码之后,
我在他提交完代码之后,
5:01.200–5:02.440
ja还问了另外一个问题,
还问了另外一个问题,
5:02.940–5:05.560
ja本次是否确认使用Hooks去检查UI,
本次是否确认使用Hooks去检查UI,
5:05.920–5:07.680
ja然后从他的Thinking里面,
然后从他的Thinking里面,
5:07.740–5:14.000
ja我看到他确实是使用了我们刚刚写的这个UI Review的Hooks去检查UI,
我看到他确实是使用了我们刚刚写的这个UI Review的Hooks去检查UI,
5:14.000–5:16.760
ja但是确实所有的代码都通过了,
但是确实所有的代码都通过了,
5:16.860–5:17.760
ja没有任何的错误,
没有任何的错误,
5:18.240–5:21.420
ja这样我们就可以确保这个Hooks是能正常工作的,
这样我们就可以确保这个Hooks是能正常工作的,
5:21.900–5:23.260
ja实际上大家在测试的时候,
实际上大家在测试的时候,
5:23.380–5:28.100
ja也可以去故意让Cloud Code去写一些容易发现的错误,
也可以去故意让Cloud Code去写一些容易发现的错误,
5:28.140–5:30.260
ja或者是一些其他的bug埋进去,
或者是一些其他的bug埋进去,
5:30.680–5:32.240
ja然后去确保这个Hooks,
然后去确保这个Hooks,
5:32.600–5:34.120
ja它是能够正常工作的,
它是能够正常工作的,
5:34.160–5:35.340
ja并且检测出错误,
并且检测出错误,
5:35.340–5:39.180
ja最后我们看一下怎么在Cloud Code里管理已经存在的Hooks,
最后我们看一下怎么在Cloud Code里管理已经存在的Hooks,
5:39.700–5:43.180
ja我们只需要在输入框里面输入-hooks,
我们只需要在输入框里面输入-hooks,
5:43.760–5:45.200
ja然后点击弹出来的选项,
然后点击弹出来的选项,
5:45.880–5:47.560
en再点击continue terminal,
再点击continue terminal,
5:48.060–5:49.880
ja就是在中端里面进行管理,
就是在中端里面进行管理,
5:50.740–5:52.220
ja然后我们打开一个中端的界面,
然后我们打开一个中端的界面,
5:56.220–5:56.640
enOK,
OK,
5:56.720–6:00.220
ja我们就可以看到已经存在的所有Hooks就在这里,
我们就可以看到已经存在的所有Hooks就在这里,
6:00.220–6:04.760
ja我们可以在这里对Hooks进行删除编辑,
我们可以在这里对Hooks进行删除编辑,
6:04.900–6:07.100
ja或者是禁用全部Hooks的操作,
或者是禁用全部Hooks的操作,
6:08.160–6:08.640
ja好,
好,
6:08.780–6:10.160
ja我们今天的课程就到这里了,
我们今天的课程就到这里了,
6:10.640–6:11.880
ja从下一期视频开始,
从下一期视频开始,
6:12.380–6:15.780
ja我们会跟大家逐步介绍Cloud Code的一些进阶玩法,
我们会跟大家逐步介绍Cloud Code的一些进阶玩法,
6:16.300–6:17.700
en包括Subagent,
包括Subagent,
6:18.020–6:18.500
enMCP,
MCP,
6:18.960–6:19.520
enCloudSkills,
CloudSkills,
6:19.800–6:20.600
enAgent Team等等,
Agent Team等等,
6:21.240–6:25.100
ja如果你有其他想要了解的关于Cloud Code的问题或技巧,
如果你有其他想要了解的关于Cloud Code的问题或技巧,
6:25.520–6:26.500
ja欢迎在评论区留言,
欢迎在评论区留言,
6:27.040–6:30.200
ja如果你想获得本次课程的全部资料,
如果你想获得本次课程的全部资料,
6:30.220–6:32.000
ja可以在评论区留下,
可以在评论区留下,
6:32.160–6:32.580
ja求资料,
求资料,
6:33.040–6:34.000
ja我们下期视频继续,
我们下期视频继续,

影片筆記:ClaudeCode的自动化开发检测员-Hooks详解【第七讲】

一句話總結

本影片介紹如何在 Cloud Code 中使用 Hooks(鉤子)作為自動檢查員,透過定義觸發事件與行為(Command、Prompt、Agent),實現攔截危險操作、自動存檔、代碼審查及自動測試,從而提升開發效率並減少返工。

核心重點

  1. Hooks 的定義與價值
  • Hooks 被定義為「自動檢查員」,用於監控 Cloud Code 的行為,確保其嚴格執行設定命令。
  • 主要效益是減少不必要的返工,據稱可將開發效率提升至少一倍。
  1. Hooks 的四大應用場景
  • 攔截危險操作:保護核心文件(如特定副檔名文件)不被直接改動或刪除。
  • 自動存檔:確保每次提交代碼時,自動記錄迭代改動點(即使 Cloud Code 可能忽略 cloud.md 的要求)。
  • 代碼審查(Code Review):防止 Cloud Code 在大型改版時出現「戰術性偷懶」,確保所有模組確實完成。
  • 自動測試:針對高頻改動的 UI 或後端邏輯,執行自動化測試。
  1. Hooks 的結構與行為類型
  • 結構由兩部分組成:觸發事件(Trigger,逐字稿提及為 Metra)與行為(Behavior)。
  • 行為分為三種類型:
  • Command(命令):適用於簡單規則,無需語義判斷或複雜操作(例如攔截特定副檔名)。
  • Prompt(提示):適用於簡單判斷,僅需審查對話歷史,不需執行額外操作。
  • Agent(代理):適用於複雜的多步驟行為,涉及多步驟判斷或行為(例如執行自動化測試、檢查 UI 實現與點擊事件)。
  1. 建立與管理方式
  • 建立:透過向 Cloud Code 提出自然語言指令(例如:「每次 UI 重構都進行自動化測試,且僅在當前專案生效」),由 Cloud Code 協助生成。
  • 生效:建立完成後,下次啟動專案時自動生效。
  • 驗證:透過故意引入錯誤或 Bug,確認 Hooks 能檢測出問題。
  • 管理:在輸入框輸入 -hooks,選擇選項並點擊 continue terminal,於終端機介面進行刪除、編輯或禁用操作。

詳細大綱

1. Hooks 的概念與價值

  • 定義:自動檢查員,監控 Cloud Code 並確保嚴格執行命令。
  • 效益:減少大量的不必要反攻(返工),提升開發效率至少一倍。

2. Hooks 的應用場景

  • 攔截危險操作
  • 保護核心文件不被直接改動或刪除。
  • 範例:碰到 .enb 後綴的文件時進行攔截。
  • 自動存檔
  • 確保每次提交代碼時,自動記錄迭代改動點。
  • 解決 Cloud Code 可能忽略 cloud.md 要求的情況。
  • 代碼審查
  • 防止 Cloud Code 在大型改版時「戰術性偷懶」。
  • 確保所有模組確實完成。
  • 方法:早描(審查)Cloud Code 工作過程中的對話歷史。
  • 自動測試
  • 針對高頻改動的 UI 或後端邏輯,執行自動化測試。
  • 範例:檢查 UI 實現與點擊事件。

3. Hooks 的結構與類型

  • 結構組成
  • Trigger(觸發事件,逐字稿提及為 Metra)。
  • Behavior(行為)。
  • 行為類型
  • Command:簡單規則,無需語義判斷或複雜操作。
  • Prom(Prompt):簡單判斷,僅需審查對話歷史,不需執行額外操作。
  • Agent:複雜行為,涉及多步驟判斷或行為。

4. 建立與管理 Hooks

  • 建立方式
  • 透過向 Cloud Code 提出自然語言要求。
  • 範例:「每次 UI 重構都進行自動化測試,且僅在當前專案生效」。
  • 生效機制
  • 建立完成後,下次啟動這個繪畫(專案)時自動生效。
  • 驗證方式
  • 故意引入錯誤或 Bug。
  • 確認 Hooks 能檢測出問題,沒有看到 Hooks 的檢測和報鎖(報錯)的痕跡。
  • 管理方式
  • 在輸入框輸入 -hooks
  • 選擇選項並點擊 continue terminal
  • 在中端(終端)裡面進行管理,打開一個中端的界面。
  • 進行刪除、編輯或禁用操作。

5. 結語與下期預告

  • 預告內容:Subagent、MCP、CloudSkills、Agent Team 等進階玩法。

工具 / 模型 / 名詞整理

  • Cloud Code:影片主要介紹的開發工具/環境。
  • Hooks:自動檢查員,用於監控 Cloud Code 行為。
  • Trigger / Metra:Hooks 結構中的觸發事件部分。
  • Behavior:Hooks 結構中的行為部分。
  • Command:Hooks 的行為類型之一,適用於簡單規則。
  • Prom / Prompt:Hooks 的行為類型之一,適用於簡單判斷。
  • Agent:Hooks 的行為類型之一,適用於複雜行為。
  • cloud.md:Cloud Code 可能忽略要求的設定文件。
  • Github:提及的相關平台。
  • Subagent:下期預告內容。
  • MCP:下期預告內容。
  • CloudSkills:下期預告內容。
  • Agent Team:下期預告內容。
  • Thinking:提及從模型的 Thinking 裡面獲取資訊。

操作流程整理

  1. 定義需求:確定需要 Hooks 監控的場景(如攔截危險操作、自動存檔、代碼審查、自動測試)。
  2. 自然語言指令:向 Cloud Code 輸入自然語言指令,描述 Hooks 的觸發條件與預期行為。
  • *範例*:「每次 UI 重構都進行自動化測試,且僅在當前專案生效」。
  1. 生成 Hooks:Cloud Code 根據指令生成 Hooks 配置。
  2. 驗證生效
  • 下次啟動專案時,Hooks 自動生效。
  • 故意引入錯誤或 Bug。
  • 確認 Hooks 能檢測出問題(檢查是否有報鎖/報錯痕跡)。
  1. 管理 Hooks
  • 在輸入框輸入 -hooks
  • 選擇相關選項。
  • 點擊 continue terminal 打開終端界面。
  • 在終端中進行刪除、編輯或禁用操作。

值得注意的限制或風險

  • Cloud Code 的潛在忽略:影片提到 Cloud Code 可能會忽略 cloud.md 的要求,因此需要 Hooks 來強制執行自動存檔等動作。
  • 戰術性偷懶:Cloud Code 在進行大型改版時可能會出現「戰術性偷懶」,導致部分模組未完成,需透過 Hooks 進行代碼審查來防止。
  • 辨識錯誤風險:逐字稿中存在多個疑似聽寫錯誤的名詞(如 Metra、Prom、中端、報鎖等),實際操作時需確認正確術語,以免指令失效。

逐字稿辨識疑點

  • Metra:逐字稿中將 Hooks 結構的第一部分稱為「Metra」,並解釋為代表觸發事件(Trigger)。此名稱在常見技術文獻中較少見,疑似為聽寫錯誤或特定內部術語。
  • Prom:逐字稿中將行為類型之一稱為「Prom」,並解釋為適用於簡單判斷(如審查對話歷史)。此名稱疑似為「Prompt」的聽寫錯誤或縮寫。
  • 反攻:逐字稿中提到「減少大量的不必要反攻」,語意上較不通順,疑似為「返工」的聽寫錯誤。
  • 早描:逐字稿中提到「早描 Cloud Code 工作過程中的對話歷史」,語意不明,疑似為「描繪」、「查看」或「審查」等詞的聽寫錯誤。
  • 報鎖:逐字稿中提到「沒有看到 Hooks 的檢測和報鎖的痕跡」,語意不明,疑似為「報錯」或「報警」等詞的聽寫錯誤。
  • 中端:逐字稿中提到「就是在中端裡面進行管理」及「打開一個中端的界面」,疑似為「終端」(Terminal)的聽寫錯誤。
  • enb 后坠:逐字稿中提到「碰到.enb 后坠的文件」,疑似為「enb 後綴」的聽寫錯誤。
  • 繪畫:逐字稿中提到「下一次啟動這個繪畫」,語意不明,疑似為「專案」或「環境」等詞的聽寫錯誤。
  • Thinking:逐字稿中提到「從他的 Thinking 里面」,疑似指代模型的思考過程(Chain of Thought),但保留原文。

可延伸追問

  1. 如何具體撰寫自然語言指令來定義複雜的 Agent 類型 Hooks?
  2. 在終端界面管理 Hooks 時,具體的刪除或禁用命令語法為何?
  3. 如何區分何時應使用 Command、Prompt 還是 Agent 類型?
  4. 下期預告的 Subagent、MCP、CloudSkills 與 Agent Team 具體功能為何?
  5. 如何確保 Hooks 不會過度干擾正常的開發流程?

尚未產生學習筆記

請在 Telegram 指令最後加上「學習」,例如:videonote 網址 英文 雙語 學習