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 buildyarn 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,
  },
]

这里涉及到四个属性 osarchabiavx2,这四个属性是构建跨平台可执行文件(尤其是用像 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】源码构建(平台目标属性)

相关推荐
ZJU_统一阿萨姆5 小时前
【算子开发】矩阵乘法(GEMM)入门与共享内存优化
人工智能·线性代数·矩阵·系统架构
SeaDhdhdhdhdh5 小时前
MCP Server 搭建与使用指南
java·ai·agent·mcp
AI码农小姐姐5 小时前
AI漫剧用什么软件制作?知漫剧对比即梦/豆包/可灵怎么选?
人工智能
李姆斯5 小时前
为啥Agent在coding表现这么好,但是在别的领域就是差的不少?
前端·agent·ai编程
nix.gnehc5 小时前
工具表之外 -- 派生、注入与两条原语
agent
YH55269845 小时前
GPT‑5.6 Sol 原本支持 1M 上下文,Codex 现已放开此前限制,如何看待这次调整?
java·jvm·人工智能·gpt·算法·chatgpt
ZYJCSZKJ5 小时前
AI数字人实时交互系统的工程架构与多方言适配实践
人工智能·架构·交互·ai数字人直播系统
2601_965958466 小时前
口腔黏膜脱皮超2周未愈建议及时就医
人工智能·python
智购科技智能售货柜6 小时前
2026自动售货机整机可靠性测试:从高低温交变到EMC电磁兼容的认证工程实践~YH
运维·服务器·数据库·人工智能·物联网
“初生”6 小时前
用 Codex 做一致性 AI 动画:5 步工作流,角色不再漂移
人工智能·ai·chatgpt