name: plugin-hook-system description: 生成基于钩子的插件扩展系统,采用事件发射器模式。 allowed-tools: Read, Write, Edit, Bash, Glob, Grep
插件钩子系统
生成基于钩子的插件扩展系统。
生成的模式
type HookCallback = (...args: any[]) => Promise<any> | any;
export class HookSystem {
private hooks = new Map<string, HookCallback[]>();
register(hookName: string, callback: HookCallback): void {
const callbacks = this.hooks.get(hookName) || [];
callbacks.push(callback);
this.hooks.set(hookName, callbacks);
}
async trigger(hookName: string, ...args: any[]): Promise<any[]> {
const callbacks = this.hooks.get(hookName) || [];
const results = [];
for (const cb of callbacks) {
results.push(await cb(...args));
}
return results;
}
async waterfall<T>(hookName: string, initial: T): Promise<T> {
const callbacks = this.hooks.get(hookName) || [];
let result = initial;
for (const cb of callbacks) {
result = await cb(result);
}
return result;
}
}
目标流程
- 插件架构实现