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

相关推荐
fuquxiaoguang4 分钟前
中间件的“价值重估”:传统同质化竞争终结,AI智能编排时代开启
人工智能·中间件
触底反弹1 小时前
🔥 前端也能玩转 AI 流式输出!从二进制流到打字机效果,一篇讲透
javascript·人工智能·node.js
腾渊信息科技公司1 小时前
工业数据运维痛点根治方案:基于AI Agent的产线自动化台账系统落地
运维·人工智能·自动化·个人开发·ai编程
西安老张(AIGC&ComfyUI)1 小时前
第030章:ComfyUI视频制作LTX-2.3模型文生视频工作流详解(三)
人工智能·aigc·comfyui
苦猿的大模型日记1 小时前
Day25 | 模型量化横评 GPTQ vs AWQ vs GGUF vs INT8——同一个 Qwen3-8B 压四遍,谁还活着
人工智能
benchmark_cc2 小时前
如何用 Python + QuantDash 快速构建高胜率“配对交易(Pairs Trading)”策略?
开发语言·人工智能·python·pandas·量化交易·quantdash
深海鱼肝油ya2 小时前
小说自动生成系统(二)
人工智能·大模型·agent·智能体·自动化编程·小说生成系统
小林ixn2 小时前
会议纪要自动化:用 Claude Skill 把重复工作“卷”成一行命令
agent·自动化运维
通问AI2 小时前
Apple Intelligence 国行备案深度技术解析:阿里千问如何被集成到苹果端侧AI架构
人工智能·架构
视***间2 小时前
算力赋能零售与创意新生态:视程空间Pandora,解锁线下场景智能化无限可能
人工智能·边缘计算·智慧零售·ai算力·视程空间·创意开发