确定性逻辑
用于 fetches、transforms、branches、loops、parallel work、waits 和 nested pipeline calls 的纯 TypeScript steps。像普通 code 一样 type-check、refactor、test 和 version。
构建类型化 TypeScript pipelines,把确定性 code、单次 inference 和完整 agent loops 放在 default-deny 权限与自有 gateway 之后。用同一种模块形态运行快速自动化、cron jobs、webhooks、durable approvals 和 persistent chat workflows。
$ npm install -g skelm
$ skelm init my-bot && cd my-bot && npm install
$ skelm run workflows/hello.workflow.mts --input '{"name":"world"}'
workflow 是类型化 TypeScript 模块。直接使用确定性 code、model inference 和 agent loops;当需要 schedules、webhooks、queues 或 durable state 时,同一个 workflow 可由 gateway 托管。
用于 fetches、transforms、branches、loops、parallel work、waits 和 nested pipeline calls 的纯 TypeScript steps。像普通 code 一样 type-check、refactor、test 和 version。
一次 model call,带类型化 input 和 structured output。`infer()` 用于没有 tool loop 的 LLM 判断,可由 OpenAI-compatible endpoints、Anthropic、Pi、Vercel AI 或 custom backends 支持。
完整 agent steps,包含 tools、MCP servers、skills、workspaces 和 default-deny permissions。Backends 包括 @skelm/agent、Opencode、Pi、Codex、Vercel AI、ACP agents 和 custom providers。
每个 privileged action 都通过 gateway,并受 code 中声明的 permissions 约束。无法执行声明 permission 的 backend 会在 step start 失败,而不是静默绕过。
来自当前 examples 的 incident response:并行 deterministic triage,然后执行一个带有明确 tools、MCP、filesystem 和 network permissions 的 agent step。
import { agent, code, parallel, pipeline } from 'skelm'
import { z } from 'zod'
export default pipeline({
id: 'incident-response',
input: z.object({
incidentId: z.string(),
service: z.string(),
description: z.string(),
}),
output: z.object({
rootCause: z.string(),
immediateActions: z.array(z.string()),
}),
triggers: [{ kind: 'webhook', path: '/webhooks/incident' }],
steps: [
parallel({
id: 'triage',
steps: [
code({ id: 'search-issues', run: () => ({ issues: [] }) }),
code({ id: 'open-channel', run: () => ({ channel: 'inc-001' }) }),
],
}),
agent({
id: 'root-cause',
backend: 'opencode',
prompt: (ctx) => `Analyze this incident:\n${ctx.input.description}`,
permissions: {
allowedTools: ['gh.search_issues', 'slack.post_message'],
allowedMcpServers: ['github'],
allowedExecutables: [],
fsRead: [],
fsWrite: [],
networkEgress: { allowHosts: ['api.github.com', 'slack.com'] },
},
output: z.object({
rootCause: z.string(),
immediateActions: z.array(z.string()),
}),
maxTurns: 4,
}),
],
})
skelm 以聚焦的 packages 发布。安装 meta-package `skelm` 获取 runtime 和 CLI,然后按需添加 backend、integration、memory、metrics 或 tracing packages。
skelmMeta-package — 安装这个。它 re-export @skelm/core,提供 skelm CLI binary,并依赖本地执行所需的 CLI、scheduler 和 integration SDK 组件。
@skelm/coreRuntime、types、builders、schemas、events、permissions、registries、backend interface、system prompt composition 和 pipeline execution primitives。
@skelm/cliCommand-line interface 和 programmatic primitives。非豁免 commands dispatch 到 local gateway;`init`、`validate` 和 `gateway *` 可在没有 live gateway 时运行。
@skelm/gatewayLong-running orchestrator,拥有 config、registries、permissions、audit、agent lifecycle、triggers、HTTP/SSE、dashboard API 和 execution trust boundary。
@skelm/scheduler用于 cron、interval 和 webhook schedules 的 trigger management,支持 deduplication 和 overlap policies;gateway 用它处理 scheduled work。
@skelm/integrations面向 GitHub、Slack、Jira、Telegram、Matrix 和 chat UI trigger sources 等 third-party services 的 typed integration package。
@skelm/integration-sdk用于 custom skelm integrations 和 trigger sources 的 authoring SDK。用它构建可接入 gateway 的 connectors。
@skelm/agentFirst-party native agent backend。针对 OpenAI-compatible chat endpoints 运行 infer() 和 agent(),并进行 in-process TrustEnforcer permission checks。
@skelm/agentmemory用于 cross-session recall 的 typed REST client 与 gateway-wired AgentmemoryHandle。Operations 是 default-deny,并通过 gateway enforcement 路由。
@skelm/opencodeOpencode.ai coding-agent backend,支持 native permission mapping、granular enforcement 和 gateway-supervised lifecycle。
@skelm/piPi coding-agent SDK backend,支持 native tool allowlist enforcement、infer()、sandbox defaults 和 queue controls。
@skelm/codex通过 @openai/codex-sdk 的 OpenAI Codex backend,支持 boundary permission mapping、MCP injection、skill loading、session lifecycle 和 streaming。
@skelm/vercel-aiVercel AI SDK backend,在 skelm policy 下通过 tool filtering 和 call-time permission checks 驱动 infer() 与 agent()。
@skelm/metrics面向 skelm event streams 的 Prometheus-format metrics:run counters、step timings、permission denials、approvals 和 trigger fires。
@skelm/otel面向 skelm event streams 的 OpenTelemetry tracing,发出 run 和 step spans,而不替你配置 exporters。