Skip to content
chinawsbPublic

About

Daofy for Delphi — MCP Server that compiles Delphi projects and queries knowledge base for AI assistants.

Topics

Resources

Stars

107 stars

Watchers

3 watching

Forks

Repository files navigation

Daofy — Multi-Language MCP Server for Delphi & Lazarus/FPC

License: MIT Python 3.10+ Delphi 2005-13 Lazarus/FPC Powered by OrcaRouter

💡 推广:本工具由 OrcaRouter 赞助支持。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 的「启用指南」章节。

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 安装(推荐)

pip install daofy-for-delphi

安装完成后直接进入 → 配置 AI 助手 步骤即可。

国内用户可使用镜像源加速:

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. 克隆或下载项目
git clone https://github.com/chinawsb/daofy.git
# 国内用户可用 Gitee 镜像加速:
# git clone https://gitee.com/zuoyouruanjian/daofy.git
cd daofy
2. 创建虚拟环境
python -m venv venv
3. 激活虚拟环境

Windows:

venv\Scripts\activate

Linux/macOS:

source venv/bin/activate
4. 安装依赖 (使用国内镜像源加速)
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 重新检测。

指定 MSBuild 与 Delphi 版本(按工程 / 按版本)

多版本 Delphi 并存时,推荐把配置放在工程目录:同一台机器上的不同工程可以各自使用不同的 Delphi/MSBuild,互不影响。

项目级配置(推荐):在工程目录(或任意父目录,最多向上 8 层)放置 .daofy/project.json 或 daofy.project.json:

{
  "delphi_version": "11.0",
  "msbuild_path": "C:\\Windows\\Microsoft.NET\\Framework\\v3.5\\MSBuild.exe",
  "compiler_version": "Delphi XE4 Win32"
}
字段 说明
delphi_version 该工程使用的 Delphi 版本:注册表版本号("11.0")、产品名("XE4")或 .dproj ProjectVersion("14.6"→XE6、"18.2"→Berlin、"19.2"→Tokyo)
msbuild_path 该工程使用的 MSBuild.exe;相对路径按配置文件所在目录解析
compiler_version compilers.json 中的编译器名称;也可直接写版本号("11.0")
  • 就近命中:离工程最近的配置文件生效;未配置的字段继续按下一级规则查找
  • 项目级配置同时作用于编译、install_package(BPL/DCP/IDE 注册)和 deploy
  • 工程配置可以指定任意可执行文件路径,只应在可信工程中使用

按版本配置(compilers.json,可选):

配置项 说明
msbuild_by_delphi_version 按 Delphi 版本分别指定 MSBuild,如 {"11.0": "...\\v3.5\\MSBuild.exe", "23.0": "...\\MSBuild.exe"}
{
  "compilers": [ ... ],
  "default_compiler": "Delphi XE4 Win32",
  "msbuild_by_delphi_version": {
    "11.0": "C:\\Windows\\Microsoft.NET\\Framework\\v3.5\\MSBuild.exe",
    "23.0": "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Current\\Bin\\MSBuild.exe"
  }
}

msbuild_by_delphi_version 的键支持注册表版本号("11.0")、产品名("XE4")或 .dproj ProjectVersion(如 "14.6")。映射值中的相对路径按 compilers.json 所在目录解析。

全局 msbuild_path、default_registry_version 以及 DAOFY_MSBUILD / DAOFY_DELPHI_VERSION 环境变量已移除。旧配置中的这些键会被忽略;请改用项目级 .daofy/project.json(单个工程)或 msbuild_by_delphi_version(按版本)。

选择优先级:

  • Delphi 版本:工具参数 compiler_version > 项目配置 compiler_version > 项目配置 delphi_version > .dproj ProjectVersion 推断
  • MSBuild:项目配置 msbuild_path > msbuild_by_delphi_version[版本] > 自动探测

