智慧农业生态 Agri-Eco

面向分布式农业的 Agent-native 知识基座:Env Recipe 环境配方 + 气候校准 + 物候播期 + 病虫害诊断。零依赖可离线,14 个 MCP 工具。

OtherPythonv1.1.0

智慧农业生态 · 全球分区农业 AI 助手

以数据平台分析为基座,孵化多层级农业 AI 关键节点生态

🎯 项目目标口径(单一权威):见 docs/CORE_OBJECTIVE.md —— 分布式农业的 Agent-native 知识基座。 一句话:把「在哪里种什么、怎么种得好」做成可被任何 AI Agent 直接调用的可执行配置(Env Recipe),以可审计的数据血缘作为可信度资产。 一级目标:让 MCP server 被外部 agent 真实调用(≥500 次 / ≥20 独立调用方)。 阶段门禁数字见 docs/north_star_and_phase_gates.md;全面扫描与提升报告见 docs/full_liftup_assessment_2026-10-08.md。

🚀 已上架官方 MCP Registry:io.github.lm203688/agri-eco v1.1.0(2026-10-08)

curl -s "https://registry.modelcontextprotocol.io/v0.1/servers?search=io.github.lm203688/agri-eco"

🔎 市场入口(4 家全覆盖):

  • 官方 MCP Registry:io.github.lm203688/agri-eco v1.1.0 ✅
  • Smithery:smithery.yaml 已就绪,仓库自动发现(搜索入口)✅
  • Glama:已提交(2026-10-11,POST /api/mcp/servers/submit.data 200),等 Glama 审批邮件补 Dockerfile 后索引(目录入口)🟡
  • LobeHub:lm203688-smart-agri-eco(2026-10-08 自动发现)✅

📋 分发就绪度自检(每次评审/发布前跑一次):

python scripts/check_distribution_readiness.py

一次性验证 10 类分发入口:MCP server / A2A Card / Agent Plugin / Smithery / 官方 Registry / MCPB 包 / CI workflow / Demo 部署 / 市场材料 / GitHub 同步。

CI:41 步 × Python 3.10/3.11/3.12 全绿 · 单测 956 OK · Demo 端点 14/14 · MCPB 构建确定性可复现 · GitHub 本地=远端(差异 0)· Skill 注册表 11/11 一致 · AgriRecipeBench 69/69 通过(四轴齐全:M1 目标预测 25 + M2 状态滚动 21 + M3 反事实响应 17 + M4 跨情境泛化 6,覆盖 8 分区 × 主要作物 × 边界条件)。

🏆 AgriRecipeBench(benchmarks/agri_recipe_bench/)——Env Recipe 环境配方的可复现评测基准,独立于功能回归测试。M15-B1 把用例从 11 扩到 69(四轴全部达标、覆盖 8 分区、含负例与退化检测):

python benchmarks/agri_recipe_bench/run_bench.py                # 跑全部
python benchmarks/agri_recipe_bench/run_bench.py --axis target_prediction --strict
python benchmarks/agri_recipe_bench/run_bench.py --case case_luobo_mediterranean --json
python scripts/expand_bench_cases.py                            # 幂等生成器(重新生成新用例)
  • M1 target_prediction(25 用例):预测值 vs 公开农艺基准,覆盖 8 分区 × 主要作物
  • M2 state_rolling(21 用例):数学边界(周期≥1 / harvest≥start / yield>0),含 adapt_score=0 / 冬季播种 / 超短周期 / 无 recipe 等 5 类边界场景
  • M3 counterfactual(17 用例):6 种扰动类型(adapt_score / growth_cycle / env_recipe_temperature / env_recipe_light / zone_climate / 组合扰动)——反事实机制内核直接证据
  • M4 generalization(6 用例):5 作物跨分区泛化,含退化实现检测(不同分区产量完全相同即失败)
  • 挂钩:SNWM 神农世界模型四轴协议完整版,详见 benchmarks/agri_recipe_bench/docs/PROTOCOL.md

🔐 可验证 AI 三件套(2026-10-11 新增,对标 SNWM 可验证协议与 MCP 2026-08 路线图):

能力响应字段用途
T-3 置信区间recommendation.prediction_interval.{p10,p50,p90}产量 / 采收期 / 周期从单点估计变区间;输入越少区间越宽;confidence.uncertainty 显式声明散布系数与惩罚项
T-1 可信标记_trust_mark.{cert_id, signature, verification_cmd}所有 MCP 工具输出内嵌 SHA256 证书指纹;外部消费者可 python -m core.trust_layer 独立复算
D-4 A2A Card 签名.well-known/agent.json.jwsJWS (HS256) compact serialization,零依赖;AGRI_A2A_SIGNING_KEY 环境变量提供密钥;调用方可用 scripts/verify_agent_card.py 检测篡改
# 生成 A2A Card JWS 签名
AGRI_A2A_SIGNING_KEY="your-secret" python scripts/sign_agent_card.py
# 校验(调用方 / CI 都用这条)
AGRI_A2A_SIGNING_KEY="your-secret" python scripts/verify_agent_card.py

🌱 受控自进化系统(Bounded Self-Evolution)(2026-10-13 新增,对标 SNWM 可验证协议 + Theseus Labs RSI 五级框架 + PenguinHarness 棘轮门禁):

