{"text": "Hello,大家好,今天教大家怎么在Cloud Code中使用Hooks。用好Hooks,能够减少大量的不必要反攻,让你的开发效率提升至少一倍。首先我们解释一下Hooks是什么。它其实是你设置的一个自动检察员,它会帮你监控Cloud Code,确保Cloud Code能够自动的严格执行你设置的所有命令。这样解释可能还是有点抽象。接下来用几个案例告诉你Hooks能做一些什么。第一个,拦截一些危险操作。这也是我经常用的一个Hooks。比如我项目中的一些核心文件,我不希望Cloud Code直接去改动或删除,那我就会设置一个Hooks。当它识别到Cloud Code要做这样的危险操作的时候,它会及时跳出来喊停。第二个,自动存档。我们经常需要把本次的迭代改动提交到Github,但提交的时候,Cloud Code大多数时候不会自动留档,或者不会自动记录本次迭代的改动点。其实我们上一个视频也聊到了,我们可以在cloud.md这样的一个项目说明书里,向它提这个要求,让它每一次提交之前都自动留档,记录一下本次迭代的改动点。但是Cloud Code并不会每次都严格按照cloud.md这样的项目说明书去执行。它有时候会漏掉项目说明书里面的要求。我们如果使用Hooks的话,就能够更稳定的确保每一次提交代码的时候,都可以去留档,去记录本次迭代的改动点。第三个,代码审查。这是我们经常会用到的一个场景。比如我们某个模块或者是模功能,它去做了一个大的改版。Cloud Code其实它说它自己改完了,但是很多时候它可能会战术性的偷懒。所以我们Hooks可以去执行这样的一个review,好好地去检查它本次改动的代码,去确保它确实是改完了所有的模块,而不是偷懒。最后一个就是自动测试。我们很多的模块是可以单独进行测试的,某些模块它可能高频改动很多次UI或者是后端逻辑。一些小的改动其实可以直接跑Hooks,让它完成一个自动化测试的。接下来我们看一下Hooks长什么样。在我们的学习文档中给出了一个示例,我们可以从示例中看到Hooks包含两个部分的内容,Metra和Hooks。Metra其实代表了触发事件,比如Cloud Code执行的一个Edit,Write,就是编辑或写入的操作。第二个就是这个Hook对应的行为是什么。行为里面其实包含两个字段,第一个是类型,第二个是执行的事件。我们看一下总共有三种类型。第一种类型叫Command,就是命令。它适用的情况是一些比较简单的规则,它不需要额外判断,通常来说就是一句命令的一个行为。比如说碰到.enb后坠的文件,你就拦住。这就不需要判断,不需要进行任何的语义判断,也不需要进行任何的复杂操作。第二个是Prom类型的。它适用的情况就是,我们需要去做一些简单的判断。比如这里给出的一个例子就是,早描Cloud Code工作过程中的对话历史,去看一下它是不是把我要求的所有功能都完成了。这个时候它只需要Review对话,它不需要去看代码,不需要去执行其他的额外操作,所以它可以用Prom直接去完成。第三个是Agent。它相对来说,比Prom就会更复杂一点。它不只涉及简单的判断,还会涉及到多部的判断或者是行为。比如,让它去执行一个自动化测试的事件,让它继续要去测试这个UI是否,像实现的代码或用户描述的需求一样,以及让它去测试所有的点击事件是否正常。所以这种情况下就需要一个Agent类型的Hook,去完成本次的行为事件。最后跟大家说一下我们怎么创建和管理Hooks。首先创建Hooks非常简单,就是让Cloud Code帮你创建就可以了。我们打开一个正在开发中的项目,然后给Cloud Code提一个要求,让它帮我创建一个Hook,每次UI重构都进行一次自动化测试,并且仅在当前项目生效。其实我们可以选择全局生效,全局生效的话,它就会放到本地的Cloud的目录下面,然后我们点击发送,它就开始帮我们去写这个Hooks。OK,我们可以看到Hooks已经创建完成了,整个过程大概花了一分钟左右的时间,下一次启动这个绘画,Hooks就会自动生效。为了测试一下这个Hooks是否正常工作,我在这个项目里面提了一个要求,我跟他说目前的UI他没有想象力了,重构一下,所以他就列了整个重构计划,并且完成了重构,但是在整个过程中,我没有看到Hooks的检测和报锁的痕迹,所以为了确保能正常工作,我在他提交完代码之后,还问了另外一个问题,本次是否确认使用Hooks去检查UI,然后从他的Thinking里面,我看到他确实是使用了我们刚刚写的这个UI Review的Hooks去检查UI,但是确实所有的代码都通过了,没有任何的错误,这样我们就可以确保这个Hooks是能正常工作的,实际上大家在测试的时候,也可以去故意让Cloud Code去写一些容易发现的错误,或者是一些其他的bug埋进去,然后去确保这个Hooks,它是能够正常工作的,并且检测出错误,最后我们看一下怎么在Cloud Code里管理已经存在的Hooks,我们只需要在输入框里面输入-hooks,然后点击弹出来的选项,再点击continue terminal,就是在中端里面进行管理,然后我们打开一个中端的界面,OK,我们就可以看到已经存在的所有Hooks就在这里,我们可以在这里对Hooks进行删除编辑,或者是禁用全部Hooks的操作,好,我们今天的课程就到这里了,从下一期视频开始,我们会跟大家逐步介绍Cloud Code的一些进阶玩法,包括Subagent,MCP,CloudSkills,Agent Team等等,如果你有其他想要了解的关于Cloud Code的问题或技巧,欢迎在评论区留言,如果你想获得本次课程的全部资料,可以在评论区留下,求资料,我们下期视频继续,", "segments": [{"id": 0, "seek": 0, "start": 0.0, "end": 4.04, "text": "Hello,大家好,今天教大家怎么在Cloud Code中使用Hooks。", "tokens": [50365, 15947, 11, 15248, 11, 12074, 21936, 6868, 15282, 3581, 32787, 15549, 5975, 22982, 9254, 39, 1212, 82, 1543, 50567], "temperature": 0, "avg_logprob": -0.14034129352104374, "compression_ratio": 1.343465045592705, "no_speech_prob": 6.021329268524056e-12}, {"id": 1, "seek": 0, "start": 4.68, "end": 10.44, "text": "用好Hooks,能够减少大量的不必要反攻,让你的开发效率提升至少一倍。", "tokens": [50599, 9254, 2131, 39, 1212, 82, 11, 8225, 1787, 253, 6336, 237, 15686, 3582, 26748, 1546, 1960, 28531, 4275, 22138, 41530, 11, 33650, 18961, 18937, 28926, 43076, 44866, 20949, 41670, 20844, 15686, 2257, 35477, 1543, 50887], "temperature": 0, "avg_logprob": -0.14034129352104374, "compression_ratio": 1.343465045592705, "no_speech_prob": 6.021329268524056e-12}, {"id": 2, "seek": 0, "start": 10.64, "end": 12.84, "text": "首先我们解释一下Hooks是什么。", "tokens": [50897, 36490, 15003, 17278, 5873, 232, 8861, 39, 1212, 82, 1541, 10440, 1543, 51007], "temperature": 0, "avg_logprob": -0.14034129352104374, "compression_ratio": 1.343465045592705, "no_speech_prob": 6.021329268524056e-12}, {"id": 3, "seek": 0, "start": 13.5, "end": 18.22, "text": "它其实是你设置的一个自动检察员,它会帮你监控Cloud Code,", "tokens": [51040, 11284, 41646, 1541, 2166, 7422, 122, 34719, 1546, 20182, 9722, 34961, 16407, 222, 47550, 3606, 246, 11, 11284, 12949, 4845, 106, 2166, 5419, 239, 48707, 32787, 15549, 11, 51276], "temperature": 0, "avg_logprob": -0.14034129352104374, "compression_ratio": 1.343465045592705, "no_speech_prob": 6.021329268524056e-12}, {"id": 4, "seek": 0, "start": 18.72, "end": 23.5, "text": "确保Cloud Code能够自动的严格执行你设置的所有命令。", "tokens": [51301, 38114, 106, 24302, 32787, 15549, 8225, 1787, 253, 9722, 34961, 1546, 940, 98, 30921, 3416, 100, 8082, 2166, 7422, 122, 34719, 1546, 39300, 25236, 49061, 1543, 51540], "temperature": 0, "avg_logprob": -0.14034129352104374, "compression_ratio": 1.343465045592705, "no_speech_prob": 6.021329268524056e-12}, {"id": 5, "seek": 0, "start": 23.7, "end": 25.12, "text": "这样解释可能还是有点抽象。", "tokens": [51550, 21209, 17278, 5873, 232, 16657, 45726, 2412, 12579, 46022, 45007, 1543, 51621], "temperature": 0, "avg_logprob": -0.14034129352104374, "compression_ratio": 1.343465045592705, "no_speech_prob": 6.021329268524056e-12}, {"id": 6, "seek": 0, "start": 25.740000000000002, "end": 29.04, "text": "接下来用几个案例告诉你Hooks能做一些什么。", "tokens": [51652, 14468, 4438, 6912, 9254, 6336, 254, 7549, 28899, 17797, 44816, 2166, 39, 1212, 82, 8225, 10907, 38515, 10440, 1543, 51817], "temperature": 0, "avg_logprob": -0.14034129352104374, "compression_ratio": 1.343465045592705, "no_speech_prob": 6.021329268524056e-12}, {"id": 7, "seek": 2904, "start": 29.04, "end": 31.7, "text": "第一个,拦截一些危险操作。", "tokens": [50365, 18049, 7549, 11, 6852, 99, 1486, 103, 38515, 38292, 8842, 102, 13167, 235, 11914, 1543, 50498], "temperature": 0, "avg_logprob": -0.130118923422731, "compression_ratio": 1.362776025236593, "no_speech_prob": 8.469168942537575e-12}, {"id": 8, "seek": 2904, "start": 32.18, "end": 33.64, "text": "这也是我经常用的一个Hooks。", "tokens": [50522, 5562, 22021, 1654, 30276, 11279, 9254, 1546, 20182, 39, 1212, 82, 1543, 50595], "temperature": 0, "avg_logprob": -0.130118923422731, "compression_ratio": 1.362776025236593, "no_speech_prob": 8.469168942537575e-12}, {"id": 9, "seek": 2904, "start": 34.32, "end": 38.92, "text": "比如我项目中的一些核心文件,我不希望Cloud Code直接去改动或删除,", "tokens": [50629, 36757, 1654, 10178, 117, 11386, 5975, 1546, 38515, 8987, 116, 7945, 17174, 20485, 11, 25395, 29955, 32787, 15549, 43297, 6734, 34490, 34961, 19780, 2437, 254, 32999, 11, 50859], "temperature": 0, "avg_logprob": -0.130118923422731, "compression_ratio": 1.362776025236593, "no_speech_prob": 8.469168942537575e-12}, {"id": 10, "seek": 2904, "start": 39.48, "end": 41.46, "text": "那我就会设置一个Hooks。", "tokens": [50887, 4184, 22020, 12949, 7422, 122, 34719, 20182, 39, 1212, 82, 1543, 50986], "temperature": 0, "avg_logprob": -0.130118923422731, "compression_ratio": 1.362776025236593, "no_speech_prob": 8.469168942537575e-12}, {"id": 11, "seek": 2904, "start": 42.1, "end": 45.239999999999995, "text": "当它识别到Cloud Code要做这样的危险操作的时候,", "tokens": [51018, 16233, 11284, 5233, 228, 18453, 4511, 32787, 15549, 4275, 10907, 21209, 1546, 38292, 8842, 102, 13167, 235, 11914, 49873, 11, 51175], "temperature": 0, "avg_logprob": -0.130118923422731, "compression_ratio": 1.362776025236593, "no_speech_prob": 8.469168942537575e-12}, {"id": 12, "seek": 2904, "start": 45.36, "end": 46.8, "text": "它会及时跳出来喊停。", "tokens": [51181, 11284, 12949, 25703, 15729, 29366, 44561, 5234, 232, 36135, 1543, 51253], "temperature": 0, "avg_logprob": -0.130118923422731, "compression_ratio": 1.362776025236593, "no_speech_prob": 8.469168942537575e-12}, {"id": 13, "seek": 2904, "start": 47.480000000000004, "end": 48.54, "text": "第二个,自动存档。", "tokens": [51287, 19693, 7549, 11, 9722, 34961, 39781, 21416, 96, 1543, 51340], "temperature": 0, "avg_logprob": -0.130118923422731, "compression_ratio": 1.362776025236593, "no_speech_prob": 8.469168942537575e-12}, {"id": 14, "seek": 2904, "start": 49.04, "end": 52.519999999999996, "text": "我们经常需要把本次的迭代改动提交到Github,", "tokens": [51365, 15003, 30276, 11279, 35748, 16075, 8802, 9487, 1546, 3316, 255, 19105, 34490, 34961, 20949, 28455, 4511, 38, 355, 836, 11, 51539], "temperature": 0, "avg_logprob": -0.130118923422731, "compression_ratio": 1.362776025236593, "no_speech_prob": 8.469168942537575e-12}, {"id": 15, "seek": 2904, "start": 52.86, "end": 56.42, "text": "但提交的时候,Cloud Code大多数时候不会自动留档,", "tokens": [51556, 8395, 20949, 28455, 49873, 11, 32787, 15549, 3582, 6392, 33188, 29111, 47928, 9722, 34961, 24456, 21416, 96, 11, 51734], "temperature": 0, "avg_logprob": -0.130118923422731, "compression_ratio": 1.362776025236593, "no_speech_prob": 8.469168942537575e-12}, {"id": 16, "seek": 5642, "start": 56.42, "end": 59.64, "text": "或者不会自动记录本次迭代的改动点。", "tokens": [50365, 31148, 47928, 9722, 34961, 34756, 7391, 243, 8802, 9487, 3316, 255, 19105, 1546, 34490, 34961, 12579, 1543, 50526], "temperature": 0, "avg_logprob": -0.12147383438913446, "compression_ratio": 1.26, "no_speech_prob": 1.415692823386605e-11}, {"id": 17, "seek": 5642, "start": 60.08, "end": 62.1, "text": "其实我们上一个视频也聊到了,", "tokens": [50548, 41646, 15003, 5708, 20182, 40656, 39752, 6404, 40096, 21381, 11, 50649], "temperature": 0, "avg_logprob": -0.12147383438913446, "compression_ratio": 1.26, "no_speech_prob": 1.415692823386605e-11}, {"id": 18, "seek": 5642, "start": 62.56, "end": 65.5, "text": "我们可以在cloud.md这样的一个项目说明书里,", "tokens": [50672, 15003, 6723, 3581, 44495, 13, 76, 67, 21209, 1546, 20182, 10178, 117, 11386, 8090, 11100, 2930, 99, 15759, 11, 50819], "temperature": 0, "avg_logprob": -0.12147383438913446, "compression_ratio": 1.26, "no_speech_prob": 1.415692823386605e-11}, {"id": 19, "seek": 5642, "start": 66.04, "end": 67.02, "text": "向它提这个要求,", "tokens": [50846, 24282, 11284, 20949, 15368, 4275, 32718, 11, 50895], "temperature": 0, "avg_logprob": -0.12147383438913446, "compression_ratio": 1.26, "no_speech_prob": 1.415692823386605e-11}, {"id": 20, "seek": 5642, "start": 67.44, "end": 69.78, "text": "让它每一次提交之前都自动留档,", "tokens": [50916, 33650, 11284, 23664, 27505, 20949, 28455, 32442, 7182, 9722, 34961, 24456, 21416, 96, 11, 51033], "temperature": 0, "avg_logprob": -0.12147383438913446, "compression_ratio": 1.26, "no_speech_prob": 1.415692823386605e-11}, {"id": 21, "seek": 5642, "start": 69.94, "end": 71.7, "text": "记录一下本次迭代的改动点。", "tokens": [51041, 34756, 7391, 243, 8861, 8802, 9487, 3316, 255, 19105, 1546, 34490, 34961, 12579, 1543, 51129], "temperature": 0, "avg_logprob": -0.12147383438913446, "compression_ratio": 1.26, "no_speech_prob": 1.415692823386605e-11}, {"id": 22, "seek": 7170, "start": 71.7, "end": 78.9, "text": "但是Cloud Code并不会每次都严格按照cloud.md这样的项目说明书去执行。", "tokens": [50365, 11189, 32787, 15549, 3509, 114, 47928, 23664, 9487, 7182, 940, 98, 30921, 26613, 32150, 44495, 13, 76, 67, 21209, 1546, 10178, 117, 11386, 8090, 11100, 2930, 99, 6734, 3416, 100, 8082, 1543, 50725], "temperature": 0, "avg_logprob": -0.11334929905884655, "compression_ratio": 1.2226027397260273, "no_speech_prob": 1.328563734720456e-11}, {"id": 23, "seek": 7170, "start": 79.38, "end": 82.18, "text": "它有时候会漏掉项目说明书里面的要求。", "tokens": [50749, 11284, 2412, 29111, 12949, 14065, 237, 29327, 10178, 117, 11386, 8090, 11100, 2930, 99, 15759, 8833, 1546, 4275, 32718, 1543, 50889], "temperature": 0, "avg_logprob": -0.11334929905884655, "compression_ratio": 1.2226027397260273, "no_speech_prob": 1.328563734720456e-11}, {"id": 24, "seek": 7170, "start": 82.72, "end": 84.0, "text": "我们如果使用Hooks的话,", "tokens": [50916, 15003, 13119, 22982, 9254, 39, 1212, 82, 44575, 11, 50980], "temperature": 0, "avg_logprob": -0.11334929905884655, "compression_ratio": 1.2226027397260273, "no_speech_prob": 1.328563734720456e-11}, {"id": 25, "seek": 7170, "start": 84.12, "end": 87.80000000000001, "text": "就能够更稳定的确保每一次提交代码的时候,", "tokens": [50986, 3111, 8225, 1787, 253, 19002, 10415, 111, 12088, 1546, 38114, 106, 24302, 23664, 27505, 20949, 28455, 19105, 23230, 223, 49873, 11, 51170], "temperature": 0, "avg_logprob": -0.11334929905884655, "compression_ratio": 1.2226027397260273, "no_speech_prob": 1.328563734720456e-11}, {"id": 26, "seek": 7170, "start": 88.32000000000001, "end": 91.28, "text": "都可以去留档,去记录本次迭代的改动点。", "tokens": [51196, 7182, 6723, 6734, 24456, 21416, 96, 11, 6734, 34756, 7391, 243, 8802, 9487, 3316, 255, 19105, 1546, 34490, 34961, 12579, 1543, 51344], "temperature": 0, "avg_logprob": -0.11334929905884655, "compression_ratio": 1.2226027397260273, "no_speech_prob": 1.328563734720456e-11}, {"id": 27, "seek": 7170, "start": 92.44, "end": 93.7, "text": "第三个,代码审查。", "tokens": [51402, 35878, 7549, 11, 19105, 23230, 223, 2415, 94, 42623, 1543, 51465], "temperature": 0, "avg_logprob": -0.11334929905884655, "compression_ratio": 1.2226027397260273, "no_speech_prob": 1.328563734720456e-11}, {"id": 28, "seek": 7170, "start": 94.14, "end": 96.78, "text": "这是我们经常会用到的一个场景。", "tokens": [51487, 27455, 15003, 30276, 11279, 12949, 9254, 4511, 1546, 20182, 50255, 50218, 1543, 51619], "temperature": 0, "avg_logprob": -0.11334929905884655, "compression_ratio": 1.2226027397260273, "no_speech_prob": 1.328563734720456e-11}, {"id": 29, "seek": 9678, "start": 96.78, "end": 101.22, "text": "比如我们某个模块或者是模功能,", "tokens": [50365, 36757, 15003, 17238, 238, 7549, 41908, 47734, 31148, 1541, 41908, 32311, 8225, 11, 50587], "temperature": 0, "avg_logprob": -0.13154627892278856, "compression_ratio": 1.344155844155844, "no_speech_prob": 1.1381787873299132e-11}, {"id": 30, "seek": 9678, "start": 101.34, "end": 102.7, "text": "它去做了一个大的改版。", "tokens": [50593, 11284, 6734, 10907, 2289, 20182, 39156, 34490, 42096, 1543, 50661], "temperature": 0, "avg_logprob": -0.13154627892278856, "compression_ratio": 1.344155844155844, "no_speech_prob": 1.1381787873299132e-11}, {"id": 31, "seek": 9678, "start": 103.3, "end": 105.34, "text": "Cloud Code其实它说它自己改完了,", "tokens": [50691, 32787, 15549, 41646, 11284, 8090, 11284, 17645, 34490, 41665, 11, 50793], "temperature": 0, "avg_logprob": -0.13154627892278856, "compression_ratio": 1.344155844155844, "no_speech_prob": 1.1381787873299132e-11}, {"id": 32, "seek": 9678, "start": 105.86, "end": 108.18, "text": "但是很多时候它可能会战术性的偷懒。", "tokens": [50819, 11189, 20778, 29111, 11284, 16657, 12949, 1486, 246, 1474, 107, 21686, 1546, 7437, 115, 13183, 240, 1543, 50935], "temperature": 0, "avg_logprob": -0.13154627892278856, "compression_ratio": 1.344155844155844, "no_speech_prob": 1.1381787873299132e-11}, {"id": 33, "seek": 9678, "start": 108.9, "end": 111.64, "text": "所以我们Hooks可以去执行这样的一个review,", "tokens": [50971, 7239, 15003, 39, 1212, 82, 6723, 6734, 3416, 100, 8082, 21209, 1546, 20182, 265, 1759, 11, 51108], "temperature": 0, "avg_logprob": -0.13154627892278856, "compression_ratio": 1.344155844155844, "no_speech_prob": 1.1381787873299132e-11}, {"id": 34, "seek": 9678, "start": 112.36, "end": 115.72, "text": "好好地去检查它本次改动的代码,", "tokens": [51144, 30164, 10928, 6734, 16407, 222, 42623, 11284, 8802, 9487, 34490, 34961, 1546, 19105, 23230, 223, 11, 51312], "temperature": 0, "avg_logprob": -0.13154627892278856, "compression_ratio": 1.344155844155844, "no_speech_prob": 1.1381787873299132e-11}, {"id": 35, "seek": 9678, "start": 116.12, "end": 118.5, "text": "去确保它确实是改完了所有的模块,", "tokens": [51332, 6734, 38114, 106, 24302, 11284, 38114, 106, 24726, 1541, 34490, 41665, 39300, 1546, 41908, 47734, 11, 51451], "temperature": 0, "avg_logprob": -0.13154627892278856, "compression_ratio": 1.344155844155844, "no_speech_prob": 1.1381787873299132e-11}, {"id": 36, "seek": 9678, "start": 118.5, "end": 119.2, "text": "而不是偷懒。", "tokens": [51451, 11070, 7296, 7437, 115, 13183, 240, 1543, 51486], "temperature": 0, "avg_logprob": -0.13154627892278856, "compression_ratio": 1.344155844155844, "no_speech_prob": 1.1381787873299132e-11}, {"id": 37, "seek": 9678, "start": 119.84, "end": 121.3, "text": "最后一个就是自动测试。", "tokens": [51518, 8661, 13547, 20182, 5620, 9722, 34961, 11038, 233, 5233, 243, 1543, 51591], "temperature": 0, "avg_logprob": -0.13154627892278856, "compression_ratio": 1.344155844155844, "no_speech_prob": 1.1381787873299132e-11}, {"id": 38, "seek": 9678, "start": 121.84, "end": 124.4, "text": "我们很多的模块是可以单独进行测试的,", "tokens": [51618, 15003, 20778, 1546, 41908, 47734, 1541, 6723, 47446, 18637, 105, 36700, 8082, 11038, 233, 5233, 243, 1546, 11, 51746], "temperature": 0, "avg_logprob": -0.13154627892278856, "compression_ratio": 1.344155844155844, "no_speech_prob": 1.1381787873299132e-11}, {"id": 39, "seek": 12440, "start": 124.4, "end": 128.6, "text": "某些模块它可能高频改动很多次UI或者是后端逻辑。", "tokens": [50365, 17238, 238, 13824, 41908, 47734, 11284, 16657, 12979, 39752, 34490, 34961, 20778, 9487, 46324, 31148, 1541, 13547, 11957, 107, 2215, 119, 9830, 239, 1543, 50575], "temperature": 0, "avg_logprob": -0.15562428867115694, "compression_ratio": 1.2521739130434784, "no_speech_prob": 1.1223784054936736e-11}, {"id": 40, "seek": 12440, "start": 129.08, "end": 131.72, "text": "一些小的改动其实可以直接跑Hooks,", "tokens": [50599, 38515, 7322, 1546, 34490, 34961, 41646, 6723, 43297, 32585, 39, 1212, 82, 11, 50731], "temperature": 0, "avg_logprob": -0.15562428867115694, "compression_ratio": 1.2521739130434784, "no_speech_prob": 1.1223784054936736e-11}, {"id": 41, "seek": 12440, "start": 132.26000000000002, "end": 134.04000000000002, "text": "让它完成一个自动化测试的。", "tokens": [50758, 33650, 11284, 41509, 20182, 9722, 34961, 23756, 11038, 233, 5233, 243, 1546, 1543, 50847], "temperature": 0, "avg_logprob": -0.15562428867115694, "compression_ratio": 1.2521739130434784, "no_speech_prob": 1.1223784054936736e-11}, {"id": 42, "seek": 12440, "start": 134.26, "end": 136.16, "text": "接下来我们看一下Hooks长什么样。", "tokens": [50858, 14468, 4438, 6912, 15003, 28324, 39, 1212, 82, 32271, 10440, 14496, 1543, 50953], "temperature": 0, "avg_logprob": -0.15562428867115694, "compression_ratio": 1.2521739130434784, "no_speech_prob": 1.1223784054936736e-11}, {"id": 43, "seek": 12440, "start": 136.76, "end": 138.84, "text": "在我们的学习文档中给出了一个示例,", "tokens": [50983, 3581, 15003, 1546, 29618, 2930, 254, 17174, 21416, 96, 5975, 23197, 7781, 2289, 20182, 25696, 17797, 11, 51087], "temperature": 0, "avg_logprob": -0.15562428867115694, "compression_ratio": 1.2521739130434784, "no_speech_prob": 1.1223784054936736e-11}, {"id": 44, "seek": 12440, "start": 139.34, "end": 142.74, "text": "我们可以从示例中看到Hooks包含两个部分的内容,", "tokens": [51112, 15003, 6723, 35630, 25696, 17797, 5975, 18032, 39, 1212, 82, 23305, 2392, 104, 36257, 7549, 32174, 1546, 34742, 25750, 11, 51282], "temperature": 0, "avg_logprob": -0.15562428867115694, "compression_ratio": 1.2521739130434784, "no_speech_prob": 1.1223784054936736e-11}, {"id": 45, "seek": 12440, "start": 143.20000000000002, "end": 144.32, "text": "Metra和Hooks。", "tokens": [51305, 44, 302, 424, 12565, 39, 1212, 82, 1543, 51361], "temperature": 0, "avg_logprob": -0.15562428867115694, "compression_ratio": 1.2521739130434784, "no_speech_prob": 1.1223784054936736e-11}, {"id": 46, "seek": 12440, "start": 144.86, "end": 146.9, "text": "Metra其实代表了触发事件,", "tokens": [51388, 44, 302, 424, 41646, 19105, 17571, 2289, 6758, 99, 28926, 6973, 20485, 11, 51490], "temperature": 0, "avg_logprob": -0.15562428867115694, "compression_ratio": 1.2521739130434784, "no_speech_prob": 1.1223784054936736e-11}, {"id": 47, "seek": 12440, "start": 147.38, "end": 150.24, "text": "比如Cloud Code执行的一个Edit,", "tokens": [51514, 36757, 32787, 15549, 3416, 100, 8082, 1546, 20182, 36, 17975, 11, 51657], "temperature": 0, "avg_logprob": -0.15562428867115694, "compression_ratio": 1.2521739130434784, "no_speech_prob": 1.1223784054936736e-11}, {"id": 48, "seek": 12440, "start": 150.42000000000002, "end": 152.42000000000002, "text": "Write,就是编辑或写入的操作。", "tokens": [51666, 54, 35002, 11, 5620, 38109, 244, 9830, 239, 19780, 5676, 247, 14028, 1546, 13167, 235, 11914, 1543, 51766], "temperature": 0, "avg_logprob": -0.15562428867115694, "compression_ratio": 1.2521739130434784, "no_speech_prob": 1.1223784054936736e-11}, {"id": 49, "seek": 15242, "start": 152.42, "end": 155.64, "text": "第二个就是这个Hook对应的行为是什么。", "tokens": [50365, 19693, 7549, 5620, 15368, 39, 1212, 8713, 44297, 1546, 8082, 13992, 1541, 10440, 1543, 50526], "temperature": 0, "avg_logprob": -0.13892685098850982, "compression_ratio": 1.403125, "no_speech_prob": 1.2014175244934311e-11}, {"id": 50, "seek": 15242, "start": 156.1, "end": 157.78, "text": "行为里面其实包含两个字段,", "tokens": [50549, 8082, 13992, 15759, 8833, 41646, 23305, 2392, 104, 36257, 7549, 22381, 28427, 11, 50633], "temperature": 0, "avg_logprob": -0.13892685098850982, "compression_ratio": 1.403125, "no_speech_prob": 1.2014175244934311e-11}, {"id": 51, "seek": 15242, "start": 157.94, "end": 158.7, "text": "第一个是类型,", "tokens": [50641, 18049, 7549, 1541, 22113, 119, 39823, 11, 50679], "temperature": 0, "avg_logprob": -0.13892685098850982, "compression_ratio": 1.403125, "no_speech_prob": 1.2014175244934311e-11}, {"id": 52, "seek": 15242, "start": 158.83999999999997, "end": 160.06, "text": "第二个是执行的事件。", "tokens": [50686, 19693, 7549, 1541, 3416, 100, 8082, 1546, 6973, 20485, 1543, 50747], "temperature": 0, "avg_logprob": -0.13892685098850982, "compression_ratio": 1.403125, "no_speech_prob": 1.2014175244934311e-11}, {"id": 53, "seek": 15242, "start": 160.7, "end": 162.42, "text": "我们看一下总共有三种类型。", "tokens": [50779, 15003, 28324, 33440, 15408, 2412, 10960, 39810, 22113, 119, 39823, 1543, 50865], "temperature": 0, "avg_logprob": -0.13892685098850982, "compression_ratio": 1.403125, "no_speech_prob": 1.2014175244934311e-11}, {"id": 54, "seek": 15242, "start": 163.0, "end": 164.2, "text": "第一种类型叫Command,", "tokens": [50894, 18049, 39810, 22113, 119, 39823, 19855, 39206, 474, 11, 50954], "temperature": 0, "avg_logprob": -0.13892685098850982, "compression_ratio": 1.403125, "no_speech_prob": 1.2014175244934311e-11}, {"id": 55, "seek": 15242, "start": 164.29999999999998, "end": 164.82, "text": "就是命令。", "tokens": [50959, 5620, 25236, 49061, 1543, 50985], "temperature": 0, "avg_logprob": -0.13892685098850982, "compression_ratio": 1.403125, "no_speech_prob": 1.2014175244934311e-11}, {"id": 56, "seek": 15242, "start": 165.32, "end": 167.89999999999998, "text": "它适用的情况是一些比较简单的规则,", "tokens": [51010, 11284, 2215, 224, 9254, 1546, 46514, 1541, 38515, 11706, 9830, 225, 11249, 222, 47446, 1546, 6758, 226, 2437, 247, 11, 51139], "temperature": 0, "avg_logprob": -0.13892685098850982, "compression_ratio": 1.403125, "no_speech_prob": 1.2014175244934311e-11}, {"id": 57, "seek": 15242, "start": 168.01999999999998, "end": 169.22, "text": "它不需要额外判断,", "tokens": [51145, 11284, 1960, 35748, 12501, 251, 12022, 2437, 97, 4307, 255, 11, 51205], "temperature": 0, "avg_logprob": -0.13892685098850982, "compression_ratio": 1.403125, "no_speech_prob": 1.2014175244934311e-11}, {"id": 58, "seek": 15242, "start": 169.32, "end": 171.67999999999998, "text": "通常来说就是一句命令的一个行为。", "tokens": [51210, 19550, 11279, 6912, 8090, 5620, 2257, 34592, 25236, 49061, 1546, 20182, 8082, 13992, 1543, 51328], "temperature": 0, "avg_logprob": -0.13892685098850982, "compression_ratio": 1.403125, "no_speech_prob": 1.2014175244934311e-11}, {"id": 59, "seek": 15242, "start": 171.92, "end": 175.64, "text": "比如说碰到.enb后坠的文件,", "tokens": [51340, 36757, 8090, 16337, 108, 4511, 13, 268, 65, 13547, 14872, 254, 1546, 17174, 20485, 11, 51526], "temperature": 0, "avg_logprob": -0.13892685098850982, "compression_ratio": 1.403125, "no_speech_prob": 1.2014175244934311e-11}, {"id": 60, "seek": 15242, "start": 175.83999999999997, "end": 176.56, "text": "你就拦住。", "tokens": [51536, 41045, 6852, 99, 21632, 1543, 51572], "temperature": 0, "avg_logprob": -0.13892685098850982, "compression_ratio": 1.403125, "no_speech_prob": 1.2014175244934311e-11}, {"id": 61, "seek": 15242, "start": 177.56, "end": 178.77999999999997, "text": "这就不需要判断,", "tokens": [51622, 5562, 3111, 1960, 35748, 2437, 97, 4307, 255, 11, 51683], "temperature": 0, "avg_logprob": -0.13892685098850982, "compression_ratio": 1.403125, "no_speech_prob": 1.2014175244934311e-11}, {"id": 62, "seek": 15242, "start": 178.89999999999998, "end": 180.32, "text": "不需要进行任何的语义判断,", "tokens": [51689, 1960, 35748, 36700, 8082, 26443, 11906, 1546, 5233, 255, 2930, 231, 2437, 97, 4307, 255, 11, 51760], "temperature": 0, "avg_logprob": -0.13892685098850982, "compression_ratio": 1.403125, "no_speech_prob": 1.2014175244934311e-11}, {"id": 63, "seek": 18032, "start": 180.32, "end": 182.1, "text": "也不需要进行任何的复杂操作。", "tokens": [50365, 6404, 1960, 35748, 36700, 8082, 26443, 11906, 1546, 1787, 235, 4422, 224, 13167, 235, 11914, 1543, 50454], "temperature": 0, "avg_logprob": -0.1805822701289736, "compression_ratio": 1.2686084142394822, "no_speech_prob": 1.4893877797739208e-11}, {"id": 64, "seek": 18032, "start": 183.12, "end": 184.98, "text": "第二个是Prom类型的。", "tokens": [50505, 19693, 7549, 1541, 47, 4397, 22113, 119, 39823, 1546, 1543, 50598], "temperature": 0, "avg_logprob": -0.1805822701289736, "compression_ratio": 1.2686084142394822, "no_speech_prob": 1.4893877797739208e-11}, {"id": 65, "seek": 18032, "start": 185.28, "end": 186.26, "text": "它适用的情况就是,", "tokens": [50613, 11284, 2215, 224, 9254, 1546, 46514, 5620, 11, 50662], "temperature": 0, "avg_logprob": -0.1805822701289736, "compression_ratio": 1.2686084142394822, "no_speech_prob": 1.4893877797739208e-11}, {"id": 66, "seek": 18032, "start": 186.4, "end": 187.85999999999999, "text": "我们需要去做一些简单的判断。", "tokens": [50669, 15003, 35748, 6734, 10907, 38515, 11249, 222, 47446, 1546, 2437, 97, 4307, 255, 1543, 50742], "temperature": 0, "avg_logprob": -0.1805822701289736, "compression_ratio": 1.2686084142394822, "no_speech_prob": 1.4893877797739208e-11}, {"id": 67, "seek": 18032, "start": 188.32, "end": 190.1, "text": "比如这里给出的一个例子就是,", "tokens": [50765, 36757, 35102, 23197, 7781, 1546, 20182, 17797, 7626, 5620, 11, 50854], "temperature": 0, "avg_logprob": -0.1805822701289736, "compression_ratio": 1.2686084142394822, "no_speech_prob": 1.4893877797739208e-11}, {"id": 68, "seek": 18032, "start": 190.73999999999998, "end": 193.32, "text": "早描Cloud Code工作过程中的对话历史,", "tokens": [50886, 21176, 11673, 237, 32787, 15549, 41315, 16866, 29649, 5975, 1546, 8713, 21596, 5014, 228, 45399, 11, 51015], "temperature": 0, "avg_logprob": -0.1805822701289736, "compression_ratio": 1.2686084142394822, "no_speech_prob": 1.4893877797739208e-11}, {"id": 69, "seek": 18032, "start": 193.7, "end": 197.7, "text": "去看一下它是不是把我要求的所有功能都完成了。", "tokens": [51034, 6734, 28324, 11284, 23034, 16075, 32186, 32718, 1546, 39300, 32311, 8225, 7182, 41509, 2289, 1543, 51234], "temperature": 0, "avg_logprob": -0.1805822701289736, "compression_ratio": 1.2686084142394822, "no_speech_prob": 1.4893877797739208e-11}, {"id": 70, "seek": 18032, "start": 198.34, "end": 200.12, "text": "这个时候它只需要Review对话,", "tokens": [51266, 15368, 29111, 11284, 14003, 35748, 8524, 1759, 8713, 21596, 11, 51355], "temperature": 0, "avg_logprob": -0.1805822701289736, "compression_ratio": 1.2686084142394822, "no_speech_prob": 1.4893877797739208e-11}, {"id": 71, "seek": 18032, "start": 200.24, "end": 201.24, "text": "它不需要去看代码,", "tokens": [51361, 11284, 1960, 35748, 6734, 4200, 19105, 23230, 223, 11, 51411], "temperature": 0, "avg_logprob": -0.1805822701289736, "compression_ratio": 1.2686084142394822, "no_speech_prob": 1.4893877797739208e-11}, {"id": 72, "seek": 18032, "start": 201.34, "end": 203.18, "text": "不需要去执行其他的额外操作,", "tokens": [51416, 1960, 35748, 6734, 3416, 100, 8082, 9572, 31309, 12501, 251, 12022, 13167, 235, 11914, 11, 51508], "temperature": 0, "avg_logprob": -0.1805822701289736, "compression_ratio": 1.2686084142394822, "no_speech_prob": 1.4893877797739208e-11}, {"id": 73, "seek": 20318, "start": 203.18, "end": 206.36, "text": "所以它可以用Prom直接去完成。", "tokens": [50365, 7239, 11284, 6723, 9254, 47, 4397, 43297, 6734, 41509, 1543, 50524], "temperature": 0, "avg_logprob": -0.15698401321320843, "compression_ratio": 1.3016949152542372, "no_speech_prob": 1.4021982359946339e-11}, {"id": 74, "seek": 20318, "start": 207.68, "end": 208.74, "text": "第三个是Agent。", "tokens": [50590, 35878, 7549, 1541, 32, 6930, 1543, 50643], "temperature": 0, "avg_logprob": -0.15698401321320843, "compression_ratio": 1.3016949152542372, "no_speech_prob": 1.4021982359946339e-11}, {"id": 75, "seek": 20318, "start": 209.16, "end": 210.06, "text": "它相对来说,", "tokens": [50664, 11284, 15106, 8713, 6912, 8090, 11, 50709], "temperature": 0, "avg_logprob": -0.15698401321320843, "compression_ratio": 1.3016949152542372, "no_speech_prob": 1.4021982359946339e-11}, {"id": 76, "seek": 20318, "start": 210.5, "end": 212.06, "text": "比Prom就会更复杂一点。", "tokens": [50731, 11706, 47, 4397, 3111, 12949, 19002, 1787, 235, 4422, 224, 49042, 1543, 50809], "temperature": 0, "avg_logprob": -0.15698401321320843, "compression_ratio": 1.3016949152542372, "no_speech_prob": 1.4021982359946339e-11}, {"id": 77, "seek": 20318, "start": 212.46, "end": 214.36, "text": "它不只涉及简单的判断,", "tokens": [50829, 11284, 1960, 14003, 35681, 231, 25703, 11249, 222, 47446, 1546, 2437, 97, 4307, 255, 11, 50924], "temperature": 0, "avg_logprob": -0.15698401321320843, "compression_ratio": 1.3016949152542372, "no_speech_prob": 1.4021982359946339e-11}, {"id": 78, "seek": 20318, "start": 214.52, "end": 217.14000000000001, "text": "还会涉及到多部的判断或者是行为。", "tokens": [50932, 14852, 12949, 35681, 231, 25703, 4511, 6392, 13470, 1546, 2437, 97, 4307, 255, 31148, 1541, 8082, 13992, 1543, 51063], "temperature": 0, "avg_logprob": -0.15698401321320843, "compression_ratio": 1.3016949152542372, "no_speech_prob": 1.4021982359946339e-11}, {"id": 79, "seek": 20318, "start": 217.64000000000001, "end": 217.92000000000002, "text": "比如,", "tokens": [51088, 36757, 11, 51102], "temperature": 0, "avg_logprob": -0.15698401321320843, "compression_ratio": 1.3016949152542372, "no_speech_prob": 1.4021982359946339e-11}, {"id": 80, "seek": 20318, "start": 218.34, "end": 220.70000000000002, "text": "让它去执行一个自动化测试的事件,", "tokens": [51123, 33650, 11284, 6734, 3416, 100, 8082, 20182, 9722, 34961, 23756, 11038, 233, 5233, 243, 1546, 6973, 20485, 11, 51241], "temperature": 0, "avg_logprob": -0.15698401321320843, "compression_ratio": 1.3016949152542372, "no_speech_prob": 1.4021982359946339e-11}, {"id": 81, "seek": 20318, "start": 221.36, "end": 224.20000000000002, "text": "让它继续要去测试这个UI是否,", "tokens": [51274, 33650, 11284, 10115, 100, 10115, 255, 4275, 6734, 11038, 233, 5233, 243, 15368, 46324, 1541, 45334, 11, 51416], "temperature": 0, "avg_logprob": -0.15698401321320843, "compression_ratio": 1.3016949152542372, "no_speech_prob": 1.4021982359946339e-11}, {"id": 82, "seek": 20318, "start": 224.54000000000002, "end": 226.70000000000002, "text": "像实现的代码或用户描述的需求一样,", "tokens": [51433, 12760, 24726, 20204, 1546, 19105, 23230, 223, 19780, 9254, 1486, 115, 11673, 237, 3316, 108, 1546, 32535, 32718, 2257, 14496, 11, 51541], "temperature": 0, "avg_logprob": -0.15698401321320843, "compression_ratio": 1.3016949152542372, "no_speech_prob": 1.4021982359946339e-11}, {"id": 83, "seek": 20318, "start": 226.9, "end": 229.60000000000002, "text": "以及让它去测试所有的点击事件是否正常。", "tokens": [51551, 40282, 33650, 11284, 6734, 11038, 233, 5233, 243, 39300, 1546, 12579, 6336, 119, 6973, 20485, 1541, 45334, 15789, 11279, 1543, 51686], "temperature": 0, "avg_logprob": -0.15698401321320843, "compression_ratio": 1.3016949152542372, "no_speech_prob": 1.4021982359946339e-11}, {"id": 84, "seek": 22960, "start": 229.6, "end": 232.7, "text": "所以这种情况下就需要一个Agent类型的Hook,", "tokens": [50365, 7239, 5562, 39810, 46514, 4438, 3111, 35748, 20182, 32, 6930, 22113, 119, 39823, 1546, 39, 1212, 11, 50520], "temperature": 0, "avg_logprob": -0.17597790005840833, "compression_ratio": 1.263157894736842, "no_speech_prob": 1.2246150274397571e-11}, {"id": 85, "seek": 22960, "start": 233.18, "end": 235.34, "text": "去完成本次的行为事件。", "tokens": [50544, 6734, 41509, 8802, 9487, 1546, 8082, 13992, 6973, 20485, 1543, 50652], "temperature": 0, "avg_logprob": -0.17597790005840833, "compression_ratio": 1.263157894736842, "no_speech_prob": 1.2246150274397571e-11}, {"id": 86, "seek": 22960, "start": 235.92, "end": 239.01999999999998, "text": "最后跟大家说一下我们怎么创建和管理Hooks。", "tokens": [50681, 8661, 13547, 47349, 8090, 8861, 15003, 15282, 2437, 249, 34157, 12565, 23131, 13876, 39, 1212, 82, 1543, 50836], "temperature": 0, "avg_logprob": -0.17597790005840833, "compression_ratio": 1.263157894736842, "no_speech_prob": 1.2246150274397571e-11}, {"id": 87, "seek": 22960, "start": 239.7, "end": 241.72, "text": "首先创建Hooks非常简单,", "tokens": [50870, 36490, 2437, 249, 34157, 39, 1212, 82, 14392, 11249, 222, 47446, 11, 50971], "temperature": 0, "avg_logprob": -0.17597790005840833, "compression_ratio": 1.263157894736842, "no_speech_prob": 1.2246150274397571e-11}, {"id": 88, "seek": 22960, "start": 241.82, "end": 243.85999999999999, "text": "就是让Cloud Code帮你创建就可以了。", "tokens": [50976, 5620, 33650, 32787, 15549, 4845, 106, 2166, 2437, 249, 34157, 36781, 2289, 1543, 51078], "temperature": 0, "avg_logprob": -0.17597790005840833, "compression_ratio": 1.263157894736842, "no_speech_prob": 1.2246150274397571e-11}, {"id": 89, "seek": 22960, "start": 244.38, "end": 246.62, "text": "我们打开一个正在开发中的项目,", "tokens": [51104, 15003, 12467, 18937, 20182, 15789, 3581, 18937, 28926, 5975, 1546, 10178, 117, 11386, 11, 51216], "temperature": 0, "avg_logprob": -0.17597790005840833, "compression_ratio": 1.263157894736842, "no_speech_prob": 1.2246150274397571e-11}, {"id": 90, "seek": 22960, "start": 247.29999999999998, "end": 249.29999999999998, "text": "然后给Cloud Code提一个要求,", "tokens": [51250, 26636, 23197, 32787, 15549, 20949, 20182, 4275, 32718, 11, 51350], "temperature": 0, "avg_logprob": -0.17597790005840833, "compression_ratio": 1.263157894736842, "no_speech_prob": 1.2246150274397571e-11}, {"id": 91, "seek": 22960, "start": 249.88, "end": 251.07999999999998, "text": "让它帮我创建一个Hook,", "tokens": [51379, 33650, 11284, 4845, 106, 1654, 2437, 249, 34157, 20182, 39, 1212, 11, 51439], "temperature": 0, "avg_logprob": -0.17597790005840833, "compression_ratio": 1.263157894736842, "no_speech_prob": 1.2246150274397571e-11}, {"id": 92, "seek": 22960, "start": 251.76, "end": 255.04, "text": "每次UI重构都进行一次自动化测试,", "tokens": [51473, 23664, 9487, 46324, 12624, 7360, 226, 7182, 36700, 8082, 27505, 9722, 34961, 23756, 11038, 233, 5233, 243, 11, 51637], "temperature": 0, "avg_logprob": -0.17597790005840833, "compression_ratio": 1.263157894736842, "no_speech_prob": 1.2246150274397571e-11}, {"id": 93, "seek": 22960, "start": 255.38, "end": 257.42, "text": "并且仅在当前项目生效。", "tokens": [51654, 3509, 114, 20334, 1550, 227, 3581, 16233, 8945, 10178, 117, 11386, 8244, 43076, 1543, 51756], "temperature": 0, "avg_logprob": -0.17597790005840833, "compression_ratio": 1.263157894736842, "no_speech_prob": 1.2246150274397571e-11}, {"id": 94, "seek": 25742, "start": 257.42, "end": 260.06, "text": "其实我们可以选择全局生效,", "tokens": [50365, 41646, 15003, 6723, 2215, 231, 6852, 102, 11319, 34703, 8244, 43076, 11, 50497], "temperature": 0, "avg_logprob": -0.1599002242088318, "compression_ratio": 1.340983606557377, "no_speech_prob": 1.25520349322783e-11}, {"id": 95, "seek": 25742, "start": 260.6, "end": 261.38, "text": "全局生效的话,", "tokens": [50524, 11319, 34703, 8244, 43076, 44575, 11, 50563], "temperature": 0, "avg_logprob": -0.1599002242088318, "compression_ratio": 1.340983606557377, "no_speech_prob": 1.25520349322783e-11}, {"id": 96, "seek": 25742, "start": 261.5, "end": 263.84000000000003, "text": "它就会放到本地的Cloud的目录下面,", "tokens": [50569, 11284, 3111, 12949, 12744, 4511, 8802, 10928, 1546, 32787, 1546, 11386, 7391, 243, 47150, 11, 50686], "temperature": 0, "avg_logprob": -0.1599002242088318, "compression_ratio": 1.340983606557377, "no_speech_prob": 1.25520349322783e-11}, {"id": 97, "seek": 25742, "start": 264.3, "end": 265.34000000000003, "text": "然后我们点击发送,", "tokens": [50709, 26636, 15003, 12579, 6336, 119, 28926, 29309, 11, 50761], "temperature": 0, "avg_logprob": -0.1599002242088318, "compression_ratio": 1.340983606557377, "no_speech_prob": 1.25520349322783e-11}, {"id": 98, "seek": 25742, "start": 266.12, "end": 268.56, "text": "它就开始帮我们去写这个Hooks。", "tokens": [50800, 11284, 3111, 45213, 4845, 106, 15003, 6734, 5676, 247, 15368, 39, 1212, 82, 1543, 50922], "temperature": 0, "avg_logprob": -0.1599002242088318, "compression_ratio": 1.340983606557377, "no_speech_prob": 1.25520349322783e-11}, {"id": 99, "seek": 25742, "start": 269.40000000000003, "end": 269.64000000000004, "text": "OK,", "tokens": [50964, 9443, 11, 50976], "temperature": 0, "avg_logprob": -0.1599002242088318, "compression_ratio": 1.340983606557377, "no_speech_prob": 1.25520349322783e-11}, {"id": 100, "seek": 25742, "start": 269.72, "end": 272.26, "text": "我们可以看到Hooks已经创建完成了,", "tokens": [50980, 15003, 6723, 18032, 39, 1212, 82, 49161, 2437, 249, 34157, 41509, 2289, 11, 51107], "temperature": 0, "avg_logprob": -0.1599002242088318, "compression_ratio": 1.340983606557377, "no_speech_prob": 1.25520349322783e-11}, {"id": 101, "seek": 25742, "start": 272.72, "end": 274.78000000000003, "text": "整个过程大概花了一分钟左右的时间,", "tokens": [51130, 27662, 7549, 16866, 29649, 32044, 20127, 2289, 2257, 6627, 50064, 29457, 1546, 44848, 11, 51233], "temperature": 0, "avg_logprob": -0.1599002242088318, "compression_ratio": 1.340983606557377, "no_speech_prob": 1.25520349322783e-11}, {"id": 102, "seek": 25742, "start": 275.5, "end": 276.76, "text": "下一次启动这个绘画,", "tokens": [51269, 4438, 27505, 2392, 107, 34961, 15368, 10115, 246, 27126, 11, 51332], "temperature": 0, "avg_logprob": -0.1599002242088318, "compression_ratio": 1.340983606557377, "no_speech_prob": 1.25520349322783e-11}, {"id": 103, "seek": 25742, "start": 276.96000000000004, "end": 278.08000000000004, "text": "Hooks就会自动生效。", "tokens": [51342, 39, 1212, 82, 3111, 12949, 9722, 34961, 8244, 43076, 1543, 51398], "temperature": 0, "avg_logprob": -0.1599002242088318, "compression_ratio": 1.340983606557377, "no_speech_prob": 1.25520349322783e-11}, {"id": 104, "seek": 25742, "start": 279.16, "end": 282.36, "text": "为了测试一下这个Hooks是否正常工作,", "tokens": [51452, 13992, 2289, 11038, 233, 5233, 243, 8861, 15368, 39, 1212, 82, 1541, 45334, 15789, 11279, 41315, 11, 51612], "temperature": 0, "avg_logprob": -0.1599002242088318, "compression_ratio": 1.340983606557377, "no_speech_prob": 1.25520349322783e-11}, {"id": 105, "seek": 25742, "start": 282.84000000000003, "end": 284.64, "text": "我在这个项目里面提了一个要求,", "tokens": [51636, 40528, 15368, 10178, 117, 11386, 15759, 8833, 20949, 2289, 20182, 4275, 32718, 11, 51726], "temperature": 0, "avg_logprob": -0.1599002242088318, "compression_ratio": 1.340983606557377, "no_speech_prob": 1.25520349322783e-11}, {"id": 106, "seek": 28464, "start": 284.64, "end": 287.4, "text": "我跟他说目前的UI他没有想象力了,", "tokens": [50365, 1654, 9678, 5000, 8090, 39004, 1546, 46324, 5000, 17944, 7093, 45007, 13486, 2289, 11, 50503], "temperature": 0, "avg_logprob": -0.1602952258834422, "compression_ratio": 1.3044776119402985, "no_speech_prob": 1.1549303180480308e-11}, {"id": 107, "seek": 28464, "start": 287.46, "end": 288.02, "text": "重构一下,", "tokens": [50506, 12624, 7360, 226, 8861, 11, 50534], "temperature": 0, "avg_logprob": -0.1602952258834422, "compression_ratio": 1.3044776119402985, "no_speech_prob": 1.1549303180480308e-11}, {"id": 108, "seek": 28464, "start": 288.56, "end": 290.4, "text": "所以他就列了整个重构计划,", "tokens": [50561, 7239, 5000, 3111, 43338, 2289, 27662, 7549, 12624, 7360, 226, 7422, 94, 2437, 240, 11, 50653], "temperature": 0, "avg_logprob": -0.1602952258834422, "compression_ratio": 1.3044776119402985, "no_speech_prob": 1.1549303180480308e-11}, {"id": 109, "seek": 28464, "start": 290.59999999999997, "end": 291.58, "text": "并且完成了重构,", "tokens": [50663, 3509, 114, 20334, 41509, 2289, 12624, 7360, 226, 11, 50712], "temperature": 0, "avg_logprob": -0.1602952258834422, "compression_ratio": 1.3044776119402985, "no_speech_prob": 1.1549303180480308e-11}, {"id": 110, "seek": 28464, "start": 292.09999999999997, "end": 293.44, "text": "但是在整个过程中,", "tokens": [50738, 11189, 3581, 27662, 7549, 16866, 29649, 5975, 11, 50805], "temperature": 0, "avg_logprob": -0.1602952258834422, "compression_ratio": 1.3044776119402985, "no_speech_prob": 1.1549303180480308e-11}, {"id": 111, "seek": 28464, "start": 293.52, "end": 296.76, "text": "我没有看到Hooks的检测和报锁的痕迹,", "tokens": [50809, 1654, 17944, 18032, 39, 1212, 82, 1546, 16407, 222, 11038, 233, 12565, 49817, 23049, 223, 1546, 15553, 243, 3316, 117, 11, 50971], "temperature": 0, "avg_logprob": -0.1602952258834422, "compression_ratio": 1.3044776119402985, "no_speech_prob": 1.1549303180480308e-11}, {"id": 112, "seek": 28464, "start": 297.36, "end": 299.2, "text": "所以为了确保能正常工作,", "tokens": [51001, 7239, 13992, 2289, 38114, 106, 24302, 8225, 15789, 11279, 41315, 11, 51093], "temperature": 0, "avg_logprob": -0.1602952258834422, "compression_ratio": 1.3044776119402985, "no_speech_prob": 1.1549303180480308e-11}, {"id": 113, "seek": 28464, "start": 299.7, "end": 301.12, "text": "我在他提交完代码之后,", "tokens": [51118, 40528, 5000, 20949, 28455, 14128, 19105, 23230, 223, 9574, 13547, 11, 51189], "temperature": 0, "avg_logprob": -0.1602952258834422, "compression_ratio": 1.3044776119402985, "no_speech_prob": 1.1549303180480308e-11}, {"id": 114, "seek": 28464, "start": 301.2, "end": 302.44, "text": "还问了另外一个问题,", "tokens": [51193, 14852, 22064, 2289, 26202, 20182, 34069, 11, 51255], "temperature": 0, "avg_logprob": -0.1602952258834422, "compression_ratio": 1.3044776119402985, "no_speech_prob": 1.1549303180480308e-11}, {"id": 115, "seek": 28464, "start": 302.94, "end": 305.56, "text": "本次是否确认使用Hooks去检查UI,", "tokens": [51280, 8802, 9487, 1541, 45334, 38114, 106, 7422, 97, 22982, 9254, 39, 1212, 82, 6734, 16407, 222, 42623, 46324, 11, 51411], "temperature": 0, "avg_logprob": -0.1602952258834422, "compression_ratio": 1.3044776119402985, "no_speech_prob": 1.1549303180480308e-11}, {"id": 116, "seek": 28464, "start": 305.91999999999996, "end": 307.68, "text": "然后从他的Thinking里面,", "tokens": [51429, 26636, 35630, 31309, 2434, 12408, 15759, 8833, 11, 51517], "temperature": 0, "avg_logprob": -0.1602952258834422, "compression_ratio": 1.3044776119402985, "no_speech_prob": 1.1549303180480308e-11}, {"id": 117, "seek": 28464, "start": 307.74, "end": 314.0, "text": "我看到他确实是使用了我们刚刚写的这个UI Review的Hooks去检查UI,", "tokens": [51520, 1654, 18032, 5000, 38114, 106, 24726, 1541, 22982, 9254, 2289, 15003, 49160, 49160, 5676, 247, 1546, 15368, 46324, 19954, 1546, 39, 1212, 82, 6734, 16407, 222, 42623, 46324, 11, 51833], "temperature": 0, "avg_logprob": -0.1602952258834422, "compression_ratio": 1.3044776119402985, "no_speech_prob": 1.1549303180480308e-11}, {"id": 118, "seek": 31400, "start": 314.0, "end": 316.76, "text": "但是确实所有的代码都通过了,", "tokens": [50365, 11189, 38114, 106, 24726, 39300, 1546, 19105, 23230, 223, 7182, 19550, 16866, 2289, 11, 50503], "temperature": 0, "avg_logprob": -0.14369729407747886, "compression_ratio": 1.2835249042145593, "no_speech_prob": 1.2597698058336437e-11}, {"id": 119, "seek": 31400, "start": 316.86, "end": 317.76, "text": "没有任何的错误,", "tokens": [50508, 17944, 26443, 11906, 1546, 29900, 5233, 107, 11, 50553], "temperature": 0, "avg_logprob": -0.14369729407747886, "compression_ratio": 1.2835249042145593, "no_speech_prob": 1.2597698058336437e-11}, {"id": 120, "seek": 31400, "start": 318.24, "end": 321.42, "text": "这样我们就可以确保这个Hooks是能正常工作的,", "tokens": [50577, 21209, 15003, 36781, 38114, 106, 24302, 15368, 39, 1212, 82, 1541, 8225, 15789, 11279, 41315, 1546, 11, 50736], "temperature": 0, "avg_logprob": -0.14369729407747886, "compression_ratio": 1.2835249042145593, "no_speech_prob": 1.2597698058336437e-11}, {"id": 121, "seek": 31400, "start": 321.9, "end": 323.26, "text": "实际上大家在测试的时候,", "tokens": [50760, 24726, 8842, 227, 5708, 6868, 3581, 11038, 233, 5233, 243, 49873, 11, 50828], "temperature": 0, "avg_logprob": -0.14369729407747886, "compression_ratio": 1.2835249042145593, "no_speech_prob": 1.2597698058336437e-11}, {"id": 122, "seek": 31400, "start": 323.38, "end": 328.1, "text": "也可以去故意让Cloud Code去写一些容易发现的错误,", "tokens": [50834, 47935, 6734, 43045, 9042, 33650, 32787, 15549, 6734, 5676, 247, 38515, 49212, 28926, 20204, 1546, 29900, 5233, 107, 11, 51070], "temperature": 0, "avg_logprob": -0.14369729407747886, "compression_ratio": 1.2835249042145593, "no_speech_prob": 1.2597698058336437e-11}, {"id": 123, "seek": 31400, "start": 328.14, "end": 330.26, "text": "或者是一些其他的bug埋进去,", "tokens": [51072, 31148, 1541, 38515, 9572, 31309, 44455, 16262, 233, 36700, 6734, 11, 51178], "temperature": 0, "avg_logprob": -0.14369729407747886, "compression_ratio": 1.2835249042145593, "no_speech_prob": 1.2597698058336437e-11}, {"id": 124, "seek": 31400, "start": 330.68, "end": 332.24, "text": "然后去确保这个Hooks,", "tokens": [51199, 26636, 6734, 38114, 106, 24302, 15368, 39, 1212, 82, 11, 51277], "temperature": 0, "avg_logprob": -0.14369729407747886, "compression_ratio": 1.2835249042145593, "no_speech_prob": 1.2597698058336437e-11}, {"id": 125, "seek": 31400, "start": 332.6, "end": 334.12, "text": "它是能够正常工作的,", "tokens": [51295, 11284, 1541, 8225, 1787, 253, 15789, 11279, 41315, 1546, 11, 51371], "temperature": 0, "avg_logprob": -0.14369729407747886, "compression_ratio": 1.2835249042145593, "no_speech_prob": 1.2597698058336437e-11}, {"id": 126, "seek": 31400, "start": 334.16, "end": 335.34, "text": "并且检测出错误,", "tokens": [51373, 3509, 114, 20334, 16407, 222, 11038, 233, 7781, 29900, 5233, 107, 11, 51432], "temperature": 0, "avg_logprob": -0.14369729407747886, "compression_ratio": 1.2835249042145593, "no_speech_prob": 1.2597698058336437e-11}, {"id": 127, "seek": 33534, "start": 335.34, "end": 339.17999999999995, "text": "最后我们看一下怎么在Cloud Code里管理已经存在的Hooks,", "tokens": [50365, 8661, 13547, 15003, 28324, 15282, 3581, 32787, 15549, 15759, 23131, 13876, 49161, 39781, 3581, 1546, 39, 1212, 82, 11, 50557], "temperature": 0, "avg_logprob": -0.24510902917685629, "compression_ratio": 1.248995983935743, "no_speech_prob": 1.536513624667002e-11}, {"id": 128, "seek": 33534, "start": 339.7, "end": 343.17999999999995, "text": "我们只需要在输入框里面输入-hooks,", "tokens": [50583, 15003, 14003, 35748, 3581, 9830, 241, 14028, 21416, 228, 15759, 8833, 9830, 241, 14028, 12, 71, 1212, 82, 11, 50757], "temperature": 0, "avg_logprob": -0.24510902917685629, "compression_ratio": 1.248995983935743, "no_speech_prob": 1.536513624667002e-11}, {"id": 129, "seek": 33534, "start": 343.76, "end": 345.2, "text": "然后点击弹出来的选项,", "tokens": [50786, 26636, 12579, 6336, 119, 5702, 117, 44561, 1546, 2215, 231, 10178, 117, 11, 50858], "temperature": 0, "avg_logprob": -0.24510902917685629, "compression_ratio": 1.248995983935743, "no_speech_prob": 1.536513624667002e-11}, {"id": 130, "seek": 33534, "start": 345.88, "end": 347.56, "text": "再点击continue terminal,", "tokens": [50892, 8623, 12579, 6336, 119, 9000, 259, 622, 14709, 11, 50976], "temperature": 0, "avg_logprob": -0.24510902917685629, "compression_ratio": 1.248995983935743, "no_speech_prob": 1.536513624667002e-11}, {"id": 131, "seek": 33534, "start": 348.06, "end": 349.88, "text": "就是在中端里面进行管理,", "tokens": [51001, 5620, 3581, 5975, 11957, 107, 15759, 8833, 36700, 8082, 23131, 13876, 11, 51092], "temperature": 0, "avg_logprob": -0.24510902917685629, "compression_ratio": 1.248995983935743, "no_speech_prob": 1.536513624667002e-11}, {"id": 132, "seek": 33534, "start": 350.73999999999995, "end": 352.21999999999997, "text": "然后我们打开一个中端的界面,", "tokens": [51135, 26636, 15003, 12467, 18937, 20182, 5975, 11957, 107, 1546, 21185, 8833, 11, 51209], "temperature": 0, "avg_logprob": -0.24510902917685629, "compression_ratio": 1.248995983935743, "no_speech_prob": 1.536513624667002e-11}, {"id": 133, "seek": 33534, "start": 356.21999999999997, "end": 356.64, "text": "OK,", "tokens": [51409, 9443, 11, 51430], "temperature": 0, "avg_logprob": -0.24510902917685629, "compression_ratio": 1.248995983935743, "no_speech_prob": 1.536513624667002e-11}, {"id": 134, "seek": 33534, "start": 356.71999999999997, "end": 360.21999999999997, "text": "我们就可以看到已经存在的所有Hooks就在这里,", "tokens": [51434, 15003, 36781, 18032, 49161, 39781, 3581, 1546, 39300, 39, 1212, 82, 3111, 3581, 35102, 11, 51609], "temperature": 0, "avg_logprob": -0.24510902917685629, "compression_ratio": 1.248995983935743, "no_speech_prob": 1.536513624667002e-11}, {"id": 135, "seek": 36022, "start": 360.22, "end": 364.76000000000005, "text": "我们可以在这里对Hooks进行删除编辑,", "tokens": [50365, 15003, 6723, 3581, 35102, 8713, 39, 1212, 82, 36700, 8082, 2437, 254, 32999, 38109, 244, 9830, 239, 11, 50592], "temperature": 0, "avg_logprob": -0.19037941694259644, "compression_ratio": 1.1946107784431137, "no_speech_prob": 1.3746876900699867e-11}, {"id": 136, "seek": 36022, "start": 364.90000000000003, "end": 367.1, "text": "或者是禁用全部Hooks的操作,", "tokens": [50599, 31148, 1541, 18614, 223, 9254, 38714, 39, 1212, 82, 1546, 13167, 235, 11914, 11, 50709], "temperature": 0, "avg_logprob": -0.19037941694259644, "compression_ratio": 1.1946107784431137, "no_speech_prob": 1.3746876900699867e-11}, {"id": 137, "seek": 36022, "start": 368.16, "end": 368.64000000000004, "text": "好,", "tokens": [50762, 2131, 11, 50786], "temperature": 0, "avg_logprob": -0.19037941694259644, "compression_ratio": 1.1946107784431137, "no_speech_prob": 1.3746876900699867e-11}, {"id": 138, "seek": 36022, "start": 368.78000000000003, "end": 370.16, "text": "我们今天的课程就到这里了,", "tokens": [50793, 15003, 34947, 5233, 122, 29649, 45918, 35102, 2289, 11, 50862], "temperature": 0, "avg_logprob": -0.19037941694259644, "compression_ratio": 1.1946107784431137, "no_speech_prob": 1.3746876900699867e-11}, {"id": 139, "seek": 36022, "start": 370.64000000000004, "end": 371.88000000000005, "text": "从下一期视频开始,", "tokens": [50886, 35630, 45271, 16786, 40656, 39752, 45213, 11, 50948], "temperature": 0, "avg_logprob": -0.19037941694259644, "compression_ratio": 1.1946107784431137, "no_speech_prob": 1.3746876900699867e-11}, {"id": 140, "seek": 36022, "start": 372.38000000000005, "end": 375.78000000000003, "text": "我们会跟大家逐步介绍Cloud Code的一些进阶玩法,", "tokens": [50973, 15003, 12949, 47349, 2215, 238, 31429, 30312, 10115, 235, 32787, 15549, 1546, 38515, 36700, 10034, 114, 19912, 11148, 11, 51143], "temperature": 0, "avg_logprob": -0.19037941694259644, "compression_ratio": 1.1946107784431137, "no_speech_prob": 1.3746876900699867e-11}, {"id": 141, "seek": 36022, "start": 376.3, "end": 377.70000000000005, "text": "包括Subagent,", "tokens": [51169, 41828, 39582, 559, 317, 11, 51239], "temperature": 0, "avg_logprob": -0.19037941694259644, "compression_ratio": 1.1946107784431137, "no_speech_prob": 1.3746876900699867e-11}, {"id": 142, "seek": 36022, "start": 378.02000000000004, "end": 378.5, "text": "MCP,", "tokens": [51255, 44, 20049, 11, 51279], "temperature": 0, "avg_logprob": -0.19037941694259644, "compression_ratio": 1.1946107784431137, "no_speech_prob": 1.3746876900699867e-11}, {"id": 143, "seek": 36022, "start": 378.96000000000004, "end": 379.52000000000004, "text": "CloudSkills,", "tokens": [51302, 32787, 50, 74, 2565, 11, 51330], "temperature": 0, "avg_logprob": -0.19037941694259644, "compression_ratio": 1.1946107784431137, "no_speech_prob": 1.3746876900699867e-11}, {"id": 144, "seek": 36022, "start": 379.8, "end": 380.6, "text": "Agent Team等等,", "tokens": [51344, 32, 6930, 7606, 36000, 11, 51384], "temperature": 0, "avg_logprob": -0.19037941694259644, "compression_ratio": 1.1946107784431137, "no_speech_prob": 1.3746876900699867e-11}, {"id": 145, "seek": 36022, "start": 381.24, "end": 385.1, "text": "如果你有其他想要了解的关于Cloud Code的问题或技巧,", "tokens": [51416, 13119, 43320, 9572, 5000, 7093, 4275, 2289, 17278, 1546, 28053, 37732, 32787, 15549, 1546, 34069, 19780, 32502, 43605, 11, 51609], "temperature": 0, "avg_logprob": -0.19037941694259644, "compression_ratio": 1.1946107784431137, "no_speech_prob": 1.3746876900699867e-11}, {"id": 146, "seek": 36022, "start": 385.52000000000004, "end": 386.5, "text": "欢迎在评论区留言,", "tokens": [51630, 28566, 17699, 3581, 5233, 226, 7422, 118, 9937, 118, 43681, 11, 51679], "temperature": 0, "avg_logprob": -0.19037941694259644, "compression_ratio": 1.1946107784431137, "no_speech_prob": 1.3746876900699867e-11}, {"id": 147, "seek": 36022, "start": 387.04, "end": 390.20000000000005, "text": "如果你想获得本次课程的全部资料,", "tokens": [51706, 13119, 38386, 31127, 115, 5916, 8802, 9487, 5233, 122, 29649, 1546, 38714, 5266, 226, 33404, 11, 51864], "temperature": 0, "avg_logprob": -0.19037941694259644, "compression_ratio": 1.1946107784431137, "no_speech_prob": 1.3746876900699867e-11}, {"id": 148, "seek": 39022, "start": 390.22, "end": 392.0, "text": "可以在评论区留下,", "tokens": [50365, 6723, 3581, 5233, 226, 7422, 118, 9937, 118, 24456, 4438, 11, 50454], "temperature": 0, "avg_logprob": -0.444963548241592, "compression_ratio": 0.925, "no_speech_prob": 1.6319641818474118e-11}, {"id": 149, "seek": 39022, "start": 392.16, "end": 392.58000000000004, "text": "求资料,", "tokens": [50462, 32718, 5266, 226, 33404, 11, 50483], "temperature": 0, "avg_logprob": -0.444963548241592, "compression_ratio": 0.925, "no_speech_prob": 1.6319641818474118e-11}, {"id": 150, "seek": 39022, "start": 393.04, "end": 394.18, "text": "我们下期视频继续,", "tokens": [50506, 15003, 4438, 16786, 40656, 39752, 10115, 100, 10115, 255, 11, 50563], "temperature": 0, "avg_logprob": -0.444963548241592, "compression_ratio": 0.925, "no_speech_prob": 1.6319641818474118e-11}, {"id": 151, "seek": 39022, "start": 394.90000000000003, "end": 394.90000000000003, "text": "", "tokens": [], "temperature": 0, "avg_logprob": -0.444963548241592, "compression_ratio": 0.925, "no_speech_prob": 1.6319641818474118e-11, "words": []}, {"id": 152, "seek": 39022, "start": 394.90000000000003, "end": 394.90000000000003, "text": "", "tokens": [], "temperature": 0, "avg_logprob": -0.444963548241592, "compression_ratio": 0.925, "no_speech_prob": 1.6319641818474118e-11, "words": []}], "language": "zh"}