# 道飞DAOFY for Delphi

与 AI 共舞 · 享 AI 时代

教程演示 2026
基于 Model Context Protocol · 为创意插上翅膀

## 📋 目录

01 什么是 MCP？
05 编译 & 诊断
02 功能全景
06 格式化 & 备份
03 AI 自动安装
07 编码规范 & 审计
04 知识库搜索
08 完整工作流

## ❓ 01 什么是 MCP？

Model Context Protocol — 由 Anthropic 提出的开放协议

核心价值：为 AI 打开一扇通向本地世界的门——从对话到行动
🤖
AI 助手
Claude / CodeArts
MCP 协议
🔌
MCP Server
工具网关
🔧
Delphi 编译器
dcc32 / msbuild
📚
源码知识库
30万函数
🎨
pasfmt 格式化
代码美化

类比：AI 的"USB 接口"——插上什么工具，AI 就会用什么

### 传统 AI vs MCP 模式

✖ 传统模式

      用户: 帮我编译项目
      AI: 请打开命令行运行:
        msbuild Project.dproj

      用户: 报错了
      AI: 错误是 X，建议你 Y
      —— 只给建议，不执行

✔ MCP 模式

      用户: 帮我编译项目
      AI: 正在编译...
          [调用 compile_project]
          ✅ 编译成功 (0 errors, 0 warnings)

      用户: 修复这个错误
      AI: 搜索 KB → 分析根因 →
          修改代码 → 重编译 → ✅ 通过
       —— 你提需求，它落地实现

## 🚀 02 功能全景

🔧
编译
项目 / 语法 / 批量
多平台 / 多配置 / run_verify
📚
知识库
30万函数 + 16万文档
精确 / 语义 / 引用
🎨
文件操作
读 / 写 / 格式化 / 备份
uses 管理 / DFM 自动转换
📋
编码规范
驱动代码生成
驱动代码审计
📦
组件管理
DFM 增删改
.dpk 编译安装
🧰
RTTI 桥接
运行时发现对象
调用 published/public 方法
🤖
自动化测试
GUI 截图 / Console
PE 自动检测
🧠
经验记忆
AI 自动积累
去重 + 语义搜索
📄
软著生成
源码+手册+汇总表
PDF 一键出稿

## 📥 03 AI 自动安装

用户只需一句话：

💬 "帮我安装 Daofy MCP Server"

AI 自动完成：

- ✅ 检查 Python / Git / 7-Zip 环境
- ✅ 从 GitHub 克隆仓库
- ✅ 创建虚拟环境 + pip install 依赖
- ✅ 自动检测已安装的 AI 客户端并写入配置

全程在 AI 对话中完成，无需打开终端或编辑 JSON

### 支持的 AI 平台

Claude
Desktop
Trae
字节跳动
CodeArts
华为
Cursor
AI IDE
Windsurf
AI IDE
通义灵码
阿里
豆包
字节
Kimi
月之暗面

install.ps1 自动检测，无需手动配置

## 🔍 04 知识库规模

163,737
类
300,228
函数 / 过程
160,328
文档页面
2,798 文件 / 260 MB
Delphi 源码
1,800 文件 / 27 MB
三方库
1,306 MB 索引
文档

### 三种搜索方式

方式 | 用法 | 示例
--- | --- | ---
🎯 精确搜索 | 已知类名 / 函数名 | `TStringList` / `Split`
🔍 语义搜索 | 自然语言描述需求 | "JSON 深度比较"
🔗 引用查询 | 查谁引用了某单元 | `Vcl.Forms` 被谁 uses

搜索策略：先精确猜名 → 再语义兜底

### 发现隐藏 API — 语义搜索

你不知道 API 叫什么？自然语言描述即可
⚠️ 需提前构建 embedding 索引：delphi_kb(action="build_embedding")

    用户: Delphi 有没有可以比较两个 JSON 对象
          是否结构相同的功能？
          不是字符串 == 比较，要忽略键顺序。

    AI 语义搜索 30 万函数 →
      📌 TJSONObject — 继承链 TJSONAncestor > TJSONValue
      📌 TJSONObject 未重写 Equals，默认引用比较

    AI 分析: 标准库没有直接的深层比较函数，
           但可以与你一同生成递归比较工具代码。

## ⚙ 05 编译 & 诊断

能力 | 说明
--- | ---
项目编译 | .dproj / .dpr → exe / dll，支持 MSBuild
语法检查 | 单个 .pas 文件快速检查
批量编译 | .groupproj → 按 BuildOrder 自动排序
多平台 | Win32 / Win64 / OSX / iOS / Android / Linux
多配置 | Debug / Release + 自定义条件编译

