关于 Omni Dev
Omni Dev 是 Rust 命令行工具包,可改写 Git 提交信息、创建拉取请求,并集成 Atlassian 和 Datadog。它还提供 MCP 服务,开放 Git、Jira、Confluence 和 Datadog 功能。
主要功能
- 01AI 辅助改写提交信息
- 02AI 生成拉取请求描述
- 03Jira 和 Confluence 操作
- 04只读 Datadog 查询
- 05浏览器桥接与 worktrees 视图
- 06Rust 命令行二进制程序
适用场景
- 01改写分支中的提交信息
- 02创建拉取请求时生成描述
- 03读取或管理 Jira 问题和 Confluence 页面
- 04查询 Datadog 指标、日志和仪表板
MCP 相关
MCP 服务提供 Git 分析与提交工具、拉取请求创建、Jira 和 Confluence 操作、Datadog 工具,以及 ai_chat 代理。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
docker run -i --rm -e ANTHROPIC_API_KEY -e ATLASSIAN_INSTANCE_URL -e ATLASSIAN_EMAIL -e ATLASSIAN_API_TOKEN ghcr.io/rust-works/omni-dev-mcp:latestANTHROPIC_API_KEY密钥ATLASSIAN_INSTANCE_URLATLASSIAN_EMAILATLASSIAN_API_TOKEN密钥本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
ghcr.io/rust-works/omni-dev-mcp:lateststdio工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
omni-dev
一款智能 Git 提交消息工具包,具备 AI 驱动的上下文智能。将杂乱的提交历史转化为专业、符合 Conventional Commits 规范的格式,并提供了解项目的建议。
🎬 效果演示
观看 omni-dev 如何通过 AI 驱动的分析将杂乱的提交转化为专业提交
30 秒演示
借助 AI 智能优化提交消息,并创建专业的 PR:
# Analyze and improve commit messages in your current branch
omni-dev git commit message twiddle 'origin/main..HEAD' --use-context
# Before: "fix stuff", "wip", "update files"
# After: "feat(auth): implement OAuth2 authentication system"
# "docs(api): add comprehensive endpoint documentation"
# "fix(ui): resolve mobile responsive layout issues"
# Create a professional PR with AI-generated description
omni-dev git branch create pr
# 🎉 Generates comprehensive PR with detailed description, testing info, and more
✨ 主要功能
- 🤖 AI 驱动的智能:Claude AI 分析代码变更,提供有意义的提交消息和 PR 描述建议
- 🧠 上下文感知:理解项目结构、约定和工作模式
- 🔍 全面分析:深入分析提交、分支和文件变更
- ✏️ 智能修订:安全地改进单条或多条提交消息
- 🚀 创建 PR:借助 AI 生成专业的拉取请求描述
- 📦 自动分批:智能处理大型提交范围
- 🎯 Conventional Commits:自动检测并格式化
- 🌐 浏览器桥接:通过已通过身份验证的浏览器标签页发送 HTTP 请求,无需导出 Cookie 或令牌
- 🗂️ Worktrees 视图:在一个实时视图中查看所有 VS Code 窗口中打开的每个仓库和 Git 工作树
- 🛡️ 安全优先:验证工作目录,防止修订已位于远程主分支中的提交,并支持错误恢复
- ⚡ 快速可靠:使用 Rust 构建,兼顾内存安全与性能
🚀 快速开始
安装
# Install from crates.io
cargo install omni-dev
# Install with Nix
nix profile install github:rust-works/omni-dev
# Install with Nix flakes (development)
nix run github:rust-works/omni-dev
每个发行版都附带预构建二进制文件。Linux 版本(omni-dev-linux.tar.gz、omni-dev-linux-arm64.tar.gz)采用动态链接,需要 glibc 2.35 或更高版本(Ubuntu 22.04 和 Debian 12 符合要求)。在较旧的主机上,例如 RHEL 9 或 Amazon Linux 2023(glibc 2.34),加载器会报 version `GLIBC_2.xx' not found 错误;请改用 cargo install omni-dev 从源码构建。如果二进制文件所需版本高于这一最低要求,发行工作流将会失败(参见docs/RELEASE.md)。
**下一步:**查看入门指南,了解从身份验证到首次使用 AI 改进提交的 10 分钟完整流程。(仅需 API 密钥参考信息?请参阅身份验证。)
Shell 补全
omni-dev completions <shell> 会将补全脚本输出到标准输出,支持 bash、zsh、fish、powershell 或 elvish。最快的方式是为当前用户配置 bash:
# Add to ~/.bashrc:
eval "$(omni-dev completions bash)"
请参阅 docs/shell-completion.md,了解各 shell 的安装步骤、zsh 所需的 $fpath/compinit 配置以及故障排除方法。
🆚 omni-dev 的对比
omni-dev 涉足两个相邻领域——AI 提交消息工具和 Atlassian/开发工作流 MCP 服务。下表从初次了解的读者最可能关注的维度,对比了现有工具。每个单元格中,✅ 表示完整/原生支持,⚠ 表示部分支持或仅在有条件限制时可用,❌ 表示不支持;我们也同样如实标出了 omni-dev 自身的限制(其对应列中的 ⚠ 标记)。
除了这两个细分领域,omni-dev 还提供一个受监督的守护进程,用于托管浏览器桥接(一种经过身份验证的代理,通过已登录的浏览器标签页发送请求,以访问 Grafana 和 Loki 等受 SSO 保护的仪表板)、一个 Snowflake SQL 服务(多个并发查询可复用一个通过外部浏览器完成的 SSO 会话),以及一个 worktrees 注册表(集中查看所有 VS Code 窗口中打开的仓库),此外还有一个本地的只追加请求日志(omni-dev log)。下表中的工具都没有直接对应这些功能,因此我们在此列出,而不与目标不同的工具进行评分。
与 AI 提交工具对比
| omni-dev | opencommit | aicommits | |
|---|---|---|---|
| 重写指定范围内的现有提交 | ✅ twiddle | ❌ 仅支持提交前处理 | ❌ 仅支持提交前处理 |
| 并行批量处理(长范围) | ✅ --concurrency N | ❌ | ❌ |
| AI 编写 PR 描述 | ✅ git branch create pr | ⚠ 仅支持 GitHub Action | ❌ |
| 感知项目上下文 | ✅ --use-context | ❌ | ❌ |
沙盒化 claude-cli 后端 | ✅ ADR-0028 | ❌ | ❌ |
| 多后端(Anthropic / Bedrock / OpenAI / Ollama) | ✅ | ✅ | ✅ |
| Conventional Commits | ✅ | ✅ | ⚠ 需配置 |
| 语言/运行时 | Rust(静态二进制文件) | Node.js | Node.js |
与 Atlassian 工作流 MCP 服务对比
omni-dev 的 MCP 服务还提供 Git 工具(提交分析、twiddling、创建 PR)、Datadog 工具和 ai_chat 代理——这些都不是专注于 Atlassian 的服务所覆盖的目标。下表仅比较 Atlassian 功能的深度。
| omni-dev MCP | sooperset/mcp-atlassian | Atlassian 官方(Rovo) | |
|---|---|---|---|
| Jira REST 功能范围 | ✅ 36 个工具(敏捷、字段、开发面板、链接、关注者、工时记录、版本、变更日志) | ✅ 49 个工具(以上功能 + JSM、proforma 表单、SLA、批量操作) | ⚠ 14 个工具(仅基础 CRUD、搜索、状态转换、工时记录) |
| Confluence REST 功能范围 | ✅ 25 个工具(历史记录、差异、附件、标签、空间、行内评论 + 页脚评论) | ✅ 24 个工具(历史记录、差异、附件、标签;无行内评论 / 空间) | ⚠ 12 个工具(行内评论 + 页脚评论、空间;无删除 / 移动 / 历史记录 / 差异 / 附件 / 标签) |
| 无损 JFM ↔ ADF 往返转换 | ✅ 完整 ADF 节点集(架构 v56.1.18)+ 不支持节点转义 | ❌ | ⚠ 原始 ADF,取决于模型 |
| 保留锚定的审查评论 | ✅ 往返转换后注释标记仍保留 | ❌ 锚点被剥除,评论变成孤立评论 | ⚠ ADF 携带锚点;取决于模型 |
| 写入前 ADF 架构验证 | ✅ 嵌套关系 + 元数,写入前验证 | ❌ | ❌ |
| 离线 JFM ↔ ADF 转换(无需凭据) | ✅ atlassian_convert | ❌ | ❌ |
| Cloud + Server + Data Center | ⚠ 已验证 Cloud | ✅ Cloud + Server(v6+)+ DC(Jira v8.14+) | ❌ 仅 Cloud |
| 身份验证 | ⚠ 仅 API token | ✅ API token / PAT / OAuth 2.0 | ✅ OAuth 2.1 / API token |
最后验证时间:2026-06-23。omni-dev 和 sooperset 的行均经过实时测试——通过 tools/list 枚举(omni-dev 分支构建版与 ghcr.io/sooperset/mcp-atlassian:latest),并对复杂页面执行实时读取→写入→读取保真度循环。Atlassian Rovo 的服务接受 API token,但会要求组织管理员授权才能执行工具,因此其表格内容结合了 Atlassian 的支持的工具文档与 ADF 透传原理(原始 ADF 可以往返转换,但前提是模型忠实地原样返回——无法确定性保证),而非实时运行结果。每季度更新一次,或在搜索竞品的发布说明时发现相关变更后更新。
📋 核心命令
🤖 AI 驱动的提交信息优化(twiddle)
明星功能——借助实时模型信息展示,智能优化提交信息:
# Improve commits with contextual intelligence
omni-dev git commit message twiddle 'origin/main..HEAD' --use-context
# Process large commit ranges with parallel processing
omni-dev git commit message twiddle 'HEAD~20..HEAD' --concurrency 5
# Save suggestions to file for review
omni-dev git commit message twiddle 'HEAD~5..HEAD' \
--save-only suggestions.yaml
# Auto-apply improvements without confirmation
omni-dev git commit message twiddle 'HEAD~3..HEAD' --auto-apply
🔍 分析命令
# Analyze commits in detail (YAML output)
omni-dev git commit message view 'HEAD~3..HEAD'
# Analyze current branch vs main
omni-dev git branch info main
# Get comprehensive help
omni-dev help-all
🚀 AI 驱动的 PR 创建
使用 AI 生成的描述创建专业的拉取请求:
# Generate and create PR with AI-powered description
omni-dev git branch create pr
# Create PR with specific base branch
omni-dev git branch create pr main
# Save PR details to file without creating
omni-dev git branch create pr --save-only pr-description.yaml
# Auto-create without confirmation
omni-dev git branch create pr --auto-apply
📝 Atlassian 集成
通过命令行读取、编写和管理 JIRA 问题与 Confluence 页面:
# Authenticate with Atlassian Cloud
omni-dev atlassian auth login
# Check authentication status
omni-dev atlassian auth status
# Fetch a JIRA issue as markdown
omni-dev atlassian jira read PROJ-123
# Fetch as raw ADF JSON
omni-dev atlassian jira read PROJ-123 --format adf
# Push markdown changes back to JIRA
omni-dev atlassian jira write PROJ-123 issue.md
# Interactive edit: fetch, edit in $EDITOR, push
omni-dev atlassian jira edit PROJ-123
# Search issues with JQL
omni-dev atlassian jira search --project PROJ --status Open
# Create an issue
omni-dev atlassian jira create issue.md --project PROJ --summary "Fix bug"
# Transition an issue
omni-dev atlassian jira transition PROJ-123 "In Progress"
# Confluence: read, search, create pages
omni-dev atlassian confluence read 12345
omni-dev atlassian confluence search --space ENG --title auth
omni-dev atlassian confluence create page.md --space ENG --title "New Page"
# Convert markdown to ADF JSON (offline)
omni-dev atlassian convert to-adf input.md
可自托管的 PAT 无需电子邮件,使用 atlassian auth login --auth-mode bearer 即可。
请参阅 PAT 身份验证与兼容性限制;
大多数服务操作仍面向 Cloud API。
📊 Datadog 集成(只读)
通过 Datadog API 进行身份验证,并查询指标、监控器、仪表板、 日志、事件、SLO、主机和停机时间。完整的子命令参考、身份验证 设置、速率限制行为和故障排查,请参阅 Datadog 集成 指南。
# Configure Datadog API credentials (prompts for API key, APP key, and site)
omni-dev datadog auth login
# Verify the credentials by calling /api/v1/validate
omni-dev datadog auth status
# Query metrics, monitors, dashboards, logs, and SLOs
omni-dev datadog metrics query --query 'avg:system.cpu.user{*}' --from 15m
omni-dev datadog monitor list --tags env:prod
omni-dev datadog dashboard list
omni-dev datadog logs search --filter 'service:api status:error' --from 1h
omni-dev datadog slo list --tags team:platform
DATADOG_SITE 默认值为 datadoghq.com。其他区域(datadoghq.eu、
us3.datadoghq.com、us5.datadoghq.com、ap1.datadoghq.com、ddog-gov.com)
均可识别,不会发出警告。环境变量 DATADOG_API_KEY、
DATADOG_APP_KEY、DATADOG_SITE 会覆盖已保存的设置。对于本地部署
或代理部署,可设置 DATADOG_API_URL 以覆盖根据站点推导的 URL。
所有 Datadog 子命令也都作为 MCP 工具(datadog_*)提供——请参阅
docs/mcp.md。涵盖每个类别并附有实例的完整指南,请参阅 docs/datadog.md。
📧 Gmail 和 📁 Drive(已迁移至 gwi)
gmail 和 drive 命令树(Drive 包含 Docs、Sheets 和 Slides)、其
23 个 MCP 工具以及 omni_dev::{gmail,drive} 库模块已迁移至
gwi(Google Workspace Interface)。这是一个独立
项目,拥有自己的二进制文件(gwi、gwi-mcp)、配置(~/.gwi/)和发布
周期(#2203、
ADR-0095)。gwi import 会将现有的 Gmail 和 Drive
账户、租约设置以及 Drive 租约账本从 ~/.omni-dev 复制过来,且绝不会修改
或删除原始内容。迁移代码读取的环境变量前缀从 OMNI_DEV_ 改为
GWI_;无前缀的 GMAIL_* 和 DRIVE_* 凭据名称保持不变。
在一个发布周期内,omni-dev gmail ... 和 omni-dev drive ... 仍将作为隐藏存根保留;
它们接受任意参数,并以非零状态退出,同时显示指向 gwi 的提示信息。下一个次要版本
将删除这些存根。
🎙️ 转录文本获取
从外部媒体平台获取字幕和转录文本。YouTube 是首个支持的来源; CLI 命名空间和库的设计支持添加其他来源(Vimeo、播客 RSS、通用 VTT/SRT URL), 无需重构。完整参考和添加新来源的步骤,请参阅 docs/transcript.md。
# Fetch captions for a YouTube video as SubRip (default).
omni-dev transcript youtube fetch https://www.youtube.com/watch?v=jNQXAC9IVRw
# WebVTT to a file, falling through to auto-generated captions if needed.
omni-dev transcript youtube fetch jNQXAC9IVRw \
--format vtt --auto --output me-at-the-zoo.vtt
# Synthesise a translated track when no native French track exists.
omni-dev transcript youtube fetch <url> --lang fr --translate fr
# List available caption tracks (manual + auto-generated).
omni-dev transcript youtube list-langs <url>
# Show video metadata (title, channel, duration, languages).
omni-dev transcript youtube info <url> --output json
--format 接受 srt、vtt、txt 或 json。定位符可以是
watch?v= URL、youtu.be/ 短 URL、/shorts/ 或 /embed/ URL,
也可以是 11 个字符的视频 ID。年龄限制或需要登录的视频会以类型化的
PlayabilityRefused 错误呈现,并携带 YouTube 状态码,而不是通用 HTTP 错误。
🌐 浏览器桥接
通过已通过身份验证的浏览器标签页发送 HTTP 请求。调查内部服务(Grafana/Loki、内部仪表板、受 SSO 保护的管理面板)时,浏览器已经持有会话——SSO、OAuth、Cookie——这些信息很难通过编程方式复现。桥接会在浏览器的已验证上下文中发送请求,不会泄露 Cookie 或令牌(这是有意设计的困惑代理)。两端都经过身份验证,且默认关闭;完整指南请参阅 docs/browser-bridge.md,安全设计依据请参阅 ADR-0036。
# Start the bridge; it prints the bound ports, a session token, and a JS
# snippet to paste into the DevTools console of the authenticated tab.
omni-dev browser bridge serve
# Drive requests through the tab (token from the bridge's stdout).
export OMNI_BRIDGE_TOKEN=<token printed by the bridge>
omni-dev browser bridge request --url /loki/api/v1/labels
# POST a JSON payload from a file, with a custom header.
omni-dev browser bridge request --url /api/foo --method POST \
--body @payload.json --header "Accept: application/json"
# Stream a long-lived endpoint (SSE / chunked) instead of buffering.
omni-dev browser bridge request --url /api/events --stream
# Route to a specific tab when several are connected (by id or origin).
omni-dev browser bridge request --url /api/foo --target https://grafana.internal
支持二进制和流式响应正文、通过 X-Omni-Bridge-Target 进行多标签页路由、每个请求的 --credentials 和 --allow-origin 覆盖选项,以及供使用纯 HTTP 的工具使用的透明代理。
🛰️ 守护进程
在一个受监管的进程中托管长期运行的服务,并通过每个用户私有的 Unix 域控制套接字进行管理。浏览器桥接是首个迁移到该机制的服务(随后是 Snowflake 和工作树注册表);在 macOS 上,可选的菜单栏应用还能提供实时控制。daemon start 会安装 launchd LaunchAgent,以便在登录时自动启动;status 会报告所有托管服务。请参阅在守护进程下运行和 ADR-0039 了解架构。
# Start the background daemon (installs a launchd LaunchAgent on macOS)
omni-dev daemon start
# Per-service status (add --json for machines)
omni-dev daemon status
# Restart or stop it
omni-dev daemon restart
omni-dev daemon stop
守护进程仅支持 Unix——其控制平面使用 Unix 域套接字——而 omni-dev 的其余部分可在所有平台上运行。
❄️ Snowflake
通过外部浏览器 SSO 对 Snowflake 会话进行一次身份验证,然后即可跨任意账户并发执行任意 SQL,无需每次查询都弹出 SSO 窗口。守护进程会在内存中持有会话并复用有界连接池,因此每次查询仍可单独设置仓库、角色、数据库和架构。请参阅 docs/snowflake-service.md。
# Run SQL (from an argument or stdin); the first query opens the SSO browser
omni-dev snowflake query "select current_version()"
# Per-query context overrides and JSON output
omni-dev snowflake query "select * from t limit 10" \
--warehouse WH --role ANALYST --database DB --schema PUBLIC --format json
# Inspect or evict live sessions
omni-dev snowflake sessions
omni-dev snowflake disconnect --account <ACCOUNT> --user <USER>
账户、用户和上下文默认从 SNOWFLAKE_* 环境变量读取,其次读取 ~/.omni-dev/settings.json——没有硬编码账户。该服务运行于守护进程,因此仅支持 Unix。
📓 请求日志
每次调用及其发出的 HTTP 请求都会记录到本地的追加式日志中,可供搜索和实时查看。尽力记录且默认启用;绝不会写入机密信息(身份验证标头会被脱敏,正文需选择启用)。请参阅 docs/log.md。
# Recent activity (one line each)
omni-dev log
# Filter by service and status class, or a query expression; follow live
omni-dev log --service jira --status 5xx
omni-dev log --query 'method:POST AND status:4xx' --follow
# Full records as JSON (byte-identical to the on-disk lines)
omni-dev log --format json -n 20
设置 OMNI_DEV_LOG_DISABLE=1 可关闭日志;设置 OMNI_DEV_LOG_BODIES=1 / OMNI_DEV_LOG_HEADERS=1 可选择记录正文/标头。
🗂️ 工作树
在一个实时视图中查看所有 VS Code 窗口中打开的仓库和 Git 工作树。VS Code 扩展宿主按窗口隔离运行——单个扩展无法查看其他窗口的文件夹——因此,我们提供的轻量配套扩展会将每个窗口注册到守护进程,由守护进程汇总成单一注册表,再提供给 CLI、托盘和扩展 UI。注册表仅驻留内存;未注销便崩溃的窗口会自动过期。请参阅 docs/worktrees-service.md 和 ADR-0040。
# One line per open window and its folders (add --json for machines)
omni-dev worktrees list
该服务运行于守护进程,因此仅支持 Unix。
🤖 Agent 会话
跟踪所有终端和 VS Code 窗口中运行的 Claude Code、Codex 和 pi.dev 会话,并显示粗略的实时状态(工作中、空闲或等待你操作)。选择启用的钩子、claude-wrap/codex-wrap 包装器、pi.dev 扩展和转录记录监视器会将信息传送给守护进程;守护进程在内存中维护会话,并将其提供给 CLI、托盘、worktrees ui 和 VS Code 工作树视图。请参阅 docs/sessions-service.md。
# Install the Claude Code (and, when present, Codex and pi.dev) hooks
omni-dev sessions install-hooks
# One line per live session
omni-dev sessions list
该服务运行于守护进程,因此仅支持 Unix。
⚖️ Jev 判断
omni-dev ai jev 是 TypeSafe AI 的 Jev API 客户端,可返回类型化的概率判断,而非生成文本。除了原始的
choice/score/noul/ask 基元外,route 会询问每个 GitHub issue 需要哪个模型层级来进行设计、实现和审查,而 verify-decision 会根据决策评论引用的来源,核验其中的每项声明。详见
docs/jev.md。
# Which model tier should handle these issues?
omni-dev ai jev route '#1779' '#1820' -o text
✏️ 手动修订
# Apply specific amendments from YAML file
omni-dev git commit message amend amendments.yaml
🧩 Claude Code 斜杠命令
将可直接使用的 Claude Code 斜杠命令模板生成到项目的
.claude/commands/ 目录中。每个模板都是一个独立的
工作流,可在 Claude Code 会话中驱动多步骤的 omni-dev 操作。
# Generate all templates: commit-twiddle, pr-create, pr-update
omni-dev commands generate all
# Or individually
omni-dev commands generate commit-twiddle
omni-dev commands generate pr-create
omni-dev commands generate pr-update
每个子命令都会写入 .claude/commands/<name>.md。提交这些文件,即可与协作者共享工作流——Claude Code 会自动识别它们,因此仓库中的任何人都可以在 Claude Code 会话中调用 /commit-twiddle、/pr-create 或 /pr-update。完整参考请参阅
用户指南。
🗒️ Claude 对话历史
将 Claude Code 聊天历史导出到由 .jsonl 文件组成的目录,以便进行行为分析、生成工作日志或供下游工具使用。重新运行时会执行幂等同步:添加新聊天、覆盖已修改的聊天,并跳过未更改的聊天。
# Mirror ~/.claude/projects to ./history/ (one .jsonl per chat, grouped by project slug)
omni-dev ai claude history sync --target ./history
# Limit to one project (encoded slug or decoded cwd path)
omni-dev ai claude history sync --target ./history --project /Users/me/work/repo
# Only sessions touched in the last week
omni-dev ai claude history sync --target ./history --since 7d
# Preview without writing, then prune target files for sessions removed upstream
omni-dev ai claude history sync --target ./history --dry-run --prune
# Render LLM-friendly markdown alongside the raw jsonl (one .md per session)
omni-dev ai claude history sync --target ./history --output-format jsonl,markdown
# Markdown only — suitable for piping into a coaching LLM
omni-dev ai claude history sync --target ./history --output-format markdown
导出内容是行为记录,而非忠实存档。顶层会话 jsonl 会捕获所有提示词、回复、思考块、工具调用和工具结果元数据——这些都是分析所需的信息。有意排除子 Agent 的内部轮次、大型工具输出旁置文件、PDF 页面栅格图和 Claude 的自动记忆;将它们纳入任何由大模型摄取的语料库只会使其臃肿,却不会增加交互模式方面的信息。
进行中的聊天会生成有效的 jsonl 前缀(复制开始时只获取一次源文件大小),因此即使聊天仍在进行,也可以安全同步。目标目录结构与源目录一致——<target>/<slug>/<uuid>.jsonl——并且会保留每个目标文件的源 mtime,让下游工具无需解析每个文件即可按时间顺序排列会话。
--output-format markdown 会在 jsonl 文件旁边(或取而代之)写入派生文件 <target>/<slug>/<uuid>.md。每个 Markdown 文件都包含会话元数据的 YAML frontmatter,后接 ## User / ## Assistant 轮次;工具调用会渲染为 ### Tool call: <name> 块,思考块会折叠到 <details> 中,而子 Agent(Agent)调用只会渲染提示词参数。
Agent 与用户之间的交互会作为一等结构化事件呈现,让分析员大模型了解实际提出的问题以及用户的回应:
AskUserQuestion调用会渲染为### Agent question: <header>,包含问题文本和项目符号选项列表(含描述);对应的用户回复会渲染为## User response。- 工具拒绝会显示为
**Tool result (<tool>, denied by user):**——通过 Claude Code 填入下一个tool_result的标准哨兵文本 "The user doesn't want to proceed with this tool use" 来检测。 - 工具中断(执行过程中按下 Escape)会渲染为
**Tool result (<tool>, interrupted by user):**。 - 错误(真实的工具失败,与用户拒绝不同)会保留
error标签;成功则使用ok。
默认情况下会包含系统提醒、附件和权限模式事件——传入 --exclude-system 可将其排除。Markdown 幂等性仅依据源文件的 mtime(渲染后的长度与源文件长度不同),而 --prune 只会删除扩展名与 --output-format 中列出的格式相匹配的产物。
如需详细说明,请参阅 docs/user-guide.md#ai-claude-history-sync--export-conversation-history;如需了解相关命令(ai chat、ai claude skills),请参阅更广泛的 Claude Code 集成章节。
🔌 MCP 服务
omni-dev 提供可选的 Model Context Protocol 服务,让 AI 助手
(Claude Desktop、Claude Code、MCP Inspector、自定义 Agent)可以通过
stdio 调用 omni-dev,而不必通过命令行调用。该服务作为第二个二进制文件
omni-dev-mcp 提供,并由 mcp Cargo 功能控制(参见
ADR-0021)。
工具涵盖六个领域:
| 领域 | 示例 |
|---|---|
| Git (5) | git_view_commits、git_branch_info、git_check_commits、git_twiddle_commits、git_create_pr |
| JIRA (28) | 核心读取/写入/搜索/转换状态/评论/链接/开发/删除;冲刺、看板、关注者、工时记录、字段、附件、项目、变更日志 |
| Confluence (13) | 读取/写入/搜索/创建/删除/下载/子页面、评论、标签、用户搜索 |
| Atlassian shared (2) | atlassian_auth_status、atlassian_convert(离线 JFM ↔ ADF) |
| Datadog (14) | 指标、监控器、仪表板、日志、事件、SLO、主机、停机时间、指标目录 |
| AI / Config (5) | ai_chat(单次聊天)、claude_skills_*(同步/清理/查看 .claude/skills/ 分发状态)、config_models_show |
通过 URI 模板公开的资源:
| URI 模板 | 返回内容 |
|---|---|
git://repo/commits/{range} | YAML 提交分析 |
jira://issue/{key} | JIRA 工单(JFM 格式) |
jira://issue/{key}.adf | JIRA 工单正文(ADF 格式) |
confluence://page/{id} | Confluence 页面(JFM 格式) |
confluence://page/{id}.adf | Confluence 页面正文(ADF 格式) |
omni-dev://specs/{name} | 内嵌的参考规范(例如 jfm) |
完整的工具目录、资源参考、跨领域参数(output_file、confirm)和
故障排除说明,请参阅 docs/mcp.md。
安装
cargo install omni-dev --features mcp
这会在常规 omni-dev CLI 之外新增第二个二进制文件 omni-dev-mcp。
默认的 cargo install omni-dev 构建不变——除非启用 mcp 功能,否则
不会引入 MCP 依赖项。
Claude Desktop
在 macOS 上编辑 ~/Library/Application Support/Claude/claude_desktop_config.json
(Windows 上编辑 %APPDATA%\Claude\claude_desktop_config.json):
{
"mcpServers": {
"omni-dev": {
"command": "omni-dev-mcp"
}
}
}
Claude Code
按项目配置——在仓库根目录创建 .mcp.json:
{
"mcpServers": {
"omni-dev": {
"command": "omni-dev-mcp"
}
}
}
也可以通过 Claude Code CLI 全局注册:
claude mcp add omni-dev omni-dev-mcp
使用 MCP Inspector 进行冒烟测试
npx @modelcontextprotocol/inspector omni-dev-mcp
Inspector 会打开一个浏览器界面,你可以在其中列出工具和资源、交互式调用 任意工具,并基于当前工作目录获取资源。
配置(settings.json)
可以在 ~/.omni-dev/settings.json 的 mcp 部分一次性设置三个服务默认值,
而不必为每次调用设置环境变量或标志。这三个字段均为可选;如果没有
mcp 配置块,则保持内置行为不变。
{
"mcp": {
"default_model": "claude-sonnet-4-6",
"log_level": "info",
"max_response_bytes": 102400
}
}
| 字段 | 作用 | 回退值 |
|---|---|---|
default_model | 未提供 model 参数时,ai_chat 使用的模型 | 模型注册表默认值 |
log_level | 服务的追踪过滤指令 | warn(环境变量 RUST_LOG 可覆盖) |
max_response_bytes | 截断前工具响应的大小上限(0 表示禁用) | 100 KB |
故障排除说明(stderr 日志、RUST_LOG=debug、“failed to open git
repository”),请参阅 docs/mcp.md#troubleshooting。
⚙️ 配置命令
# Show supported AI models and their specifications
omni-dev config models show
# View model information with token limits and capabilities
omni-dev config models show | grep -A5 "claude-opus-4.1"
🧠 上下文智能
omni-dev 会理解你的项目上下文,以提供更好的建议:
项目配置
在仓库根目录创建 .omni-dev/ 目录:
mkdir .omni-dev
范围定义(.omni-dev/scopes.yaml)
scopes:
- name: "auth"
description: "Authentication and authorization systems"
examples: ["auth: add OAuth2 support", "auth: fix token validation"]
file_patterns: ["src/auth/**", "auth.rs"]
- name: "api"
description: "REST API endpoints and handlers"
examples: ["api: add user endpoints", "api: improve error responses"]
file_patterns: ["src/api/**", "handlers/**"]
提交规范(.omni-dev/commit-guidelines.md)
# Project Commit Guidelines
## Format
- Use conventional commits: `type(scope): description`
- Keep subject line under 50 characters
- Use imperative mood: "Add feature" not "Added feature"
## Our Scopes
- `auth` - Authentication systems
- `api` - REST API changes
- `ui` - Frontend/UI components
🎯 高级功能
智能上下文检测
omni-dev 会自动检测:
- 项目规范:从
.omni-dev/、CONTRIBUTING.md中检测 - 工作模式:功能开发、Bug 修复、文档编写、 重构
- 分支上下文:从分支名称中提取工作类型
(
feature/auth-system) - 文件架构:理解 UI、API、核心逻辑、配置方面的 变更
- 变更重要性:根据影响调整详细程度
自动分批
较大的提交范围会自动拆分为易于管理的批次:
# Processes 50 commits in batches of 4 (default)
omni-dev git commit message twiddle 'HEAD~50..HEAD' --use-context
# Custom concurrency for very large ranges
omni-dev git commit message twiddle 'main..HEAD' --concurrency 2
命令选项
| 选项 | 描述 | 示例 |
|---|---|---|
--fresh | 仅根据差异生成全新的消息(默认;与 --refine 冲突) | --fresh |
--refine | 优化现有消息,而不是从头开始(与 --fresh 冲突) | --refine |
--use-context | 启用上下文智能 | --use-context |
--work-context TEXT | 描述正在进行的工作,以引导建议 | --work-context "feature: user auth" |
--branch-context TEXT | 覆盖从分支名称检测到的上下文 | --branch-context "bugfix: login flow" |
--context-dir PATH | 自定义上下文目录 | --context-dir ./config |
--model MODEL | 要使用的 Claude API 模型(默认值来自设置) | --model claude-sonnet-4-5 |
--beta-header KEY:VALUE | API 请求的 Beta 标头(受模型限制) | --beta-header key:value |
--concurrency N | 并行处理提交的数量(默认值:4) | --concurrency 3 |
--no-coherence | 跳过跨提交一致性优化步骤 | --no-coherence |
--no-ai | 跳过 AI;改为采用确定性的类型/范围建议,只修改不符合规范的提交 | --no-ai |
--auto-apply | 无需确认,直接应用 | --auto-apply |
--allow-pushed | 允许修改已推送到远程主分支的提交 | --allow-pushed |
--check | 应用后验证消息 | --check |
--save-only FILE | 保存到文件而不应用 | --save-only fixes.yaml |
--quiet | 仅显示错误/警告 | --quiet |
完整参考请参阅用户指南的“关键选项”表格;omni-dev git commit message twiddle --help 是权威信息来源。
📖 实际示例
修改前后对比
修改前:杂乱的提交历史
e4b2c1a fix stuff
a8d9f3e wip
c7e1b4f update files
9f2a6d8 more changes
修改后:专业的提交消息
e4b2c1a feat(auth): implement JWT token validation system
a8d9f3e docs(api): add comprehensive OpenAPI documentation
c7e1b4f fix(ui): resolve mobile responsive layout issues
9f2a6d8 refactor(core): optimize database query performance
工作流集成
# 1. Work on your feature branch
git checkout -b feature/user-dashboard
# 2. Make commits (don't worry about perfect messages)
git commit -m "wip"
git commit -m "fix stuff"
git commit -m "add more features"
# 3. Before merging, improve all commit messages
omni-dev git commit message twiddle 'main..HEAD' --use-context
# 4. Create professional PR with AI-generated description
omni-dev git branch create pr
# ✅ Professional commit history + comprehensive PR description ready for review
参与贡献
欢迎贡献!详情请参阅贡献指南。
开发环境设置
-
克隆仓库:
git clone https://github.com/rust-works/omni-dev.git cd omni-dev -
安装 Rust(如果尚未安装):
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -
构建项目:
cargo build -
运行构建脚本(包括测试、Lint 和格式化):
./scripts/build.sh或逐项运行:
cargo test # Run tests cargo clippy # Run linting cargo fmt # Format code
📚 文档
- 快速入门 - 10 分钟快速指南,从安装到提交首个经 AI 优化的提交(从这里开始)
- 用户指南 - 包含示例的全面使用指南
- 配置指南 - 设置上下文智能
- 为什么选择 JFM? - 说明 omni-dev 为何以 Markdown 而非原始 ADF 编辑 Atlassian 内容
- API 文档 - Rust API 参考
- 故障排除 - 常见问题及解决方案
- 示例 - 实际使用示例
- 发布流程 - 供贡献者参考
🔧 要求
- Rust:1.88+(从源代码安装时需要)
- Claude API Key:AI 功能所需
- 请参阅身份验证,了解
配置方法(环境变量、
.env或 CI/CD 密钥)
- 请参阅身份验证,了解
配置方法(环境变量、
- AI 模型选择:可选配置特定模型
- 查看可用模型:
omni-dev config models show - 在 AI 命令中使用
--model按次选择,或通过OMNI_DEV_MODEL/ 各后端的环境变量链配置(Claude 系列后端使用CLAUDE_MODEL、CLAUDE_CODE_MODEL、ANTHROPIC_MODEL;OpenAI 使用OPENAI_MODEL;Ollama 使用OLLAMA_MODEL),也可在~/.omni-dev/settings.json中配置 - 支持标准标识符和 Bedrock 风格格式
- 查看可用模型:
- Atlassian 凭据(用于 JIRA/Confluence 功能):实例 URL、电子邮件地址和
API 令牌
- 使用以下命令配置:
omni-dev atlassian auth login
- 使用以下命令配置:
- Datadog 凭据(用于 Datadog 功能):API 密钥、应用程序密钥和站点
- 使用以下命令配置:
omni-dev datadog auth login
- 使用以下命令配置:
- Git:任意现代版本
AI 后端选择
omni-dev 支持五种 AI 后端。--ai-backend 标志可在 AI 命令(git commit message twiddle、git commit message check、
git commit message staged、git branch create pr、ai chat)之后使用,也可通过
OMNI_DEV_AI_BACKEND 设置,用于明确选择以下后端之一:default、claude-cli、
openai、ollama 或 bedrock:
--ai-backend claude-cli— 在沙盒中运行claude -p子进程,并复用 你的 Claude Code 会话。--ai-backend ollama— 本地 Ollama 或 LM Studio 服务。--ai-backend openai— OpenAI Chat Completions API。--ai-backend bedrock— AWS Bedrock。--ai-backend default(或不使用标志) — 直接调用 Anthropic API。
未设置 OMNI_DEV_AI_BACKEND 时,旧版变量 USE_OLLAMA=true /
USE_OPENAI=true / CLAUDE_CODE_USE_BEDROCK=true 仍会按此顺序选择
对应后端。
请参阅 AI 后端指南,了解所需的环境变量、
模型选择、Claude CLI 沙盒及其绕过选项
(--claude-cli-allow-tools、--claude-cli-allow-mcp)、--claude-cli-max-budget-usd 支出上限,以及各后端的故障排除方法。
🐛 调试
如需排查问题并获取详细日志,请使用 RUST_LOG 环境变量:
# Enable debug logging for omni-dev components
RUST_LOG=omni_dev=debug omni-dev git commit message twiddle ...
# Debug specific modules (e.g., context discovery)
RUST_LOG=omni_dev::claude::context::discovery=debug omni-dev git commit message twiddle ...
# Show only errors and warnings
RUST_LOG=warn omni-dev git commit message twiddle ...
请参阅故障排除指南,了解详细的调试信息。
更新日志
请参阅 CHANGELOG.md,查看各版本的变更列表。
许可证
本项目采用 BSD 3-Clause 许可证授权,详情请参阅 LICENSE 文件。
支持
致谢
- 感谢所有帮助改进本项目的贡献者!
- 使用 Rust 构建,❤️ 致敬
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。