行为说明:

  • 项目配置的版本同时作用于 MSBuild 的 rsvars.bat、编译器自动匹配、dcc32 直接编译、RTL/第三方库搜索路径,避免"用 XE4 的 dcc32 却找 Delphi 12 的 dcu"
  • 显式配置的 MSBuild 路径不存在、或指定版本未安装时直接报错,不会静默回退到其它 MSBuild / Delphi 版本
  • .dpr/.dpk 有对应 .dproj 时优先 MSBuild;只有"自动探测不到 MSBuild"才回退 dcc 直编,显式配置错误不会被直编掩盖
  • 自动探测会按工程版本优先选择:XE4 及更早优先 .NET Framework\v3.5\MSBuild.exe,XE5–10 Seattle 优先 v4.0.30319
  • 未配置项目版本时,若 .dproj 对应版本的编译器不在 compilers.json 中,自动匹配仍可能按原有策略回退到更高版本编译器(日志会输出警告);需要严格版本时请配置项目 delphi_version,版本未安装会直接失败
  • 项目配置中的 delphi_version 无法识别(如拼写错误)时会直接报错,不会静默改用 .dproj ProjectVersion 推断
  • 版本号支持 "11"、"11.0"、"XE4"、"Delphi XE4" 等写法
  • 修改配置后需重启 Daofy MCP 服务/IDE 才会生效

可用 check_environment(action="check") 确认按版本映射的 MSBuild 路径及文件是否存在。

完整参数、优先级和典型场景(多版本、旧版 Delphi、包安装、部署、CI)见 docs/configuration.md。

pip 安装场景:compilers.json 位于 <Python 环境>/Lib/site-packages/src/config/compilers.json,升级会覆盖。项目级 .daofy/project.json 不受升级影响,推荐用它固定单个工程的工具链。

通用配置(pip 安装)

如果通过 pip install daofy-for-delphi 安装,配置最简:

{
  "mcpServers": {
    "daofy": {
      "command": "daofy",
      "env": {
        "PYTHONUNBUFFERED": "1",
        "PYTHONIOENCODING": "utf-8",
        "PYTHONUTF8": "1"
      }
    }
  }
}

路径含空格时报错? 如果 Python 安装在 D:\Program Files\... 等含空格的路径,部分 MCP 客户端无法正确处理。解决方案:将 command 改为 Python 解释器完整路径,args 改为 -m src:

{
  "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

{
  "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

{
  "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

{
  "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 同一入口):

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 条目(示意):

# ── 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 命令:

{
  "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 文件。

版本历史

v2026.11.03 (最新)

  • MCP 工具路径绝对路径校验: 在 server.call_tool 接口边界统一校验白名单路径字段,拒绝相对路径,避免 MCP 服务 CWD 不一致导致文件读写/编译/部署落到错误位置;JSONPath、项目相对字段不强制
  • 配置说明文档: 新增 docs/configuration.md,覆盖项目级/全局参数、优先级、多版本/旧版 Delphi/包安装/部署/CI 场景、错误码与迁移
  • 项目配置错误码统一: 项目配置 JSON/delphi_version 非法时统一返回 PROJECT_CONFIG_INVALID

v2026.10.31

  • 项目级 Delphi/MSBuild 配置: 新增 .daofy/project.json / daofy.project.json,按工程指定 delphi_version、compiler_version、msbuild_path;同一台机器上不同工程可使用不同 Delphi/MSBuild,互不影响
  • 移除机器级覆盖: 移除 compilers.json 的 msbuild_path、default_registry_version 以及 DAOFY_MSBUILD / DAOFY_DELPHI_VERSION 环境变量;保留 msbuild_by_delphi_version 按版本映射
  • 按工程版本解析工具链: MSBuild 自动探测按工程 Delphi 版本重选(XE4 及更早优先 .NET Framework v3.5,XE5–10 Seattle 优先 v4.0.30319);rsvars.bat、RTL/第三方库路径、包安装 BPL/DCP 与 IDE 注册、部署 MSBuild 均按工程版本解析
  • 严格失败: 项目配置/版本映射的 MSBuild 路径无效、指定版本未安装时直接报错,不再静默回退;.dpr 不再用直编掩盖配置错误;PreBuildEvent 前先校验 rsvars.bat
  • 版本匹配修复: 修复 Delphi XE/XE8、Delphi 12/12 Athens 等前缀误匹配;delphi_version 支持 14.6/18.2/19.2 等 .dproj ProjectVersion 写法

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

贡献

欢迎提交 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。

About

Daofy for Delphi — MCP Server that compiles Delphi projects and queries knowledge base for AI assistants.

Topics

Resources

Stars

107 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages