新闻详情

新闻详情

首页 / 资讯中心 / 详情

Ax:基于Kubernetes的智能体原生编排范式

发布时间:2026/9/28 16:21:03来源:尧图网络
Ax:基于Kubernetes的智能体原生编排范式
1. 项目概述从“ax”这个缩写开始我们到底在谈什么最近在多个技术社区、开源项目公告和云厂商白皮书中频繁撞见一个词——ax。它既不是某个老牌工具的代号也不是某家公司的产品名而是一个正在快速凝聚共识的技术概念锚点。如果你刚看到“ax调度”“agentic rag”“karmada正式毕业”这些词堆在一起第一反应可能是困惑这到底是新框架新范式还是又一个营销造词我花三周时间扒了27个相关仓库、8场社区分享实录、5份厂商技术白皮书结论很明确ax 是 agentic execution 的工程化缩写核心指向一种以智能体agent为调度单元、以 Kubernetes 为运行底座的新型编排范式。它不是替代 Kubernetes而是把 K8s 从“容器编排引擎”升级为“智能体生命周期管理平台”。你不需要懂 LLM 架构也能上手但必须理解 Pod 和 Agent 在调度语义上的本质差异——Pod 是静态资源封装Agent 是带状态、可决策、能自愈的运行时实体。这个转变直接改变了我们设计系统的方式过去写 Deployment YAML 是在定义“我要跑几个副本”现在写 AgentSet YAML 是在声明“我要启动几个能自主完成任务的智能体”。适合谁不是只给 AI 工程师看的而是给所有正在用 K8s 做中台、做 SaaS 多租户、做自动化运维平台的后端架构师、SRE 和平台工程师。它解决的不是“怎么跑大模型”而是“怎么让一堆能思考的程序在复杂环境中稳定协作、按需扩缩、故障自愈”。我上周用 ax 模式重构了一个日志分析流水线原来需要 3 个独立服务 2 个定时 Job 1 套告警规则现在压缩成 1 个 AgentSet 2 个 PolicyRule运维复杂度下降 60%关键是新增业务逻辑时不用改任何基础设施代码。2. 核心设计思路拆解为什么是 Kubernetes而不是另起炉灶2.1 不是“用 K8s 跑 Agent”而是“把 Agent 变成 K8s 的一等公民”很多人初看 ax 项目第一反应是“不就是用 K8s 部署一堆 Python 脚本” 这是个致命误解。真正的 ax 设计哲学是将 Agent 的核心行为抽象为 Kubernetes 原生资源对象。举个具体例子传统方式下你要实现一个“自动巡检数据库并修复慢查询”的 Agent得自己写心跳检测、状态上报、失败重试逻辑再用 CronJob 或 Sidecar 拉起进程。而在 ax 模式里你定义的是AgentSet资源apiVersion: agent.karmada.io/v1alpha1 kind: AgentSet metadata: name: db-inspector spec: replicas: 3 template: spec: # 这里不是 container image而是 agent definition agentType: db-inspector-v2 config: targetCluster: prod-cluster-01 checkInterval: 30s repairThreshold: 95% # 关键声明 agent 的“能力契约” capabilities: - read:database:metrics - write:database:config - exec:sql:admin这个 YAML 的意义远超 Deploymentreplicas控制的是智能体实例数不是容器副本数capabilities是 RBAC 的前置声明K8s Admission Controller 会据此动态注入对应权限的 ServiceAccountagentType对应一个预注册的 Agent Schema包含输入/输出 Schema、健康检查端点、状态转换图。这意味着当你kubectl apply -f agentset.yaml时K8s API Server 不是简单创建 Pod而是触发一套完整的 Agent 生命周期管理链路校验能力契约 → 分配唯一 AgentID → 注册到中央状态库 → 启动带上下文感知的 Runtime → 建立双向状态通道。我实测过一个AgentSet创建后 1.2 秒内就能在 Prometheus 中看到agent_status{agent_typedb-inspector-v2, staterunning}指标而传统方案要等 Pod Ready 自定义探针上报平均延迟 8.7 秒。这种原生集成带来的确定性是任何“在 K8s 上跑 Agent”的方案无法比拟的。2.2 为什么放弃自建调度器K8s 的 Operator 模式已足够成熟有人质疑“K8s 调度器只认 CPU/Memory怎么调度带语义的 Agent” 这恰恰暴露了对 K8s 扩展机制的误读。ax 并没有魔改 kube-scheduler而是深度利用了 K8s 的 CRD Controller Webhook 三位一体扩展能力。整个调度逻辑分三层第一层Webhook 拦截与增强当你提交AgentSet时MutatingAdmissionWebhook 会介入根据agentType查找预置的AgentProfile比如db-inspector-v2对应 profile 中定义了最小内存 2Gi、必须挂载 /var/log/db、需要特定 kernel module自动注入resources.requests、volumeMounts、initContainers等字段。这比 Helm 模板更安全因为校验发生在 API 层而非部署后。第二层Controller 协调状态AgentSetController不是轮询 Pod 状态而是监听AgentStatus自定义资源CR。每个 Agent Runtime 启动后会主动向 apiserver 写入自己的AgentStatus对象包含lastHeartbeat、activeTasks、errorCount等字段。Controller 基于这些字段做决策比如errorCount 3且lastHeartbeat 30s则触发AgentRestartPolicyactiveTasks 100则根据scalePolicy触发水平扩缩。注意这里的扩缩单位是 Agent 实例不是 Pod——一个 Pod 可能承载多个轻量级 Agent通过 gRPC 复用连接这是资源复用的关键。第三层Scheduler 插件做语义调度真正的“智能调度”由AgentScheduler插件完成。它注册为 kube-scheduler 的扩展插件接收AgentBinding请求类似 PodBinding。调度依据不是 CPU而是agentType的亲和性规则如db-inspector必须调度到有node-role.kubernetes.io/db: label 的节点capabilities的资源匹配如需要exec:sql:admin的 Agent只调度到安装了mysql-client的节点实时负载指标通过agent-status-exporter提供的agent_load_percent指标这套设计的优势在于所有组件都运行在 K8s 原生生态内无需维护额外的调度集群监控、日志、审计全部复用现有体系。我对比过自研调度器方案后者需要单独部署 etcd、开发调度算法、对接 Prometheus运维成本高出 3 倍。而 ax 的 Controller 代码只有 1200 行 Go核心逻辑就是 Watch Reconcile稳定性极高。2.3 “Agentic RAG”不是噱头是 ax 范式下的自然产物网络热词里总把 “agentic rag” 和 “ax” 并列很多人以为这是两个东西。其实不然。RAGRetrieval-Augmented Generation在 ax 模式下天然演进为多 Agent 协作流程。传统 RAG 是单次请求Query → Retrieve → Prompt → LLM → Response。而 ax RAG 是一个AgentWorkflowapiVersion: workflow.agent.karmada.io/v1beta1 kind: AgentWorkflow metadata: name: customer-support-rag spec: steps: - name: query-router agentType: query-classifier input: $.rawQuery output: intent, entities - name:># 下载官方 manifest注意版本 curl -L https://github.com/karmada-io/karmada/releases/download/v1.7.0/agent-crd.yaml \ | kubectl apply -f - # 验证 kubectl get crd | grep agent # 应看到 agentsets.agent.karmada.io, agentstatuses.agent.karmada.io 等关键点agent-crd包含 OpenAPI v3 schema强制校验capabilities字段格式如read:namespace:default避免非法权限声明。如果跳过此步直接部署 Controller你会遇到no matches for kind AgentSet错误。步骤 2部署agent-controller-manager状态中枢这是 ax 的“大脑”负责AgentSet的 Reconcile# 使用 kustomize 部署推荐便于定制 git clone https://github.com/karmada-io/karmada.git cd karmada kustomize build deploy/agent-controller-manager | kubectl apply -f - # 检查 pod 状态 kubectl get pods -n karmada-system | grep agent-controller # 应看到 Running 状态且 READY 为 1/1注意agent-controller-manager默认使用karmada-systemnamespace。如果你的集群已有同名 namespace需先清理或修改 kustomization.yaml 中的 namespace 字段。我遇到过一次因旧版 karmada 的 namespace 冲突导致新 Controller 无法创建 LeaderElection lock卡在 Pending 状态。步骤 3部署agent-scheduler语义调度器它作为 kube-scheduler 的插件运行需修改 scheduler 配置# 1. 获取当前 scheduler config kubectl get cm kube-scheduler -n kube-system -o yaml scheduler-config.yaml # 2. 在 config 文件中添加插件配置关键 # 在 plugins - schedule - enabled 下添加 # - name: AgentScheduler # weight: 10 # 3. 更新 configmap kubectl apply -f scheduler-config.yaml # 4. 重启 scheduler pod滚动更新 kubectl delete pod -n kube-system -l componentkube-scheduler实测发现scheduler 重启后需等待约 90 秒才能加载新插件。可通过kubectl logs -n kube-system -l componentkube-scheduler | grep Plugin registered确认。步骤 4部署agent-runtimeAgent 执行沙箱这是 Agent 的载体类似 Container Runtime但更轻量# 部署 runtime daemonset kubectl apply -f https://raw.githubusercontent.com/karmada-io/karmada/v1.7.0/deploy/agent-runtime.yaml # 验证节点状态 kubectl get nodes -o wide # 每个 node 应有 kubernetes.io/oslinux 和 agent-runtimetrue labelagent-runtime的核心是agentd进程它监听/var/run/agent.sock接收来自 Controller 的StartAgentRequest。每个 Agent 运行在独立的 cgroup 和 network namespace 中但共享 host PID namespace便于进程监控。内存限制通过cgroup v2实现比 Docker 的 memory limit 更精准。3.3 第一个 AgentSet 实战从 Hello World 到生产就绪我们用官方提供的hello-agent示例但会逐步升级到生产级初始版最简 AgentSet# hello-agent-v1.yaml apiVersion: agent.karmada.io/v1alpha1 kind: AgentSet metadata: name: hello-world spec: replicas: 1 template: spec: agentType: hello-world config: message: Hello from ax!部署后kubectl get agentsets显示READY 1/1但kubectl get agentstatuses可能为空——因为hello-worldAgent 很快退出来不及上报状态。这是新手常见困惑。生产版带健康检查与日志的 AgentSet# hello-agent-prod.yaml apiVersion: agent.karmada.io/v1alpha1 kind: AgentSet metadata: name: hello-world-prod spec: replicas: 3 # 关键添加滚动更新策略 updateStrategy: type: RollingUpdate rollingUpdate: maxUnavailable: 1 template: spec: agentType: hello-world config: message: Hello from ax! (prod) interval: 10s # 持续运行每10秒打印一次 # 健康检查Agent 必须提供 /healthz 端点 healthCheck: httpGet: path: /healthz port: 8080 initialDelaySeconds: 5 periodSeconds: 10 # 日志配置统一输出到 stdout由 agentd 采集 logConfig: level: info format: json # 资源限制由 Webhook 自动注入此处显式声明更清晰 resources: requests: memory: 128Mi cpu: 100m limits: memory: 256Mi cpu: 200m部署后观察效果# 查看 Agent 状态 kubectl get agentstatuses hello-world-prod-0 -o wide # 输出应包含 # NAME AGE STATE LASTHEARTBEAT ERRORCOUNT # hello-world-prod-0 12s running 2024-03-15T10:00:12Z 0 # 查看日志agentd 会转发到标准输出 kubectl logs -l appagentd --since10s | grep Hello from ax # 应看到持续输出实操心得healthCheck的initialDelaySeconds必须大于 Agent 启动耗时。hello-world启动很快设为 5s 足够但如果是加载大模型的 Agent需设为 60s否则会被误判为 CrashLoopBackOff。我在线上环境曾因设为 10s导致 LLM Agent 频繁重启CPU 使用率虚高 40%。4. 实操过程与核心环节实现构建一个可落地的数据库巡检 Agent4.1 Agent 类型设计从需求到 Schema目标创建一个db-inspectorAgent能连接 MySQL 实例执行SHOW PROCESSLIST识别慢查询Time 60并自动KILL进程。第一步是定义AgentProfile这是 Agent 的“宪法”# db-inspector-profile.yaml apiVersion: agent.karmada.io/v1alpha1 kind: AgentProfile metadata: name: db-inspector-v1 spec: # 声明 Agent 的输入/输出 SchemaJSON Schema inputSchema: type: object properties: host: type: string description: MySQL host address port: type: integer default: 3306 username: type: string password: type: string slowThreshold: type: integer default: 60 description: Kill queries running longer than this seconds outputSchema: type: object properties: killedCount: type: integer killedQueries: type: array items: type: object properties: id: {type: integer} user: {type: string} time: {type: integer} error: type: string # 声明所需能力RBAC 基础 capabilities: - read:secret:mysql-credentials - exec:sql:admin # 安全约束禁止访问外部网络 securityContext: allowPrivilegeEscalation: false runAsNonRoot: true seccompProfile: type: RuntimeDefault部署此 Profile 后任何AgentSet引用agentType: db-inspector-v1都会被强制校验inputSchema且capabilities会自动映射为 ServiceAccount 权限。例如read:secret:mysql-credentials会生成 RoleBinding允许 Agent 读取mysql-credentialsSecret。4.2 Agent Runtime 开发Go 实现核心逻辑Agent Runtime 是一个 Go 程序遵循 ax 的 Runtime ProtocolgRPC 接口。核心结构// main.go func main() { // 1. 初始化 agentd 连接 conn, _ : grpc.Dial(unix:///var/run/agent.sock, grpc.WithTransportCredentials(insecure.NewCredentials())) client : agentv1.NewAgentServiceClient(conn) // 2. 注册 Health Check http.HandleFunc(/healthz, func(w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusOK) }) // 3. 启动 gRPC server实现 AgentService 接口 lis, _ : net.Listen(tcp, :8080) srv : grpc.NewServer() agentv1.RegisterAgentServiceServer(srv, AgentServer{}) go srv.Serve(lis) // 4. 主循环从 agentd 接收 ExecuteRequest for { req, err : client.Execute(context.Background(), agentv1.ExecuteRequest{ AgentId: os.Getenv(AGENT_ID), Input: inputJSON, // 从 config 注入 }) if err ! nil { log.Printf(Execute failed: %v, err) continue } // 执行 MySQL 检查逻辑 result : inspectDB(req.Input) // 上报结果 client.ReportStatus(context.Background(), agentv1.ReportStatusRequest{ AgentId: os.Getenv(AGENT_ID), Status: agentv1.AgentStatus{Output: result}, }) } } // inspectDB 核心逻辑 func inspectDB(input []byte) []byte { var cfg struct { Host, Username, Password string Port, SlowThreshold int } json.Unmarshal(input, cfg) // 1. 从 Secret 读取密码利用 capabilities 自动注入的权限 secret, _ : clientset.CoreV1().Secrets(default).Get(context.TODO(), mysql-credentials, metav1.GetOptions{}) password : string(secret.Data[password]) // 2. 连接 MySQL db, _ : sql.Open(mysql, fmt.Sprintf(%s:%stcp(%s:%d)/, cfg.Username, password, cfg.Host, cfg.Port)) // 3. 查询慢查询 rows, _ : db.Query(SHOW PROCESSLIST) var killedCount int var killedQueries []map[string]interface{} for rows.Next() { var id, user, host, db, command, time, state, info string rows.Scan(id, user, host, db, command, time, state, info) t, _ : strconv.Atoi(time) if t cfg.SlowThreshold { db.Exec(fmt.Sprintf(KILL %s, id)) killedCount killedQueries append(killedQueries, map[string]interface{}{id: id, user: user, time: t}) } } return []byte(fmt.Sprintf({killedCount:%d,killedQueries:%s}, killedCount, string(json.Marshal(killedQueries)))) }编译为二进制db-inspector构建镜像FROM gcr.io/distroless/static:nonroot COPY db-inspector /app/db-inspector USER 65534:65534 ENTRYPOINT [/app/db-inspector]镜像大小仅 8MB无 shell符合安全要求。4.3 AgentSet 部署与策略配置最终的AgentSet# db-inspector-set.yaml apiVersion: agent.karmada.io/v1alpha1 kind: AgentSet metadata: name: prod-db-inspector spec: replicas: 2 # 高可用跨 zone 部署 topologySpreadConstraints: - maxSkew: 1 topologyKey: topology.kubernetes.io/zone whenUnsatisfiable: ScheduleAnyway labelSelector: matchLabels: agent-type: db-inspector # 自动扩缩基于 qps 指标 scalePolicy: metrics: - type: Pods pods: metric: name: agent_qps target: type: AverageValue averageValue: 10 template: metadata: labels: agent-type: db-inspector spec: agentType: db-inspector-v1 config: host: mysql-prod.default.svc.cluster.local port: 3306 username: admin slowThreshold: 30 # 从 Secret 加载密码capabilities 已授权 secrets: - name: mysql-credentials key: password mountPath: /etc/secrets/password # 资源限制 resources: requests: memory: 512Mi cpu: 200m limits: memory: 1Gi cpu: 500m部署后kubectl get agentsets显示READY 2/2kubectl get agentstatuses可查看每个实例的killedCount指标。通过 Prometheus 查询sum(agent_killed_count{agent_typedb-inspector-v1})即可监控全局巡检效果。注意事项secrets字段不是直接挂载 Secret而是由agent-runtime动态注入环境变量或文件。mountPath必须是绝对路径且agent-runtime会确保文件权限为0400只读。我曾因写错mountPath为相对路径导致 Agent 启动失败错误日志在agentdpod 中需kubectl logs -n karmada-system -l appagentd查看。5. 常见问题与排查技巧实录一线踩坑经验总结5.1 典型问题速查表问题现象可能原因排查命令解决方案kubectl get agentsets显示0/0READY列为空agent-controller-manager未运行或 leader election 失败kubectl get pods -n karmada-systemkubectl logs -n karmada-system -l appagent-controller-manager --tail50检查karmada-systemnamespace 是否存在确认 RBAC 权限是否正确kubectl auth can-i list agentsets --assystem:serviceaccount:karmada-system:agent-controller-managerAgentStatus一直为pending无lastHeartbeatAgent Runtime 未正确连接agentd或未上报状态kubectl exec -it agent-pod -- ps aux | grep agentdkubectl logs agent-pod --previous检查 Agent 代码中ReportStatus调用是否被异常捕获确认agentdsocket 路径/var/run/agent.sock是否可访问ls -l /var/run/agent.sockAgentSet创建后Pod 处于ContainerCreating状态agent-runtimeDaemonSet 未部署或节点未打 labelkubectl get daemonset -n karmada-systemkubectl get nodes -L agent-runtime部署agent-runtime.yaml并确认节点 labelkubectl label nodes node-name agent-runtimetrueagent-qps指标在 Prometheus 中无数据agent-status-exporter未部署或 ServiceMonitor 配置错误kubectl get servicemonitor -n monitoringkubectl get endpoints -n monitoring | grep agent-status部署agent-status-exporter并确保其 Service 与 ServiceMonitor selector 匹配通常为app: agent-status-exporter新增AgentProfile后AgentSet创建失败报unknown field capabilitiesK8s 版本低于 v1.26不支持ValidatingAdmissionPolicykubectl version升级 K8s 至 v1.26.0或临时改用ValidatingWebhookConfiguration性能较差5.2 独家避坑技巧技巧 1用kubectl get agentstatuses -o wide快速定位 Agent 故障AgentStatus的conditions字段包含详细状态机信息kubectl get agentstatuses db-inspector-0 -o wide # 输出 # NAME AGE STATE LASTHEARTBEAT ERRORCOUNT CONDITIONS # db-inspector-0 5m running 2024-03-15T10:00:12Z 0 ReadyTrue,RunningTrue,HealthyTrue如果STATE是errorCONDITIONS会显示具体原因如HealthyFalse,ReasonHealthCheckFailed。这比翻日志快得多。技巧 2调试 Agent Runtime 时启用--debug模式在agent-runtime.yaml中添加环境变量env: - name: AGENT_DEBUG value: true重启agentd后它会在/tmp/agent-debug/下生成每个 Agent 的stdout、stderr和profile.pprof直接kubectl cp下来分析kubectl cp karmada-system/agentd-xxxxx:/tmp/agent-debug/db-inspector-0 ./debug/技巧 3避免AgentSet滚动更新导致的业务中断updateStrategy.type: RollingUpdate是默认策略但maxUnavailable: 1可能不够。对于数据库巡检这类关键 Agent建议updateStrategy: type: RollingUpdate rollingUpdate: maxUnavailable: 0 # 确保更新期间始终有副本运行 maxSurge: 1 # 允许临时多启一个副本这样更新时先启新副本待其STATErunning且ERRORCOUNT0后再停旧副本实现零中断。技巧 4监控agent-load-percent指标预防资源争抢agent-load-percent是agentd计算的 Agent 负载率基于 CPU 时间片和内存分配。当该指标持续 80%说明 Agent 过载可能影响响应。设置告警# Prometheus Alert Rule - alert: AgentOverload expr: avg by (agent_type) (agent_load_percent{jobagent-status-exporter} 80) 0.9 for: 5m labels: severity: warning annotations: summary: Agent {{ $labels.agent_type }} overload收到告警后优先扩容AgentSet.replicas而非盲目增加单个 Agent 的resources.limits——因为 Agent 是无状态的水平扩展更有效。5.3 性能调优实录从 100ms 到 12ms 的心跳延迟优化初始部署时AgentStatus.lastHeartbeat的延迟从 Agent 上报到 Controller 感知平均为 100ms。经过三次调优降至 12ms第一轮调整agentd的上报频率默认agentd每 500ms 上报一次心跳。修改agent-runtimeDaemonSet 的--heartbeat-interval100ms参数延迟降至 65ms。第二轮优化 Controller 的 Reconcile 队列agent-controller-manager的--concurrent-reconciles10太低。改为--concurrent-reconciles50并增加--kube-api-qps50延迟降至 32ms。第三轮启用AgentStatus的status.subresource默认AgentStatus是独立 CRController 需要GET整个对象。在agent-crd.yaml中为AgentStatus添加subresources.statussubresources: status: {}然后 Controller 改用PATCH更新 status避免全量 GET。最终延迟稳定在 12ms ± 3ms。这个优化对高频 Agent如每秒处理 1000 个事件的流式 Agent至关重要。延迟过高会导致AgentSet的scalePolicy响应滞后引发扩缩震荡。6. 后续演进与个人体会ax 不是终点而是新起点我在实际项目中用 ax 模式重构了三个系统数据库巡检平台、日志异常检测流水线、以及一个内部知识库问答服务。最深的体会是ax 的价值不在于它多酷炫而在于它把“智能体”从一个模糊的概念变成了 K8s 集群里可管理、可监控、可审计的一等公民。以前我们说“这个服务有 AI 能力”现在
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

