20、【Agent】【OpenCode】源码构建(依赖安装)

【声明】本博客所有内容均为个人业余时间创作,所述技术案例均来自公开开源项目(如Github,Apache基金会),不涉及任何企业机密或未公开技术,如有侵权请联系删除

背景

上篇 blog
【Agent】【OpenCode】源码构建(TypeScript&JavaScript)

分析了 Bun 工具集性能提升的另一大原因:内置工具链,零转译开销,然后提到了 OpenCode 是个典型的 JavaScript/TypeScript 项目,并分析了 TypeScript 和 JavaScript 的联系与区别,一句话总结:TypeScript = JavaScript + 类型系统(Type System) + 现代语法糖,然后提到了关键点:虽然 TS 不能直接运行,必须先编译成 JS 才能被引擎执行,但 Bun 等现代工具可以自动编译并运行,算是间接运行 TS,然后分析了类型系统(Type System)是 TypeScript 最大的价值所在,并对比了 JS 和 TS 在函数参数类型检查上的不同,最后列举了 TypeScript 新增的核心特性,下面继续分析

OpenCode

上篇 blog 对比了 JS 和 TS 在函数参数类型检查上的不同,下面再对比下开发体验

场景 JavaScript TypeScript
写错属性名 运行时报错 写代码时就提示
看不懂第三方库 API 靠文档猜 编辑器自动提示参数和返回值
重构大型项目 容易漏改,风险高 改一处,所有相关地方自动报错
团队协作 靠注释约定类型 天然支持类型本身

所以可以看到大型项目(比如 VSCode,OpenCode 等)几乎都用 TypeScript

下面再看 TS → JS 的编译过程,假设有 TS 代码如下

javascript 复制代码
function greet(name: string): string {
  return "Hello, " + name;
}

经过 TS 编译器输出后,JS 代码如下

javascript 复制代码
function greet(name) {
  return "Hello, " + name;
}

可以看到类型信息被擦除,只剩下干净的 JavaScript 脚本

而像 Bun 这样的现代工具,之所以看起来像能直接运行 TS 代码,其实是它们在后台自动编译了 TS → JS,然后立即运行生成的 JS,所以给人感觉 TS 能直接跑,其实还是转换成了 JS,比如

bash 复制代码
bun run my-script.ts

这条命令执行的其实是自动编译 TS + 运行 JS

最后再总结下两者的区别

对比项 JS TS
是否需要编译 否,可以直接运行 是,必须编译成 JS
类型系统 动态类型(运行时才知道) 静态类型(写代码时就知道)
适合项目规模 小脚本,简单页面 中大型应用,团队项目
错误发现时机 运行时 编码 / 编译时
学习成本 稍高(需学习类型语法)
生态兼容性 全兼容 编译后全兼容

OK,终端输入

bash 复制代码
bun --help

可以查看 bun 命令的信息如下

接下来构建 OpenCode 源码的第一步是安装依赖,使用 install 命令,该命令会下载项目运行或开发所需的第三方库 ,可以类比 npm installyarn install 等命令,该命令会读取 package.json 文件中的 dependencies 和 devDependencies

然后从 npm registry 或配置的镜像源中下载这些包,存入本地缓存(Bun 用高效数据库存储,不是传统的 node_modules),然后生成或更新 bun.lockb 锁文件,确保团队的依赖保持一致

安装依赖的过程中发现卡住了

大概是因为默认从 npm 官方源(registry.npmjs.org)下载,而该源在国内访问极慢或容易被干扰,不过虽然 Bun 不像 npm 那样直接支持 .npmrc ,但它完全兼容 npm 的 registry 协议,所以可以临时指定 registry 强制使用国内镜像源(比如淘宝 NPM 镜像),终端输入

bash 复制代码
bun install --registry https://registry.npmmirror.com

https://registry.npmmirror.com 是淘宝 NPM 镜像,对国内访问速度极快,该命令会从淘宝镜像下载所有包,生成的 bun.lockb 也会记录这个 registry,后续 bun install 也会自动沿用

可以看到依赖安装成功


OK,本篇先到这里,如有疑问,欢迎评论区留言讨论,祝各位功力大涨,技术更上一层楼!!!更多内容见下篇 blog
【Agent】【OpenCode】源码构建(项目构建)

相关推荐
实在智能RPA6 小时前
Agent 如何处理流程中的异常情况?2026年AI Agent架构工程与自愈机制深度拆解
人工智能·ai·架构
十铭忘6 小时前
局部重绘3——FLUX-Fill的Lora训练
人工智能·深度学习·机器学习
碳基硅坊6 小时前
Dify v1.13.x 版本更新速览:从人机协作到架构升级
人工智能·dify
IT_陈寒6 小时前
SpringBoot自动配置把我都整不会了
前端·人工智能·后端
w_t_y_y7 小时前
python AI工程(二)python实现skill+cli
人工智能
朝新_7 小时前
【Spring AI 】核心知识体系梳理:从入门到实战
java·人工智能·spring
人工智能AI技术7 小时前
C#调用大模型
人工智能
陈老老老板7 小时前
Bright Data Web Scraper 实战:构建 eBay Web Scraping 自动化 Skill(2026)
大数据·人工智能·自动化
霍小毛7 小时前
轻量黑科技!数字孪生重构智慧城乡供水一体化新范式
人工智能
如此风景7 小时前
Playwright 速查表
人工智能