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】源码构建(项目构建)

相关推荐
极客老王说Agent25 分钟前
屏幕理解能力是下一代自动化的关键吗?2026年自动化范式演进深度解析
运维·人工智能·ai·chatgpt·自动化
YueJoy.AI30 分钟前
低算力场景下中小企业接入大模型的商业化路径
人工智能·ai·语言模型
smart19981 小时前
U.2 NVMe全闪磁盘阵列让AI, ML, HPC业务运行稳性高效
人工智能·科技·存储
懷淰メ1 小时前
【AI加持】基于PyQt+YOLO+DeepSeek的疟原虫检测系统(详细介绍)
人工智能·yolo·计算机视觉·pyqt·医疗·ai分析·疟原虫
Black蜡笔小新1 小时前
自动化AI算法训练服务器DLTM训推一体化平台助力农业生产管理实现安全智能化
人工智能·算法·自动化
米小虾1 小时前
Claude Code、Codex、Cursor三分天下:2026年AI编程Agent生态全景剖析
人工智能·agent
ZHW_AI课题组1 小时前
腾讯云调用IP定位
人工智能·python·机器学习
Wch1G0z8A1 小时前
Google 开源了啥,让 AI Agent 碰数据库不再是定时炸弹
数据库·人工智能·开源
武子康1 小时前
调查研究-151 Slack vs Jira:区别、使用指南与团队选择方法
人工智能·科技·深度学习·ai·职场和发展·jira·slack