Skip to content
Conduit

mcp server

sap-nexus-agent

Capability-ontology-driven SAP capability supplier. One call answers one business question; endpoint chains, as-of consistency and approvals are enforced server-side. Orchestration is delegated to any

shrek-abaper/sap-nexus-agentcommunitylistedunreviewed

Set up

Runs on your computer. Pick your agent and operating system.

This project does not publish an install method we can turn into a config. Follow the README instead.

README

synced Oct 28, 2026

把 SAP 业务问题沉淀为业务语义级能力:端点链、asOf 时点一致性、基数归约与审批裁决全部由服务端强制,覆盖域之外显式拒答而非降级凑答。Harness 只做能力选择与展示,换宿主不会换出第二套业务语义。

能力本体建模 · 编译期派生 · 业务语义级能力 · 服务端强制治理 · 全链路血缘 · 可替换 Harness

Apache-2.0 · 自托管 · 无厂商锁定 · SAP On-Prem

License Java Python Node SAP Offline Gate

English · 中文

快速开始 · 目标架构 · 当前架构 · 核心特性 · 目标达成状态 · Harness 可见面 · 已注册能力 · 技术栈


SAP Nexus Agent 的目标是做 SAP 能力的供应方,而不是又一个 SAP Agent。四方各管一件事:能力本体(YAML 单一来源)定义业务对象与业务口径;编译期派生管线离线产出 Capability Manifest,请求期零本体查询;SAP 域能力层暴露业务语义级能力——一次调用回答一个业务问题,内部固化端点链、asOf 一致性与基数归约;Harness(dsh / MCP client / 自有 CLI)只做能力选择、展示与澄清,可整体替换。唯一安全边界是远程 Java Gateway,bindingId、RFC 名、服务 URL、HTTP 方法与凭证引用永不可由 harness 提供或覆盖。

核心原则:事实先于叙事;能力即边界。

上述四方分工中,能力本体与编译期派生管线为目标态,当前实现状态见「目标达成状态」。


快速开始

前置依赖

  • Java 17(无需单独安装 Gradle,仓库自带 services/gateway/gradlew)
  • Python 3.12+
  • Node.js 20+
  • PostgreSQL 16+(主数据实体解析的只读检索投影;启用 ENTITY_RESOLUTION_MODE=on 时需要,pg_trgm 来自 postgresql-contrib)
  • SAP JCo 3 库(用于 SAP 实时执行)
  • SAP On-Prem 连接与凭证(用于实时冒烟测试)
  • OpenAI-compatible LLM 端点与 API Key(DSH Chat / harness-dsh 使用;Rule 模式与离线测试不需要)

无 SAP 连接或凭证时,可运行下方「验证基线」的完整离线测试套件、call-plan eval 与 registry 校验,但无法进行交互式查询——Python Agent CLI 即便使用 --intent-mode rule(免 LLM key)仍会连接 Gateway 执行;DSH Chat / harness-dsh 另需 LLM key。

准备 Python 环境

仓库没有 requirements.txt;agent 包按 agent/pyproject.toml 以 editable 方式安装(test extra 提供 jsonschema,另需 pytest 运行下方测试命令——pytest 未在 pyproject 中声明):

python3 -m venv .venv                          # 需 Python 3.12+
.venv/bin/python -m pip install -e "agent[test]" pytest

环境配置

cp .env.example .env
# 填入 SAP 连接参数(统一为 SAP_ASHOST + SAP_HTTP_PORT / SAP_SYSNR + 共享身份,无 SAP_URL / SAP_REST2RFC_*);
# DSH 使用时另需 LLM_*(或 dsh 专用覆盖 SAP_NEXUS_LLM_*)
# 主数据实体解析(描述→候选→选择→真实编码绑定):ENTITY_RESOLUTION_MODE=on + PG_MASTERDATA_*(见 master-data/README.md)

验证基线(截至 2026-09-26)

.venv/bin/python scripts/validate-registry-contract.py registry/capabilities.yaml
.venv/bin/python -m pytest agent/tests
PYTHONPATH=agent scripts/verify-agent-callplan-evidence.sh
npm --prefix frontend run verify
npm --prefix frontend run release-gate -- --profile all

当前基线:

  • Registry 合约校验:Registry contract valid(deprecation warning 均为 extraction.matchers → binding.sources 迁移提示,不影响合约有效性)
  • Agent 测试套件:全量通过(含少量既有 skip / xfail)
  • Frontend:verify(typecheck + vitest + next build)全绿
  • Call-plan Eval:全部通过(dry-run、derived-parameter 中的 PENDING 项均有用例内书面归因,属设计保留而非失败)
  • Live 等价(gated,需 SAP_REST2RFC_LIVE=1):三个 list 能力迁移后经 SICF 与 JCo 基准逐行、全字段等价(直接 SICF ↔ Gateway 一致)
  • Offline release gate:2026-08-19 达成最高连续等级 L3_ACTION_GOVERNED(历史里程碑;各 hard gate 均无泄漏/绕过,血缘完整;liveSmoke 按离线门禁设计不执行真实 SAP 调用;报告见 runtime/evals/results/agent-release-l3-2026-08-19T13-09-48-499Z.json;2026-08-10 旧报告的取证说明见路线图 §1.1.4)

PYTHONPATH=agent 用于直接验证当前源码树。

启动服务

一键启动(脚本在前台运行,日志在 runtime/dev-services/logs/,Ctrl+C 停止全部;另有 ./start.sh stop / restart):

npm --prefix frontend install   # 首次需要:start.sh 要求 frontend/node_modules 存在
./start.sh

启动后打开 http://127.0.0.1:3000/,根路径自动跳转 /chat(DSH Chat);旧版证据 Workbench 仍在 /workbench。脚本不设置发行版专属的 JAVA_HOME 默认值,未设置时使用系统 Java(须为 17)。

主数据实体解析另需本地 PostgreSQL:sudo service postgresql start,一次性迁移/角色/导入步骤见 master-data/README.md;ENTITY_RESOLUTION_MODE 保持 off(默认)时无需 PG,旧编码路径行为完全保持。也可以按下面分步手动启动:

终端 1 — Gateway:

set -a; . ./.env; set +a
cd services/gateway
./gradlew --no-daemon bootRun

如系统默认 JDK 不是 17,先自行 export JAVA_HOME=<JDK 17 路径>(不要再写死发行版专属路径)。

终端 2 — OData 微服务(采购订单能力需要):

cd services/odata-service
PYTHONPATH=. python -m odata_service.server   # :8081

终端 3 — DSH Chat(推荐入口,需要 LLM key):

set -a; . ./.env; set +a
SAP_NEXUS_AGENT_ROOT=$(pwd) \
SAP_NEXUS_GATEWAY_URL=http://127.0.0.1:8080 \
npm --prefix frontend run dev

打开 http://127.0.0.1:3000/chat(根路径自动跳转;经典 Workbench 仍在 /workbench)。

可选 — harness-dsh 独立 CLI(另开终端,需先启动上面的 Next facade):

cd harness-dsh
npm ci && npm run build
cp .env.example .env      # OpenAI-compatible 端点/key;SAP_NEXUS_FACADE_URL 默认 http://127.0.0.1:3000
npm start -- "A100 在 1000 工厂够不够用、在途多少?"

可选 — Python Agent CLI(不经 harness,Rule 模式无需 LLM key,但仍需可达的 Gateway 与 SAP 连通):

PYTHONPATH=agent .venv/bin/python -m sap_nexus_agent.cli \
  "A100 在 1000 还有多少可用库存?" \
  --gateway-url http://127.0.0.1:8080 --intent-mode rule

目标架构(Agent 建设目标)

