基于Harness 编排架构的 Java AI Agent 应用开发框架可自主决策针对每个请求自主决定是否思考是否使用知识库检索查询策略与联网开启来避免不必要的知识库开支与思考开支(例如你好谢谢等等)。提供可插拔的模型 Provider、内置 RAG 知识库、会话记忆与 5 层流水线loop编排可作为脚手架快速搭建并定制面向业务的 Agent 应用。项目地址https://github.com/chenkezhen480/Cyrene衷心听取各位前辈的意见与看法欢迎指导首次启动为了对接AI应用那么我们必然需要针对已有系统进行对接——这正是初始化工作的意义所在。Cyrene Agent 内置了项目接口发现能力能够自动扫描你的现有项目在基础的Glob与Grep基础上我还添加了ClassHierarchy对获取的类进行递归检索父类结构以获取完整的参数结构。识别 REST API 接口并生成结构化的参数 Schema后续启动时会自动解析加载进内存但不会将描述加入tool的提示词而是通过上层的listgetreadupdata进行管理工具热加载接口触发让 Agent 具备与宿主系统交互的能力。一键发现项目接口Web UI首次启动时指定项目目录即可自动扫描所有 Controller 接口生成project-apis.json配置文件。支持 Spring Boot、Express、Flask 等主流框架自动解析 DTO/VO 类继承结构。基础配置为你的产品构建 AI Agent 不必从零开始。Cyrene Agent 提供生产可用的基础能力——初始化工具配置模型抽象、RAG、记忆、工具、审计——让你专注于业务逻辑而非底层 plumbing。配置模型、注册工具、即可上线。编排架构Cyrene Agent 采用Harness 编排模式通用编排框架包裹领域组件由框架处理横切关注点模型路由、记忆、审计、工具执行业务逻辑通过预定义的扩展点接入。这意味着你可以更换模型、添加工具或调整记忆策略而无需改动流水线核心。核心特性针对项目一键生成接口工具首次启动时会根据 HARNESS_PROJECT_DISCOVERY_ENABLEDtrue 变量自动启动控制台的web UI并加载glob与grep还有read_class_hierarchy工具三件套其中glob负责检索文件grep负责检索关键上下文默认为7行通过获取输入参数类与输出参数类调用read_class_hierarchy获取父类以获取完整参数结构递归的最大深度为2随后给出一份关于对接项目的工具json文件。文件会在后续项目启动时解析加载进内存通过一套编辑json和listgetread工具进行管理。全自主决策在输入层与预处理层添加了一层启发式路由由HARNESS_GAP_ANALYSIS_ENABLEDtrue控制。针对每个请求自主决定是否思考、是否使用知识库检索、查询策略与联网开启来避免不必要的知识库开支与思考开支例如你好谢谢等。三层判定漏斗优先级递减层级机制延迟说明Tier 0显式覆盖0ms请求上下文直接指定参数最高优先级Tier 1规则引擎1ms硬编码正则/关键词匹配覆盖常见场景问候语拦截、时效性问题联网、深度分析启用思考Tier 2LLM 分类~200ms轻量级 Classifier 模型默认 GLM-4.7-flash分析剩余未确定字段四个独立决策字段字段说明needsThinking是否启用深度思考extended thinkingneedsKnowledgeBase是否启用 RAG 知识库检索rewriteStrategy查询改写策略NONE / HYDE / MULTI_QUERY / STEP_BACKneedsWebSearch是否启用联网搜索每个字段独立决策未命中的字段由环境变量兜底。判定结果写入 Trace metadatagap_source explicit / rule / llm / default。后续也可更换为针对语义经过训练的轻量级本地 ONNX 模型。5 层流水线架构Input → Session Lifecycle → Preprocess → ReAct Loop (AI ↔ Tool ↔ Inspection) → Post-process → Audit每个请求经过结构化流水线各层独立可观测、可配置、可追踪。7 种独立模型类型每种模型类型可独立配置 Provider、API Key 和端点类型用途支持的 ProviderChat对话 工具调用OpenAI、Anthropic、Ollama、DashScope 等Vision图片/视频理解OpenAI、AnthropicVoice语音识别 语音合成OpenAIEmbedding多模态向量化OpenAI、OllamaRerank检索结果重排序OpenAI 兼容接口Realtime实时多模态预留—ClassifierGap Analyzer Tier 2 意图分类OpenAI 兼容接口可自由混搭——例如 Chat 用 DashScope、Embedding 用 OpenAI、Rerank 用本地 Ollama。内置 RAG 知识库通过 API 上传文档PDF、DOCX、XLSX、TXT、Markdown 等自动完成文本提取、语义分块、Embedding 并存储到向量数据库PostgreSQL pgvector 或 Milvus通过HARNESS_RAG_PROVIDER切换。完整 RAG 流水线用户查询 │ ▼ 查询改写可选环境变量插拔 │ none → 透传原始查询默认 │ hyde → LLM 生成假设性文档作为检索查询提升精准度 │ multi-query → LLM 生成多个不同措辞的查询分别检索后合并提升召回率 │ step-back → LLM 生成更通用的抽象查询适合过于具体的问题 │ ▼ 向量检索统一接口环境变量切换后端 │ pgvector → cosine similarity 可选全文检索tsvector/tsquery │ Milvus → BM25 稠密 语义向量混合检索HARNESS_RAG_BM25_WEIGHT 控制权重 │ 结果按相似度分数排序支持 HARNESS_RAG_SCORE_THRESHOLD 阈值过滤 │ ▼ 语义上下文增强 │ 启发式检测截断块标点/结构/续接词 │ 自动回溯 prev_chunk 补全上下文最多 2 次 │ ▼ Rerank 重排序可选 │ Cross-encoder 精排或按相似度分数排序 │ ▼ 注入 System Prompt → LLM 结合知识库上下文 对话历史生成回答查询改写策略对比策略原理适用场景HyDELLM 生成假答案用假答案去向量检索短查询/抽象查询直接 embedding 效果差Multi-QueryLLM 生成 N 个不同措辞的查询分别检索合并同一问题有多种表达单一查询召回不全Step-BackLLM 生成更通用的版本先获取背景知识问题过于具体直接检索命中率低大文件处理超过 100KB 的文件采用语义切片 → 合并到模型上下文 40% → 并行摘要的策略将数百次 LLM 调用压缩到个位数1MB 文件约 5-8 次上下文窗口大小从模型名称自动检测。会话记忆与智能压缩短期记忆按会话 LRU 缓存对话历史支持分布式 Redis 缓存长期记忆从已结束会话中 AI 提取的用户偏好自动注入 System Prompt主动提取工具小压缩ReAct 循环中去除工具调用块纯代码零成本大压缩上下文窗口接近上限时 AI 智能提炼旧消息时间衰减加权RECENT / MIDDLE / OLD压缩流程先压缩旧消息 → 从 DB 重建缓存 → 再保存当前用户消息。当前用户消息永远不会被压缩。更多的相关内容欢迎前来体验。如果有一些意见也希望及时告知希望各位前辈能给出自己的看法与建议