### 复杂编译错误诊断

🐛

    // E2511 — Type parameter must have a comparer
    TDictionary<TCustomKey, string>.Create;
    //          ^^^^^^^^^^
    // 错误: record 类型做 TKey 需要 IEqualityComparer

AI 不是只看错误行——它搜索 KB 理解根因：

1
2
3
4
5
6
❌ 编译错误 E2511
🔍 搜 KB → TDictionary 类定义
🔍 搜 KB → TEqualityComparer
发现泛型约束
💡 根因分析
record 无默认比较器
✏️ 生成比较器 TCustomKeyComparer
✅ 修复 → 编译通过

### 批量多项目编译

一句话编译整个解决方案：

📁 ProjectGroup.groupproj
📁 LibProject
先编译
⬇
LibUtils.dproj
📁 AppProject
后编译
⬇
MainApp.dproj
依赖 LibUtils
自动解析 BuildOrder，按依赖顺序编译

    用户: Release Win64 编译全部
    AI:
    ① LibUtils.dproj → ✅
    ② MainApp.dproj → ✅
    全部编译成功！

自动解析 BuildOrder，按依赖顺序编译

## 🎨 06 文件操作 & 组件管理

📁 `delphi_file` 文件操作

    delphi_file(action="read")       — 读(类/函数导航)
    delphi_file(action="write",      — 写(edits 格式)
      edits=[{start_line:1, content:"..."}])
    delphi_file(action="format")     — pasfmt 格式化
    delphi_file(action="backup")     — 备份管理(列表/恢复)
    delphi_file(action="uses")       — uses 子句增删

    ✅ 写入即自动备份到 __history
    ✅ DFM 二进制自动转文本

📦 `manage_component` 组件管理

    manage_component(action="add",
      new_component_class="TButton",
      properties={"Caption":"OK"})

      ➡ DFM 新增组件
      ➡ PAS 自动声明字段+事件

    manage_component(action="modify",
      component_name="Button1",
      properties={"Caption":"确定"})

    manage_component(action="remove",
      component_name="Button1")

💡 所有 `delphi_file` 写操作默认 `backup=True`，自动创建 `__history` 版本备份。
💡 同一文件多处修改请合并到一次 `edits=[...]`，不要分多次 write

## 📝 07 编码规范 & AI 行为控制

同一需求，不同编码规则 → 风格截然不同的代码

📖 现代规范

    type
      TStringUtils = class
      public
        class function Join(
          const AStrings: TArray<string>;
          const ASeparator: string): string;
      end;

📘 旧项目规范

    type
      StringUtils = class
      public
        class function join(
          const arrStrings: array of string;
          const separator: string): string;
      end;

### 规范对比一览

维度 | 现代规范 | 旧项目规范
--- | --- | ---
类型命名 | `TStringUtils` | `StringUtils`
方法命名 | `Join`, `Split` | `join`, `split`
参数命名 | `AStrings` (A+大驼峰) | `arrStrings` (匈牙利)
缩进 | 2 空格 | 4 空格
begin 位置 | 另起一行 | 行尾
异常处理 | 具体异常类型 | `except Exception` 兜底
文件头 | XML Doc 注释 | 无强制要求

规则不仅是被查询的——它是被执行、被遵守的

## 🔍 08 代码审计 + 创建工单

📋 审计维度

🔴 严重 | 无 try/finally 保护
🔴 严重 | 循环内 Delete 跳项
🟡 警告 | 魔法数值未定义常量
🟡 警告 | finally 后取值的脆弱逻辑
🔵 建议 | 未使用变量 / 函数过长

📦 审计 → Issue 自动流转 （MCP 内置 Gitea 工具）

    # Issue: LegacyData.pas 代码质量

    ## 🔴 严重
    1. 资源泄漏 — ExportData:26
       TStringList 无 try/finally
    2. 循环删除跳项 — ProcessItems:82

    ## 🟡 警告
    3. 魔法数值 — CalculateTotal:62,64,66,68

    ✅ 已创建: github.com/.../issues/42

### 审计工作流

AI 自动完成从规范到报告的完整审计链路

📋 获取编码规则 ➡ 📖 读取源文件 ➡ 🔍 逐条比对规则 ➡ 📝 标记违规 ➡ 📊 输出报告
📋 获取规范
get_coding_rules(project_path)
获取项目编码规则
🔍 扫描代码
delphi_file(action="read", file_path)
读取源码，定位类/函数
📝 输出报告
按严重级别分级
标注行号 + 修复建议