能力实现用途
S1 不可进化区/可进化区.well-known/evolution_zones.json8 项不可进化(可信层/协议契约/schema)+ 7 项可进化(气候/预测/物候/营养/技能);防止自进化侵蚀诚实性
A1 Köppen 栅格抽象(F5)core/climate_grid.py标准库栅格点查询:最近邻 + 3×3 邻居 + 1/d² 权重归一化 → 概率分布(不是单点分类);climate_agent 双后端接入(栅格优先,无栅格显式降级为启发式,evidence.classification_backend 显式标注)
S2/E1 棘轮 CI 硬门禁scripts/run_evolution_ratchet.py内回路飞轮:读 .well-known/evolution_zones.json 的棘轮白名单,跑 evolution benchmark 判分数;不依赖任何外部调用,现在就能转
# 棘轮门禁(CI 硬门禁 / 本地手动跑)
python scripts/run_evolution_ratchet.py                  # 阈值 0.5,默认通过
python scripts/run_evolution_ratchet.py --min-score 0.9  # 提高阈值
python scripts/run_evolution_ratchet.py --check-files    # 只检查白名单文件存在
python scripts/run_evolution_ratchet.py --json           # 供 CI 消费

# Köppen 栅格点查询(抽象层,不依赖真实数据)
python -c "from core.climate_grid import build_synthetic_grid_dict, KoppenGrid; \
g = KoppenGrid(cells=build_synthetic_grid_dict()['cells'], ...); \
print(g.query(40.0, 116.0))"   # → 概率分布 + 项目分区映射

关键设计原则:自进化必须先有"不可进化区",再有"可进化区"——否则"自我改进"会侵蚀项目唯一真实的资产(诚实性与可复现性)。内回路(离线棘轮)是唯一不依赖任何外部条件、现在就能转起来的飞轮,同时服务三个目的:①保证科学改进不退步;②产出对外可引用的评测资产;③喂养 RSI 度量。


🔍 编排层可审计性(Orchestration Audit)(2026-10-14 新增,agent/orchestration_audit.py,29 项单测守卫):

把「诚实暴露不确定性」的元层能力从单点输出(M11 可信层)扩展到多 Agent 协作层(M10 编排层)。落地 per_module_deep_assessment_2026-10-13.md §M10-O2「跨 Agent 一致性检查」+ §M10-O4「编排 trace 可导出」:

能力实现用途
M10-O2 跨 Agent 一致性检查check_cross_agent_consistency(),5 条规则检查 Climate/Crop/Growth/Eco 四个 Agent 之间的结论是否自洽(预算超支、季节冲突、设备无匹配等),冲突显式标注严重度(error/warning/info)而非静默消解
M10-O4 编排 trace 可导出TraceRecord + export_trace_dict/json()每次 pipeline 生成完整调用图(agent/耗时/输入摘要/输出摘要/verify_report)+ SHA256 summary_hash(同输入稳定,可独立复算)
# 完整 pipeline 会自动带 consistency_audit + orchestration_trace
python -c "
from agent.orchestrator import AgriOrchestrator
r = AgriOrchestrator().run_pipeline(
    {'lat':30.0,'lon':120.0,'scene':'balcony','budget_cny':300},
    verify=True, record_memory=False)
print(r['consistency_audit'])
print(r['orchestration_trace']['trace_id'], r['orchestration_trace']['summary_hash'])"

# 单独跑一致性检查
python -c "
from agent.orchestration_audit import check_cross_agent_consistency
# 传入 pipeline result 会得到冲突列表与严重度分级"

关键设计原则:advisory only——审计不阻断流水线、不写回任何 Agent 输出(与 JEV 门控纪律同构);冲突显式暴露给用户,让用户判断严重程度,而不是让系统自作主张「消解」矛盾。这是本项目对多 Agent 编排层的诚实性承诺,与单点输出的 T-1/T-3 证书形成同构。


🛡️ AgriTrust Verified 公共复算 API(2026-10-14 新增,scripts/verify_trust_mark.py + MCP 工具 agri_verify_trust,34 项单测守卫):

把 T-1 可信标记从内部纪律升级为对外公共复算资产。落地 per_module_deep_assessment_2026-10-13.md §M11-T1「可信标记产品化」——外部消费者可独立验证任何 AgriTrust 输出,无需依赖私有代码。

能力实现用途
公共复算 CLIpython scripts/verify_trust_mark.py <mode>4 种验证模式:current(导出)/ check-prefix(结构完整性)/ from-mark(端到端)/ from-certificate(内容一致性 + 可选 --verify-artifacts 磁盘哈希)
MCP 工具agri_decision_path_report(第 23 个工具,v2026-10-16 新增)M16-B2 决策路径可视化报告:将 bp_screen 评分引擎的 decision_path 归因数据导出为结构化报告,供前端可视化或报告系统消费
AgriTrust Verified 徽章artifacts/agritrust_badge.svg + docs/agritrust_verified.md徽章含 signature_prefix + verification_cmd,外部消费者一步到位复算
# 1. 导出当前信任标记供外部下载
python scripts/verify_trust_mark.py current > mark.json

# 2. 用外部 mark 端到端复算(用 issued_at 严格重现 signature)
python scripts/verify_trust_mark.py from-mark mark.json