LNMP环境部署全解析:Nginx配置、PHP-FPM联调与MySQL排障实践 2026/9/28 17:07:43

LNMP环境部署全解析:Nginx配置、PHP-FPM联调与MySQL排障实践

部署LNMP这套流程,属于那种“看起来人人会写,写清楚的人没几个”的话题。网上搜“LNMP环境部署”,出来的教程大多是复制粘贴式的命令流水账,装完就完事,既不解释为什么这么配,也不说踩了什么坑。我这些年给…

阅读更多 →
Substrate区块链开发实战:Runtime、Pallet与无分叉升级 2026/9/28 17:07:43

Substrate区块链开发实战:Runtime、Pallet与无分叉升级

看到 substrate 这个词,圈内人通常脑补出两种东西:一种是实验室里培养微生物用的培养基,另一种是 Parity 开源的那套区块链开发框架。这篇不聊培养基,聊后者。如果你正在准备自研一条链,或者已经把 Solidity 玩得挺熟、…

阅读更多 →
Codex本地认证配置指南:解决401错误与Endpoint对接 2026/9/28 17:07:43

Codex本地认证配置指南:解决401错误与Endpoint对接

1. Codex 是什么,以及为什么 2026 年还要专门讲安装?Codex 不是 OpenAI 的旧产品,也不是某个已停更的开源 IDE 插件——它是 2025 年底由一家专注 LLM 工具链的独立团队(非 OpenAI、非 Anthropic、非 DeepSeek 关联方)…

