21、【Agent】【OpenCode】源码构建(项目构建)

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

背景

上篇 blog
【Agent】【OpenCode】源码构建(依赖安装)

继续对比了 TS 和 JS 的开发体验,并简单推理了下 TS 的编译过程,然后提到了像 Bun 这样的现代工具,之所以看起来像能直接运行 TS 代码,其实是在后台自动编译了 TS → JS,最后再总结了下两者的区别,然后开始使用 bun install 安装 OpenCode 源码的依赖,发现安装依赖的过程中发现卡住了,原因是 npm 官方源在国内访问极慢或容易被干扰,通过临时指定 registry 强制使用国内镜像源最后成功安装了 OpenCode 所需的依赖,下面继续分析

OpenCode

安装完 OpenCode 依赖之后,可以开始构建项目

通过 bun run build 命令可以开始构建项目,把 TypeScript 等源码转换成可运行的 JavaScript,并打包优化,就像 npm run build 和 yarn build 一样,不过需要注意的是,这里的 build 不是 Bun 内置命令,而是 package.json 中定义的脚本

另外,要注意的是,这里是路径是 packages/opencode/package.json,而不是项目根目录下的那个 package.json,在终端输入

bash 复制代码
bun run --cwd packages/opencode src/index.ts --help

可以查看到 opencode 的帮助信息如下

OK,接着先进入 opencode 的目录

bash 复制代码
cd packages/opencode

然后在 opencode 的目录下,再输入

bash 复制代码
bun run build

对项目进行构建,此时会开始跑 build 脚本

构建成功后

构建成功后,dist/ 目录下可以看到构建出的 OpenCode 多平台预编译二进制文件,独立可执行,无需 Bun/Node.js 即可运行 ,比如当前的系统是 Ubuntu(Linux)+ x86_64(AMD 64位),所以可以用 opencode-linux-x64 这里的版本

终端输入

bash 复制代码
./dist/opencode-linux-x64/bin/opencode --version

可以看到构建出来的版本信息

终端输入

bash 复制代码
./dist/opencode-linux-x64/bin/opencode

可以看到构建出来的 opencode 程序,版本信息在右下角

当然,如果嫌麻烦,毕竟构建所有平台的可执行二进制文件也是要花时间的,打开 build.ts 文件,这里有个 --single 选项

当该选项生效时,其他平台版本的 opencode 将不会被构建(返回 false)

OpenCode 支持构建的所有平台目标 allTargets 内容如下

bash 复制代码
const allTargets: {
  os: string
  arch: "arm64" | "x64"
  abi?: "musl"
  avx2?: false
}[] = [
  {
    os: "linux",
    arch: "arm64",
  },
  {
    os: "linux",
    arch: "x64",
  },
  {
    os: "linux",
    arch: "x64",
    avx2: false,
  },
  {
    os: "linux",
    arch: "arm64",
    abi: "musl",
  },
  {
    os: "linux",
    arch: "x64",
    abi: "musl",
  },
  {
    os: "linux",
    arch: "x64",
    abi: "musl",
    avx2: false,
  },
  {
    os: "darwin",
    arch: "arm64",
  },
  {
    os: "darwin",
    arch: "x64",
  },
  {
    os: "darwin",
    arch: "x64",
    avx2: false,
  },
  {
    os: "win32",
    arch: "arm64",
  },
  {
    os: "win32",
    arch: "x64",
  },
  {
    os: "win32",
    arch: "x64",
    avx2: false,
  },
]

这里涉及到四个属性 os,arch,abi,avx2,这四个属性是构建跨平台可执行文件(尤其是用像 Bun,Node.js,nexe 等工具打包时)的核心概念,下面来详细分析下

首先是 os 操作系统,表示目标程序运行的操作系统类型,属于底层软件(不同操作系统提供的底层接口,系统调用,动态库格式都有区别),所以上层应用的构建包要区分操作系统,Bun 工具集支持的三种操作系统:

  • linux:各种 Linux 发行版,比如 Ubuntu,CentOS,Debian 等
  • darwin:macOS,macOS 内核叫做 Darwin
  • win32:Windows,无论 32 位还是 64 位,Node/Bun 都叫 win32

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

相关推荐
198******126343 小时前
2026深度解读:Work Agent长程任务的技术机制与落地能力
人工智能
寻道码路4 小时前
大模型工程化实战(十六):政企国产化避坑——合规/信创名录/私有化运维/国产硬件适配/原厂支持这五道关怎么过
大模型·agent·信创·rag·ai工程化·国产化替代·政企ai落地
老金带你玩AI4 小时前
别只让AI解释,让它做个你能看懂的东西
人工智能
iffy14 小时前
Deepseek hardness 桌面版 + ollama
人工智能
Xiaofeng36934 小时前
知漫剧入门科普:一站式工作台一句话生成漫剧
人工智能
“AI国潮设计-小江”4 小时前
《Python+SDXL实战:用ControlNet精准控制“英歌舞翻糖吐司”构图,附批量生成脚本》
开发语言·人工智能·python·prompt·aigc
MobotStone5 小时前
万物皆插件:DeepSeek Harness 底层揭秘,脚手架如何蜕变为产品
人工智能
youdexiang5 小时前
Android录音软件时间关键词检索功能分析
java·人工智能
WUYOUGYLU5 小时前
大模型时代:人与智能的共同进化
人工智能
netkiller-BG7NYT5 小时前
基于图像识别的人工智能中医望诊方案
人工智能·百度