# 3. 最强验证:不仅证书对象一致,其引用的数据文件也未被修改
python scripts/verify_trust_mark.py current --certificate > cert.json
python scripts/verify_trust_mark.py from-certificate cert.json --verify-artifacts

诚实边界:signature 是内容一致性 SHA256,非密码学签名(无密钥)——它证明"数据未被修改",不证明"我们就是签发者"。这一边界写进 schema 与 verify API 输出,不静默通过,任何降级/缺失都返回 verified=False + 具体原因。这是本项目"可验证 AI"三件套(T-1/T-3/D-4)在对外接口上的延伸。


项目定位

一句话:做分布式农业的 AI 操作系统与数据网络——回答「在哪里种什么、怎么种得好、怎么送到消费者」。

核心架构(对标 SwarmLabs 科研 Agent Infra 的工程路径):

输入(地块信息 / 种植者需求 / 环境参数)
  │
  ▼
┌──────────────────────────────────────────────────────────┐
│  L0  数据底座层   全球分区气候/土壤/水文元数据               │
│    └─ data/zone_meta/ (Köppen 气候带 + FAO 农业分区)      │
├──────────────────────────────────────────────────────────┤
│  L1  多 Agent 协同层(含 L2/L3 专项 Agent)               │
│    ├─ ClimateAgent  气候/水文/土壤分区匹配                  │
│    ├─ CropAgent     作物-分区适配推荐                       │
│    ├─ GrowthAgent   生长周期管理 + 病虫害诊断               │
│    ├─ EcoAgent      多层级生态撮合(供需/社区/设备)        │
│    ├─ PestAgent / NutritionAgent / SeasonAgent 按需调用    │
│    ├─ ForecastAgent(L2) 采收期 / 产量 / 风险预测           │
│    └─ ControlAgent(L3)  生长计划→执行指令 + 执行补偿        │
├──────────────────────────────────────────────────────────┤
│  L2  Skill 注册表   可复用能力模块                         │
│    └─ skills/registry/ (climate_match / crop_adapt / ...) │
├──────────────────────────────────────────────────────────┤
│  L3  可信输出层  evidence + confidence + constraints        │
│    └─ docs/agent_output_contract.md                       │
└──────────────────────────────────────────────────────────┘


覆盖边界(已闭环):分区库现建模 8 个气候带(含 v1.1 新增的热漠 hot_arid 与高原 highland)。 迪拜(波斯湾热漠)→ hot_arid、拉萨(青藏高原)→ highland 现由 ClimateAgent 正确路由(rubric 0.95、给出真实作物推荐), 不再静默归入「亚热带湿润」给出错误方案;v1.1 之前的「显式拒答」降级路径已随分区补齐而关闭。 两新分区的 Env Recipe 与 P3 校准作物已于 2026-10-06 回填,详见 outputs/zone_coverage_decision_2026-09-23.md(历史背景)。

两个诚实性约定(2026-09-23 起生效,均有测试锁死):

  1. monthly_precip_mm 虽是月度序列,但每个元素是月内日均降水(mm/day),不是月累计量。 NASA POWER 与 Open-Meteo 两条路径口径一致,agent/climate_data.py 统一以 PRECIP_UNITS 声明并透传 monthly_precip_mm_units。生态位校准的降水通道依赖「同口径区间命中」,不得对该字段乘天数换算。
  2. 预设城市清单的唯一数据源是 data/preset_cities.json,前端与 MCP Server 均经 agent/preset_cities.py 读取;拉萨/迪拜随 v1.1 已建模(modeled: true),12 城全部有对应分区。

七层生态架构(来自项目战略指引)

⚠️ 口径已修订(2026-10-08):七层是分析框架,不是交付清单。当前阶段只交付 L0-L3;L4/L5/L6 已正式暂缓(判定依据与重新打开条件见 docs/CORE_OBJECTIVE.md §三 N6/N7、§六)。 下表"本项目状态"列已按实测校正,此前"已落地/进行中"的表述存在与代码不符之处,此处一并修正。

层级名称关键节点本项目状态(实测校正)
L6运营生态社区/城市合伙人/数据市场⏸ 正式暂缓(无实现)
L5消费服务采摘即食/本地撮合/认证溯源⏸ 正式暂缓(仅溯源字段留位,无服务实现)
L4业务支撑链路数据/鲜度中枢/损耗预测⏸ 正式暂缓(仅 schemas/linkage_protocol.schema.json 一个 Schema,0 行实现;此前标注"已落地"有误)
L3执行控制水肥一体化/环境调控/执行补偿✅ 已落地(NutritionAgent 水肥 + ControlAgent L3:生长计划→硬件无关 actuator 指令 + 车载/开放环境/设备故障执行补偿)。缺口:execution_log 0 条,闭环未真实验证;needs_gateway 网关未实现
L2模型 AI生长模型/病虫害/决策引擎/世界模型🟡 部分落地(ForecastAgent L2:采收期/产量/风险预测,诚实标注 model=heuristic + WOFOST 物候 + 病虫害规则诊断)。缺口:世界模型未做;eval_pest_diagnosis_topk / eval_recipe_expert_adoption 两项核心 eval pending
L1感知层传感器/摄像头/边缘AI🟡 最弱环节(agent/vision.py 63 行可插拔后端,未配置即规则降级)。注意:PlantVillage 无 license(原仓库无 LICENSE 文件),不可商用;合规替代为 PlantDoc (CC BY 4.0)。传感接入协议 0 行代码
L0数据底座气候/土壤/水文/光照★ 当前重点(8 分区已闭环 / 152 配方 / 113 双源校准 / 8 源血缘)。缺口:微气候选址未做;CMIP7 未接入;第三源未融合

