← 返回目录

第 4 卷

第 4 / 4 卷日期:

到这里,Context、插件、Effect、Service、事件,这些 Cordis 的“核心概念”你都认识了。

但还差最后一步:一堆插件到底怎么拼成一个完整的真实可用的应用?一个真实的 Agent 有几十上百个插件,它们的配置、隔离、热更新,谁来管?下一讲,我们就来聊聊 Cordis 的插

件树——声明式配置、isolate 隔离与 HMR 热更新。

注:本讲 GitHub 链接

思考题

动手实操:在 waterfall 部分再添加一个监听器(比如给回复末尾加上一个表情符号 :)),观察它加在了哪一层,输出会变成什么样。

小改动:把 serial 的第二个监听器(时间意图)改成第一个(即把它的注册顺序提前),重新运行,看“帮我查一下天气”和“现在的时间是几点”的输出分别是什么,思考监听器的调用

顺序是否有变化。

欢迎把你的运行结果分享出来。如果你觉得这节课对你有帮助,也欢迎分享给其他朋友,我们下节课再见!

© 版权归极客邦科技所有,未经许可不得传播售卖。页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。

全部留言 (1)

最新精选

图 10-1
图 10-1

谈理想

2026-09-01 来自浙江

// 练习,末尾加表情 ctx.on('demo/transform', (input, next) => {

const downstream = next() // 先拿到下游结果

ctx.on('demo/transform', (input, next) => { const downstream = next() // 先拿到下游结果

return `[Bot] ${downstream}` // 加上署名 })

// Listener 2: 遇到敏感词就短路 ctx.on('demo/transform', (input, next) => {

if(input.includes('脏话')) return '内容已拦截' // 直接返回,不调用next(),短路 return next() // 正常情况,继续往下走

})

实操1:结果:正常回复: [Bot] 你好,很高兴遇见你 :)

被拦截的回复: [Bot] 内容已拦截 :)

ctx.on('jike/serial', (text) => { console.log('天气接单')

if(text.includes('天气')) { return 'weather' // 我负责天气,返回非空值 = 我接单了

} // 返回undefine = 我不处理,继续问下一个

})

ctx.on('jike/serial', (text) => { console.log('时间接单')

if(text.includes('时间')) { return 'time' // 我负责时间,返回非空值

} }, {prepend: true})

const res = await ctx.serial('jike/serial', '帮我查一下天气')

console.log('返回的结果: ', res)

实操2,为了更好地看出顺序,我在判断前增加了log。结果:时间接单天气接单

返回的结果: weather

全站分卷索引 · 4 卷
  1. 1第 1 卷
  2. 2第 2 卷
  3. 3第 3 卷
  4. 4第 4 卷