Search: #优化

  1. caveman: 面向 Claude Code 与 Codex 的极简表达插件,专注降低 Token 开销• 通过 “caveman” 风格压缩模型输出,在保持技术准确性的前提下,实测可减少约 65%–75% 的输出 Token,适合代码解释、调试建议与架构讨论等高频场景• 支持 Claude Code、Codex、Cursor、GitHub Copilot、Cline、Windsurf 等多个 Agent,并提供 Lite、Full、Ultra 三级压缩强度,方便在可读性与极致精简之间切换• 内置 /caveman:compress,可压缩 CLAUDE.md 等记忆文件,平均再减少约 45% 的输入 Token,尤其适合长期项目会话和高频上下文加载

    caveman: 面向 Claude Code 与 Codex 的极简表达插件,专注降低 Token 开销

    • 通过 “caveman” 风格压缩模型输出,在保持技术准确性的前提下,实测可减少约 65%–75% 的输出 Token,适合代码解释、调试建议与架构讨论等高频场景

    • 支持 Claude Code、Codex、Cursor、GitHub Copilot、Cline、Windsurf 等多个 Agent,并提供 Lite、Full、Ultra 三级压缩强度,方便在可读性与极致精简之间切换

    • 内置 /caveman:compress,可压缩 CLAUDE.md 等记忆文件,平均再减少约 45% 的输入 Token,尤其适合长期项目会话和高频上下文加载

    https://github.com/JuliusBrussee/caveman

    合集 群组 恰饭 联系推广

    #AI #ClaudeCode #Codex #Token #优化 #开发工具 #Agent #插件 #GitHub #效率工具 GitHub - JuliusBrussee/caveman: 🪨 why use many token when few token do trick — Claude Code skill that cuts 65% of tokens by talking…

  2. #优质博文 #JavaScript #新特性 #前端 #错误处理Error chaining in JavaScript: cleaner debugging with Error.cause

    #优质博文 #JavaScript #新特性 #前端 #错误处理
    Error chaining in JavaScript: cleaner debugging with Error.cause

    AI 摘要:本文介绍了在 JavaScript (ES2022) 中引入的 Error.cause 属性,展示它如何让错误处理更具可追溯性。作者 Matt Smith 通过实例说明了传统错误包裹的缺陷,以及 Error.cause 在保持原始堆栈信息、改进调试体验和测试断言方面的优势。最终总结出一套现代错误链最佳实践,帮助开发者构建更清晰、更稳健的错误追踪体系。

    [以下是方便搜索索引的大纲(AI 生成),请读原文]
    1. 传统错误处理的问题
    • 层层调用的代码容易丢失原始错误信息;
    • 以字符串拼接错误信息会破坏堆栈和错误类型;
    • 导致调试困难,追踪难度高。

    2. 引入 Error.cause 的改进
    • 通过 new Error(message, { cause }) 保留原始错误;
    • 可同时访问顶层与底层堆栈信息;
    • cause 属性为非枚举属性,不污染日志或循环输出;
    • 与 message、stack 一样保持一致的行为。

    3. 实践与代码演示
    • 示例:从 JSON.parse 到自定义函数的错误传递;
    • 在日志中手动输出 err.cause 获取完整上下文;
    • 适合层次式系统(如服务嵌套调用)排查问题。

    4. 历史背景与 cause 出现前的替代方案
    • 旧方案包括自定义字段 .originalError、字符串拼接等;
    • 这些方式不统一且容易破坏原始错误结构;
    • 标准化的 cause 提供更安全一致的机制。

    5. 自定义错误类的支持
    • 在自定义类中通过 super(message, { cause }) 传递原因;
    • 适用 ES2022+ 环境即可直接使用;
    • 对 TypeScript 用户,需在 tsconfig.json 中启用 "target": "es2022" 与 "lib": ["es2022"]。

    6. 在测试中的应用
    • 测试断言可直接验证 err.cause 类型;
    • 提升测试可读性与准确性。

    7. 实用技巧与注意事项
    • 浏览器默认不输出层级错误链,须手动打印;
    • 不建议过度使用错误链,避免干扰阅读;
    • 可递归打印完整错误链(logErrorChain 与 logFullErrorChain 示例);
    • 实践场景:数据库异常→业务异常→服务异常的多层错误追踪。

    8. 环境支持与现代用法总结
    • 支持于现代浏览器与运行环境(Chrome 93+、Node.js 16.9+、Deno、Bun 等);
    • 推荐实践:
    使用 Error(message, { cause })
    支持内建与自定义错误类型
    改善日志和调试体验
    对 TypeScript 进行正确配置
    ⚠️ 记得手动输出或递归追踪错误链。


    author Matt Smith

  3. #优质博文 #JavaScript #前端 #新特性 #浏览器好东西

    #优质博文 #JavaScript #前端 #新特性 #浏览器
    好东西。
    URLPattern is now Baseline Newly available

    AI 摘要:介绍了已进入 Baseline 的新浏览器功能 URLPattern API,它为 URL 匹配和路由提供了标准、简洁且高性能的原生解决方案。过去开发者需使用复杂的正则表达式或第三方库来解析和提取 URL 参数,而 URLPattern 使得这些操作更清晰、可维护且无需额外依赖。


    [以下是方便搜索索引的大纲(AI 生成),请读原文]
    1. URLPattern 基础与核心概念
    • 介绍 URLPattern API 的推出背景:取代传统正则匹配与第三方路由库。
    • 提供新 URLPattern 接口,可通过 .test() 与 .exec() 操作直接匹配并提取参数。

    2. 基本 URL 模式匹配
    • 对比旧方法(URL + 正则)与新 API 的简化写法。
    • 展示匹配 /users/:id 的例子,体现代码可读性和简洁性。

    3. 提取动态参数(Dynamic Parameters)
    • 传统方法依赖匿名的正则捕获组,易出错。
    • URLPattern 支持命名参数,可通过结构化对象获取(如 result.pathname.groups)。
    • 示例:提取书籍分类 category 与 id。

    4. 复合匹配(Compose Multipart Matches)
    • 传统方式需多处判断主机名与路径。
    • URLPattern 原生支持同时匹配多个部分,例如 hostname + pathname。
    • 示例:匹配 .cdn.com 下的 /images/ 文件。

    5. 减少项目依赖(Project Dependencies)
    • URLPattern 是内置能力,无需加载第三方库,减少 bundle 体积与维护成本。
    • 使用浏览器原生实现,跨引擎一致且性能更优。

    6. 深度用法详解(Detailed Usage)
    • 多种典型场景:
    路径匹配与参数提取:示例 /products/:category/:id 展示 .test() 与 .exec() 双用法。
    匹配子域名与版本号:支持在 hostname 层定义变量如 :subdomain.myapp.com,适用于多子域架构。
    通配符与正则表达式结合:通过 * 和嵌入式正则增强匹配灵活度,如 /users/:userId(d+)/assets/*.(jpg|png|gif)。

    7. 实战示例:Service Worker 路由
    • 利用 URLPattern 拦截 fetch 事件,根据路径实行不同缓存策略。
    • 示例:
    • /images/* 采用缓存优先;
    • /api/* 使用网络优先。
    • 显示该 API 在渐进式 Web 应用(PWA)中的现实意义。

    8. 结语与扩展阅读
    • URLPattern 提升代码可维护性,简化路由逻辑。
    • 推荐进一步查阅 MDN Web Docs 了解完整参考。


    author Jay Rungta URLPattern is now Baseline Newly available  |  Blog  |  web.dev

    • ❤️3
  4. 更新感谢 群友 @underHZLY 反馈增加了 IPv6 处理优化了一点点文案改了一点点预设数据 发布帖

    折腾啥
    🔗 Sub-Store Cloudflare 多节点 裂变 优选 反代 proxyIP 示例 👏 整点麻酱喂饭搭建教程 图3 为效果, ➮ 后面跟着的是 proxyIP 名称 🟢支持本地设置优选/反代/proxyIP 🟢支持从远程链接获取优选/反代/proxyIP 由于 🌀 QX 资源解析器对 📈 Surge 格式的输入支持不完善, 请避免使用 "Surge 格式+资源解析器" 这样的组合 ▎导入配置 如 图1 导入我的 预设配置 在 订阅 中, 输入你的 本地节点 或 远程订阅…
    更新

    感谢 群友 @underHZLY 反馈

    增加了 IPv6 处理

    优化了一点点文案

    改了一点点预设数据

    发布帖

    • ❤️5
    • 👏2
  5. #Sub-Store #Cloudflare #CF #CDN #优选 #Trojan #脚本 #proxyIP #裂变 #Workers #Pages Sub-Store Cloudflare 节点 裂变 优选 示例简化需求 本脚本只加优选 由于 QX 资源解析器对 Surge 格式的输入支持不完善, 请避免使用 "Surge 格式+资源解析器" 这样的组合支持本地设置优选支持从远程链接获取优选▎导入配置如 图1 导入我的 预设配置在 订阅 中, 输入你的 本地节点 或 远程订阅▎修改脚本如 图2 修改脚本中的优选设置 新增一个彩蛋 默认不开启使用 EASTER_EGG 控制开启开启后, 将从一个 sing-box 订阅中扒拉优选和端口 相关脚本整合 资源合集导航 欢迎评论 & 转发加入 折腾啥 频道 | 群组 别忘了 领个红包支持一下

    #Sub-Store #Cloudflare #CF #CDN #优选 #Trojan #脚本 #proxyIP #裂变 #Workers #Pages

    Sub-Store Cloudflare 节点 裂变 优选 示例

    简化需求 本脚本只加优选

    由于 QX 资源解析器对 Surge 格式的输入支持不完善, 请避免使用 "Surge 格式+资源解析器" 这样的组合

    支持本地设置优选

    支持从远程链接获取优选

    ▎导入配置

    如 图1 导入我的 预设配置

    订阅 中, 输入你的 本地节点 或 远程订阅

    ▎修改脚本

    如 图2 修改脚本中的优选设置

    新增一个彩蛋 默认不开启

    使用 EASTER_EGG 控制开启

    开启后, 将从一个 sing-box 订阅中扒拉优选和端口

    相关脚本整合

    资源合集导航

    欢迎评论 & 转发

    加入 折腾啥

    频道 | 群组

    别忘了 领个红包支持一下

    • ❤️14
    • 👍1
    • 🥰1
    • 👏1
    • 💯1
  6. #Sub-Store #Cloudflare #CF #CDN #优选 #Trojan #脚本 #proxyIP #裂变 #Workers #Pages 裂变 一个变多个 无聊玩玩 更新: 中转的节点不替换上面的截图以后不更新了 以下方代码为准:我随便给的例子...自己找你觉得好的 替换掉 servers 里的// cf.noaries.de

    #Sub-Store #Cloudflare #CF #CDN #优选 #Trojan #脚本 #proxyIP #裂变 #Workers #Pages

    裂变 一个变多个 无聊玩玩

    更新: 中转的节点不替换

    上面的截图以后不更新了 以下方代码为准:

    我随便给的例子...自己找你觉得好的 替换掉 servers 里的

    // cf.noaries.de
    
    // 其他优选
    // beta.noaries.de (阿里云/三方优选 CNAME自 cdn.anycast.eu.org )
    // visa.noaries.de (VISA富哥段 CNAME 自 visa.cn)
    // tech.noaries.de (CF商业段 CNAME 自 get.tech)
    // heinu.noaries.de(黑弩搞得优选)


    function operator(proxies = []) {
      const servers = ['fbi.gov', 'cf.noaries.de', 'get.tech']
      const list = []
      proxies.map((p = {}) => {
        if (p.name.includes('中转')) {
            list.push(p)
        } else {
            servers.map(server => {
              list.push({
                ...p,
                name: server + ' - ' + p.name,
                server,
              })
            })
        }
        
      })
      return list
    }


    进化版: 还支持设置 端口

    这里用了反引号 请转发原文

    如果要贴给别人看 记得加上 markdown 代码块 三个反引号 否则会语法错误
    
    function operator(proxies = []) {
      const list = [
        { server: 'fbi.gov', port: 80 },
        { server: 'get.tech', port: 443 },
      ]
      const result = []
      proxies.map((p = {}) => {
        if (p.name.includes('中转')) {
            result.push(p)
        } else {
          list.map(i => {
              result.push({
                ...p,
                name: `${i.server}:${i.port} - ${p.name}`,
                server: i.server,
                port: i.port,
              })
            })
        }
        
      })
      return result
    }

    • ❤️3