### 工单自动流转

审计报告 → 工单，一键直达代码托管平台

📦 调用方式

    code_hosting(
      platform="gitea",
      action="create_issue",
      repo="owner/project",
      title="审计: LegacyData.pas",
      body="## 严重问题\n...",
      label_names=["bug"]
    )

🔄 完整闭环

📝 审计报告就绪 ✅
↓
📋 格式化为 Issue 模板 ✅
↓
🔗 code_hosting 创建工单 ✅
↓
🎉 工单已创建 + 关联代码提交 ✅

## 💭 09 知识库驱动的代码生成

需求：FireDAC + SQLite 数据库管理单元

📋 获取规范 ➡ 🔍 搜 TFDConnection ➡ 🔍 搜 TFDQuery ➡ ✏ delphi_file 写入 ➡ ✅ 编译通过
💡 关键区别：AI 不是凭记忆写代码，而是先搜索知识库确认真实的 API 签名——
TFDConnection 的构造函数有几个参数？Params 怎么配？全部从源码 KB 确认后再生成。

## 🔄 10 多文件重构

场景：`TStringList` ➡ `TArray<String>`

🔗 引用查询 ➡ 📊 影响评估
3 files / 12 处 ➡ ✏ 逐文件修改 ➡ ✅ 逐文件编译 ➡ 🎨 统一格式化
💡 你定韵，它成诗

## 📖 11 文档知识库实战搜索

构建 16 万页 CHM 索引后，自然语言即搜即得：

    用户: TCanvas.Draw 的参数说明，
          特别是 DrawOpacity 的作用

    Result:
    procedure Draw(X, Y: Integer;
      const Graphic: TGraphic;
      DrawOpacity: Byte = 255);

    // DrawOpacity: 绘制不透明度
    //   0   = 完全透明
    //   255 = 完全不透明 (默认)

比翻 CHM 帮助文件快两个数量级

## 🎯 12 完整从 0 到 1 工作流

故事线：JSON 配置文件管理单元

①
环境检查
②
编码规则
③
搜索 API
④
读源码
⑤
写入代码
⑥
格式化
⑦
编译验证
⑧
运行验证
⑨
运行时审计
⑩
保存经验

### 工作流详解

① 环境检查
check_environment(action="check")
② 编码规则
get_coding_rules(section="writing")
③ 搜索 API
delphi_kb("TJSONObject")
④ 读源码
delphi_file(action="read")
⑤ 写入代码
delphi_file(action="write", edits=[...])
默认 backup=True，自动备份
⑥ 格式化
delphi_file(action="format") → pasfmt
⑦ 编译验证
project(action="compile") ✅
⑧ 运行验证
project(action="compile", run_verify=True)
捕获启动崩溃
⑨ 运行时审计
project(action="runtime")
检测遗漏 uses
⑩ 保存经验
experience(action="save") → AI 自动去重积累

共执笔，同成章

## 🤖 自动化测试 — GUI 模式

基于 Named Pipe 的 Delphi 原生自动化单元 `DaofyAutomation`

    automate_delphi(action="gui", app_path="App.exe",
      script=[{"cmd":"goto","target":"TMainForm"},
              {"cmd":"click","target":"btnOK"},
              {"cmd":"capture","target":"result.png"}])

协议：JSON 请求/响应

命令 | 说明
--- | ---
goto / click / dblclick | 定位/点击/双击组件
type / key | 输入文本 / 按键
capture / listwnd / dumpstate | 截图 / 窗口列表 / 控件树
wait / waitfor | 等待超时 / 等待窗口出现
rcall / rget / rset | 调用/读取/设置组件属性

编译时通过 `DCC_UnitSearchPath=` 自动链接 DaofyAutomation 单元，无需手动配置

## 🤖 自动化测试 — Console 模式

基于 subprocess stdin/stdout 的控制台程序交互，无需 Delphi 端改造

    automate_delphi(action="console", app_path="Tool.exe",
      input="Y\n", expect="Continue?")

    automate_delphi(action="auto", app_path="Deploy.exe",
      input="\n", expect="success", args=["--silent"])

参数 | 说明
--- | ---
input | 发送到 stdin 的文本（支持 \n 换行）
expect | 期待的输出模式（匹配到才返回）
timeout | 超时秒数（默认 30s）
args | 命令行参数列表

Windows PE 自动检测： action="auto" 读取 EXE 头 Subsystem 字段区分 GUI/Console，无需手动指定

