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】源码构建(平台目标属性)

相关推荐
Miku162 分钟前
OpenClaw+image-downloader-skill: 打造关键词图片批量下载工作流
aigc·agent·claude
DanCheOo2 分钟前
AI Streaming 架构:从浏览器到服务端的全链路流式设计
前端·agent
不完备智能3 分钟前
🦌 DeerFlow 2.0 深度解析:字节跳动开源的"超级 Agent harness"架构揭秘
人工智能
阿木木AEcru3 分钟前
DeepSeek 崩了 13 小时,不是故障,是 V4 在换引擎
人工智能
小小工匠3 分钟前
Superpowers - 09 从构思到落地:如何用「计划编写与任务粒度」驾驭 AI 时代的软件开发
人工智能·skills·superpowers
阿聪谈架构4 分钟前
第07章(下):LangGraph 工作流进阶 —— 检查点、人工介入与多 Agent 协作
人工智能·后端
小小工匠6 分钟前
Superpowers - 08 在 AI 时代重写「需求评审会」:深入解读 Superpowers 的头脑风暴与设计规范机制
人工智能·skills·superpowers
橘子编程14 分钟前
Hermes Agent 完整使用指南
人工智能
yuhulkjv33516 分钟前
AI导出的Excel公式失效
人工智能·ai·chatgpt·excel·豆包·deepseek·ai导出鸭
七夜zippoe21 分钟前
OpenClaw 子代理(Subagent)机制详解
大数据·人工智能·subagent·openclaw·子代理