# Daofy — Multi-Language MCP Server for Delphi & Lazarus/FPC [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) ![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg) ![Delphi 2005-13](https://img.shields.io/badge/Delphi-2005%20to%2013-red.svg) ![Lazarus/FPC](https://img.shields.io/badge/Lazarus-FPC-brightgreen) [![Powered by OrcaRouter](https://img.shields.io/badge/Powered_by-OrcaRouter-2563eb)](https://www.orcarouter.ai/ref/ref_18b07a7c594033c5f754) > 💡 **推广**:本工具由 [OrcaRouter](https://www.orcarouter.ai/ref/ref_18b07a7c594033c5f754) 赞助支持。OrcaRouter 是一个强大的 AI 路由引擎,能智能调度最合适的 AI 模型处理您的任务。点击上方链接了解详情。 一个为 AI 助手提供 **Delphi** 和 **Lazarus/Free Pascal** 工程编译能力和知识库查询功能的 MCP Server。如果您觉得有用,请不要吝啬您的 Star! ⭐ Daofy(道飞)——为创意插上翅膀。 ## 项目简介 Daofy 是一个基于 Model Context Protocol (MCP) 的 MCP Server,它允许 AI 助手直接编译 **Delphi** 和 **Lazarus/Free Pascal** 项目并查询知识库。 通过这个工具,您可以在与 AI 助手的对话中直接编译工程、查询 API 文档、搜索代码示例,无需手动切换到 IDE 或命令行。 **主要优势:** - **多语言支持**: 同时支持 Embarcadero Delphi 和 Lazarus/Free Pascal 工具链 - **插件架构**: 语言插件动态注册,仅安装对应开发工具后自动启用 - **Delphi 自动化测试**: 内置 GUI/Console 自动化测试框架,AI 驱动脚本操控 Delphi 程序 - 无缝集成到 AI 助手工作流中 - 自动检测和配置编译器 - 内置源码知识库,支持语义搜索 - 项目级知识库,自动追踪三方库和项目源码 - 通用文档知识库支持 Delphi CHM 和 FPC 文档全文搜索 - 支持所有主流 AI 助手平台 - 完整的编译事件支持 - 详细的错误诊断和日志 ## 功能特性 ### 编译功能 - **工程整体编译**: 支持编译完整的 Delphi 工程(.dproj/.dpr),生成可执行文件或动态链接库 - **MSBuild 编译**: 优先使用 MSBuild 编译,自动处理依赖关系和编译事件 - **单文件编译**: 支持编译单个 Delphi 单元文件(.pas),进行语法检查 - **自动检测编译器**: 自动从注册表检测已安装的 Delphi 编译器,无需手动配置 - **智能库路径解析**: 自动分析项目依赖,智能选择需要的第三方库路径,避免命令行过长 - **编译事件支持**: 支持 PreBuildEvent、PostBuildEvent、PreLinkEvent,包含完整的参数替换 - **命令行参数生成**: 支持生成 Delphi 编译器命令行参数,便于调试和预览 - **编译器配置管理**: 支持配置和管理多个 Delphi 编译器版本 - **环境检查**: 提供编译器环境状态检查功能 - **丰富的编译选项**: 支持条件编译符号、搜索路径、优化选项、调试信息、警告控制等 ### 知识库功能 - **Delphi 源码知识库**: 内置 Delphi 官方源码知识库,支持类、函数搜索和语义搜索 - **项目知识库**: 为每个项目构建独立知识库,自动追踪三方库和项目源码 - **三方库知识库**: 从 .dproj 文件自动提取三方库路径并构建知识库 - **增量更新**: 自动检测源码变动,增量更新项目知识库 - **示例知识库**: 自动发现 Delphi 官方 Demo/Samples 和三方库 Demos/Tests,全文搜索示例代码 - **通用文档知识库**: 支持 txt/md/html/docx/doc/pdf/epub/hlp/chm 和网页文档的扫描与搜索(基于 ZVec 向量存储 + FTS 全文索引) - 必需依赖: `html2text`, `requests` (已在 requirements.txt) - 可选依赖: `python-docx` (Word .docx 支持), `antiword/catdoc` (旧版 Word .doc 支持), `PyMuPDF` (PDF 支持,推荐) 或 `pdfplumber` (PDF 支持,备选), `beautifulsoup4` (EPUB 支持) - **智能去重**: 基于完整路径去重,正确处理同名不同目录的文件 ### 构建 Delphi 帮助文档知识库 用户首次使用或需要重建 Delphi API 文档时,调用 `delphi_kb` 工具构建文档知识库: ``` delphi_kb( action="build", kb_type="document", async_mode=true ) ``` 说明: - **不传 directory 时自动检测**最新安装的 Delphi 帮助目录(通过注册表或默认路径) - 也可手动指定:`directory="C:\Program Files (x86)\Embarcadero\Studio\<版本>\Help\Doc"` - 版本对照:37.0=Delphi 13, 23.0=Delphi 12, 22.0=Delphi 11, 21.0=Delphi 10.4, 20.0=Delphi 10.3 - `extensions=[".chm"]`:只扫描 CHM 文件,工具会自动解压并导入 HTML 文档 - `async_mode=true`:异步执行(耗时数分钟),提交后返回 task_id,通过 `async_task(action=status, task_id=...)` 轮询进度 - 需要系统安装 7-Zip(可放在 `tools/7z/` 目录下免安装) ### 构建示例知识库 构建 Delphi 官方 Demos/Samples + 三方库 Demos/Tests 的全文搜索知识库: ``` delphi_kb( action="build", kb_type="example" ) ``` 搜索示例代码: ``` delphi_kb( query="TThread.Queue", kb_type="example" ) ``` 示例知识库仅全文搜索,不解析结构化符号(类/函数),适合快速查找示例用法。 使用 `kb_type="all"` 时默认不搜索示例知识库,需显式指定 `kb_type="example"`。 ### 编码规范功能 - **编码规则查询**: 获取 Delphi 源码编码规则,供 AI 助手用于代码审核和生成 - **默认规则支持**: 内置默认编码规则文件,包含命名规则、格式化规则、修改规则和审核规则 - **自定义规则支持**: 支持项目级别的自定义编码规则,优先于默认规则 - **规则优先级**: 项目自定义规则 > 默认规则 ### 自动化测试功能 Daofy 内置 Delphi GUI/Console 自动化测试框架,支持 AI 驱动的 UI 交互测试: - **命名管道 GUI 自动化**: 在 Delphi 程序中接入 `DaofyAutomation` 单元,AI 通过 `automate_delphi` 工具发送脚本命令操控界面(点击/输入/截图/断言) - **控制台交互测试**: 无需改造 Delphi 程序,通过 stdin/stdout 交互测试控制台应用 - **脚本驱动**: JSON 格式测试脚本,支持条件等待(`waitfor`)、RTTI 属性读写(`rget`/`rset`)、截图比对 - **进程复用**: `keep_alive` 模式下进程常驻,避免重复启动开销 - **报告与修复闭环**: 失败自动定位到失败步骤,生成修复建议 > 📖 **启用指南**: 如何在自己的 Delphi 项目中接入自动化测试,见 [`docs/automate_test_guide.md`](docs/automate_test_guide.md) 的「启用指南」章节。 ## MCP 工具列表 | 工具名称 | 功能描述 | |----------|----------| | **Delphi 工具** | | | `delphi_project` | Delphi 项目全生命周期管理:编译(compile)/配置(info/set/create)/审计(audit/ast/runtime) | | `delphi_kb` | 搜索代码/类/函数/文档/示例代码,查看统计或构建知识库 | | `delphi_file` | Delphi 文件专用操作:读/写(edits批量修改)/格式化/备份管理(编码检测+自动备份+DFM转换) | | `manage_component` | DFM 组件增/删/改/生成 + PAS 自动同步 | | `check_environment` | 诊断编译环境、检测编译器、安装 pasfmt | | `package` | 组件包管理:安装(action=install) / 列出已安装(action=list) | | `get_coding_rules` | 获取编码规范,支持按语言(Delphi/Lazarus)和章节分段获取 | | `automate_delphi` | Delphi GUI/Console 自动化测试 — 脚本驱动(click/type/waitfor/rget/capture),支持 GUI 命名管道和控制台两种模式,`keep_alive` 进程复用 | | `delphi_rtti` | Delphi RTTI 桥接 — 通过 RTTI 发现和调用 Delphi 应用的运行时能力(三步法:discover/call/guide) | | **Lazarus/Free Pascal 工具** | | | `lazarus_compile` | Lazarus/FPC 项目编译 (lazbuild),支持 `.lpi`/`.lpr` 项目文件 | | `lazarus_project` | Lazarus 项目信息查询 — 解析 `.lpi` 文件,获取项目名称/源文件/编译器选项 | | `lazarus_kb` | Lazarus/FPC 源码知识库 — 索引和搜索 LCL/FPC RTL 源码(独立 KB) | | `lazarus_file` | Lazarus/FPC 文件读写 — read/write(edits批量修改,自动备份)/backup | | **通用工具** | | | `code_hosting` | 统一操作 Gitea/GitHub/GitLab/Gitee/GitCode 平台 + Git 本地操作 | | `async_task` | 管理后台任务(构建知识库等) | | `daofy_update` | 检查 Daofy 版本更新、执行 git pull 更新(check/update/version),后台异步执行 | | `tool_help` | 获取任意工具的完整帮助文档(按需,含参数说明/示例/触发词) | | `generate_copyright` | 软著文档生成:源代码/说明书/摘要自动生成(PDF 浏览器渲染+自动校验) | | `experience` | 经验记忆管理:保存/搜索/更新/合并/删除 AI 成功解决问题的做法;定期清理低价值条目(prune);模型加载后重建缺失向量(rebuild_embedding) | | `ocr` | 图像分析:文字识别(recognize)/文本框(detect)/截图比对(diff)/颜色分析(color)/图标匹配(match) | | `structured_content` | 结构化文档统一读写/搜索/修改 — DFM/LFM/FMX/XML/JSON/MessagePack/ProtoBuf。read(读取)/get_schema(生成JSON Schema)/set(按JSONPath修改)/search(路径搜索) | ## 系统要求 - Python 3.10-3.14 - **Delphi**: Delphi 编译器(dcc32.exe 或 dcc64.exe) — 编译 Delphi 项目 - **Lazarus/FPC**: Lazarus IDE (lazbuild.exe) — 编译 Lazarus 项目(可选) - Windows 操作系统 - Git - 7-Zip (用于解压 CHM 帮助文件,可选) 编译器自动检测(PATH / 注册表 / 常见安装目录),无需手动配置。仅安装对应开发工具后,相关插件自动启用。 ## 知识库存储位置 所有知识库数据存储在项目根目录的 `data/` 文件夹下: | 知识库类型 | 存储路径 | 说明 | |-----------|---------|------| | Delphi 源码知识库 | `data/delphi-knowledge-base/` | Delphi 官方源码 (RTL/VCL/FMX 等) | | Lazarus/FPC 源码知识库 | `data/lazarus-knowledge-base/` | Lazarus LCL / FPC RTL 源码(独立索引) | | 第三方库知识库 | `data/thirdparty-knowledge-base/` | 第三方组件库源码 | | 通用文档知识库 | `data/document-knowledge-base/` | Delphi CHM 帮助文档 + 通用文档 | | 项目知识库 | `<项目目录>/.delphi-kb/` | 项目级知识库,存放在项目目录下 | | 示例知识库 | `data/example-knowledge-base/` | Delphi 官方 Demos + 三方库 Demos/Tests,全文搜索 | | 经验知识库 | `data/experience-knowledge-base/` | AI 经验记忆(`experiences.sqlite`) | 每个知识库目录包含: - `*.zvec/` - ZVec 向量数据库目录(文档/示例/项目/三方库知识库) - `experiences.sqlite` - 经验记忆数据库(仅经验知识库保留 SQLite) - `config.json` - 知识库配置文件 说明:除经验知识库外,所有知识库已从 SQLite 迁移到 ZVec 向量引擎。文档知识库不再使用 SQLite FTS5,改用 ZVec 全文索引。 ## 知识库配置说明 每个知识库通过 `config.json` 文件进行配置,支持自定义数据库、源码路径、构建参数等。 | 知识库类型 | 配置位置 | |-----------|----------| | Delphi 源码 | `data/delphi-knowledge-base/config.json` | | 第三方库 | `data/thirdparty-knowledge-base/config.json` | | 通用文档 | `data/document-knowledge-base/config.json` | | 项目级 | `<项目目录>/.delphi-kb/config.json` | | 示例库 | `data/example-knowledge-base/`(纯 SQLite,无 config.json) | | 经验库 | `data/experience-knowledge-base/`(纯 SQLite,无 config.json) | 配置文件在首次构建时自动生成,通常无需手动修改。 ## 安装 ### 方式一:pip 安装(推荐) ```bash pip install daofy-for-delphi ``` 安装完成后直接进入 → [配置 AI 助手](#配置-ai-助手) 步骤即可。 > **国内用户**可使用镜像源加速: > ```bash > pip install daofy-for-delphi -i https://pypi.tuna.tsinghua.edu.cn/simple > ``` ### 方式二:源码安装 #### AI 助手自动安装提示词 请按以下步骤安装 Daofy: [] 检查并安装 Git/Python 3.10-3.14/7-Zip [] 安装 `https://github.com/chinawsb/daofy.git`(国内用户可用镜像: `https://gitee.com/zuoyouruanjian/daofy.git`) [] 安装完成后验证结果并帮我配置当前客户端 #### 手动安装步骤 ##### 1. 克隆或下载项目 ```bash git clone https://github.com/chinawsb/daofy.git # 国内用户可用 Gitee 镜像加速: # git clone https://gitee.com/zuoyouruanjian/daofy.git cd daofy ``` ##### 2. 创建虚拟环境 ```bash python -m venv venv ``` ##### 3. 激活虚拟环境 Windows: ```bash venv\Scripts\activate ``` Linux/macOS: ```bash source venv/bin/activate ``` ##### 4. 安装依赖 (使用国内镜像源加速) ```bash pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple ``` 可选国内镜像源: - 清华大学: - 阿里云: - 中科大: ## 配置 AI 助手 ### 自动检测 Delphi 编译器 **首次使用时,MCP Server 会自动从 Windows 注册表检测已安装的 Delphi 编译器,无需手动配置。** 自动检测支持的 Delphi 版本: - Delphi 13 Florence (37.0) - Delphi 12 Athens (23.0) - Delphi 11 Alexandria (22.0) - Delphi 10.4 Sydney (21.0) - Delphi 10.3 Rio (20.0) - Delphi 10.2 Tokyo (19.0) - Delphi 10.1 Berlin (18.0) - Delphi 10 Seattle (17.0) - Delphi XE8 (16.0) - Delphi XE7 (15.0) - Delphi XE6 (14.0) - Delphi XE5 (12.0) - Delphi XE4 (11.0) - Delphi XE3 (10.0) - Delphi XE2 (9.0) - Delphi XE (8.0) - Delphi 2010 (7.0) - Delphi 2009 (6.0) - Delphi 2007 (5.0) - Delphi 2006 (4.0) - Delphi 2005 (3.0) ### 手动配置编译器 (可选) 如果需要手动配置或添加自定义编译器,可以直接编辑 `config/compilers.json` 文件,或使用 `check_environment` 工具的 `detect` action 重新检测。 ### 通用配置(pip 安装) 如果通过 `pip install daofy-for-delphi` 安装,配置最简: ```json { "mcpServers": { "daofy": { "command": "daofy", "env": { "PYTHONUNBUFFERED": "1", "PYTHONIOENCODING": "utf-8", "PYTHONUTF8": "1" } } } } ``` > **路径含空格时报错?** 如果 Python 安装在 `D:\Program Files\...` 等含空格的路径,部分 MCP 客户端无法正确处理。解决方案:将 `command` 改为 Python 解释器完整路径,`args` 改为 `-m src`: > ```json > { > "mcpServers": { > "daofy": { > "command": "D:\\Program Files\\Python311\\python.exe", > "args": ["-m", "src"], > "env": { ... } > } > } > } > ``` > 也可直接指定 `server.py`:`"args": ["D:\\path\\to\\daofy\\src\\server.py"]` ### 源码安装配置 以下配置适用于通过 git clone 源码安装的用户,请将路径替换为实际安装路径。 #### Claude Desktop **Windows**: `%APPDATA%\Claude\claude_desktop_config.json` ```json { "mcpServers": { "daofy": { "command": "python", "args": ["C:\\path\\to\\daofy\\src\\server.py"], "env": { "PYTHONUNBUFFERED": "1", "PYTHONIOENCODING": "utf-8", "PYTHONUTF8": "1" } } } } ``` #### Trae **Windows**: `C:\Users\<用户名>\.trae-cn\mcp_config.json` ```json { "mcpServers": { "daofy": { "command": "F:\\ProPlus\\DelphiPlus\\Experts\\DelphiMCPServer\\delphi-complier-mcp-server\\venv\\Scripts\\python.exe", "args": [ "F:\\ProPlus\\DelphiPlus\\Experts\\DelphiMCPServer\\delphi-complier-mcp-server\\src\\server.py" ], "env": { "PYTHONUNBUFFERED": "1", "PYTHONIOENCODING": "utf-8", "PYTHONUTF8": "1" } } } } ``` **注意**: 请将路径修改为您的实际安装路径。 #### CodeArts Agent **Windows**: `~/.codeartsdoer/mcp/mcp_settings.json` ```json { "mcpServers": { "daofy": { "command": "python", "args": ["src\\server.py"], "cwd": "C:\\path\\to\\daofy", "env": { "PYTHONUNBUFFERED": "1", "PYTHONIOENCODING": "utf-8", "PYTHONUTF8": "1" } } } } ``` #### DSH (DeepSeek Harness) DSH 通过 profile 的 `cordis.patch.yml` 注册 MCP Server。使用安装脚本 `install_mcp.py` 一键安装/卸载(与其它 Agent 同一入口): ```bash python install_mcp.py --agent DSH # 安装 Daofy 到默认 profile (web) python install_mcp.py --agent DSH --dsh-profile cli # 指定 profile python install_mcp.py --agent DSH --python "D:\Python311\python.exe" # 指定 Python 解释器 python install_mcp.py --agent DSH --pip # pip 安装模式(command=daofy) python install_mcp.py --agent DSH --uninstall # 卸载 Daofy ``` 也可以不加 `--agent`,在交互菜单中选择 DSH。安装脚本会自动检测 DSH(`~/.dsh/profiles/` 目录或 `dsh` 命令)。 生成的 `cordis.patch.yml` 条目(示意): ```yaml # ── Daofy for Delphi MCP Server (managed by install_mcp.py; uninstall: 重新运行脚本选择 DSH) - insert: - id: mcp-daofy name: '@deepseek-ai/dsh-mcp-client' config: serverName: 'daofy' transport: stdio command: 'C:\path\to\python.exe' args: - 'C:\path\to\daofy\src\server.py' env: PYTHONUNBUFFERED: '1' PYTHONIOENCODING: 'utf-8' PYTHONUTF8: '1' cwd: 'C:\path\to\daofy' toolCallTimeoutMs: 600000 ``` 特性: - **幂等**: 配置相同则直接跳过,不重复修改文件 - **保留其他条目**: 卸载只移除 Daofy 块,不影响第三方 MCP / `!!js` 表达式 - **自动识别环境**: 默认使用脚本检测到的 Python 解释器;`--pip` 时直接使用 `daofy` 命令 - **卸载安全**: 移除后自动补回 `[]` 保证 patch 文件仍是合法 YAML ## 使用方法 ### 知识库统计 | 知识库 | 文件数 | 类数量 | 数据库大小 | | --------- | ------- | ------ | ------- | | Delphi 源码 | 2,798 | 163,737 | 260 MB | | 三方库 | 1,800 | 5,724 | 27 MB | | 通用文档 | 160,328 | - | 1,306 MB | ## 故障排除 ### 1. 编译器未找到 **解决方案**: - 检查 `config/compilers.json` 文件中的编译器路径是否正确 - 使用 `check_environment` 工具 `action=detect` 重新检测编译器 ### 2. MCP Server 无法启动 **解决方案**: - 检查 Python 环境是否正确配置 - 检查依赖是否已安装: `pip install -r requirements.txt` - 检查 MCP 库版本: `pip show mcp` ### 2a. `Spawn D:\Program ENOENT` 路径含空格报错 pip 安装后,部分 MCP 客户端(Trae 等)在路径含空格时无法正确 spawn。 **解决方案**:在 MCP 配置中用 Python 解释器完整路径替代 `daofy` 命令: ```json { "command": "D:\\Program Files\\Python311\\python.exe", "args": ["-m", "src"] } ``` 也可用源码安装方式:`"args": ["D:\\path\\to\\daofy\\src\\server.py"]` ### 3. 知识库搜索无结果 **解决方案**: - 确保已构建知识库: 使用 `delphi_kb` 工具的 action=build 构建 - 检查知识库目录是否存在 ## 许可证 MIT License Copyright (c) 2026 吉林省左右软件开发有限公司 Copyright (c) 2026 Equilibrium Software Development Co., Ltd, Jilin 详见 [LICENSE](LICENSE) 文件。 ## 版本历史 ### v2026.09.16 (最新) - **_SafeStderrHandler 安全 stderr 处理器**: 客户端不排空 stderr 导致管道写满时,日志 `emit` 不再阻塞(可写空间足够才直写,否则入队、满则丢弃),后台消化线程可取消(`CancelSynchronousIo` 看门狗 + 30s 冷却重试);`setup_logger` 文件处理器先挂且与 `console_logging` 解耦——修复客户现场 stderr 管道写满卡死服务(连 MCP `initialize` 都无法响应)的故障 - **示例知识库进度日志格式串修复**: `example_knowledge_base._scan_directory` 日志 4 个占位符仅传 3 个参数,全量测试下被 pytest 日志捕获器冒泡为 `TypeError`(24 个用例失败) - **StackTrace 剥离重构遗留编译错误修复**: `TLocalVarInfo.GetTypeSize` 改为 `MapDataSerializer.GetLocalVarTypeSize`,并在 `MapDataSerializer` 接口导出 `MakeLocalVarInfo`/`GetLocalVarTypeSize` ### v2026.09.15 - **console_logging 配置开关**: 日志默认不再输出到 stderr 控制台(避免干扰 MCP stdio),仅写文件 - **file_backup 编码检测重写**: 超大文件多点采样 + chardet 低置信度仅接受多字节 CJK 编码 + UTF-16 BOM 启发式分析 - **DSH 安装集成**: `install_mcp.py` 一键安装/卸载 DeepSeek Harness(`--agent DSH`),读写 `cordis.patch.yml` - **相对路径自动解析**: `delphi_file` 相对路径按 `project_path` → `workspace_root` → CWD 解析 - **多版本编译器精确匹配**: 项目版本四级匹配,不再错配到其它 Delphi 版本编译器 - **编译输出目录读写放行**: `.dproj` 的 `DCC_ExeOutput`/`DCC_DcuOutput` 目录允许直接读写 - **StackTrace VEH 日志统一**为 `exception.log` ### v2026.09.02 - **多版本编译器错配修复**: 库路径/RTL/三方库/系统库与 dcc32 版本一致 - **系统库按编译器版本过滤**: `delphi_kb(build, kb_type=delphi, version=...)` 只索引对应 RTL/VCL/FMX 源码 - **MCP v1/v2 全接口一致性**: read_resource/title/description/isError/jsonschema 校验对齐 - **Fmx.DaofyAutomation 同步 Vcl 功能**: RTTI named_paths/GetRttiClasses/路径解析/Unicode 按键 ### v2026.08.06 - **waitfor 主线程查询超时防护**: `SendMessageTimeout` + 版本号三事件无锁协议(提交/完成/放弃各 +1,僵尸消息 LParam 过滤),主线程死锁/忙时管道线程最多阻塞 200ms 即让出,异步结果回传不被长阻塞 - **waitfor 冒烟测试**: `Tests/冒烟测试/` 新增正常路径(`waitfor-basic.json`)与超时/模态故障路径(`waitfor-timeout-modal.json`),AutoTest.exe 实测三轮全过 ### v2026.08.05 - **编码规则示例补齐**: `get_coding_rules(examples=...)` 新增 `naming`/`formatting`/`documentation`/`error-handling` 四个示例文件,修复 skill 广告示例在服务端不存在的问题 ### v2026.07.18 - **版本发布**: 全量同步 Lazarus 插件支持、多语言编码规则、插件可用性检测 ### v2026.07.17 - **Lazarus/Free Pascal 插件支持**: 新增 4 个 Lazarus 专用工具 — `lazarus_compile` (lazbuild编译)、`lazarus_project` (项目信息查询)、`lazarus_kb` (FPC/LCL 源码知识库)、`lazarus_file` (文件读写与备份) - **多语言编码规则**: `coding-rules/` 拆分为 `delphi/`、`lazarus/`、`shared/` 三层;`get_coding_rules` 新增 `language` 参数(支持 `"delphi"` 和 `"lazarus"`) - **插件可用性检测**: 插件启动时检查开发工具是否安装,不安装则不注册对应工具,避免暴露不可用的 MCP 工具 - **FPC 错误解析**: `OutputParser` 新增 FPC 格式支持(`File(13,3) Fatal: (2003) message`) - **uses 排序修复**: 改为按 namespace group 插入,不重排已有单元,避免 `Winapi.Windows` 与 `Vcl.Graphics` 相对顺序改变导致类型解析错误 ### v2026.07.05 - **文档全量同步**: 全部 docs 与实现对齐——`project()` → `delphi_project()`、ZVec 存储结构、kb_type 补全、section 索引扩展、tutorial 同步修复 - **CHANGELOG 补全**: v2026.06.22 遗漏的 Added/Fixed/Removed 条目已补录 ### v2026.06.22 - **工具名重命名**: `project` → `delphi_project`,防止非 Delphi 用户误触 - **`delphi_rtti` 工具**: Delphi RTTI 桥接 — 通过 Enhanced RTTI 发现和调用 Delphi 应用的 published 方法(三步法:guide/discover/call) - **`generate_copyright` 工具**: 软著文档自动生成(源代码/说明书/摘要,PDF 浏览器渲染+自动校验) - **`daofy_update` 工具**: Daofy 自身版本检查和更新管理(check/update/version) - **存储引擎迁移**: 文档/示例/项目/三方库知识库从 SQLite FTS5 迁移至 ZVec 全文索引 - **HTML 解析优化**: 移除 BeautifulSoup 依赖,改用 html2text 内置过滤;构建时间 -41% - **扫描引擎重构**: `scan_directory` 改为生产者-消费者模式,内存峰值从天降至 KB 级 - **`DaofyAutomation.RttiDiscovery.pas`**: 新增 RTTI 能力发现单元,`TRttiDiscoverer` 类将 Delphi 类型映射为 JSON Schema - **`DaofyAutomation.Base.pas` / `Vcl.DaofyAutomation.pas`**: 新增 `rtti_discover` 命令路由和 VCL 端 `GetRttiClasses` 重写 - **`src/services/rtti_bridge.py`**: 新增 RTTI 桥接服务(连接管理/5分钟缓存/discover/call) - **`src/tools/delphi_rtti.py`**: 新增 MCP 工具 handler(action=guide/discover/call) - **`.opencode/skills/delphi-rtti-bridge/SKILL.md`**: 新增 AI Agent 技能文件(含 YAML frontmatter + 渐进式 L3 文档) - **`scripts/build-skills.py`**: 技能多平台分发脚本(自动分发到 .claude/ .cursor/ .windsurfrules) - **`tests/test_rtti_bridge.py` / `tests/test_delphi_rtti.py`**: 38 个测试用例覆盖桥接服务 + 工具 handler - **DaofyAutomation 三层架构拆分**: tools/auto/ 拆分为 Base/VCL/FMX 三层,Overlapped I/O 管道,扩展命令集(move/drag/key/waitfor/rcall 等) - **`automate_delphi` 新增 Console 模式**: 支持 subprocess stdin/stdout 交互,自动 PE 头检测 GUI vs Console - **`file_tool` 路径白名单校验 + 脏标记系统**: `_validate_path()` 安全校验,写后标记脏防止行号错位 - **`CODING_RULES.mdc` 规则重构**: 全面重写 delphi_file 写入规则、紧凑输出格式、脏标记保护 - **编译验证**: DCC 0 错误通过,Python import 无报错 ### v2026.06.08.1 - `delphi_file` 全操作 RWLock 防并发文件损坏:read/write/format/backup/uses 全部引入多读单写锁,并发写入返回明确错误,引导合并到一次 write(edits=[...]) - `tools/7z/` 补齐 7z.dll,release 包开箱可用 - `tool_docs.py` 约束强化:统一写入参数为 edits,并新增并行写入禁令(后续版本推荐 `replace`/`insert`/`delete` 结构化入口) - `.gitignore` 排除 dot-prefixed 目录,清理 AI 工作目录追踪 ### v2026.06.03 - `delphi_file` 写入统一为 `write(edits=[...])`:一次传入多个 edit,内部按 `start_line` 升序排列,内存中累积偏移量后一次性写出 - `compilers.json` 路径自愈:检测到不在 `src/config/` 时自动回退到项目根 `config/`,避免 MCP 启动时因路径差异直接报错 - 18 处 `except Exception: pass` 添加 `logger.debug` 异常日志,便于调试时定位失败原因 - `search_knowledge` 重构:597→37 行,拆 16 个模块级子函数,行为完全等价 - 全量测试 727 passed ### v2026.06.01 - `delphi_file` 部分写入行号修正:0-indexed 文档纠偏,写入后返回偏移量+后续行号调整公式 - `delphi_file(action="uses")` 同步返回偏移量信息 - `AGENTS.md` 当时新增部分写入规则章节;后续版本已统一为 1-indexed inclusive 行号 - 全量测试 684 passed, 6 skipped ### v2026.05.14 - 新增 `manage_component` 工具:DFM 组件增/删/改/生成 + PAS 自动同步(替代原 `generate_component_dfm`) - `delphi_file` 重命名+增强:DFM 二进制自动转换、备份管理、搜索定位(原名 `file_tool`,旧名仍兼容) - `get_coding_rules` 增强:支持按章节分段获取,节省 token - 新增 `code_hosting` 工具:统一 Gitea/GitHub/GitLab 操作 - 工作流从 6 步扩展为 7 步(①环境检查→②查KB→③写代码→④格式化→⑤编译→⑥审计→⑦清理) 完整版本历史详见 [CHANGELOG.md](CHANGELOG.md) ## 贡献 欢迎提交 Issue 和 Pull Request! ## 赞助 如果您觉得 Daofy for Delphi 对您有帮助,欢迎通过以下方式赞助支持我们。 您的支持让项目走得更远!❤️ ### 支付宝 **账号**: guansonghuan@sina.com(姓名:管耸寰,请标明QQ号) 支付宝收款码 ### 微信 **账号**: wangshengbo(发送红包或转账) 微信收款码 ### QQ 直接群支付,或给群主发红包 QQ收款码 **QQ官方群**: 250530692 ### 银行卡 | 银行 | 户名 | 账号 | 开户行 | |------|------|------|--------| | 光大银行 | 王胜波 | 6226 6208 0391 5552 | 光大银行长春人民大街支行 | | 建设银行 | 管耸寰 | 4367 4209 4324 0179 731 | 建设银行长春团风储蓄所 | ## 联系方式 如有问题或建议,请提交 Issue。