下图是本项目的目标架构(Agent 建设目标),不是当前仓库现状;当前实现见下一节「当前架构概览(现状)」。架构图只画目标形态,不含进度、数量或日期;仅当分层、层间责任、契约红线或派生关系发生变化时才更新。实现进度统一记录在下方「目标达成状态」与实施路线图 §1.1。读图主线:定义在顶、推理在编译期、治理在能力内、体验可替换。立场为「四方各管一件事」:能力本体(YAML 单一来源)、编译期派生管线(离线产出 Capability Manifest)、SAP 域能力层(业务语义级、核心资产)、Harness(可替换的编排与展示)。


当前架构概览(现状)

体验层 · Harness(可替换)
  ┌──────────────────────────────┐  ┌──────────────────────────────────┐
  │ harness-dsh CLI(独立 Node 包) │  │ DSH Chat Workbench(/chat)       │
  │ dsh T-A-O 循环 · 钉 0.1.5-rc.1 │  │ 浏览器 + 服务端 in-process dsh     │
  └──────────────┬───────────────┘  └────────────────┬─────────────────┘
                 │ HTTP POST /api/semantic-tools      │ 进程内直接调用
                 └──────────────────┬─────────────────┘
                                    ▼
  ┌─────────────────────────────────────────────────────────────────────┐
  │ Next.js 服务端(:3000)                                                │
  │ Semantic Tool Facade(契约 v2 · 形状校验 · 技术键注入 fail-closed)     │
  │ executeSemanticTool = 服务端治理唯一入口(HTTP facade 与 dsh 共用)      │
  │ agent-runtime-adapter:spawn Python Agent 子进程                        │
  │ Composition Runtime:PlanExecutor · durable node ledger ·              │
  │   Projection · Recommendation · grounded Narrative · governed Action   │
  └────────────────────────────────┬────────────────────────────────────┘
                                   │ registered capabilityId only
                                   ▼
  ┌─────────────────────────────────────────────────────────────────────┐
  │ Java Gateway(:8080 · 唯一安全边界)                                    │
  │ 参数校验(能力本体约束)· 执行器路由(JCO_RFC / ODATA / REST_JSON)       │
  │ TechnicalExecutionResult · 结果归一化 · 脱敏 / 审计                      │
  └─────────┬──────────────────────────────┬────────────────────────┬────────┘
            ▼                              ▼                        ▼
  ┌──────────────────────┐     ┌──────────────────────────┐  ┌──────────────────────┐
  │ SAP JCo(RFC/BAPI)    │     │ odata-service(:8081)     │  │ SICF rest2rfc        │
  └──────────┬───────────┘     │ Python 只读微服务 ·         │  │ 纯 ABAP 动态反射网关  │
             │                 │ $filter 组装               │  │ (SAP 系统内部)       │
             │                 └────────────┬─────────────┘  └──────────┬───────────┘
             └──────────────┬───────────────┘                           │
                            ▼                                           ▼
                                  SAP On-Prem 系统

旁路:Python Agent CLI(sap_nexus_agent.cli)可不经 harness 直连 Gateway(rule / llm intent);
经典 Workbench /workbench 与 DSH Chat 共用同一 agent-runtime + composition 治理链。

当前架构限制(设计选择,非缺陷)

  • Run/Session、principal ownership、approval、lease/idempotency 与 cursor SSE 已 durable 化;但当前本地 JSONL/file store 和 placeholder principal 仍不是 shared multi-worker/HA store 或生产身份系统(多宿主前必须替换,见目标架构支撑面)
  • 编译期派生管线(Capability Manifest)、业务口径本体(Definition)、字段级 FactType schema 与关系图尚在目标态规划中,当前 registry 仍是端点级能力注册表
  • Knowledge/RAG、自由 Tool Calling、通用 Dynamic Planner、多 WRITE/Saga 和自动补偿仍为 Reserved / Not In Scope
  • 图数据库和 OWL 推理运行时为预留方向,当前 JSON Schema + Registry Validator 承担一致性职责

