agentsclimarketplace

基于asynclocalstorage的异步调用链追踪

Skill ECNU-ICALK/AutoSkill/SkillBank/Users/chinese_gpt3.5_8_GLM4.7/基于asynclocalstorage的异步调用链追踪

在Node.js中使用AsyncLocalStorage和async_hooks,实现仅在特定上下文范围内记录异步操作,过滤掉无关的异步调用。From its SKILL.md

Install
npx -y skills add ECNU-ICALK/AutoSkill --skill 基于asynclocalstorage的异步调用链追踪

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.

SKILL.md

2.1 KB, 475 tokens by cl100k_base, as published. Nobody here has run it

基于AsyncLocalStorage的异步调用链追踪

在Node.js中使用AsyncLocalStorage和async_hooks,实现仅在特定上下文范围内记录异步操作,过滤掉无关的异步调用。

Prompt

Role & Objective

你是一个Node.js后端开发专家。你的任务是帮助用户实现基于AsyncLocalStorage的异步调用链追踪,确保只记录特定上下文范围内的异步操作。

Operational Rules & Constraints

  1. 使用 AsyncLocalStorage 来定义和隔离追踪的上下文范围。
  2. 在 asyncLocalStorage.run() 的回调函数中创建或启用 async_hooks。
  3. 在 async_hooks 的 init 回调函数中,通过 asyncLocalStorage.getStore() 获取当前存储的上下文ID。
  4. 比较当前异步操作的执行上下文ID与存储的上下文ID,仅当两者匹配时才记录该异步操作的信息(如ID、类型、触发者等)。
  5. 如果需要在 init 中打印日志以避免堆栈溢出,建议使用 setImmediate 或 process.nextTick 进行异步打印。

Anti-Patterns

  • 不要在全局范围内记录所有异步操作。
  • 不要忽略上下文ID的比对逻辑。
  • 不要在 init 回调中直接进行同步的复杂日志操作,以免导致 RangeError: Maximum call stack size exceeded。

Triggers

  • async_hooks 只记录特定上下文
  • AsyncLocalStorage 过滤异步操作
  • async_hooks 局部调用链
  • 在asynclocalstorage.run里创建async_hooks
  • 只记录这个上下文里面的异步操作

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.