关于 debugging-with-opensrc
面向开发者的第三方库调试技能,优先读取 OpenSrc 中与已安装依赖对应的源码镜像,并沿调用路径排查,再据此修改和验证应用代码。
主要功能
- 01检查已安装依赖的源码
- 02追踪从 API 到内部实现的调用
- 03核对签名、默认值与错误路径
- 04以类型和测试作为证据
- 05验证针对性修复
适用场景
- 01排查库集成故障
- 02解决文档与运行行为不符
- 03确认依赖在边缘情形下的表现
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ blogic-cz/ blogic-marketplace --skill debugging-with-opensrc安装后在 Claude Code 中输入/debugging-with-opensrc确认已加载。
附带文件references/opencode-skill-testing.md
详细介绍
使用 OpenSrc 调试
概述
先阅读源代码,再调试外部库的行为。
将 OpenSrc 镜像视为已安装版本的事实来源。
何时使用此技能
- 调查应用代码依赖第三方库内部实现的集成问题。
- 解决文档与实际运行行为不一致的问题。
- 确认已安装依赖中的预期函数签名、默认值、错误路径或边缘情况处理。
OpenSrc 命令
# Sync configured repos when the OpenSrc config exists
test ! -f opensrc/sources.json || \
bun run scripts/opensrc-sync.ts
# Fetch a package or GitHub repo
bunx opensrc --modify false <package-or-owner/repo>
可用仓库(opensrc/repos/github.com/)
| 库 | 路径 | 查找内容 |
|---|---|---|
| Effect | Effect-TS/effect/packages/effect/src/ | Schema、Effect.gen、Layer、Context |
| TanStack Router | TanStack/router/packages/react-router/src/ | createFileRoute、loader、useParams |
| TanStack Query | TanStack/query/packages/react-query/src/ | useSuspenseQuery、queryOptions |
| TanStack Form | TanStack/form/packages/react-form/src/ | useForm、验证 |
| TanStack Start | TanStack/router/packages/start/src/ | SSR、服务端函数 |
| TRPC | trpc/trpc/packages/server/src/ | procedures、middleware、routers |
| Drizzle ORM | drizzle-team/drizzle-orm/drizzle-orm/src/ | pgTable、relations、queries |
| Better Auth | better-auth/better-auth/packages/better-auth/src/ | 身份验证配置、插件、会话 |
| OpenCode | sst/opencode/packages/opencode/src/ | 技能、命令、插件 |
| Pino | pinojs/pino/lib/ | 日志记录器、传输器 |
| Sentry | getsentry/sentry-javascript/packages/ | SDK、集成、追踪 |
调试工作流
- 用一句话描述失败行为(输入、观察到的输出、预期输出)。
- 确定涉及的具体依赖项和软件包区域。
- 使用可用的项目搜索工具,在
opensrc/repos/github.com/中查找相关源文件。 - 在更改应用代码之前,先阅读实现和相关类型。
- 从公共 API 到内部辅助函数,追踪调用流程。
- 提取具体预期:
- 函数签名和返回类型
- 必需的包装器、构建器或选项
- 默认值和可选参数的行为
- 错误处理和边缘情况
- 根据已验证的行为,在应用代码中应用修复。
- 使用有针对性的测试或复现步骤进行验证。
常见调试场景
场景:TanStack Form 验证不起作用
- 阅读
opensrc/repos/github.com/TanStack/form/packages/react-form/src/useForm.ts。 - 检查验证器接口和预期返回类型。
- 确认当前安装版本中 Standard Schema 集成的接入方式。
- 根据已验证的行为修复应用代码。
场景:TRPC 过程未收到上下文
- 阅读
opensrc/repos/github.com/trpc/trpc/packages/server/src/core/middleware.ts。 - 追踪上下文如何通过中间件链传递。
- 确认当前版本中的中间件返回值和
opts.next()行为。
场景:Effect Layer 未提供服务
- 阅读
opensrc/repos/github.com/Effect-TS/effect/packages/effect/src/Layer.ts。 - 比较
Layer.effect和Layer.succeed的行为。 - 根据库中的用法模式,确认
Context.Tag的用法。
场景:Better Auth 会话未持久化
- 阅读
opensrc/repos/github.com/better-auth/better-auth/packages/better-auth/src/。 - 追踪会话处理和持久化流程。
- 确认已安装代码中的 Cookie/存储预期。
关键原则
源代码才是事实。
- 文档可能已经过时
- Stack Overflow 上的回答可能不适用于你的版本
- 博客文章可能使用了不同的配置
- 只有源代码才能准确展示实际发生的情况
示例:完整的调试过程
问题:尽管存在缓存数据,useSuspenseQuery 仍返回 undefined。
- 阅读
opensrc/repos/github.com/TanStack/query/packages/react-query/src/useSuspenseQuery.ts及其附近的类型定义。 - 确认已安装版本所期望的输入形式。
- 在项目代码中确认成功的用法。
- 应用符合已验证预期的修复。
注意:某次对特定版本的调查发现,通过 queryOptions() 包装输入可以解决问题。这只是一个示例发现,并非通用规则。
OpenCode 专属内部机制
调试 OpenCode 技能加载或自动加载测试内部机制时,请使用 references/opencode-skill-testing.md。
请记住
- 先阅读源代码——先于提问和网络搜索
- 精确版本很重要——opensrc 中的是你安装的版本
- 沿代码路径追踪——从入口点追踪到实现
- 检查类型——TypeScript 类型通常会揭示预期用法
- 查看测试——库的测试会展示正确的用法
评论
支持 Markdown