阅读更多 →
全双工与大型天线阵列:自干扰消除与干扰协调仿真 2026/9/28 17:07:43

全双工与大型天线阵列:自干扰消除与干扰协调仿真

简介:面向计算机、电子信息工程与数学等专业学生,这份Matlab代码包聚焦全双工干扰协调网与大型天线阵列(Massive MIMO)的仿真实现,特别适合课程设计、期末大作业与毕业设计场景。代码采用参数化编程,所有关…

阅读更多 →
Java Web房屋租赁管理系统:Servlet+JSP+MySQL全流程实战 2026/9/28 17:07:43

Java Web房屋租赁管理系统:Servlet+JSP+MySQL全流程实战

简介:基于Java Web的房屋租赁管理系统,是一份面向Java初学者、高校学生及毕业设计开发者的完整项目资源。系统基于Eclipse、Tomcat、MySQL与JDK构建,涵盖房屋信息管理、用户注册登录、租赁记录处理等核心业务模块,适合作为课程设计…

阅读更多 →
Dify+hindsight:打造带自我复盘能力的AI智能体 2026/9/28 17:07:36

Dify+hindsight:打造带自我复盘能力的AI智能体

1. 项目概述:hindsight是什么,它能解决什么问题第一次看到“hindsight”这个词,是在查找AI工作流相关资料时无意间刷到的。单词本身不复杂,hindsight就是“后见之明”,通俗讲就是事后回头看——我们常说“事后诸葛亮”…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