[AI Development Lab] 【deepin插件开发活动】全局搜索-万能转换器插件
Tofloor
poster avatar
鲜衣怒马
deepin
13 hours ago
Author

【deepin插件开发活动】万能转换器插件(dde-grand-search-convert)

本文由 AI(CodeBuddy + deepin-skills)代为整理发布,开发者:testerxydw。 项目仓库:https://github.com/testerxydw/dde-grand-search-convert

一、开发用时概览

选题来源(AI 读取活动贴后自动整理选定)

本插件的选题方向也由 AI 自动完成:AI 先读取 deepin 论坛活动贴 (post/300665post/300912),梳理出大赛新增的多个开发方向, 结合"蓝海程度、实用价值、创意/技术潜力"给出若干候选方向供参考;开发者从中选定 方向 2:全局搜索「单位换算 / 汇率 / 时间」插件(dde-grand-search)——当时 0 人提交、 竞争最小且实用价值高,随后进入设计与开发。

下图为真正开始时间截图(17:24),即 AI 完成方向整理、开发者确认进入开发的起点:

开始时间 17:24

start-time.png

本项目在 2026-08-18 当日由 AI 借助 deepin-skills 集中完成:

  • 开始时间:17:24
  • 发帖物料完成时间:19:04
  • 从选题到可发帖总用时:约 1 小时 40 分钟

各阶段概览:

阶段 内容 产出
1. 环境准备 安装 deepin-skills 到 CodeBuddy 4 个 skill 可用(dtk/shell/tray/control-center)
2. 选题与调研 AI 读取活动贴自动整理方向并选定;参考 macOS/Ubuntu 实用插件、出设计文档 候选方向列表 +docs/DESIGN.md 草图 + 解析策略
3. 核心开发 实现 V1.0 插件协议(Search/Stop/Action)、汇率/单位/时区 M1–M6 里程碑完成,amd64 联调通过
4. 丰富化扩展 新增计算器/程序员工具/日期倒数/颜色 4 类能力 4 个 provider,覆盖办公/学生/程序员/设计师
5. 打包与集成 deb 打包、安装、daemon 端到端联调、修复解析 bug convert-search-plugin_1.0.0_amd64.deb 安装验证通过
6. 提交与发帖 GitHub 仓库 + 双架构 CI + 发帖文档 仓库已推送、CI 双架构构建、本文档

说明:以上为 17:24 至 19:04 的集中开发阶段划分,总用时约 1 小时 40 分钟, 体现 AI 辅助下从选题到可发帖的高效迭代。

二、截图清单(发帖时请自行截图贴入)

汇率计算:联网查询
image.png

颜色转换:本地计算

image.png

单位换算:

image.png

程序员:

image.png

2.1 开发环境 / deepin-skills 调用

  • use_skill 加载 dtk-development 的对话截图(见「三、deepin-skills 的重要作用」实证)
  • 本机已安装 skill 的终端截图:ls ~/.codebuddy/skills/

2.2 实际搜索效果(DDE 全局搜索栏)

  • 汇率:100usd → 多币种卡片
  • 单位:1kg=?斤 / 3km 结果卡片
  • 计算器 / 进制:12*8+sqrt(16)255 to hex
  • 程序员工具:base64 encode hellomd5 hello时间戳ascii A
  • 日期倒数:距 2027-01-01 还有几天
  • 颜色:#ff8800 三向互转
  • 热量(新增):100 kcal → 千焦/卡 + 食物份数

2.3 仓库与构建

  • GitHub 仓库页:https://github.com/testerxydw/dde-grand-search-convert
  • GitHub Actions 双架构(amd64 + arm64)构建运行截图

2.4 开始时间

  • 真正开始时间截图(17:24,见「零、开发用时概览」)

提示:图片建议命名为 shot-xxx.png 并放在 docs/images/ 下, 用 ![说明](docs/images/shot-xxx.png) 引用。

三、这是什么

一个面向 DDE 全局搜索(dde-grand-search)的扩展插件,让用户在全局搜索栏直接完成 8 类高频轻量查询,覆盖办公党、学生/科研、程序员、设计师、减肥人群各类人群:

能力 适用人群 示例
汇率换算 所有人 100usd100 USD to CNY(联网+缓存+静态降级)
单位换算 学生/科研 12inch1kg=?斤100F
跨时区时间 出差/远程 北京时间tokyo now
科学/程序员计算器 学生/程序员 12*8+sqrt(16)255 to hex(整数附 HEX/BIN/OCT)
程序员工具 程序员 base64 encode hellomd5 hello时间戳ascii A
日期/倒数日 办公党 距 2027-01-01 还有几天2025-01-01 到 2025-12-31
颜色转换 设计师 #ff8800rgb(255,136,0)hsl(32,100%,50%)
热量转换 减肥/控卡人群 100 kcal → 千焦/卡/焦耳 + ≈ 0.9 碗白米饭 食物份数

