feat: DETA Agent Plugins 首发
一份产物、多宿主壳:同一目录既是 Codex 插件(.codex-plugin + .mcp.json + skills), 也是 dsh 组合包(dsh.bundle + cordis.patch.yml),能力本体以 MCP 服务提供、多宿主复用。 - Codex:插件市场 + deta 插件(默认市场与 API key 市场两份索引) - dsh:组合包 manifest + 配置层(本地 stdio / 远程 streamable-http 两种形态) - 技能:deta:aml-design(AML 唯一事实源、编译校验、围护结构统计、空间邻接) - 文档:双壳架构对照、本地迭代(cachebuster)、已验证缺陷与上游限制
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
{
|
||||
"name": "deta",
|
||||
"version": "0.1.0+codex.20260910023121",
|
||||
"description": "DETA \u5efa\u7b51\u6027\u80fd\u8bbe\u8ba1\u63d2\u4ef6\uff1a\u4ee5 AML \u4e3a\u552f\u4e00\u4e8b\u5b9e\u6e90\u7f16\u8f91\u5efa\u7b51\u6a21\u578b\uff0c\u7ecf GSA \u7f16\u8bd1\u4e3a\u5efa\u7b51\u6a21\u578b\u5e76\u505a\u89c4\u5219\u6821\u9a8c\u3002",
|
||||
"author": {
|
||||
"name": "DETA",
|
||||
"url": "https://deta.city"
|
||||
},
|
||||
"homepage": "https://deta.city",
|
||||
"license": "Proprietary",
|
||||
"keywords": [
|
||||
"architecture",
|
||||
"aml",
|
||||
"building-performance",
|
||||
"energy",
|
||||
"bim",
|
||||
"design"
|
||||
],
|
||||
"skills": "./skills/",
|
||||
"interface": {
|
||||
"displayName": "DETA \u5efa\u7b51\u6027\u80fd\u8bbe\u8ba1",
|
||||
"shortDescription": "AML \u5efa\u7b51\u6a21\u578b\u8bfb\u5199\u3001\u7f16\u8bd1\u4e0e\u6821\u9a8c",
|
||||
"longDescription": "\u5728\u7f16\u7801\u4ee3\u7406\u4e2d\u76f4\u63a5\u64cd\u4f5c\u5efa\u7b51\u6a21\u578b\uff1a\u8bfb\u53d6\u4e0e\u7f16\u8f91 AML \u8bbe\u8ba1\u6e90\u7801\uff0c\u7ecf\u7f16\u8bd1\u5668\u7f16\u8bd1\u4e3a\u5efa\u7b51\u6a21\u578b\uff0c\u6267\u884c\u8bed\u6cd5\u4e0e\u89c4\u5219\u6821\u9a8c\u3001\u56f4\u62a4\u7ed3\u6784\u7edf\u8ba1\u4e0e\u7a7a\u95f4\u90bb\u63a5\u67e5\u8be2\u3002AML \u662f\u5efa\u7b51\u8bed\u4e49\u7684\u552f\u4e00\u4e8b\u5b9e\u6e90\uff0c\u6240\u6709\u51e0\u4f55\u7f16\u8f91\u5747\u843d\u5230 AML \u6587\u672c\u3002",
|
||||
"developerName": "DETA",
|
||||
"category": "Education & Research",
|
||||
"capabilities": [
|
||||
"Interactive",
|
||||
"Read",
|
||||
"Write"
|
||||
],
|
||||
"brandColor": "#2F6F4E",
|
||||
"websiteURL": "https://deta.city",
|
||||
"defaultPrompt": [
|
||||
"\u8bfb\u53d6\u5f53\u524d AML \u8bbe\u8ba1\u6e90\u7801\u5e76\u8bf4\u660e\u5efa\u7b51\u6784\u6210\u3002",
|
||||
"\u5728 AML \u4e2d\u4fee\u6539\u6307\u5b9a\u7a7a\u95f4\u7684\u5c42\u9ad8\uff0c\u7136\u540e\u91cd\u65b0\u7f16\u8bd1\u6821\u9a8c\u3002",
|
||||
"\u7edf\u8ba1\u5f53\u524d\u6a21\u578b\u7684\u56f4\u62a4\u7ed3\u6784\u9762\u79ef\u4e0e\u5916\u7a97\u9762\u79ef\u3002"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"mcpServers": {
|
||||
"deta": {
|
||||
"command": "./bin/deta-mcp.sh",
|
||||
"args": [],
|
||||
"cwd": ".",
|
||||
"env_vars": [
|
||||
"DETA_SERVER_ROOT",
|
||||
"ANT_HEADLESS_WORKSPACE"
|
||||
],
|
||||
"default_tools_approval_mode": "approve",
|
||||
"supports_parallel_tool_calls": false
|
||||
}
|
||||
}
|
||||
}
|
||||
Executable
+24
@@ -0,0 +1,24 @@
|
||||
#!/usr/bin/env bash
|
||||
# DETA 领域服务 MCP stdio 启动器
|
||||
#
|
||||
# 依赖:node + 已构建的领域服务(默认 ~/Dev/ant/ant-copilot 的 dist/src/headless/mcp-server.js)
|
||||
# 可用环境变量:
|
||||
# DETA_SERVER_ROOT 领域服务仓库根目录(缺省 ~/Dev/ant/ant-copilot)
|
||||
# ANT_HEADLESS_WORKSPACE AML 工作目录(缺省 <cwd>/workspace,供底层服务读取)
|
||||
set -euo pipefail
|
||||
|
||||
ROOT="${DETA_SERVER_ROOT:-$HOME/Dev/ant/ant-copilot}"
|
||||
ENTRY="$ROOT/dist/src/headless/mcp-server.js"
|
||||
|
||||
if ! command -v node >/dev/null 2>&1; then
|
||||
echo "[deta] 未找到 node,请先安装 Node.js" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -f "$ENTRY" ]; then
|
||||
echo "[deta] 未找到 $ENTRY" >&2
|
||||
echo "[deta] 请先构建领域服务(npm run build)或设置 DETA_SERVER_ROOT" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
exec node "$ENTRY" "$@"
|
||||
@@ -0,0 +1,32 @@
|
||||
# DETA 组合包(dsh bundle)配置层
|
||||
#
|
||||
# 挂载方式:dsh plugin --profile <name> add <本包>
|
||||
# 本层只做一件事:把 DETA 领域能力作为 MCP 服务挂进 harness。
|
||||
# 工具以 mcp__deta__<tool> 暴露(与 Codex 侧同名)。
|
||||
#
|
||||
# ── 公开发布形态(远程端点,推荐)─────────────────────────────
|
||||
# 服务端化完成后启用本节,并删除下面的本地 stdio 节。
|
||||
#
|
||||
# - insert:
|
||||
# - id: deta-mcp
|
||||
# name: '@deepseek-ai/dsh-mcp-client'
|
||||
# config:
|
||||
# serverName: deta
|
||||
# transport: streamable-http
|
||||
# url: https://deta.city/workspace-api/mcp
|
||||
# headers:
|
||||
# Authorization: !!js '`Bearer ${process.env.DETA_TOKEN ?? ''}`'
|
||||
#
|
||||
# ── 本地形态(当前可用:本机已构建的领域服务,stdio)─────────
|
||||
# 需要 DETA_SERVER_ROOT 指向已构建的领域服务仓库(缺省见启动器脚本)。
|
||||
- insert:
|
||||
- id: deta-mcp
|
||||
name: '@deepseek-ai/dsh-mcp-client'
|
||||
config:
|
||||
serverName: deta
|
||||
transport: stdio
|
||||
command: node
|
||||
args:
|
||||
- !!js '`${process.env.DETA_SERVER_ROOT ?? process.env.HOME + "/Dev/ant/ant-copilot"}/dist/src/headless/mcp-server.js`'
|
||||
env:
|
||||
ANT_HEADLESS_WORKSPACE: !!js process.env.ANT_HEADLESS_WORKSPACE ?? ''
|
||||
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"name": "deta-plugin",
|
||||
"version": "0.1.0",
|
||||
"description": "DETA 建筑性能设计:AML 建筑模型读写与编译校验(Codex 插件 / dsh 组合包 双壳)",
|
||||
"type": "module",
|
||||
"license": "Proprietary",
|
||||
"files": [
|
||||
"cordis.patch.yml",
|
||||
"skills",
|
||||
".codex-plugin",
|
||||
".mcp.json",
|
||||
"bin",
|
||||
"README.md"
|
||||
],
|
||||
"dsh": {
|
||||
"bundle": {
|
||||
"patch": "./cordis.patch.yml"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
---
|
||||
name: aml-design
|
||||
description: 以 AML 为唯一事实源读写建筑模型并编译校验。当用户要求创建/修改建筑方案、房间布局、层高、开洞、围护结构或做建筑性能相关的模型准备时使用。
|
||||
---
|
||||
|
||||
# DETA 建筑性能设计(AML)
|
||||
|
||||
## 何时使用
|
||||
|
||||
用户提到建筑方案、房间/空间布局、层高、墙体开洞(门窗)、围护结构、体形系数、
|
||||
建筑模型校验,或需要为后续能耗/日照/CFD 模拟准备模型时使用本技能。
|
||||
|
||||
## 铁律
|
||||
|
||||
1. **AML 是建筑语义的唯一事实源**。任何几何或属性变更都必须落到 AML 文本,
|
||||
不得用中间 JSON 表达修改意图。
|
||||
2. **禁止凭记忆编写 AML 结构**。动手前必须先取真实语法:
|
||||
- 已有模型:`read_source`(读当前 AML)
|
||||
- 语法规则:`get_aml_schema`(从编译服务实时获取,唯一权威)
|
||||
3. **属性知识不硬编码**:房间用途、构造材料、洞口参数等可选值从工具返回中获取,
|
||||
不要凭经验列举。
|
||||
4. **局部修改优于整体重写**:改单个空间属性时只改该空间,不重写整个模型。
|
||||
5. **控制单会话工具调用量**。编码代理在会话累积较多本插件工具调用后,会在请求里重复
|
||||
声明 `deta` 命名空间,上游模型服务(Responses 兼容层)直接拒绝:
|
||||
`Duplicate namespace name 'deta'; Namespace names must be unique`。
|
||||
实测触发点随会话长度前移(并发调用会显著提前触发)。规程:
|
||||
- 同一轮只调用一个本插件工具,不要并发;
|
||||
- 单会话保持轻量,完成任务后另起会话继续;
|
||||
- 一旦出现该错误,**停止重试并告知用户重开会话**(工作区文件不会丢失)。
|
||||
|
||||
## 标准工作流
|
||||
|
||||
1. `read_source` 读取当前设计源码(`aml.xml`)。模型为空时先用 `generate_aml`
|
||||
按需求生成骨架,再用 `get_aml_schema` 核对语法。
|
||||
2. 编辑:直接修改 AML 文本(工作区文件的 edit/write),或使用领域工具。
|
||||
3. `apply_design` 提交编译 → 编译为建筑模型,产物落盘 `building.json`。
|
||||
4. `validate_model` 做语法与规则校验,逐条读取错误码并修复,不得跳过。
|
||||
5. 需要几何指标时用 `envelope_stats`(围护结构/外窗面积)或 `query_spatial_graph`
|
||||
(空间邻接与查询)。
|
||||
|
||||
## 错误处理
|
||||
|
||||
- 编译服务未在线时,编译/校验类工具会返回明确错误文本。此时**不要伪造结果**,
|
||||
直接报告「编译服务未接入」,只使用可离线工作的读写类工具。
|
||||
- 编译报错必须逐条修复后重新 `apply_design`,禁止在报错状态下声称完成。
|
||||
|
||||
## 工具一览
|
||||
|
||||
设计源码:`read_source`、`edit_source`、`get_design_params`、`read_reference`、`run_script`
|
||||
生成与语法:`generate_aml`、`get_aml_schema`
|
||||
编译与校验:`apply_design`、`validate_model`、`envelope_stats`、`query_spatial_graph`、
|
||||
`generate_candidates`
|
||||
项目与计算:`list_projects`、`list_buildings`、`analyze_building`、`parameter_sweep`
|
||||
Reference in New Issue
Block a user