核心特性

业务语义级工具面与服务端强制治理(核心差异点)

  • 业务语义级工具面(Semantic Tool 契约 v2):harness 只见 4 个业务工具(见下文「Harness 可见面」),不出现 capabilityId / rfcName / bindingId / URL / 凭证;技术键注入在 facade 层 fail-closed
  • 同一条服务端强制治理链:HTTP facade 与 in-process dsh handler 共用 executeSemanticTool,意图选择、CallPlan、校验、审批全部在服务端;harness 进程内没有任何直连 Gateway / RFC / 绑定 / 凭证的调用面(harness-dsh/tests/architecture.test.ts 锁定)

主数据实体解析(描述 → 候选 → 选择 → 真实编码)

  • 本体驱动的实体解析:用户只给出物料/客户/供应商的描述或简称时,系统经注册的 MD.*.Search 只读能力从本地 PostgreSQL 检索投影搜索真实候选(固定参数化 SQL + pg_trgm 补充),以一等 ENTITY_CHOICE 状态展示候选卡片(按钮或"第二个 / 苏州那家 / 都不是"),确认后把真实编码绑定到原业务能力参数并恢复执行。模型无权编造编码;编码形状检查不替代存在性与权限检查
  • 保守确认与失效语义:仅"精确编码 + 可见 + 有效"可直接绑定(附验证证据),其余一律用户确认;快照/配置/权限漂移使旧选择安全失效。ENTITY_RESOLUTION_MODE(默认 off)关闭时旧编码路径行为完全保持
  • PG 是只读检索投影,不是第二权威源:full snapshot 原子发布、幂等导入、只读角色;维护入口 maintain CLI(upsert/deactivate/export 均经受治理批次,见 master-data/README.md)

可替换 Harness(DSH 打样)

  • 两个 harness 形态:harness-dsh/ 独立 Node CLI(dsh T-A-O 循环,经 HTTP 调 semantic-tool facade)与 Next.js 内置的 DSH Chat(/chat,服务端 in-process dsh runtime,支持流式推理轨迹、工具卡与审批交互);根路径 / 已 307 跳转至 /chat
  • 版本 pin:@deepseek-ai/dsh-* 精确钉 0.1.5-rc.1、@deepseek-ai/cordis 钉 4.0.2;preview 期任何升级都是独立变更评审

当前语义层:端点级能力注册表

以下字段与机制均为已实现的端点级能力注册表语义;能力本体(业务对象 / 业务口径 Definition / 关系图)尚未落地——状态见「目标达成状态」。

  • Capability Ontology — 每个 SAP 操作(查询/写入)被建模为形式化能力,包含 ontologyIri、semanticType、输入/输出语义类型、事实类型引用
  • 语义参数映射 — 能力输入参数通过 semanticName/semanticType 关联到本体概念(如 MaterialNumber、Plant),与 SAP 技术参数(MATERIAL、PLANT)解耦
  • 执行器绑定 — 能力绑定到特定执行器(JCO_RFC / ODATA),通过白名单 bindingId 控制,运行时拒绝替换
  • 本体约束 runtime — constraint_runtime.py 基于 rdflib + pyshacl:构建期 codegen 从 registry 生成 SHACL 形状并绑定 snapshot,请求期做参数形状校验与前置条件 SPARQL 求值(查询计划预编译缓存);严格 resolve/enforce 分离——只回答"形状是否满足",阻断与执行仍由确定性代码负责。更重的图平台(Semantica)经 spikes/semantica-shadow 评估后当前不引入
  • OWL 预留 — ontologyIri 和 semanticType 为更重的本体推理预留迁移路径;当前一致性门禁由 JSON Schema + Registry Validator + 上述 SHACL runtime 共同承担
  • 声明式意图解析 — Rule 模式意图解析完全声明驱动(registry/capabilities.yaml 的 intent 块 + registry/semantic-types.yaml 语义类型目录),添加新能力无需修改 Agent 代码