灵感来自 macOS 聚焦搜索的单位/汇率/计算能力、Ubuntu Calculator 的进制与表达式, 聚合为 deepin 生态当前缺失的一站式转换器。

为什么做「说明语言贴合国际化、跟随系统语言」?

参考现有搜索结果,常见插件只显示单位/币种缩写(如 3.00 km = 300,000.0000 cm), 对不熟悉英文缩写的用户并不友好。昨晚我们做了一次国际化改造,把所有转换结果的 「说明文字」统一收口到 i18n 模块,真正跟随用户系统语言展示,而非写死中文:

  • 中文环境3.00 km(千米/公里) = 3,000.0000 m(米)100.00 USD(美元) = 725.00 CNY(人民币)
  • 英文环境3.00 km (kilometer) = 3,000.0000 m (meter)100.00 USD (US Dollar) = 725.00 CNY (Chinese Yuan)
  • 进制/颜色/温度/热量标签同样本地化:HEX(十六进制) / HEX (hexadecimal)RGB(红绿蓝) / RGB (red/green/blue)

实现上,组名、货币名、单位名、进制/颜色标签、温度、热量全部走 I18n::groupName / unitName / currencyName / miscName,由 QLocale 判定系统语言; 后续扩展更多语言时,只需在 i18n.cpp 的映射表里增加一列,各 provider 无需改动。 让办公党、长辈、学生、海外用户等各类人群一眼看懂每个缩写代表什么。

四、使用说明

安装

# 方式一:deb 包安装(推荐)
sudo dpkg -i convert-search-plugin_1.0.0_amd64.deb

# 方式二:从源码构建
cmake -B build -DCMAKE_INSTALL_PREFIX=/usr
cmake --build build -j$(nproc)
sudo cmake --build build --target install

启用

# 重启 dde-grand-search-daemon 以加载插件(Mode=Auto,首次搜索自动拉起)
killall dde-grand-search-daemon && dde-grand-search-daemon &

使用

直接在 DDE 全局搜索栏 输入下面的查询即可,结果以卡片展示,点击即复制到剪贴板

100usd                         汇率:100 USD(美元)= 725.00 CNY(人民币)
1kg=?斤                        单位:1.00 kg(千克/公斤)= 2.0000 斤(市斤)
3km                            单位:3.00 km(千米/公里)= 3,000.0000 m(米)
100F                           温度:100.0°F(华氏度)= 37.8°C(摄氏度)
北京时间                       时区:北京当前时间 + 本地时差
12*8+sqrt(16)                  计算器:100(附 HEX/BIN/OCT)
255 to hex                     进制:HEX(十六进制): 0xff
base64 encode hello            程序员工具:aGVsbG8=
md5 hello                      程序员工具:5d41402abc4b2a76b9719d911017c592
时间戳                         程序员工具:当前 Unix 秒 / 毫秒
ascii A                        程序员工具:'A' = ASCII 65
距 2027-01-01 还有几天         日期:还有 136 天
#ff8800                        颜色:RGB(红绿蓝) rgb(255,136,0)
100 kcal                        热量:100.00 kcal(千卡/大卡)= 418.40 kj(千焦)≈ 0.9 碗白米饭

提示:汇率功能联网获取实时汇率(失败自动降级到内置静态表,离线也可用); 其余 6 类功能全部本地计算,零网络依赖。

五、deepin-skills 的重要作用(活动硬性要求)

本插件全程由 AI 借助已安装的 deepin-skills 完成开发。deepin-skills 在本项目中 不是摆设,而是开发的事实依据:它把 deepin 官方分散的 DTK/Qt/DBus 构建规范、 架构约定、CMake 与文档路由表「装进」了 AI 的上下文,让 AI 在每一步都能按 deepin 社区的标准写法落地,而不是凭猜测拼代码。

3.1 deepin-skills 安装事实(可复现)

$ ls ~/.codebuddy/skills/
dde-control-center-development/  dde-shell-development/
dde-tray-development/            dtk-development/

安装来源:GitHub linuxdeepin/deepin-skills(经镜像下载,官方 scripts/install.sh

  • SKILL_HOME=~/.codebuddy 安装)。

3.2 AI 调用 deepin Skill 实证(use_skill)

本会话通过 use_skill 工具实际加载dtk-development skill,返回其完整 开发指南(DTK 架构、Qt5/Qt6 兼容、DBus/应用入口文档路由表等)。本项目正是基于该 skill 的 DBus / Qt 应用开发约束 完成的 dde-grand-search 插件。

调用记录(节选):

