开发者文档 新手入门
概览
allybuild 提供三个集成面:任务脚本运行时、通过 SDK 使用的平台 API,以及 OpenAI 兼容的 LLM 网关。
你能集成什么
每个 allybuild 任务都在隔离沙箱中运行,并预装 AllyBuild SDK。在任务脚本里你可以:
- 实时向平台回报阶段与进度
- 创建、等待并检查同项目内的其他任务
- 读取 agent 名册、工作区与任务记忆
- 调用项目暴露的 MCP 工具
- 用响应式 store 持久化跨运行状态
- 用后台服务响应项目状态变化
- 通过 OpenAI 兼容网关调用 LLM,无需管理 API key
核心概念
| 概念 | 说明 |
|---|---|
| 元任务(Meta-task) | 可复用的任务定义:阶段、参数 schema、脚本、所属 agent |
| 任务实例 | 元任务的一次执行,带有状态、当前阶段与进度 |
| Agent | 有名有姓的团队成员:模型、provider、skills 与其负责的元任务 |
| 工作区 | 任务运行所在的沙箱目录,项目团队共享 |
| 记忆 | 过往运行沉淀的经验,按元任务可检索 |
| 审批关卡 | 任务停在 pending_approval、等待人工决策的检查点 |
| Cron | 按 cron 表达式定时派发元任务的计划 |
| 服务 | 绑定到工作区的长时间运行的后台进程 |
任务脚本契约
任务脚本是上传到任务槽 /workspace/.allybuild/slots/{task_id}/ 的单个 task_script.py 或 task_script.ts 文件——平台会把 workflow 模块与 starter 入口物化到它旁边。脚本从工作区目录运行,每次执行预算 300 秒。导出一个 run 入口即可——其余全部来自 workflow 模块:
def run(params: dict, reporter) -> None:
reporter.set_phase("拉取数据")
reporter.set_progress(30)
rows = fetch_rows(params["source"])
reporter.set_progress(90)
write_report(rows)TypeScript 以驼峰命名的 reporter 方法镜像同一契约:
export async function run(
params: Record<string, unknown>,
reporter: { setPhase: (s: string) => void; setProgress: (n: number) => void },
) {
reporter.setPhase("拉取数据")
reporter.setProgress(30)
}注入的环境变量
| 变量 | 说明 |
|---|---|
| TASK_ID | 当前运行的任务实例 id |
| PROJECT_ID | 所属项目 id——所有 API 读写的范围 |
| TASK_JWT | 平台 API 与 LLM 网关的 Bearer 凭据 |
| ALLYBUILD_API_URL | 平台 API 基址,含 /api 前缀 |
| TASK_PARAMS | JSON 编码的 run() 入参 |
| ALLYBUILD_PROJECT_TOKENS | 项目作用域 token 的 JSON 映射 |
| BG_SERVICE_ID | 脚本作为后台服务运行时设置 |
| ALLYBUILD_WORKSPACE_ID | 后台服务绑定的工作区(如有) |
快速开始:第一个任务
下面这个 Python 脚本读取参数、调用 LLM 网关、回报进度,并派生一个后续任务:
from openai import OpenAI
def run(params: dict, reporter) -> None:
reporter.set_phase("总结")
gateway = f"{ALLYBUILD_API_URL.removesuffix('/api')}/v1"
llm = OpenAI(base_url=gateway, api_key=TASK_JWT)
resp = llm.chat.completions.create(
model="deepseek-chat",
messages=[{"role": "user", "content": f"总结:{params['text']}"}],
)
summary = resp.choices[0].message.content
reporter.set_progress(60)
reporter.set_phase("派发评审")
tid = create_task(
"reviewer",
name=f"review-{TASK_ID[:8]}",
params={"summary": summary},
)
return {"summary": summary, "review_task": tid}本地安装 SDK
pip install allybuild-sdk # Python 3.10+
npm install @allybuild/sdk # Node.js >= 18接下来阅读认证,然后按需查阅指南——任务与调度、Agent 与技能、状态与记忆、发布与 fork——以及 Python 或 TypeScript SDK 参考获取完整接口面。