## 🧰 13 Delphi RTTI 桥接

通过 Enhanced RTTI 发现和调用 Delphi 应用程序的 published + public 方法 — 无需源码

📖 guide ➡ 🔍 discover ➡ 🤖 call

    delphi_rtti(action="discover", app_path="App.exe")
      → 返回所有类的 published + public 方法 + JSON Schema 参数定义

    delphi_rtti(action="call",
      app_path="App.exe",
      class_name="TMainForm",
      method="LoadCustomer",
      params={"customerName": "张三"})
      → 调用方法，返回结果

💡 典型场景：AI 远程控制正在运行的 Delphi 业务系统，无需改造程序（链接 DaofyAutomation 即可）

### 三步法详解

📖 guide
获取完整使用指南
参数说明 + 示例
🔍 discover
扫描所有类 published + public 方法
返回 JSON Schema
5 分钟缓存
🤖 call
按方法名 + 参数调用
支持 15 种类型映射
Integer/枚举/集合/TDateTime

支持 15 类 Delphi 类型 → JSON Schema 映射：Integer · Float · Boolean · 字符串 · 枚举 · 集合 · DynamicArray · TDateTime · Variant · Pointer 等

## 🧠 14 经验记忆 — AI 学会记住

Agent 经验自动积累，问题越用越少

💾 自动保存

    experience(action="save",
      problem="编译后 output_file 冗余",
      solution="清理临时 .dcu 文件...")

      ➡ 自动去重（相似度 > 0.85 合并）
      ➡ 后续任务自动搜索匹配

🔍 语义搜索

    experience(action="search",
      query="编译临时文件清理")

      ➡ 语义匹配已有经验
      ➡ 避免重复踩坑

💡 维护机制：merge（合并同类经验）· prune（清理低价值条目）· rebuild_embedding（补全缺失向量）

## 📄 15 软著文档生成 — 一键出稿

满足中国软件著作权登记需求的自动化工具

📖
源代码文档
逐页截图 + 行号
📘
用户操作手册
按场景组织
📊
汇总表
项目信息 + 文档清单

    generate_copyright(action="generate")  → 生成全部文档
    generate_copyright(action="validate")  → 检查配置完整性
    generate_copyright(action="status")    → 查看环境状态

浏览器 PDF 渲染，所见即所得 · 自动校验文档完整性

## 🔄 版本更新

🔍
check
检查 GitHub 新版
🔄
update
git pull 自动更新
ℹ
version
显示当前版本

daofy_update(action="check") 在每次 MCP 启动时后台静默检查

## 📊 总结

能力 | 一句话
--- | ---
⚙ 编译 | 项目 + 语法 + 批量 + 多平台 + run_verify，一句话完成
📚 知识库 | 17 万类 / 33 万函数 / 16 万文档，三模式搜索
🎨 文件操作 | 读/写/格式化/备份/uses 管理 + DFM 自动转换
📦 组件管理 | DFM 增删改 + .dpk 编译安装，PAS 自动同步
📋 编码规范 | 驱动代码生成 + 审计，真实控制 AI 行为
🐛 诊断 | KB 驱动的复杂错误分析，从根因修复
🧰 RTTI 桥接 | 运行时发现/调用 Delphi published+public 方法
🤖 自动化 | 审计报告 → 工单 + GUI/Console 自动化测试
🧠 经验记忆 | AI 自动积累经验，去重 + 语义搜索
📄 软著生成 | 源码 + 手册 + 汇总表，PDF 一键出稿

## 开源信息

GitHub

github.com/chinawsb/daofy

MIT 许可证 Python 3.10+ Delphi 2005-13

交流方式：GitHub Issues

⭐ 如果觉得有用，请给项目点个 Star！

## ✨ 更多亮点

不止于此——这些能力让 AI 如虎添翼

🏛 全版本 Delphi
2005→13 全版本，注册表自动检测
🧰 RTTI 桥接
运行时发现/调用 Delphi published+public 方法
📖 文件读写工具
delphi_file 类/函数导航+行级定位+uses 管理
🧠 经验记忆
AI 自动去重保存经验，语义搜索复用
⏳ 异步任务管理
知识库后台构建，进度实时追踪
📄 软著生成
源码/手册/汇总表，PDF 一键出稿
🔗 8+ AI 平台兼容
Claude / CodeArts / Trae / Cursor / Windsurf / 通义灵码 / 豆包 / Kimi
🔄 版本更新
daofy_update 一键检查/更新

## Q&A

感谢观看！

完整演示脚本见 docs/tutorial/tutorial_script.md