核心模块

模块路径用途
多 Agent 协同框架agent/气候/作物/生长/生态四 Agent + 病虫害(PestAgent) + 养分(NutritionAgent) 按需调用
统一编排器agent/orchestrator.py四 Agent 流水线(run_pipeline)+ call_skill 按需技能路由 + 技能目录(list_skills)
农业分区数据data/zone_meta/全球农业分区元数据
Skill 注册表skills/registry/可复用农业 AI 能力
可信输出契约docs/agent_output_contract.md每条建议的证据/置信度/适用条件
项目评估docs/project_evaluation.md评审维度逐项自评
战略指引docs/planning/项目战略指引.md七层架构与商业设计
执行方案docs/planning/项目执行方案.md分阶段路线图
规划/战略/GOAI 合集docs/planning/10 份早期规划、战略与 GOAI 竞品分析(已归档归类,便于溯源)
开源生态对接docs/OPEN_SOURCE_INTEGRATION.md七层架构生态位补全映射(扫描→对接)+ 用户分步操作指引(启用 cropgraph MCP / 配置视觉后端 / 提供 PAT 推送)
反馈闭环引擎engine/flywheel.py种植结果回流 → 适配评分校准(主动学习)
交互式 Demoapp/零依赖 http.server 站点:坐标 → 四 Agent 方案 + AgriTrust 证书
数据扩展脚本scripts/enrich_crop_data.py每气候带补充适生作物至 ≥18 种
端到端验证scripts/verify_all.py多城市 pipeline + Trust 证书 PASS/FAIL
Skill 自动生成engine/skill_factory.py新作物/能力点 → 自动生成符合 Schema 的 Skill
单元测试scripts/test_*.py 系列700+ 项 unittest(零依赖),覆盖四 Agent + PestAgent + NutritionAgent + SeasonAgent + SoilProfile + ForecastAgent(L2) + ControlAgent(L3) + Orchestrator 统一路由 + 视觉后端降级 + Trust + flywheel + Env Recipe 契约 + 数据完整性守卫 + MCP 23 工具 + A2A Card + Skills Registry 11 项一致 + 编排层可审计性 29 项 + 可信标记公共复算 API 34 项
MCP server(Agent-native 分发)mcp/零依赖 JSON-RPC over stdio,暴露 23 个 agri 工具(分区匹配/作物推荐/种植计划/病虫害诊断/养分管理/Env Recipe 配方/物候播期/土壤剖面/BP 投资初筛/多源气候调和/地理编码→配方/数据血缘查询/预设城市/生态对接清单 + 知识检索 agri_search + 知识图谱 agri_knowledge_query(M12-K1 接入)+ 可信标记公共复算 agri_verify_trust(M11-T1 产品化)+ Server Card agri_server_card(M13-P3 ETags 缓存)+ 决策路径报告 agri_decision_path_report(M16-B2 可视化导出));协议版本 2026-07-28(无状态),兼容 2025-06-18 / 2024-11-05;已适配 SEP-2575(免握手)/ SEP-2567(无 session)/ SEP-2243(Mcp-Method)/ SEP-2549(ttlMs 缓存)/ SEP-414(W3C traceparent);注册与投递见 mcp/README.md
A2A Agent Card.well-known/agent.jsonA2A v1.0 标准发现入口:标准 skills[] 声明 23 个 skill(与 MCP 工具一一对应,skill.id == MCP 工具名);扩展字段 x-agri-registry-skills[] 声明 11 个领域技能定义(对应 skills/registry/,内部知识库,不进入 A2A 发现);securitySchemes={}、输入输出模式与许可红线(NC 来源不得转售);由 scripts/gen_agent_card.py 从 mcp/server.py 的 TOOLS + skills/registry/*.json 程序化生成;校验 scripts/check_agent_card.py
Agent Plugins 打包plugin/Agent Plugins 1.0.0 标准:plugin.json + mcp.json + skills/<id>/SKILL.md × 11(含 Anthropic Agent Skills YAML frontmatter);由注册表生成,禁止手改,scripts/build_agent_plugin.py 为唯一入口,CI 用 --check 防漂移
Env Recipe 协议schemas/env_recipe.schema.json + docs/env_recipe_protocol_v1.md配置协议 v1:作物×阶段×箱体 → 可执行环境参数;day-1 留位 execution_log/outcome/image_consent 独占数据字段;校验 scripts/validate_env_recipe.py
AI 评测基线engine/eval.py + scripts/run_eval.pyP0-H:分区分类一致率(真实基线)+ 4 个脚手架项(绝不谎报);评测集 data/eval/zone_checks.json
预览残留清理scripts/clean_preview_artifacts.py清除预览工具注入 HTML 的 data-page-node-id 属性(曾一次性注入 115 处)
演示数据重置scripts/clean_demo_data.py清空 demo/单测污染的 feedback_log + 剥离作物库假校准标记
Demo 端点冒烟scripts/check_demo_endpoints.py零依赖端到端自检:自动选空闲端口拉起 app/demo_server.py,打 14 个端点(8 GET + 6 POST),校验状态码 / 体积下限 / 响应契约键,部署前先在本机消除哑端点风险;已入 CI
同步状态检查scripts/sync_check.py本地工作区 vs GitHub main 逐文件 blob sha 比对(本仓非 git clone,无法用 git status)
反馈回流 CLIscripts/submit_feedback.py内测用户提交种植结果 → 校准 adapt_score
物候/播期层agent/phenology.py + agent/plant_calendar.py + agent/season_agent.pyWOFOST 积温物候(7 作物,EUPL 1.2 署名)+ 霜冻锚定播期窗口;技能 season_advisory
L3 执行控制 Agentagent/control_agent.py生长计划 → 硬件无关 actuator intents(灌溉/施肥/补光/气候/CO₂/风机)+ needs_gateway 网关标记 + 车载颠簸/开放环境/设备故障执行补偿;技能 control_commands
L2 预测 Agentagent/forecast_agent.py采收期(GDD-lite 积温)/ 产量(基准×气候×适配×光照)/ 风险(霜冻/高温/计划)预测,诚实标注 model=heuristic、未知作物安全回退;技能 harvest_forecast
L4 链路数据协议schemas/linkage_protocol.schema.json开源标准链路数据(batch→product→7 环节三元组 + 鲜度/损耗/货架期模型),支撑 L5 认证溯源
土壤剖面(降级源)agent/soil_profile.py在线 SoilGrids 优先 → 离线分区均值降级;resolution=zone / confidence=low,不虚构指标
文档死链扫描scripts/check_doc_links.py全量 md 外链四态判定(ALIVE / DEAD_CONFIRMED / UNREACHABLE / UNPROBEABLE)
回流通路自检scripts/check_feedback_loop.py用 AGRI_FEEDBACK_LOG 隔离,13 项验证 record → calibrate → report 全链路,零污染真实数据
巡检报告 diffscripts/diff_daily_loop.py报告跨日 diff(--selftest 守护解析器)
生产部署deploy/一键部署(deploy_local.sh 上传 + setup_ecs.sh 远端构建启动)+ nginx 反代 + DEPLOY.md
CI.github/workflows/ci.ymlpush 自动跑单测/verify/trust/flywheel/数据自检,Python 3.10-3.12 矩阵

工程路径(对标 SwarmLabs)

SwarmLabs 做法农业项目映射
traceability.py(可追溯层)每条种植建议的溯源链(数据来源+分区依据+作物研究)
trust_layer.py(可复现证书)农业建议的可信度评分(rubric + 数据覆盖度)
skills/registry/(机读注册表)农业 Skill 的 JSON Schema 注册表
docs/agent_output_contract.md农业可信输出契约
engine/flywheel.py(飞轮主循环)✅ 已落地:record_feedback() 校准 adapt_score,闭环生效

快速验证

工程化入口见 docs/DEVELOPMENT.md;常用命令可用 make(如 make gate = 单测+端到端+数据质量三件套)。

# 查看农业分区数据
python -c "import json; d=json.load(open('data/zone_meta/global_zones.json')); print(len(d))"

# 查看 Skill 注册表
for f in skills/registry/*.json; do python -c "import json; s=json.load(open('$f')); print(s['id'])"; done

v2.1 提升项落地(Agent-native 分发 + 配置协议 + 评测)

依据 docs/planning/项目方案评审-商业模式与AI专业分析.md:商业主线重排为「免费资产 → 免费入口换数据 → 产业端收钱」; 模块⑤生成箱降级为「配方大脑授权硬件厂/存量设备」;Env Recipe 协议与 MCP 分发为近期最高优先。

提升项交付物验证
P0-G Env Recipe v1 协议schemas/env_recipe.schema.json(schema v1.1.0)+ docs/env_recipe_protocol_v1.md + data/examples/sample_env_recipe.jsonpython scripts/validate_env_recipe.py data/env_recipes
P0-E/F 零依赖 MCP servermcp/server.py(23 工具)+ mcp/README.md(含外部投递模板,对标 aishield 上架 Glama/npm)python scripts/test_mcp_server.py
P0-H 评测基线engine/eval.py + scripts/run_eval.py + data/eval/zone_checks.jsonpython scripts/run_eval.py

决策门(评审 §3.5):P0-F/G 若 3 个月内零外部调用 / 零社区响应 → 降级为个人知识库项目,停止对外投入。


v2.2 提升项落地(分发协议适配,2026-10-08)

依据 docs/full_liftup_assessment_2026-10-08.md §8 P0 路线图;判定铁律——凡是能产生第一次真实外部调用的动作,优先级高于一切新增功能。 权威目标口径见 docs/CORE_OBJECTIVE.md(本项目唯一战略来源)。

提升项交付物验证
P0-1 MCP 2026-07-28 无状态适配mcp/server.py:免 initialize 握手(SEP-2575)、显式 stateless(SEP-2567)、Mcp-Method/Mcp-Name 头校验(SEP-2243,HTTP 形态生效)、ttlMs/cacheScope 缓存提示(SEP-2549)、W3C traceparent 透传与回写(SEP-414)python scripts/test_mcp_server.py
P0-2 A2A Agent Card.well-known/agent.json(A2A v1.0):skills[] 23 个 skill 与 MCP 工具一一对应 + x-agri-registry-skills[] 11 个领域技能定义(对应 skills/registry/)python scripts/check_agent_card.py
P0-3 Agent Plugins 打包plugin/plugin.json + plugin/mcp.json + plugin/skills/*/SKILL.md × 11python scripts/build_agent_plugin.py --check
P0-7 消除硬编码密钥agent/finance_agent.py / market_agent.py 的 secret_key 占位随模块一并移出主链路grep -rn "secret_key" --include=*.py . = 0 命中

P0 出口指标:出现第 1 次非本人外部调用。


数据卫生(重要)

engine/flywheel.py 的 record_feedback() 真的会写盘——这是为了让反馈闭环真实生效。 代价是:demo 与单测如果不隔离,就会把合成样本混进真实数据。本项目已踩过的两类事故及防护:

事故现象防护
单测污染反馈日志data/feedback_log.json 累积 12 条 unittest/smoke 样本,制造「已有真实数据回流」的假象单测把 AGRI_FEEDBACK_LOG 重定向到临时文件
作物库假校准标记34 个作物只有 calibrated: true 却零校准证据,被可信层当成实测数据透出scripts/clean_demo_data.py 清洗 + CI/单测双门禁

规则:

  1. data/feedback_log.json 只允许真实用户反馈。demo 记录带 [demo] 前缀,门禁会拦截未标注的合成数据。
  2. python -m engine.flywheel 跑过之后,提交前必须执行:
    python scripts/clean_demo_data.py --dry-run   # 先看会清多少
    python scripts/clean_demo_data.py             # 实际清理
    
  3. 隔离运行(不碰仓库数据):
    AGRI_CROP_DB=<绝对路径>/crop.json AGRI_FEEDBACK_LOG=<绝对路径>/fb.json python -m engine.flywheel
    
    ⚠️ Windows 注意:Git Bash 的 /tmp 映射到 %LOCALAPPDATA%\Temp,Python 按 C:\tmp 解析, 必须用 Windows 风格绝对路径,否则 AGRI_CROP_DB 找不到文件会直接报错(故意 fail fast,避免静默输出全 None)。
  4. CI 中的 flywheel 步骤已改为写入 $RUNNER_TEMP 隔离目录,并加了数据完整性门禁。

快速启动

1. 交互式 Demo 站点(零依赖,仅标准库)

python app/demo_server.py
# 浏览器打开 http://127.0.0.1:8000
# 选择城市 / 场景 / 预算 → 四 Agent 协同方案 + 可点击 AgriTrust 证书

2. 端到端验证

python scripts/verify_all.py          # 五城市 pipeline + Trust 证书,输出 PASS/FAIL
python -m engine.flywheel              # 跑一次反馈闭环示例,校准「生菜」adapt_score
python scripts/enrich_crop_data.py     # 扩展作物数据密度至每带 ≥18 种

3. Docker 部署

docker compose up --build                                  # 本地 verify 模式(跑端到端验证即退出)
docker compose -f deploy/docker-compose.prod.yml up -d --build   # 生产 serving 模式(宿主机 :8001 → 容器 :8000)

3b. 公网部署(一条命令)

cp deploy/deploy_config.example.sh deploy/deploy_config.sh   # 一次性:按需改 IP/端口
bash deploy/deploy_local.sh                                   # 同步代码 + 远端构建 + 启动 + 验证
# 站点:http://<ECS_IP>:8001   详细流程见 deploy/DEPLOY.md

3b-2. 视觉诊断后端(可选,接 ATEX 多模态网关)

PestAgent 的视觉诊断走可插拔后端:配置以下环境变量(读 agent/vision.py)即启用,未配置则规则降级。 密钥放仓库外的 .env(已被 .gitignore 忽略,部署时由 deploy_local.sh 同步到 ECS,不进 GitHub):

# .env(项目根目录,不要提交)
AGRI_VISION_URL=http://host.docker.internal:8420/v1   # ATEX 网关,容器内用 host 网桥访问
AGRI_VISION_KEY=<你的 ATEX 网关 Key>
AGRI_VISION_MODEL=gpt-4o                              # 须为多模态模型

deploy/docker-compose.prod.yml 已默认读取这三个变量;若 ATEX 仅监听 127.0.0.1,可把 AGRI_VISION_URL 改为宿主内网 IP。

3c. CI(push 自动验证)

.github/workflows/ci.yml

push 到 main 后自动跑:单测 → verify_all → trust_layer → flywheel(隔离到 $RUNNER_TEMP)→ 数据完整性门禁(禁假校准标记、禁合成反馈样本)→ Skill 注册表合法性 → 数据自检(每带 ≥18 种作物),Python 3.10/3.11/3.12 矩阵。 状态:GitHub Actions 已验证可用(fine-grained PAT 含 Workflows:write,push 后 CI 自动跑通,最近一次 run 结论 success)。

3d. 本地 → GitHub 同步(无 git push 环境)

本机 github.com:443 不可达,且本地目录不是 git clone,不能用 git push / git status。 统一走这两个脚本:

# 1) 查看待推差异(只读,公开仓库可匿名)
python scripts/sync_check.py

# 2) 推送(单 commit,推送后自动回读校验)
python scripts/gh_push.py <token临时文件> "<提交信息>" file1 file2 ...
  • 需要 fine-grained PAT(Contents: read/write),建议含 Workflows:write 以便改 CI
  • token 放临时文件、用完即删,不要留在命令行历史里
  • 推送后 CI 会自动跑;确认 success 再关掉本地改动

4. 单元测试(零依赖)

python -m unittest discover -s scripts -p "test_*.py" -v     # 836 项用例全过

4b. MCP / 协议 / 评测(v2.1 提升项)

python scripts/test_mcp_server.py                  # MCP server 自测:initialize/tools/list/tools/call
python scripts/validate_env_recipe.py data/examples/sample_env_recipe.json  # Env Recipe v1 Schema 校验
python scripts/run_eval.py                          # AI 评测基线(分区一致率真实数字 + 脚手架项)

注册到 Claude Desktop(stdio):见 mcp/README.md。Env Recipe 协议说明与 AeroGarden 孤儿设备接入路径:见 docs/env_recipe_protocol_v1.md。

5. Skill 自动生成(闭环触发)

python -m engine.skill_factory            # 演示:新作物冰菜 → 自动 Skill
python -m engine.skill_factory --list     # 列出当前所有 Skill

6. 提交种植反馈(内测回流 → flywheel 校准)

python scripts/submit_feedback.py --zone subtropical_wet --crop 生菜 \
  --survival 0.92 --yield 4.5 --rating 5 --issues "梅雨季霜霉病" --note "杭州阳台春播"
# 或直接调用 Demo 站点 POST /api/feedback

自动化定时闭环(每日单口巡检)

本仓的每日治理巡检由专属 Automation 承担:「智慧农业生态 每日治理校验」(id c8668b59-2488-4e21-9962-ab3fa7d69d26,每日 05:00,ACTIVE)。

注:列表里另有一个同名风格、名为「AOCI 每日治理校验」(1db296e6)的自动化,实际是 aoci-code 工具对 swarmlabs / 算力共享平台 两个其他仓库的校验(每日 03:00),并非本仓任务——其命名易混淆但职责不属本项目,此处仅说明、不做改动。

闭环频率产出文件作用
智慧农业生态 每日治理校验每日 05:00outputs/daily_loop_<YYYY-MM-DD>.mdverify_all + data_quality_gate + 全量单测三件套,非零退出即暴露漂移,只读巡检

执行内容(全部只读,禁改代码 / 禁 git / 禁推送):

  1. 回归十八项(836 项单测 + MCP 自测):test_engine_v4.py(137 项)、test_engine_v3.py(43 项)、test_engine_v2.py(59 项)、test_agents.py(66 项)、test_engine_v5.py(94 项,BP 初筛引擎)、test_climate_data.py(19 项)、test_climate_reconcile.py(14 项)、test_data_lineage.py(25 项)、test_geo_recipe.py(7 项)、test_audit_analyzer.py(16 项)、test_jev_gate.py(15 项)、test_jev_decision.py(10 项)、test_jev_attribution.py(8 项)、test_mcp_server.py(23 工具)、test_dist_readiness.py(5 项)、test_env_derived_v12.py(8 项)、test_source_provenance.py(5 项)、test_mcp_server_unit.py(3 项)、test_mcp_namespace.py(4 项)、verify_all.py(5 城 PLACEHOLDER=0)、diff_daily_loop.py --selftest
  2. 数据源存活探测:GAEZ / WorldClim / SoilGrids(rest.isric.org) / PlantVillage / EPPO / GitHub 等 7 个外部源 —— 防止引用死数据源(Ecocrop / OpenFarm / @pondlog 三次教训)
  3. 回流通路健康检查:跑 check_feedback_loop.py,区分「通路故障(≠0 报警)」与「数据量缺口(=0 条、不报警)」(JSON 字段 snapshot.feedback_path = ok/broken)
  4. 状态快照 + 跨日 diff:feedback 条数 / recipes 数 / wofost 作物数;与昨日报告对比,零漂移即静默,漂移即暴露

已知长期缺口:data/feedback_log.json 持续 0 条 = 通路可用但无真实用户回流数据(属产品/增长问题,非代码缺陷——不得以合成数据充数)。


开源协议

待确定。核心数据标准与协议倾向开源(抢生态话语权),应用层与决策引擎闭源(保利润)。

MCP 工具全表(23 个)

本表由 scripts/gen_tool_table.py 从 mcp/server.py 的 TOOLS 注册表程序化生成,禁止手写。工具总数 23。

