Skip to content

Latest commit

 

History

History
95 lines (57 loc) · 4.65 KB

File metadata and controls

95 lines (57 loc) · 4.65 KB

Sortie —— 将工单系统中的工单转化为智能体会话

下一个迭代,不再受限于人力。

开源编程智能体编排器。
将工单系统中的工单转化为自主编程智能体会话。智能体无关,工单系统无关,并行运行。

CI codecov

文档 · 参与贡献

English | 简体中文

Sortie 假定你的编程智能体在手动运行时已经能够产出有价值的成果。它围绕智能体处理并行调度、隔离工作区、带重试的持久化状态、CI 反馈、评审意见和成本追踪。Sortie 不会提升智能体本身的输出质量。

安装

curl -sSL https://get.sortie-ai.com/install.sh | sh

或通过 Homebrew 安装:brew install sortie-ai/tap/sortie

要解决的问题

编程智能体已经能够胜任日常工程任务——修复缺陷、更新依赖、补充测试覆盖、实现功能——前提是拥有良好的系统提示词、恰当的工具权限,并在代表性工单上经过验证。然而,要在规模化场景下运行这些经过验证的智能体,所需的基础设施尚不存在:隔离的工作区、重试逻辑、状态协调、工单系统集成、成本追踪。各团队只能临时拼凑,质量参差不齐,且每次实现方式各不相同。

Sortie 就是这套基础设施。

运行原理

在目标代码仓库旁定义一个 WORKFLOW.md 文件:

---
tracker:
  kind: github
  api_key: $GITHUB_TOKEN
  project: acme/billing-api
  query_filter: "label:agent-ready"
  active_states: [todo, in-progress]
  handoff_state: review
  terminal_states: [done]

agent:
  kind: claude-code
  max_concurrent_agents: 4
---

You are a senior engineer.

## {{ .issue.identifier }}: {{ .issue.title }}

{{ .issue.description }}

Sortie 监视该文件,轮询匹配的工单,为每个工单创建隔离的工作区,并使用渲染后的提示词启动智能体。剩余工作由 Sortie 处理:停滞检测、超时强制执行、带退避的重试、与工单系统的状态协调,以及工单到达终态后的工作区清理。工作流变更无需重启即可生效。

agent.kind 字段用于选择每次会话运行的编程智能体。Sortie 内置了 Claude Code、Copilot 和 Codex 的适配器——只需一行改动即可切换。完整配置详情参见适配器参考文档,完整工作流示例参见 examples/

架构

Sortie 是一个单一 Go 二进制文件。它使用 SQLite 存储持久化状态(重试队列、会话元数据、运行历史),并通过 stdio 与编程智能体通信。编排器是所有调度决策的唯一权威;不依赖外部任务队列或分布式协调。完整架构详情参见 docs/architecture.md

工单系统和编程智能体通过适配器接口集成。为新的工单系统或智能体添加支持是一种增量变更:在新包中实现对应接口即可。

已支持的工单系统:GitHub Issues 和 Jira。已支持的智能体:Claude Code、Copilot 和 Codex。技术选型的详细依据参见 docs/decisions/

文档

完整的配置参考、CLI 用法和入门指南:docs.sortie-ai.com

先前工作

Sortie 的架构借鉴了 OpenAI Symphony——一个规范优先的编排框架,附带 Elixir 参考实现。Sortie 在以下方面有所不同:语言选择(Go,简化部署)、持久化方案(SQLite 取代内存状态)、可扩展性(可插拔适配器,支持任意工单系统和智能体,而非硬编码为 Linear 和 Codex)、以及完成信号机制(由编排器管理交接状态转换,而非完全依赖智能体主动写入工单系统)。

为何取名 "Sortie"

Sortie 是一个军事和航空术语,指一次自主执行的单独任务。这个隐喻恰如其分:编排器将智能体派遣执行任务(工单),每个任务拥有独立的工作区、明确的目标和预期的回报。名称简短,两个音节,跨语言均可发音,且不与该领域中已有项目冲突。

路线图

当前状态和优先级参见项目看板

许可证

Apache License 2.0