治理与安全

  • fail-closed — 不支持的执行器类型(CDS_ADT / SQL_READ)默认拒绝执行;凭据缺失或非法时任何执行器均 fail-closed
  • 参数注入防护 — 调用者不得提供或覆盖 rfcName、bindingId、服务 URL、HTTP 方法、凭证引用、原生 SQL、CDS 对象等;semantic-tool facade 对技术键做任意深度扫描
  • READ 安全边界 — READ 能力不得调用 BAPI_TRANSACTION_COMMIT 或 BAPI_TRANSACTION_ROLLBACK
  • WRITE 人工审批 — WRITE 能力(采购申请创建 / propose_replenishment 提案)必须存在已记录的人工确认(exact-subject)才执行;审批 subject 由服务端计算与校验
  • 全链路审计 — 每次执行生成 TraceSpan / JSONL trace,记录意图→CallPlan→验证→执行→证据→叙述的完整链路

执行器家族

类型状态说明
JCO_RFC✅ Live通过 SAP JCo 直接执行 RFC/BAPI
ODATA✅ LiveGateway 薄反向代理 → Python odata-service(:8081)→ SAP OData
REST_JSON✅ Live经 Basic Auth POST 调用 SAP 内部纯 ABAP rest2rfc SICF 网关,registry 映射驱动
CDS_ADT🔒 Fail-closed架构预留
SQL_READ🔒 Fail-closed架构预留

目标达成状态(S1–S5)

对照目标架构的 S1–S5 建设序列评估当前实现(2026-09-26 复核);完整状态表见路线图 §1.1,测试与门禁的具体数字只记录在上方「验证基线」。

  • 序列进度:S1 补证据已完成 · S2(对象主键 + 字段级 schema)未开始 · S3(业务口径 + 关系入本体 + 编译期派生管线)未开始 · S4 能力粒度上移已完成,但越过了 S2/S3 · S5 多宿主验证部分完成(跨宿主一致性门禁已通过;MCP 暴露与第三方 harness 未做)。
  • 层级达成:Harness 体验层、契约边界(四条红线)、SAP 域能力层(4 个业务语义工具,3 读 1 写)、Java Gateway 与执行器(JCO_RFC/ODATA/REST_JSON 均 live)已建成;编译期派生管线与运行时状态层部分(已有手写版本化 JSON Schema 契约 contractVersion=2;本地 JSONL 存储 + placeholder principal);能力本体层(对象/口径/关系)与离线决策回流未动——本体是唯一未上岗的一层。
  • 三条结构性要求:① 能力粒度「已达成,但错位」(4 个业务工具存在,但声明在服务端代码而非本体,端点级已不对外);② 语义资产未达成(字段级 schema、业务口径、关系均为空,工具描述仍手写);③ 身份与审批部分(审批句柄与服务端身份注入已有,调用主体仍占位、存储仍本地)。
  • 下一步是回填而非新建:① CI 门禁要求新增能力输出字段引用 Definition 口径 id(允许占位 id 先行);② 尽早切分 ontology-core(开源)/ ontology-tenant(不公开),本体近空时成本最低;③ 将 4 个已有能力的口径(可用库存 / 逾期 / 信用敞口)从代码逐条上提,同步产出字段级 schema 与首条跨域 link。
  • 唯一实质断点:业务口径固化在服务端代码里,「改一行本体即改变 Agent 行为、零代码改动」的自检判据尚不通过。
  • 离线端到端治理编排主链可用:意图 → CallPlan → 校验/执行 → ExecutionResult → ReasoningFact → 叙述 → durable Workbench 回放 → plan-aware single Action continuation;TypeScript composition coordinator 已接通 PlanExecutor、OutputProjection、Recommendation、grounded Narrative(单能力 CallPlan 主链保持可用)。
  • Python Agent 职责:LLM-first intent、closed-set recall、五态决策和 PlanGraph v2 authoring;作为 Next 服务端按需 spawn 的子进程运行,也可经 CLI 独立运行。
  • Release gate 里程碑:offline L1/L2/L3 gate 于 2026-08-19 达成最高连续等级 L3_ACTION_GOVERNED;规模、四项 hard gates 数值与复现命令见「验证基线」,2026-08-10 旧报告的取证说明见路线图 §1.1.4。
  • SAP 连通性:7 个业务能力均有真实 SAP 执行路径——MM 域经 JCo/OData;SD/FI 三个 list 能力已迁移到 REST_JSON(2026-09-25),经 SAP 内部纯 ABAP rest2rfc SICF 网关返回,迁移后 live 逐行、全字段等价(AP/AR/SD 均已实测)。JCo/ODATA/REST_JSON 三路共用统一地址模型 SAP_ASHOST + SAP_HTTP_PORT(OData 与 SICF 同 ICM 端口)/ SAP_SYSNR(JCo)+ 共享身份;连接值与凭据只存在于 Gateway 受控配置。3 个 MD.*.Search 经 PG_MASTERDATA_READ 访问本地 PG 投影。任何 live WRITE 仍需 exact-subject Human Approval。

