使用说明
枫树
用于代理可观察性、安全控制和行为演化的统一MCP服务器。
Maple是高级代理的“哨兵+Git”层:
- 观察每一步
- 重播/分叉有风险的分支
- 对护栏进行审计和干预
- 从匿名痕迹中学习,以发展更安全的技能
内置于 mcp-use +Apps SDK小部件。
实施了什么
1) 可观察性+控制
observe_session:捕获和渲染时间线小部件replay_fork:从任何步骤分支并向前模拟audit_risk:规则+异常风险仪表板guard_action:允许/阻止/等待隔离支持ingest_session_event:将外部网桥事件流式传输到活动跟踪中
2) ML异常检测(简单嵌入)
ml_anomaly_report:基于嵌入的行为异常检测- 轻量级哈希嵌入+余弦相似性基线
- 支持匿名共享痕迹的社区基线
3) 网络效应
share_trace_anon:匿名化跟踪模式并将其发布到共享池suggest_evolved_skills:从共享痕迹中生成进化技能建议- 行为签名+共享数据集创造复合数据优势
4) YC应用层(护城河/牵引力/收入)
yc_app_brief:根据产品指标生成的实时YC就绪叙事- 强调:
- 护城河:追踪+分叉+风险标签数据飞轮
- 牵引力:OpenClaw集成和安全干预活动
- 收入:免费增值阶梯(免费,专业版9美元,团队版29美元,企业版99美元)
MCP工具
observe_sessionreplay_forkaudit_riskml_anomaly_reportguard_actioningest_session_eventshare_trace_anonsuggest_evolved_skillsyc_app_brieflist_tracesexport_trace
API终点
GET /healthGET /judge(判断独立页面)GET /api/tracesGET /api/traces/:traceIdGET /api/community/statsGET /api/community/tracesGET /api/yc/brief?focus=full|moat|traction|revenueGET /api/firewall/statePOST /api/firewall/chatPOST /api/firewall/decision(严格的预执行允许/阻止门)
关键项目文件
index.ts:工具+路线编排src/core/risk-engine.ts:规则引擎+嵌入异常集成src/ml/embeddings.ts:简单的嵌入实现src/ml/anomaly-detector.ts:余弦sim异常检测src/network/anonymizer.ts:匿名跟踪转换src/network/shared-trace-store.ts:社区池+技能建议src/strategy/yc-narrative.ts:护城河/牵引力/收入叙事构建者resources/trace-timeline/widget.tsxresources/replay-simulator/widget.tsxresources/risk-dashboard/widget.tsx
快速开始
npm install
npm run dev
检查员: http://localhost:3000/inspector
硬编码演示堆栈(OpenClaw+Maple)
此仓库现在包含一个硬编码的演示设置:
- 打开OpenClaw网关
ws://127.0.0.1:19001 - 打开OpenClaw桥接适配器
http://127.0.0.1:8787 - 此版本中已禁用Maple网关身份验证
- 启动时生成的网桥令牌(或通过env提供)
OPENCLAW_VERSION=<pin-a-version> npm run demo:install-openclaw
npm run demo:up
然后打开:
- 法官GUI:
http://localhost:3000/judge - 检查员:
http://localhost:3000/inspector
引导演示模式(无手动JSON)
法官GUI现在有 引导演示控件 因此,您可以在不使用检查器复制/粘贴的情况下运行整个流程:
- 打开
/judge等待自动连接 - 点击
Run Full Flow
或者逐步执行:
1) Start2) Audit3) Block4) Fork
法官页面现在包括 防火墙聊天 在“控制”视图中:
- 问自然语言问题(“状态更新”、“为什么被阻止?”、“下一步我们该怎么办?”)
- 聊天回复由实时防火墙上下文生成(
/api/firewall/state)
这使用内部演示API:
POST /api/demo/startPOST /api/demo/auditPOST /api/demo/blockPOST /api/demo/forkPOST /api/demo/full
demo:up 也会在macOS上自动打开这两个页面(设置 DEMO_OPEN_BROWSER=0 禁用)。
单跟踪代理操作日志记录(黑客马拉松)
为了获得可靠的判断演示,请运行一个稳定的跟踪并将每个操作附加到它上面。
npm run trace:demo
这有什么作用:
- 启动(或重用)一个稳定的跟踪
sessionId - 通过日志记录所有代理操作
POST /api/openclaw/events使用相同traceId - 包含
type,actor,prompt/message,command,url,toolName,独一无二eventId - 运行飞行前防火墙预览,并将Maple的阻止/允许消息记录到同一跟踪中
打开 http://localhost:3000/judge,然后选择打印的跟踪ID进行查看 #0, #1, #2....
如果你想将其集成到你自己的运行时中,请使用:
scripts/maple-trace-logger.mjslogAction(...)对于一般事件logWebGet(...),logMarketplaceSearch(...),logMarketplaceToolCall(...)包装器
例子:
import { createMapleTraceLogger } from "./scripts/maple-trace-logger.mjs";
const logger = createMapleTraceLogger({
baseUrl: "http://localhost:3000",
sessionId: "maple-live",
});
await logger.startRun({ reuseLatest: true });
await logger.logAction({
type: "tool_call",
actor: "agent",
toolName: "web_get",
prompt: "Fetch provider docs",
url: "https://docs.mcp.so/providers",
});
黑客马拉松网关模式(9个精心策划的MCP工具)
单一来源黑客马拉松路由的典型初创公司(本地+铁路):
npm start
等效本地别名:
npm run hackathon:up
这将启动本地下游MCP应用程序(toolhub)路由锁定Maple,因此所有下游呼叫都通过它。
在此版本中,市场模式被正式禁用;仅通过已清除的下游应用程序执行。
包含的工具(涵盖范围广泛):
web_search(一般网络搜索)web_fetch(浏览器样式的页面获取/提取)wikipedia_summary(百科全书知识)github_repo_info(代码/仓库智能)weather_forecast(实时实际数据)slack_post_message(通过Slack进行消息集成)hn_search(Hacker news上的实时技术/新闻发现)arxiv_search(学术/研究论文搜索)openlibrary_search(书籍和出版物查询)
Slack配置 slack_post_message:
- 传入webhook模式:设置
SLACK_WEBHOOK_URL - 机器人模式:设置
SLACK_BOT_TOKEN并且可选SLACK_DEFAULT_CHANNEL
验证端到端接线:
npm run hackathon:verify
停止服务:
npm run hackathon:down
实施文件:
scripts/hackathon-toolhub.mjs(配备9个工具的下游MCP服务器)scripts/hackathon-up.sh(在确定性路由锁定模式下启动toolhub+Maple)scripts/hackathon-verify.sh(通过Maple对路由工具调用进行冒烟测试)scripts/hackathon-down.sh(停止Maple+工具中心)
停止本地演示进程:
npm run demo:down
环境
MCP_URL=http://localhost:3000
OPENCLAW_BRIDGE_URL=http://localhost:8787
OPENCLAW_BRIDGE_TOKEN=your_token
MAPLE_ALLOW_NO_AUTH=true
MAPLE_LOCK_BRIDGE_TARGET=true
observe_session 只有当 source=auto.
为了 source=openclaw,网桥故障作为错误返回(无静默模拟降级)。
认证
- Maple身份验证在此黑客马拉松版本中被故意禁用。
- MCP端点(
/mcp,/sse)以及内部API(/api/*)不需要API密钥或登录。 GET /health仍公开进行部署健康检查。
桥梁封锁(枫树优先路线)
- 集
MAPLE_LOCK_BRIDGE_TARGET=true拒绝每个请求bridgeUrl/token覆盖。 - 默认情况下,桥接覆盖被拒绝。
- 可选的仅本地覆盖:
MAPLE_ALLOW_BRIDGE_OVERRIDE=true. - 在生产中,桥接超控锁会自动启用。
- 在生产中,
OPENCLAW_BRIDGE_URL和OPENCLAW_BRIDGE_TOKEN必须明确设置。 - 这将强制所有OpenClaw网桥流量通过配置
OPENCLAW_BRIDGE_URL+OPENCLAW_BRIDGE_TOKEN. - 覆盖尝试返回
403 Bridge override denied.
执行前防火墙决策API
POST /api/firewall/decision在执行之前评估候选动作。enforce=true(默认):在拒绝时将决定保留到跟踪和隔离中。enforce=false:预览模式(无跟踪突变),适用于模拟运行检查。
防火墙状态聊天API
GET /api/firewall/state返回跟踪/会话的规范化实时防火墙上下文。POST /api/firewall/chat使用该上下文回答状态问题。- 身体接受
message,可选traceId/sessionId,以及includeContext. POST /api/chat/stream为Judge UI聊天机器人提供动力,并可以在提供程序回退的情况下使用AI。- 如果
OPENAI_API_KEY和ANTHROPIC_API_KEYMaple启用AI模式并自动回退。 - 如果两个模型提供程序都失败,Maple将退回到基于确定性规则的防火墙答案。
可选聊天模型环境变量:
OPENAI_API_KEY=sk-...
ANTHROPIC_API_KEY=sk-ant-...
MAPLE_FIREWALL_CHAT_PRIMARY=openai # openai | anthropic
MAPLE_FIREWALL_CHAT_OPENAI_MODEL=gpt-4o-mini
MAPLE_FIREWALL_CHAT_ANTHROPIC_MODEL=claude-sonnet-4-6
MAPLE_FIREWALL_CHAT_TIMEOUT_MS=15000
防火墙强化(受mcpwall启发)
Maple现在在风险评分之前对每个跟踪步骤强制执行确定性防火墙策略检查:
- 高风险行为的首发规则(
pipe-to-shell破坏性命令、凭证/秘密访问) - 秘密扫描+标记就地编辑:
[REDACTED BY MAPLE] - 自动隔离(
guardStatus=block)当拒绝规则生效时 - JSONL防火墙审核日志位于
~/.maple/firewall-logs/YYYY-MM-DD.jsonl
可选环境变量:
MAPLE_FIREWALL_ENABLED=true
MAPLE_FIREWALL_DEFAULT_ACTION=allow # allow | deny | log_only
MAPLE_FIREWALL_LOG_DIR=~/.maple/firewall-logs
演示脚本(2-3分钟)
observe_session在OpenClaw会议上audit_risk暴露危险步骤ml_anomaly_report显示嵌入异常guard_action阻止危险的步骤replay_fork通过安全编辑阻止步骤share_trace_anon发布匿名模式suggest_evolved_skills来自社区数据yc_app_brief展示护城河/牵引力/收入叙事
示例通话
{
"tool": "ml_anomaly_report",
"input": {
"traceId": "<trace-id>",
"useCommunityBaseline": true,
"threshold": 0.58,
"topAnomalies": 5
}
}
{
"tool": "share_trace_anon",
"input": {
"traceId": "<trace-id>",
"taskLabel": "Inbox triage",
"objective": "Safely automate inbound support triage",
"tags": ["support", "email", "guarded"]
}
}
{
"tool": "suggest_evolved_skills",
"input": {
"query": "safe inbox triage automation",
"limit": 3,
"minConfidence": 0.4
}
}
电流限制
- 黑客马拉松速度的持久性在记忆中
- 嵌入模型故意简单(快速+局部)
- 防火墙聊天可选外部模型提供者;规则模式在没有它们的情况下工作
部署
npm run deploy
铁路部署(推荐)
是的,Maple可以在有生产保障的铁路上运行。
此回购现在包括 railway.json,因此Railway可以自动使用规范设置:
- 构建命令:
npm run build - 启动命令:
npm run start - 健康检查路径:
/health
所需的环境变量:
NODE_ENV=production
HOST=0.0.0.0
MCP_URL=https://<your-railway-domain>
MAPLE_ALLOW_NO_AUTH=true
MAPLE_LOCK_BRIDGE_TARGET=true
OPENCLAW_BRIDGE_URL=<bridge-url-reachable-from-railway>
OPENCLAW_BRIDGE_TOKEN=<bridge-token>
MAPLE_FIREWALL_ENABLED=true
重要提示:
- 铁路提供
PORT自动;不要硬编码它。 scripts/hackathon-start.sh铁路安全吗,不再需要当地.env文件启动。- 在此分支中,Maple默认情况下在禁用身份验证的情况下运行。
- 不要使用
localhost为了OPENCLAW_BRIDGE_URL除非桥在同一个集装箱内运行。 - 如果演示期间网桥连接不可用,请使用
source=mock确保UI+护栏的流畅运行。
