Daofy logo

道飞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 打开一扇通向本地世界的门——从对话到行动
flowchart LR
    A["🤖 AI 助手
(Claude / CodeArts)"] M["🔌 MCP Server
(工具网关)"] C["🔧 Delphi 编译器"] K["📚 源码知识库
30万函数"] F["🎨 pasfmt 格式化"] A -->|MCP 协议| M M --> C M --> K M --> F

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

传统 AI vs MCP 模式

传统模式


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

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

MCP 模式


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

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

🚀 02 功能全景

🔧
编译
项目 / 语法 / 批量
多平台 / 多配置
📚
知识库
30万函数 + 16万文档
精确 / 语义 / 引用
🎨
格式化
pasfmt 集成
自动 __history 备份
📋
编码规范
驱动代码生成
驱动代码审计
📦
组件
编译安装 .dpk
🔄
重构
引用→修改→验证
🐛
诊断
KB 驱动的错误分析

📥 03 AI 自动安装

用户只需一句话:

💬 "帮我安装 Daofy"

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,306MB 索引
文档

三种搜索方式

方式用法示例
🎯 精确搜索已知类名 / 函数名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 理解根因:

flowchart LR
    E["❌ 编译错误
E2511"] --> S1["🔍 搜 KB
TDictionary 类定义"] S1 -->|发现泛型约束| S2["🔍 搜 KB
TEqualityComparer"] S2 -->|了解实现方式| R["💡 根因分析
record 无默认比较器"] R --> F["✏️ 生成比较器
TCustomKeyComparer"] F --> P["✅ 修复 → 编译通过"]

批量多项目编译

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

flowchart TD
    G["📁 ProjectGroup.groupproj"] --> LIB["📁 LibProject"]
    G --> APP["📁 AppProject"]
    LIB --> L["LibUtils.dproj"]
    APP --> M["MainApp.dproj"]
    L -. 先编译 .-> M
    classDef lib fill:#e8f8f0,stroke:#34c759
    classDef app fill:#e8f4ff,stroke:#007aff
    class L lib
    class M app
用户: Release Win64 编译全部
AI:
① LibUtils.dproj → ✅
② MainApp.dproj → ✅
全部编译成功!

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

🎨 06 文件写入 & 自动备份

📁 格式化前自动备份

DataProcessor.pas
    ↓  file_tool(action="write", backup=true)
__history/
├── DataProcessor.pas.~1~
├── DataProcessor.pas.~2~  (版本递增)
└── DataProcessor.pas.~3~

🔄 备份管理

  • 📂 查看备份文件列表
  • 📊 diff 对比差异
  • ↩ 一键从备份恢复
  • 🔢 版本号自动递增

与 Delphi IDE 的 __history 机制完全兼容

💡 自动备份不仅限于格式化——重构、编译错误修复等所有修改操作都会先备份

📝 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;

规范对比一览

维度现代规范旧项目规范
类型命名TStringUtilsStringUtils
方法命名Join, Splitjoin, 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)
获取项目编码规则
🔍 扫描代码
file_tool(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 生成代码 编译通过
💡 关键区别: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 配置文件管理单元

flowchart LR
    S1["① 获取规范"] --> S2["② 搜索 API"]
    S2 --> S3["③ 写入代码
(自动备份)"] S3 --> S4["④ 格式化"] S4 --> S5["⑤ 编译验证"] S5 --> S6["⑥ 代码审计"] S6 --> S7["⑦ 清理 & 验证"] classDef step1 fill:#e8f8f0,stroke:#34c759 classDef step2 fill:#e8f4ff,stroke:#007aff classDef step3 fill:#fff3e6,stroke:#ff9500 classDef step4 fill:#fff0f0,stroke:#ff3b30 classDef step5 fill:#e8f8f0,stroke:#34c759 classDef step6 fill:#e8f4ff,stroke:#007aff classDef step7 fill:#f3ecff,stroke:#8b5cf6 class S1 step1 class S2 step2 class S3 step3 class S4 step4 class S5 step5 class S6 step6 class S7 step7

工作流详解

① 获取规范
get_coding_rules(section="writing")
② 搜索 API
delphi_kb("TJSONObject")
③ 写入代码
file_tool(action="write")
默认 backup=True,自动备份到 __history
④ 格式化
file_tool(action="format")
⑤ 编译验证
compile_project ✅
⑥ 审计
对照规范,输出审查报告
⑦ 创建工单
code_hosting(action="create_issue") → 关联标签与修复

共执笔,同成章

📊 总结

能力一句话
编译项目 + 语法 + 批量 + 多平台,一句话完成
📚 知识库17 万类 / 33 万函数 / 16 万文档,三模式搜索
🎨 格式化pasfmt + __history 备份,改不坏
📋 编码规范驱动代码生成 + 审计,真实控制 AI 行为
🐛 诊断KB 驱动的复杂错误分析,从根因修复
🔄 重构引用 → 修改 → 编译,全自动
📦 组件编译 + 注册 .dpk 到 IDE
🤖 自动化审计报告 → 一键 Gitea 工单(MCP 内置)

开源信息

GitHub

github.com/chinawsb/daofy

MIT 许可证 Python 3.10+ Delphi 2005-13

交流方式:GitHub Issues

⭐ 如果觉得有用,请给项目点个 Star!

更多亮点

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

🏛 全版本 Delphi
2005→13 全版本,注册表自动检测
📖 文件读写工具
file_tool(action="read") 类/函数导航+行级定位
⏳ 异步任务管理
知识库后台构建,进度实时追踪
🔄 增量索引更新
只扫变更文件,秒级完成
🧠 智能路径解析
自动选择三方库路径,避免命令行过长
📁 项目级知识库
自动追踪项目源码 + 三方依赖
🔗 8+ AI 平台兼容
Claude / CodeArts / Trae / Cursor / Windsurf / 通义灵码 / 豆包 / Kimi
🎯 KB 驱动诊断
搜索 KB 理解根因,从源头修复

Q&A

感谢观看!

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