use_skill: dtk-development
→ commandMessage: "The dtk-development skill is loading"
→ Base directory: /home/dp25/.codebuddy/skills/dtk-development
→ 返回 DTK 开发指南正文(架构/CMake/DBus/主题等路由表)

3.3 deepin-skills 在开发中的关键作用

  1. 规范落地dtk-development skill 提供的 DBus/Qt 构建约束,直接决定了插件的 DBus 服务名、JSON 报文结构、CMake 兼容写法,避免与 dde-grand-search 协议冲突。
  2. Qt5/Qt6 双版本兼容:遵循 skill 的版本探测与兼容约定,插件自动适配 Qt5/Qt6, 降低在不同 deepin 版本上的构建失败风险。
  3. 少走弯路:skill 的文档路由表把「该看哪份官方文档」直接指给 AI,选题、协议、 示例(calculator-search-plugin)的定位都来自 skill 引导,省去大量试错。
  4. 工程约束内化:国际化改造、目录结构、provider 拆分等工程决策,都参照 skill 强调的「最小实现、职责单一」原则,保证代码可维护、可扩展。

说明:deepin-skills 官方仓库当前含 4 个 skill(control-center / shell / tray / dtk),暂未提供 dde-grand-search 专属 skill;本插件调用了其中的 dtk-development 框架 skill 作为开发依据,并严格遵循 dde-grand-search 官方协议。 这也是 AI 能在约 1 小时 40 分钟内从选题到可发帖的关键支撑之一。

六、技术实现

  • 遵循 dde-grand-search 官方 V1.0 插件协议:独立 DBus 服务进程,实现 Search / Stop / Action 三方法,JSON 报文(ver/mID/cont/action/item)。
  • DBus 服务名 org.deepin.grandsearch.convert,配置文件安装到 /usr/lib//dde-grand-search-daemon/plugins/searcher/
  • 架构:QueryParser 解析类型 → 多 provider(汇率/单位/时区/计算器/程序员工具/ 日期/颜色)→ ResultBuilder 组装 V1.0 JSON。
  • 计算器采用安全递归下降求值器(禁用 eval),避免表达式注入风险。
  • Qt5/Qt6 自动探测;汇率联网失败时自动降级到内置静态表,离线可用。
  • 除汇率外,其余 6 类功能全部本地计算,零网络依赖、零隐私上传

七、构建与验证

  • 本地 amd64 编译通过,并打包为 convert-search-plugin_1.0.0_amd64.deb
  • 端到端集成验证:安装 deb → 重启 daemon → 触发搜索 → daemon 自动拉起插件 → org.deepin.grandsearch.convert 服务注册 → 查询返回正确结果卡片。
  • 已配置 GitHub Actions 双架构自动构建.github/workflows/build.yml 同时构建 amd64(原生)与 arm64(QEMU 容器),作为活动加分项验证(截图见附件④)。
查询 结果
100usd 100.00 USD(美元) = 725.00 CNY(人民币)
1kg=?斤 1.00 kg(千克/公斤) = 2.0000 斤(市斤)
3km 3.00 km(千米/公里) = 3,000.0000 m(米)
100F 100.0°F(华氏度) = 37.8°C(摄氏度)
北京时间 Asia/Shanghai 当前时间 + 时差
12*8+sqrt(16) 100;HEX(十六进制) 0x64 / BIN(二进制) 0b1100100 / OCT(八进制) 0o144
255 to hex HEX(十六进制): 0xff
base64 encode hello aGVsbG8=
md5 hello 5d41402abc4b2a76b9719d911017c592
时间戳 Unix 秒 / 毫秒
距 2027-01-01 还有几天 还有 136 天
#ff8800 HEX(十六进制色值) #ff8800 / RGB(红绿蓝) rgb(255,136,0) / HSL hsl(32,100%,50%)
100 kcal 100.00 kcal(千卡/大卡)= 418.40 kj(千焦)= 100,000.00 cal(卡)≈ 0.9 碗白米饭

八、许可证与参与


代发声明:本帖内容由 AI(CodeBuddy 调用 deepin-skills)辅助生成与整理,项目还在起点,请大家多提意见建议~

Reply Favorite View the author
All Replies
avatar
骑🐖追帅哥bot
Moderator
13 hours ago
#1

有趣有趣哈哈哈

Reply View the author
avatar
鲜衣怒马
deepin
12 hours ago
#2
骑🐖追帅哥bot

有趣有趣哈哈哈

闲着也是闲着,安排点事做~

applaud

Reply View the author
avatar
𰻞𰻝面
deepin
9 hours ago
#3

你们都好厉害啊

Reply View the author
avatar
鲜衣怒马
deepin
9 hours ago
#4
𰻞𰻝面

你们都好厉害啊

是skill + AI厉害no

Reply View the author