#工具名分类一句话说明必填参数返回类型
1agri_list_citiesclimate列出预设城市(经纬度 + 气候带),供 Agent 选点或核对分区。无[City] JSON
2agri_match_zoneclimate输入经纬度,返回气候分区匹配结果(含证据与限制因子)。lat — 纬度
lon — 经度
Zone Match JSON
3agri_recommend_cropscrop根据分区(lat/lon 或 city)与偏好(用途/空间/难度)推荐作物。见参数详情JSON
4agri_growth_planphenology作物 + 场景 + 分区 → 生成种植计划(含微气候修正)。crop — 作物名,如 番茄Plan JSON(阶段化)
5agri_diagnose_pestpest病虫害与营养缺乏诊断:输入作物、症状描述(可选图像引用、生长阶段、环境)。cropJSON
6agri_nutrition_plannutrition养分管理:作物 + 阶段 → 阶段化施肥方案。cropPlan JSON(阶段化)
7agri_env_reciperecipe(P0-G)作物 + 生长阶段 + 设备类别 → 返回一份 Env Recipe v1 合规配方 JSON。无Env Recipe v1 JSON
8agri_season_advisorymeta(B1+B2)物候与播期:mode=planting_window 时给 12 个月均温返回无霜期与各作物最早/最晚安全播种日;mode=stage_days 时给作物+日均温返回…见参数详情JSON
9agri_soil_profilesoil(土壤降级路径)经纬度或分区 → 土壤剖面。优先查 ISRIC SoilGrids v2.0(在线点数据),不可用时降级为离线分区均值并明确标注 resolution=zone、c…见参数详情SoilProfile JSON
10agri_bp_screenbusiness(投资初筛)农业项目投资初筛系统:传入 BP/审计/流水文本(text)或已抽取字段(fields),跑九层管线 → 六分类(种业/农机/数字农业/生物投入品/供应链/养殖)+ 五…见参数详情BPScreenReport JSON
11agri_reconcile_climateclimate(多源气候校准)给定经纬度,并行拉 NASA POWER + Open-Meteo,逐月平均得调和月均温基线,并计算逐月一致度(多源标准差)与分歧月份告警(标准差超 3℃ 标记)。…lat — 纬度
lon — 经度
Climate Reconcile JSON
12agri_resolve_reciperecipe(地理编码→配方)城市名(中文/英文)或经纬度 → 匹配气候分区 → 检索该分区的 Env Recipe 清单。返回 zone_id / zone_name / 坐标 / 匹配配方…见参数详情Env Recipe v1 JSON
13agri_query_lineagemeta(数据血缘查询)按作物/分区查配方的数据溯源:外部 API 参与情况 + 本地权威文件 SHA256 指纹 + 校准实证(壁垒④)。传入 crop+zone_id 做单点追踪;仅 …见参数详情Lineage JSON
14agri_list_ecosystemmeta(生态对接清单)返回智慧农业生态对接的开源/商业生态清单(config/ecosystem.json),含对接状态(integrated/partial/planned_mappi…见参数详情[Ecosystem] JSON
15agri_searchknowledge(知识检索 M12-K1)跨 4 语料(crops/zones/pests/recipes,共 335 条)做词法+向量混合检索,底层是 stdlib-only 的 char n-…query — 查询串(必填)SearchResult JSON
16agri_knowledge_queryknowledge(知识图谱查询 M12-K1)查 261 实体 / 446 边的农业知识图谱(engine/knowledge_graph.py)。支持 5 种 kind:summary=整体统计…见参数详情KnowledgeGraph JSON
17agri_forecastforecast(独立预测 M13-P1)产量/采收期预测,含 T-3 置信区间(P10/P50/P90)。底层与 agri_growth_plan 内的推荐部分同源(ForecastAgent)…crop — 作物中文名(必填)Forecast JSON(含 P10/P50/P90)
18agri_recipe_profilerecipe(配方 profile 五件套 M8-R2 + M13-P2)152 份 Env Recipe 资产的浏览、检索、比对、导出、加载。支持 6 种 kind:list=列出所有配方元…见参数详情Profile JSON(多 mode)
19agri_verify_trustmeta(可信标记公共复算 API M11-T1)外部独立验证 AgriTrust 可信标记 / 证书。支持 3 种 mode:current=返回当前信任标记(含 signature 与…mode — 验证模式:current/check_prefiVerification JSON(含 signature 校验)
20agri_server_cardmeta(Server Card + ETags M13-P3)返回 MCP 服务元数据卡(能力/分类/协议/URL 等),带稳定 ETag(sha256 前 16 hex)。客户端可缓存…见参数详情ServerCard JSON(含 ETag)
21agri_decision_path_reportbp_screen(决策路径可视化报告 M16-B2)将 bp_screen 评分引擎的 decision_path 归因数据导出为可视化报告。返回结构化 JSON:每个案例含 verdict/de…见参数详情DecisionPathReport JSON
22agri_counterfactual_trajectorycounterfactual(反事实轨迹 API · Phase N+1 #6)给定作物与基线动作序列,用 AgriWorld-Lite 机理内核(光截获 Beer-Lambert + CO2 同化 + Q1…crop — 作物名,如 potato/番茄/生菜Trajectory JSON(数组 + CI)
23agri_verify_recommendationverify(Verify-as-a-Service · Phase N+3 #14 · 支柱五)作为「农业 Agent 的裁判」验证第三方(另一个 Agent、大模型、BP、农艺师)给出的农…claim — 被验证主张,如 {crop, yield_g_m
context — 上下文,如 {dli_mj_m2_d, days
Verdict JSON(含 trust_mark)

每个工具的详细参数说明见 mcp/README.md 对应章节。

Setup from the maintainer

This listing does not have a supported local package template. Use the maintainer’s documentation for its hosted endpoint, authentication, and client-specific setup. No install command has been inferred.

Package

https://github.com/lm203688/smart-agri-eco/releases/download/v1.1.0/agri-eco-mcp-1.1.0.mcpbother

Compatible MCP Clients

智慧农业生态 Agri-Eco works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.

  • Claude Desktop~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.
  • Cursor~/.cursor/mcp.jsonRestart Cursor for changes to take effect.
  • VS Code.vscode/mcp.jsonReload VS Code window for changes to take effect.
  • Windsurf~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect.
  • Claude Code.mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.

Learn More