Harness 可见面:业务语义工具(契约 v2)

harness 只能命名业务工具与槽位;工具内部由服务端从已注册能力中选择能力链,harness 不构造调用图。

语义工具必填槽位性质服务端能力链(registry 选择)
diagnose_material_supply—READ库存可用性 + 在途采购订单(MM.Inventory.GetAvailability · MM.PurchaseOrder.GetList)
review_customer_exposurecustomerNumber(AR 未清项另需公司代码)READ销售订单净值 + 应收未清项(SD.SalesOrder.GetList · FI.AR.GetOpenItems)
review_vendor_exposurevendor · companyCodeREAD应付未清项(FI.AP.GetOpenItems)
propose_replenishmentmaterial · plant · requiredQuantity · targetDate · purchasingGroupWRITE 草案缺口诊断 → 采购申请提案;执行前 exact-subject 人工审批(MM.PR.CreateDraft)

注:表中为当前服务端实际选择的能力链。目标架构中 review_vendor_exposure 的内部链另含采购订单端点,尚未内化;harness 可见面已从 7 个端点级工具降为这 4 个业务语义级工具(可见面治理封顶 15)。


当前已注册能力(服务端内部)

能力 ID名称执行器SAP 端点状态
MM.Inventory.GetAvailability库存/需求清单查询(MD04)JCO_RFCBAPI_MATERIAL_STOCK_REQ_LIST✅ active
MM.PurchaseOrder.GetList采购订单列表查询ODATAAPI_PURCHASEORDER_PROCESS_SRV✅ active
MM.Material.GetInfo物料主数据查询(基本单位/采购组)JCO_RFCBAPI_MATERIAL_GET_DETAIL✅ active
MM.PR.CreateDraft采购申请创建JCO_RFCBAPI_PR_CREATE✅ active(需人工审批)
SD.SalesOrder.GetList销售订单列表查询(VA05 风格)REST_JSONBAPI_SALESORDER_GETLIST✅ active(live 等价已证)
FI.AR.GetOpenItems客户应收未清项查询REST_JSONBAPI_AR_ACC_GETOPENITEMS✅ active(live 等价已证)
FI.AP.GetOpenItems供应商应付未清项查询REST_JSONBAPI_AP_ACC_GETOPENITEMS✅ active(live 等价已证)
MD.Material.Search物料主数据检索(描述/别名/属性)PG_MASTERDATA_READ本地 PostgreSQL 只读投影✅ active
MD.Customer.Search客户主数据检索PG_MASTERDATA_READ本地 PostgreSQL 只读投影✅ active
MD.Supplier.Search供应商主数据检索PG_MASTERDATA_READ本地 PostgreSQL 只读投影✅ active

