技能潮 SkillTide 提交收录
官方说明开源项目7 天前
swimmesberger/Elarion

swimmesberger/Elarion

AI-native .NET framework — module-based handlers wired at compile time and exposed as JSON-RPC, HTTP & MCP…
在 GitHub 查看 ↗直链 · 无中转页
官方说明arion-banner-transparent-light.svg" Module-based handler pipelines, compile-time registration, JSON-RPC hosting, MCP tools for AI agents, and scheduled jobs.** Declare intent next to your code; let source generators do the wiring.
★ 数取值
1 ★ · swimmesberger/Elarion · 取自该仓库的 GitHub 页面 · (2026-10-16 20:00:20 核对)
来源明细
从该仓库的 GitHub 页面直接读取 · 条目类型:开源项目
收录与活跃
收录于 2026-10-10 · 最近见到 2026-10-10 · 共见到 2 次 · 被 1 个来源列出
评分构成
综合分 103 · 1 ★ · 1 个来源 · repo
常见问题(答案都来自我们的记录)
怎么安装?
我们【没有】从该仓库取到安装命令(我们的 install 覆盖率只有约 4%)。请看它的 README 或 releases 页。
它适合谁 / 用来做什么?
我们把它归在这些标签下: 开源项目。标签来自条目自身,不是我们强加的分类。
谁维护它、还在更新吗?
仓库 swimmesberger/Elarion;我们收录于 2026-10-10;最近见到 2026-10-10。这里没有"官方认证"或"质量评级"——我们只记录来源与时间。
第三方质量标记

**Module-based handler pipelines, compile-time registration, JSON-RPC hosting, M

以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →

jobs.**
Declare intent next to your code; let source generators do the wiring. No runtime reflection scanning.
**AI-native by design:** the same handlers that power your API are exposed to AI agents
as MCP tools — generated from your code at compile time, with no separate tool
definitions or duplicated schemas.
---
Elarion's central idea is simple: **your application assemblies define modules and handlers; your
host assembly only wires infrastructure, transport, and deployment.** Everything that can be
discovered from your code — handlers, services, scheduled jobs, RPC methods, validation metadata, EF Core
DbSets — is emitted by source generators at compile time instead of scanned by reflection at
startup.
That one class is a use case, a registered service, a JSON-RPC method, an **MCP tool for AI agents**,
and (optionally) a schema-exported TypeScript contract — with **no entry added to any Program.cs
registration list.** The operation name is optional: [Handler] alone infers {module}.{operation} by
convention (here clients.get), while an explicit name is recommended for stable public/wire contracts.
Why Elarion
- **Compile-time, not reflection** — handlers, services, modules, RPC maps, validation metadata, and
scheduled jobs become ordinary DI code. Startup is deterministic and AOT-friendly; missing wiring
is a build error, not a runtime surprise.
- **Modules own their surface** — a module is a namespace plus an [AppModule] marker. Add a handler
under it and the module publishes it automatically.
- **Transport-neutral results** — handlers return Result with a transport-agnostic AppError;
the host maps failures to JSON-RPC, HTTP, or anything else.
- **One bus, many surfaces** — every handler maps onto a single transport-neutral HandlerDispatcher
(Elarion.Abstractions.Dispatch); JSON-RPC and MCP are thin **adapters** over that one bus, each serving
only the operations flagged for it. Define a handler once and choose its surfaces with the Transports
flag.
- **End-to-end JSON-RPC** — mark a handler with [Handler], export a schema at build time, and
generate a typed TypeScript + Zod client.
- **Validation that reaches the contract** — DataAnnotations on the request DTO are enforced by a
generated pipeline decorator under every transport **and** exported to the JSON-RPC schema, OpenAPI,
MCP tool schemas, and the Zod client (which pre-validates requests). One declaration, four surfaces;
business rules stay in the handler, inside the transaction (ADR-0027).
- **AI-native, no extra code** — expose the same [Handler] handlers to AI agents as an
MCP server. MCP is an adapter over the shared HandlerDispatcher, so a
tool is just a handler flagged HandlerTransports.Mcp. Tool names, descriptions, and input schemas are
generated from your handlers and [Description] attributes at compile time — no separate tool layer, no
duplicated schemas, no runtime reflection. Choose a handler's transports with
[Handler(Transports = …)] (JSON-RPC, MCP, or both) and rename a tool with [McpHandler].
- **Feature flags & variants** — every flag is declared once with exactly one owner (a resolver class or
the host's backend) and checked at compile time; gate any handler with [FeatureGate]; a generated decorator
evaluates the flag before the handler runs and a closed gate returns **404 Not Found**, so a
disabled feature is indistinguishable from one that doesn't exist (the name is never leaked).
[FeatureVariant] swaps a [Service] implementation per user behind a flag. Both work identically
来源
github · https://github.com/swimmesberger/Elarion
按领域浏览
开源项目
Traction
1 ★
收录于
7 天前

更多开源项目

查看开源项目全部 731 条 →

所属领域与标签

每个标签都能点进去看同类的全部条目。数字是当前库里的真实条数。

浏览全部领域 →

← 返回索引