文档 / 参考
架构
Yuli 的构建方式:Rust 原生引擎、基于 TypeScript 和 React 的 Electron 界面,以及作为推理层的语言模型。
Yuli 清晰地划分了职责:谁承担繁重工作,谁负责呈现,谁负责推理。
| 层 | 技术 | 职责 |
|---|---|---|
| 原生引擎 | Rust | 索引与语义分析、Git、进程、调试、数据库、安全、质量以及智能体编排。 |
| 界面 | Electron、TypeScript 和 React | 只负责呈现:编辑器、面板、图表和预览。 |
| 语言模型 | 你选择的提供商或智能体 | 负责推理:通过受控工具进行规划、决策并操作 IDE 的各项服务。 |
应用可在 Windows、macOS 和 Linux 上运行,全链路 64 位。
通信方式
Interfaz (Electron + React)
│ IPC por stdin/stdout
▼
Motor (agent-engine, Rust) ──▶ Git, build, depurador, base de datos, índice
│
├──▶ Proveedor de IA (Modo Platform)
│
└──◀ yuli-mcp ◀── stdio ── Claude Code, Kiro, Codex, Antigravity
(TCP 127.0.0.1 + token)
- 界面以进程形式启动引擎,并通过 stdin/stdout 与其通信。
- 界面从不自行访问磁盘、Git 或智能体的网络:一切都经由引擎的控制器。
- 外部智能体通过
yuli-mcp连接,后者通过带令牌的 loopback 套接字与引擎通信。参见作为 MCP 服务器的 Yuli。
引擎组件
| 组件 | 作用 |
|---|---|
agent-engine |
主二进制文件:服务、控制器和智能体编排。 |
yuli-mcp |
面向外部智能体的 MCP 服务器、hooks 和 gate。 |
code-intelligence |
代码智能引擎:图核心、Java、自动补全、调度器以及框架(Struts、JBoss)。 |
java-debug |
Java 调试器的 JDWP 客户端。 |
引擎分层组织:domain(类型与纯规则)、service(逻辑)和 controller(IPC)。界面只与控制器通信。
代码智能
| 组件 | 技术 |
|---|---|
| 语法分析 | Tree-sitter(Java 和 TypeScript) |
| 符号图 | petgraph,包含节点(类、方法、字段、Spring bean)和边(调用、继承、实现、注入) |
| 持久化 | 每个项目在 .ai/codebase/ 中使用 SQLite |
| 失效机制 | 文件之间的依赖图:编辑一个文件只会重新分析依赖它的部分 |
| 类型解析 | Java 编译器 |
| 调度 | 优先级队列,优先解析你正在查看的内容 |
回答有关项目的问题时,智能体接收的是一个有边界的子图,而不是整个文件。这样既不会耗尽上下文窗口,也不会推高令牌成本。
各类内容的存放位置
| 位置 | 内容 |
|---|---|
项目中的 .ai/ |
契约、任务、记忆、规则和索引。参见.ai 文件夹。 |
%APPDATA%\.yulicode(Windows) |
设置、自定义提示词、技能和钩子、聊天历史。 |
%LOCALAPPDATA%\.yulicode(Windows) |
运行时、索引、缓存和日志。可以删除。 |
| 系统密钥链 | API key、密码和令牌。 |
在 macOS 和 Linux 上,采用相同的划分方式,存放在各系统的标准文件夹中。
确定性规则
安全和质量边界位于引擎中,而不在提示词里:
- 项目沙箱和受保护的路径。
- 对每个操作的风险评估。
- 在机密离开电脑之前进行脱敏。
- 每个数据库的访问策略。
- 质量关卡,对人、智能体、Git hooks 和 CI 一视同仁。
模型无法通过说服自己来绕过规则。
扩展
插件无需重新编译即可加载,在隔离环境中运行(出错不会影响 IDE),并在清单中声明其权限。插件可以添加命令和面板、检查、菜单项和状态栏项、自有设置、提供给智能体的数据以及自有翻译。