项目快照:code-yeongyu/oh-my-openagent,约 68,005 个 Star,5,552 个 Fork;最新推送时间 2026-08-17T22:28:11Z。本文基于仓库公开资料撰写。
项目地址:https://github.com/code-yeongyu/oh-my-openagent · https://omo.dev

项目速览(TL;DR)
oh-my-openagent 是一个以 TypeScript 编写的编码代理编排项目,仓库描述将其定位为面向复杂代码库的代理工具框架,包含多模型编排、并行后台代理以及 LSP(Language Server Protocol,语言服务器协议)和 AST(Abstract Syntax Tree,抽象语法树)工具。仓库当前默认分支为 dev,package.json 中的 npm 包名是 oh-my-opencode,版本为 5.0.0-beta.9。
项目资料同时显示,代码库正在进行多代理承载框架(agent harness)重构,目标是支持 OpenCode、Codex、Pi 等多种承载环境。README 另行宣布了 LazyCodex 入口,官方给出的安装命令是 npx lazycodex-ai install;因此,使用者需要根据所选承载环境和最新 README 判断具体安装路径,而不能仅依据仓库名称推断运行方式。
| 项目项 | 资料中的信息 |
|---|---|
| 仓库 | code-yeongyu/oh-my-openagent |
| 代码语言 | TypeScript |
| GitHub Star | 68005 |
| GitHub Fork | 5552 |
| 默认分支 | dev |
| package.json 版本 | 5.0.0-beta.9 |
| 许可证元数据 | NOASSERTION |
定位与目标用户
该项目的核心定位不是单一模型客户端,而是编码代理承载框架(agent harness):它负责把模型、代理角色、工具、代码分析能力和任务协同组织到同一个开发流程中。根据 package.json 的描述,项目重点包括多模型编排、并行后台代理,以及 LSP/AST 工具集成。
目标用户首先是需要处理复杂代码库的开发者或团队。若任务需要跨文件分析、代码导航、后台任务分派、多个模型协同,项目提供的模块边界具有参考价值;但资料没有给出支持的模型清单、并发上限、吞吐量或任务成功率,这些指标不能从 Star 和 Fork 数量推导。
项目的第二类用户是希望在不同代理承载环境之间迁移工作流的维护者。README 明确说明代码库正在向 OpenCode、Codex、Pi 等多承载环境重构,因此在采用前应关注 ROADMAP 和对应插件目录,而不是把当前实现视为已经稳定统一的跨平台接口。
核心功能
核心功能可以分为代理编排、并行任务、代码智能工具和承载环境适配四组。每组功能都依赖仓库中的独立 workspace 包,实际可用范围取决于安装入口、承载环境和当前分支代码。
多模型代理编排
多模型编排的作用是将不同代理或模型纳入同一个编码任务流程。根据 package.json 中的包名,仓库包含 packages/model-core、packages/delegate-core、packages/prompts-core 和 packages/agents-md-core 等模块;从模块命名可以确认其职责分层,但资料没有提供公开 API 签名、模型路由规则或具体配置格式。
从工作机制看,任务输入应由承载环境传入,编排层再依据代理定义、提示词和委派逻辑选择或组织执行单元,最终输出修改建议、工具调用结果或代码变更。触发条件、模型选择字段、失败重试规则以及输出协议均未在所给资料中提供,官方仓库未提供该信息,建议以最新 README 和源码为准。
并行后台代理与团队模式
README 展示了 Team Mode(团队模式)运行场景,package.json 则包含 packages/team-core 和 packages/boulder-state。这表明项目将团队协作状态和任务状态作为独立模块处理,而不是把所有逻辑集中在单一命令中。
其工作过程可以理解为:主任务创建或接收子任务,团队状态模块保存任务生命周期信息,后台代理分别处理子任务,再由编排层汇总结果。资料没有规定子任务输入结构、并行度、状态持久化介质或冲突合并算法;因此不能把“并行后台代理”解释为具有固定并发数量或自动保证变更无冲突。
LSP 与 AST 工具
LSP 能够为代码代理提供符号、诊断和语言服务相关能力,AST 工具则用于按语法结构处理代码。仓库列出了 packages/lsp-core、packages/lsp-tools-mcp、packages/lsp-daemon、packages/ast-grep-mcp 等路径,同时 package.json 的发布文件中包含 LSP 相关源代码和构建产物。
在执行链路中,代理先提出代码检索或结构分析需求,工具层把请求转交给语言服务器或 AST 处理组件,再将结构化结果返回给代理。输入输出协议、支持的语言、守护进程启动方式和 AST 查询语法没有出现在给定资料中,因此使用者不应根据目录名称虚构具体命令或语言覆盖范围。
规则、注释检查与工作流组件
仓库包含 packages/rules-engine、packages/comment-checker-core、packages/skills-loader-core、packages/shared-skills 等模块,发布清单中还包含规则、注释检查、技能加载和工作流相关组件。这些模块说明项目不仅负责模型调用,还试图把项目规则和编码流程纳入代理执行环境。
规则引擎的输入应来自项目规则或代理上下文,检查器再对生成或修改的代码进行约束验证;技能加载器则为承载环境提供可复用的任务能力。资料没有给出规则文件语法、检查失败后的阻断行为、技能优先级或自定义扩展接口,具体行为须以仓库源码和对应文档为准。
Git、终端与承载环境能力
workspace 中包含 packages/git-bash-mcp、packages/git-bash-mcp 的发布产物、packages/tmux-core、packages/openclaw-core、packages/claude-code-compat-core、packages/omo-opencode 和 packages/omo-codex。这些组件分别指向 Git Bash、终端复用、OpenClaw、Claude Code 兼容层、OpenCode 和 Codex 相关集成。
此类能力涉及本地命令执行和代码仓库写入,代理的输入可以包含工作目录、任务描述和工具请求,输出则可能包含命令结果或文件变更。所给资料没有列出沙箱策略、命令白名单、权限模型和回滚机制,生产使用前必须自行审计运行权限与工作区隔离。
系统架构与关键模块
从 package.json 的 workspaces 和发布文件可以确认,这是一个由多个 npm workspace 包组成的 TypeScript 单体仓库。顶层入口的构建产物为 ./dist/index.js,类型声明为 dist/index.d.ts,包类型为 ES Module。
顶层入口与命令别名
package.json 中的 bin 字段把多个命令名映射到同一个文件 bin/oh-my-opencode.js。已明确列出的命令名包括 oh-my-opencode、oh-my-openagent、omo-agent-toolkit、lazycodex 和 lazycodex-ai。
{
"bin": {
"oh-my-opencode": "bin/oh-my-opencode.js",
"oh-my-openagent": "bin/oh-my-opencode.js",
"omo-agent-toolkit": "bin/oh-my-opencode.js",
"lazycodex": "bin/oh-my-opencode.js",
"lazycodex-ai": "bin/oh-my-opencode.js"
}
}这些命令共享同一个入口文件,但资料没有给出每个命令的参数解析规则,也没有证明它们在所有承载环境下具有完全相同的语义。命令名可用于识别安装后的入口,具体参数应以当前版本帮助信息和 README 为准。
核心层与适配层
workspace 名称显示,项目把规则、委派、模型、提示词、状态、记忆、遥测、LSP、终端和团队协作拆分为多个核心包。例如,packages/memory-core 和 packages/telemetry-core 分别对应记忆与遥测能力,packages/omo-config-core 用于配置相关逻辑。
适配层则由 packages/omo-opencode、packages/omo-codex、packages/omo-senpi、packages/pi-goal 和 packages/pi-webfetch 等包组成。README 将 OpenCode、Codex 和 Pi 列为多承载环境重构的目标对象,但没有给出各适配器的兼容矩阵,不能据此承诺同一功能在所有环境中可用。
发布内容与目录边界
package.json 的 files 字段明确列出发布包中的构建产物、命令目录、部分文档、技能、LSP 组件、Git Bash 组件以及 Codex 插件组件。与此同时,多个 node_modules 目录被排除,packages/omo-codex/scripts/install 也被排除在发布内容之外。
dist/
bin/
postinstall.mjs
.opencode/command
.opencode/skills
.agents/command
.agents/skills
packages/lsp-core/src
packages/lsp-tools-mcp/dist
packages/lsp-daemon/dist
packages/git-bash-mcp/dist
packages/shared-skills/skills
packages/omo-codex/plugin
packages/omo-codex/scripts上面的目录摘录用于说明发布边界,不代表每个目录都提供独立的公开命令。对于源码开发、插件开发和已发布 npm 包的消费,应分别依据仓库脚本、包导出字段和最新文档验证。
依赖与运行环境
资料能够确认项目使用 TypeScript、npm workspace 和 ES Module 包格式,但没有提供 Node.js、npm、Bun 或操作系统的最低版本要求。README 的安装示例使用 npx,这只能证明该示例依赖能够执行 npx 的环境,不能替代官方运行时版本声明。
- 语言:TypeScript。
- 包格式:
"type": "module"。 - 入口:
dist/index.js。 - 类型声明:
dist/index.d.ts。 - 工作区:package.json 列出了多个
packages/*workspace。 - 外部模型凭据:资料列出 Anthropic、OpenAI 和 Gemini 的环境变量,但没有说明全部支持的提供商。
OpenCode、Codex、Pi 和 OpenClaw 相关组件出现在包名或 README 说明中,但对应宿主程序的安装方法、最低版本和兼容限制均未提供。部署前应把承载环境、模型提供商、操作系统权限和本地工具链作为独立验证项。
快速开始
官方 README 给出的最小安装入口是 LazyCodex,而不是一组完整的源码构建教程。下面的命令只覆盖资料中明确出现的安装命令和 package.json 中明确列出的命令入口,适合在本地测试目录中验证,不应直接用于未经审计的生产工作区。
安装
npx lazycodex-ai install该命令来自 README 的“OmO for Codex is here: try LazyCodex”说明。它可能读取当前环境中的模型凭据,因此执行前应确认终端环境、当前目录和凭据来源;资料没有说明安装器会修改哪些文件、是否覆盖已有配置或是否支持卸载。
运行
lazycodexlazycodex 是 package.json 中声明的命令入口,映射到 bin/oh-my-opencode.js。所给资料未提供该命令的参数、交互方式和默认工作目录,因此这里只能作为入口存在性测试;若当前版本要求参数或宿主环境,应该按照命令输出和最新 README 操作。
验证
command -v lazycodex
test -f bin/oh-my-opencode.js
第一条命令用于确认 shell 能够找到安装后的入口,第二条命令适用于仓库源码目录,用于确认资料中声明的入口文件存在。它们不能证明模型调用、代码修改、LSP 服务或团队模式已经正常运行;功能验证还需要在隔离测试仓库中提交一个无敏感数据的简单任务。
配置说明
仓库提供了 .env.example,主要用于开发和质量保证(QA,Quality Assurance)场景。示例文件明确建议复制为被 Git 忽略的 .env,并说明 script/agent/setup.sh 和 script/agent/qa-sandbox.sh 会自动加载该文件。
| 字段名 | 类型 | 默认值 | 作用 |
|---|---|---|---|
ANTHROPIC_API_KEY |
字符串 | 未提供 | Anthropic 提供商的 API 密钥;仅在针对该提供商进行 QA 时填写。 |
OPENAI_API_KEY |
字符串 | 未提供 | OpenAI 提供商的 API 密钥;仅在针对该提供商进行 QA 时填写。 |
GEMINI_API_KEY |
字符串 | 未提供 | Gemini 提供商的 API 密钥;仅在针对该提供商进行 QA 时填写。 |
OPENCODE_SERVER_PASSWORD |
字符串 | 未提供 | 基于 opencode serve 的 QA 可选密码。 |
OMO_AGENT_FORCE_BUILD |
字符串 | 未提供 | 设置为 1 时,强制执行 bun run build,即使 dist/index.js 已存在。 |
示例文件特别说明,只有被取消注释且为空的变量才会以空值覆盖 shell 或 Codespaces secret 中已有的值。因此,不需要的提供商应保持注释状态,而不是设置为空字符串。API 密钥属于敏感参数,下面示例使用占位符,不应把真实密钥写入仓库、日志或问题单。
cp .env.example .env
# 仅在本地测试环境中填写实际使用的提供商密钥
# ANTHROPIC_API_KEY=<你的-API-KEY>
# OPENAI_API_KEY=<你的-API-KEY>
# GEMINI_API_KEY=<你的-API-KEY>
# 可选:OpenCode serve QA 密码
# OPENCODE_SERVER_PASSWORD=<你的本地测试密码>
资料没有给出配置文件完整字段、模型名称、端口、服务地址、超时、并发或日志级别配置。上述表格之外的配置项,官方仓库未提供该信息,建议以最新 README、对应包文档和源码为准。
进阶用法
进阶使用的重点是选择承载环境并组合独立能力,而不是盲目启用全部模块。README 当前明确提到 OpenCode、Codex 和 Pi 等承载环境,package.json 则提供 omo-codex、omo-opencode 等适配包。
面向 Codex 的 LazyCodex 入口
README 将 LazyCodex 描述为 OmO for Codex 的入口,并给出独立站点 lazycodex.ai。如果用户原本使用 OmO,但认为配置步骤过多,可以优先评估该安装路径;不过该资料没有列出安装器的版本选择、回滚命令、参数说明和配置迁移策略。
面向 OpenCode 的插件路径
package.json 的发布清单包含 packages/omo-codex/plugin、多个组件的 dist/cli.js,以及 .opencode/command 和 .opencode/skills。这说明发布包试图携带承载环境所需的插件、命令和技能资源,但不能仅凭目录名称确认具体加载顺序。
在 OpenCode 场景中,建议先在临时仓库中验证插件加载、规则生效和工具权限,再迁移到实际代码库。README 还指出多承载环境重构正在进行,相关贡献应先阅读 ROADMAP;现有实现与未来目标之间不应被视为稳定兼容关系。
本地代码库的渐进式验证
根据本文作者的经验判断,复杂代理系统适合采用从只读分析到小范围修改的验证顺序,但这是使用建议,不是仓库承诺的工作流。第一阶段只提供非敏感测试仓库和明确任务,第二阶段验证 LSP、AST、规则和 Git 工具,第三阶段才评估团队模式或后台代理。
- 先确认命令入口能够被 shell 找到。
- 再确认模型凭据只对测试提供商生效。
- 再验证单个文件的只读分析结果。
- 最后在可回滚分支中验证写入、提交和多代理协同。
可观测性与运维
仓库包含 packages/telemetry-core,Codex 插件发布清单还包含 packages/omo-codex/plugin/components/telemetry/dist/cli.js。这些路径证明项目包含遥测相关组件,但资料没有说明采集字段、传输目标、保存周期、开关名称或是否默认启用。
运维上应重点记录命令入口、承载环境、代码库标识、任务状态和失败阶段,同时避免记录 API 密钥、源代码机密和完整模型请求。由于官方资料未给出日志格式、指标名、告警规则、SLA(Service Level Agreement,服务级别协议)或故障恢复承诺,不能据此建立固定的生产监控契约。
构建与发布检查
.env.example 指出可以使用 OMO_AGENT_FORCE_BUILD=1 强制执行 bun run build。该变量来自开发和 QA 配置,不能据此推断项目必须使用 Bun 运行全部工作负载,也不能推断构建过程具有特定的缓存或增量行为。
发布包明确包含 THIRD-PARTY-NOTICES.md,维护者在分发前应检查第三方声明是否被保留。构建产物、插件目录和排除项均来自 package.json 的 files 字段,实际发布内容仍应通过对应版本的打包结果核验。
安全与合规边界
该项目能够驱动编码代理访问本地代码、Git 工具、终端工具和模型提供商,因此安全边界主要是凭据保护、代码访问控制和命令执行隔离。以下建议仅适用于拥有明确授权的本地、测试或企业内部环境,不涉及未授权目标、绕过检测或攻击教程。
- 只在明确授权的代码库中运行代理,并为测试建立独立工作目录或临时分支。
- API 密钥通过环境变量或受控 secret 注入,不写入
.env以外的源码、提交记录和终端录屏。 - 首次启用 Git Bash、终端复用或后台代理前,审查其可访问的路径、命令权限和网络范围。
- 涉及个人信息、客户代码、密钥、内部接口或受监管数据时,先确认模型提供商的数据处理条款和组织内部审批要求。
- 对代理生成的补丁执行人工审查、测试和依赖检查,不能把模型输出直接视为已验证的生产变更。
资料没有提供沙箱、权限白名单、数据脱敏、审计日志、漏洞响应流程或合规认证信息。对于隐私数据、支付系统、生产凭据和受监管业务,官方仓库未提供该信息,建议在隔离环境完成安全评估后再决定是否采用。
许可证与商用条款
仓库元数据将许可证标记为 NOASSERTION,所给资料没有提供 LICENSE 文件正文。仅凭 GitHub 元数据不能确认具体许可证类型,也不能可靠判断商用、再分发、修改、专利授权或版权声明义务。
因此,商用或再分发前应直接核对仓库中的 LICENSE、第三方声明和发行包所带的 THIRD-PARTY-NOTICES.md。在许可证文本缺失或含义不明确时,应以仓库 LICENSE 为准,并由组织的法务或合规人员确认以下事项:
- 是否允许商业使用和内部部署。
- 修改版本和再分发是否需要附带版权声明。
- 第三方依赖是否存在独立的通知、署名或源代码提供义务。
- 模型提供商、插件和外部服务条款是否与软件许可证分开适用。
局限性与已知限制
当前资料能够确认项目规模较大、模块较多,但不能替代版本化兼容性文档。最大的使用限制是文档没有提供完整运行时要求、承载环境矩阵、模型支持矩阵、参数接口和性能数据。
- README 说明多承载环境重构正在进行,接口和目录职责存在持续调整背景。
- 没有提供端口、服务监听地址、并发上限、响应时间或资源消耗数据。
- 没有提供支持的编程语言、LSP 服务版本、AST 查询能力或操作系统列表。
- 没有提供模型路由、费用控制、失败重试、上下文限制和结果一致性保证。
- 许可证信息为
NOASSERTION,商用授权边界不能由所给资料确定。 - 安装命令已明确,但安装器修改范围、卸载方法和升级策略未提供。
GitHub Star 为 68005、Fork 为 5552,这些是仓库元信息,不是稳定性、质量、性能或服务等级指标。根据本文作者的经验判断,采用该项目时应把“实验性集成”与“生产承载”分成两个决策,不宜只用仓库热度替代测试和审计。
适合谁
下面的判断依据是仓库描述、workspace 结构和 README 中的承载环境信息,适用于需要评估技术栈匹配度的团队。满足多个信号时,项目的模块化代理编排能力更值得验证。
- 团队维护的是跨目录、跨模块的复杂 TypeScript 或其他代码库,任务需要代码导航和结构化分析。
- 已有 OpenCode、Codex 或 Pi 承载环境,并愿意跟随 ROADMAP 验证重构中的适配能力。
- 需要把模型、提示词、规则、技能、状态和工具拆成可审查模块,而不是只调用单一聊天接口。
- 能够提供隔离测试仓库、受控 API 凭据和人工代码审查流程。
- 团队愿意阅读源码和 package workspace,以补足官方资料尚未说明的运行参数。
不适合谁
以下信号表示采用成本或合规风险较高,至少不应直接进入生产环境。替代方案的具体名称只有 README 明确提到的 Codex、OpenCode、Pi 等承载环境可用于比较,其他替代品资料未提供。
- 只需要单次、只读、无工具调用的简单问答,不需要代理编排或代码库级上下文。
- 组织要求明确许可证、商用授权、审计日志或 SLA,而当前资料无法提供相应保证。
- 运行环境禁止本地命令执行、Git 访问、外部模型调用或未经审批的源码外传。
- 团队没有隔离测试环境,也无法人工审查代理生成的文件修改和命令结果。
- 项目要求固定且已验证的跨承载环境接口,而仓库 README 已明确说明多承载环境重构仍在进行。
常见问题与排查(FAQ / Troubleshooting)
排查应先区分“命令未安装”“凭据未配置”“承载环境不兼容”和“工具权限不足”四类问题。所给资料没有完整错误码,因此以下方法只使用已知文件、变量和命令入口,不虚构错误信息。
为什么安装后找不到命令
先确认使用的是 README 给出的 npx lazycodex-ai install,再检查 shell 是否能找到 package.json 中声明的 lazycodex 或 oh-my-openagent。如果仍然失败,检查当前 shell 的可执行路径和 npm 安装结果;具体全局安装目录和平台差异,官方仓库未提供该信息。
为什么模型请求无法执行
检查 .env 是否由 .env.example 复制而来,并只取消注释实际使用的提供商变量。Anthropic、OpenAI 和 Gemini 变量在示例中都是注释状态且没有默认值,缺少对应凭据时,具体报错和回退行为未在资料中说明。
是否可以使用 OpenCode、Codex 和 Pi
README 明确把 OpenCode、Codex、Pi 列为多承载环境重构方向,package.json 也包含相关包名,但没有提供完整兼容矩阵。应根据当前分支、对应包和最新 ROADMAP 逐项验证,不要把某个承载环境的成功运行推断为其他承载环境也已兼容。
如何强制重新构建
在开发或 QA 场景中,可以按 .env.example 的说明设置 OMO_AGENT_FORCE_BUILD=1,以强制执行 bun run build。资料没有说明构建失败的错误分类、Bun 版本要求或构建输出目录之外的副作用,因此生产发布前仍需在干净环境复现。
怎样确认问题属于项目还是模型提供商
先在隔离仓库中验证命令入口,再使用单一提供商和最小任务复现,记录承载环境、代码库状态和配置变量名称,不记录密钥值。若只在某个提供商变量下失败,应同时核对该提供商账号权限和服务条款;仓库资料没有提供统一的提供商诊断接口。
贡献与项目治理
README 表明项目正在公开开发,并邀请贡献者先阅读 ROADMAP。对于与路线图相关的 Pull Request(拉取请求),README 要求使用 ROADMAP 标签,这为贡献范围提供了明确的入口。
- 提交代码前先确认改动属于当前 ROADMAP 范围。
- 涉及多个承载环境时,分别验证 OpenCode、Codex 或 Pi 的适配边界。
- 涉及模型凭据、遥测、终端和源码访问时,补充安全影响说明。
- 不要在 issue、提交或测试产物中上传真实 API 密钥和私有代码。
README 还列出了 Discord 社区和公开构建渠道。社区信息适合用于获取维护者与贡献者反馈,但技术行为仍应以版本化源码、README、ROADMAP 和实际测试结果为准。
版本、分支与发布识别
仓库元信息给出的默认分支是 dev,package.json 的版本是 5.0.0-beta.9。由于默认分支和 npm 包版本属于不同维度,不能假设仓库当前源码与已发布包完全相同。
package.json 的包名仍是 oh-my-opencode,但仓库项目名和 bin 字段同时使用 oh-my-openagent、oh-my-opencode、lazycodex 等名称。安装和故障报告时应同时记录实际使用的命令、包版本、承载环境和提交分支,避免只写项目简称。
项目地址与资源
以下链接均来自仓库资料、README 或项目元信息,可用于获取源码、文档、安装入口和社区信息。版本、功能和安装步骤发生变化时,应优先查看仓库最新内容。