共 10 个能力:9 个只读(kind: Function,sideEffect: none)+ 1 个写入(MM.PR.CreateDraft,执行前必须存在已记录的人工确认)。其中 7 个直连 SAP,3 个 MD.*.Search 经 PG_MASTERDATA_READ 访问本地 PG 检索投影(SAP 主数据的导入投影,不是第二权威源)。


仓库结构

agent/                   Python Agent 包:意图、CallPlan/PlanGraph v2、测试与评估
frontend/                Next.js:DSH Chat(/chat)、经典 Workbench(/workbench)、
                         semantic-tool facade、服务端 dsh runtime、composition runtime
harness-dsh/             可替换 harness 打样:独立 Node CLI(dsh T-A-O,钉 0.1.5-rc.1)
services/
  gateway/               Java Spring Boot SAP Gateway(多模块 core/jco/odata/rest/masterdata/app,唯一安全边界)
  odata-service/         Python OData 只读微服务(:8081)
master-data/             主数据实体解析:物理映射、合成 fixtures、PG 启动/迁移/导入/维护说明(README)
db/migrations/           主数据投影 PG schema 迁移(快照注册表、只读视图、pg_trgm 索引、只读角色)
tests/live/              Gated live 等价验证(默认 skip,SAP_REST2RFC_LIVE=1 启用)
registry/                能力注册表和执行器绑定目录(YAML 单一来源)
schemas/                 JSON Schema 契约
ontology/                离线 OWL 本体骨架(预留)
openspec/                Classic 工作流规格与变更归档
runtime/                 运行时 trace、dev-services、gateway-jco 与 release-gate 结果
evals/                   Agent 评估用例
scripts/                 验证和注册表检查脚本
docs/
  wiki/                  架构、路线图、技术选型文档(事实来源)
  comet/                 Native 工作流变更归档
  runbooks/              22 份历史 runbook(已归档,仅作补充查询,非事实来源)

技术栈

层技术
HarnessDSH Chat(Next 内置 dsh runtime,SSE 流式)+ harness-dsh 独立 CLI;@deepseek-ai/dsh-* 精确钉 0.1.5-rc.1、cordis 4.0.2;harness 可替换
AgentPython package + OpenAI-compatible LLM(默认 DeepSeek deepseek-chat)+ Rule 混合
服务端编排React/Next.js 服务端:Semantic Tool Facade、Composition Runtime、durable JSONL store
GatewayJava 17 / Spring Boot / Gradle 多模块(唯一安全边界)
SAP 连接SAP JCo 3 (RFC) + SAP OData (HTTP,经 odata-service) + SICF rest2rfc (HTTP/JSON,REST_JSON);三路共用统一地址与凭据(SAP_ASHOST + SAP_HTTP_PORT / SAP_SYSNR)
主数据投影PostgreSQL 16 + pg_trgm:快照注册表、原子 full-snapshot 发布、只读角色;PG_MASTERDATA_READ executor(Gateway masterdata 模块,HikariCP + pgjdbc)
前端React / Next.js / TypeScript
能力注册YAML + JSON Schema
本体YAML + JSON Schema + 不可变内存图;OWL 骨架 offline;图数据库与编译期派生管线为目标态
Runtime State本地 JSONL/file 持久化的 Run/Session/Approval + JSONL trace;非 shared multi-worker/HA store;共享/量产 durable runtime 待独立 change
认证与授权placeholder principal,尚未产品化;共享环境需 server-owned principal / tenant / role / data scope / ApprovalActor

文档


许可

本项目采用 Apache-2.0 许可证。


快速导航

AGENTS.md / CLAUDE.md项目级 Agent 行为规则
registry/能力注册表(10 个已注册能力)
harness-dsh/可替换 harness(DSH CLI)
frontend/src/server/dsh/服务端 dsh runtime 与语义工具接线
ontology/OWL 本体骨架
evals/评估用例
↑↓ navigate openesc close