OpenCode AI Coding Agent安装渠道、脚本执行流与 Agent 权限模型一次讲清【免费下载链接】opencodeThe open source coding agent.项目地址: https://gitcode.com/GitHub_Trending/openc/opencode在任意项目目录里敲下opencode你会进入终端的 TUIText User Interface界面Agent 检索代码、修改文件、执行命令全程不离开终端。OpenCode 把 AI Coding Agent 做进终端开源、终端优先、内置 Agent 分层授权是它和一般编程助手的主要差别。本文以仓库的 README.md 与 Agent 定义源码 agent.ts 为准把安装渠道、脚本执行流和权限模型一次讲清。为什么把编程助手放进终端AI 编程助手大多长在 IDE 插件或网页里换个项目就得换个窗口Agent 能走多远、能碰什么往往说不清楚。OpenCode 的思路是反过来的——终端本来就在项目目录里那直接把 Agent 放进终端同一份会话、同一套上下文、同一套权限规则探索和修改都在一个屏幕内完成。终端 TUI读代码、改代码、跑命令都在同一块屏里状态栏实时显示当前 Agent 与模型多官方渠道npm、Homebrew、Scoop、Chocolatey、pacman、mise、nix 加一条安装脚本主流平台都有官方入口分层 Agent 权限build、plan、general三类 Agent 各带一套允许 / 询问 / 拒绝边界而不是一个全权 Agent想放手的放手想收着的收着规则写在源码里可以逐条核对桌面客户端BETA不想开终端的人也有桌面版可选。配置细节以官方文档为准要给项目提代码先读 CONTRIBUTING.md。OpenCode 安装方式官方渠道怎么选日常使用按 README 的推荐走 Homebrew tap 渠道始终最新已装 Node 环境则 npm 最省事。先说结论包管理器渠道适合日常升级交给管理器脚本渠道适合锁定版本、离线部署这类非默认场景脚本还提供--version与--binary两条非默认路径。一键安装脚本# 默认装最新版 curl -fsSL https://opencode.ai/install | bash # 锁定版本 curl -fsSL https://opencode.ai/install | bash -s -- --version 1.0.180 # 离线/本地二进制跳过下载与平台检测 ./install --binary /path/to/opencode包管理器全表渠道命令平台备注Homebrew tapbrew install anomalyco/tap/opencodemacOS / LinuxREADME 推荐始终保持最新Homebrew 官方 formulabrew install opencodemacOS / Linux更新频率较低npm或 bun / pnpm / yarnnpm i -g opencode-ailatest跨平台npm 包名是opencode-aiScoopscoop install opencodeWindowsChocolateychoco install opencodeWindowspacmansudo pacman -S opencodeArch LinuxStableparuAURparu -S opencode-binArch LinuxAUR 最新构建misemise use -g opencode任意系统nixnix run nixpkgs#opencodeNix 环境也可指向开发分支拿最新构建⚠️ 安装或升级前先移除 0.1.x 以前的旧版本这是 README 明确提示的前置条件。一键安装脚本的执行流仓库根目录的 install 脚本接受--version、--binary、--no-modify-path、--help四个选项install启动后按四步走。先认机器平台检测靠uname -s/uname -m另有三处适配installmacOS x64 下用sysctl.proc_translated判断是否跑在 Rosetta 里是则改取 arm64 产物L95-L100Linux 下通过/etc/alpine-release或ldd --version识别 Alpine/musl 系统产物名追加-musl后缀L117-L128x64 机器检查 CPU 是否支持 AVX2——Linux 读/proc/cpuinfo、macOS 读hw.optional.avx2_0、Windows 调IsProcessorFeaturePresent不支持就换-baseline构建L130-L158。目的是让每台机器拿到能直接跑起来的产物而不是装完才发现指令集不兼容——AVX2 与 musl 这两条判断直接决定了最终下载文件名的后缀组合。支持的平台组合为linux-x64/arm64、darwin-x64/arm64、windows-x64Linux 下载.tar.gz其余平台下载.zip。再对版本指定版本时脚本先发 HTTP HEAD 请求确认该 release 存在返回 404 直接报错退出L197-L203版本号写错不会下错包。随后check_version把本机opencode --version与目标版本比对相同则直接退出L221-L235——重复执行脚本是无损的空操作。下载如何可见TTY 环境下脚本用curl --trace-ascii把流量写进 FIFO解析 content-length 与已收字节数渲染一条自定义进度条非 TTY、Windows 或渲染失败时回退到curl -#的标准进度L267-L335。所以 CI 日志里看到的进度样式和本地不一样属预期行为。落到哪里、如何生效README 规定安装目录按四级优先级取$OPENCODE_INSTALL_DIR自定义目录→$XDG_BIN_DIRXDG 基础目录规范路径→$HOME/bin存在或可创建时→$HOME/.opencode/bin兜底例如OPENCODE_INSTALL_DIR/usr/local/bin curl ... | bash。但仓库内这份脚本只把$HOME/.opencode/bin写死为默认值L68差异详见后文。装完后脚本按当前 shellfish / zsh / bash / ash / sh向对应 rc 文件追加 PATH 导出语句先 grep 去重、已存在就跳过文件不可写时只打印手工要加的语句加--no-modify-path可关闭该行为GitHub Actions 环境里还会把安装目录写进$GITHUB_PATHL362-L444。桌面客户端现状各平台产物一览桌面端仍处 BETA从 releases 页或官网下载页获取平台产物macOSApple Siliconopencode-desktop-mac-arm64.dmgmacOSIntelopencode-desktop-mac-x64.dmgWindowsopencode-desktop-windows-x64.exeLinux.deb、.rpm或.AppImage# macOSHomebrew Cask brew install --cask opencode-desktop # WindowsScoop scoop bucket add extras scoop install extras/opencode-desktop源码在 packages/desktop基于 Electronmain / preload / renderer 三层结构electron-builder.config.ts 负责打包发布流水线脚本在packages/desktop/scriptsLinux 另有专用构建容器 Dockerfile。Agent 权限模型谁能做什么操作层面很简单按Tab切到下一个 AgentShiftTab往回切——对应 TUI 键位配置agent_cyclekeybind.tsagent_cycle: keybind(tab, Next agent)leadera默认Ctrlx后按a打开 Agent 列表。循环只覆盖可见的主 Agentprimarysubagent即系统内部派生的从属 Agent不进入切换列表在消息里输入general可显式把任务派给 general 子 Agent。每个 Agent 由modeprimary / subagent、description、prompt、permission字段构成agent.ts。buildL141-L155是默认主 Agent在基线之上只把question向用户提问与plan_enter进入 plan 模式放开列表排序逻辑默认把它排最前L316-L326。generalL182-L195是 subagent定位为研究复杂问题并执行多步任务、可并行多个工作单元权限上仅显式deny了todowrite其余继承基线。plan 模式能碰什么planL156-L181是权限收敛点核心覆盖项如下Permission.fromConfig({ question: allow, plan_exit: allow, task: { general: deny }, edit: { *: deny, [path.join(.opencode, plans, *.md)]: allow, }, }),这段代码的意思是plan 模式下所有edit操作默认deny唯独放行项目内.opencode/plans/*.md与全局数据目录plans下的计划文件plan_exit放行表示允许授权切回 buildtask.general为deny即 plan 下不再派生 general 子任务——README 里默认禁止修改文件这句描述在源码中就是这样落地的。README 还提到 plan 执行 bash 指令前会先询问即 bash 走的是基线里的ask而不是allow。三层合并怎么算权限不是写死的而是Permission.merge(defaults, Agent 覆盖项, user)三层依次合并agent.ts先铺默认基线再叠该 Agent 自己的覆盖项最后是用户配置cfg.permission——用户层的优先级最高能覆盖前两层的一切决定。默认基线L119-L136里内置了几条通用安全规则doom_loop为askAgent 陷入重复循环时先问读取*.env、*.env.*需询问*.env.example除外外部目录访问external_directory默认ask仅 tmp、skill、reference 等白名单目录直接放行。文档没写、源码里有的 AgentREADME 只提了 build / plan / general源码里还有几个没写进文档的exploreL196-L218是快速探索代码库的 subagent先deny全部工具、再只放行 grep / glob / list / bash / read / webfetch / websearch外部目录只读隐藏的compactionL219-L233把所有工具deny只做上下文压缩title / summaryL234-L264同样是隐藏 Agent。general、explore这类调用由 task 工具的提示文档 task.txt 支撑——这是文档与源码之间需要心里有数的差异。用之前必须知道的事命名约定你做的开源项目名里若含 opencode如 opencode-dashboard要在自己的 README 里写明非 OpenCode 团队开发、与其无任何隶属关系安装目录的差异README 写了四级环境变量优先级仓库内脚本只实现了$HOME/.opencode/bin默认值实际行为以所装版本为准版本卫生升级前必须移除 0.1.x 之前的旧版本--version会先 HEAD 校验 release写错版本号会立即退出桌面端是 BETA按早期预览对待核心工作流仍建议走 CLI / TUInix 渠道nix run nixpkgs#opencode拿稳定版指向开发分支可拿最新构建两条路都官方支持。写在最后推荐的实践路径进入陌生仓库先Tab切到plan只读探索、产出计划再切回build落地改动遇到彼此独立的多步任务用general并行派发。现在就可以打开一个真实项目Tab切到 plan扔一句帮我梳理这个模块的边界试试。【免费下载链接】opencodeThe open source coding agent.项目地址: https://gitcode.com/GitHub_Trending/openc/opencode创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?