为 C/C++ 源码生成并维护 Doxygen 注释
30.6/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/28 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add FantastyQAQ/dsh-doxygen该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-skill给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
给 C/C++(含 Qt)源码写 Doxygen 注释的工作流:文件头、函数、模块分组、行尾与短注释,外加一次扫描,标出签名指纹已过期的注释。可作为 DSH 插件(技能)安装。
README
由 DeepSeek 最新模型翻译生成doxygen-comment
一个智能体技能,用于在 C/C++(含 Qt)源码中生成和维护 Doxygen 注释。它不是片段合集,而是一条 AI 编码助手能端到端驱动的工作流:读取函数签名 → 生成或补全注释 → 代码变更时把注释标记为过期。
特性
- 按行号或函数名定位函数。 parse_function.py 用 tree-sitter 解析 C/C++ 签名,输出 JSON(函数名、返回类型、参数及其方向、起始行、签名指纹、可选函数体片段)。只读,无副作用。
- 六套模板。 文件头 / 函数 / 模块头 / 模块尾 / 行尾 /< / / 简短 @brief,对应编辑器片段前缀 doxygen_source、doxygen_fun、doxygen_module_head、doxygen_module_end、doxygen_rear、doxygen_nom。
- 只补全,不重写。 函数上方已有 Doxygen 块时,只补缺失字段并刷新指纹;原有措辞和行序保持不变。已带 @file 块的文件直接跳过。
- 签名指纹。 每个函数块末尾带 @doxygen_sig_fp <16 hex digits>;--scan 拿当前签名与它比对,把「签名已变、注释过期」的函数标为 stale,全仓库维护才成为可能。纯格式变更(空白、/& 位置)不改变指纹。
- 默认不写文件。
展开完整文档(README 剩余 1 节)
doxygen-comment
一个智能体技能,用于在 C/C++(含 Qt)源码中生成和维护 Doxygen 注释。它不是片段合集,而是一条 AI 编码助手能端到端驱动的工作流:读取函数签名 → 生成或补全注释 → 代码变更时把注释标记为过期。
特性
- 按行号或函数名定位函数。 parse_function.py 用 tree-sitter 解析 C/C++ 签名,输出 JSON(函数名、返回类型、参数及其方向、起始行、签名指纹、可选函数体片段)。只读,无副作用。
- 六套模板。 文件头 / 函数 / 模块头 / 模块尾 / 行尾 /< / / 简短 @brief,对应编辑器片段前缀 doxygen_source、doxygen_fun、doxygen_module_head、doxygen_module_end、doxygen_rear、doxygen_nom。
- 只补全,不重写。 函数上方已有 Doxygen 块时,只补缺失字段并刷新指纹;原有措辞和行序保持不变。已带 @file 块的文件直接跳过。
- 签名指纹。 每个函数块末尾带 @doxygen_sig_fp <16 hex digits>;--scan 拿当前签名与它比对,把「签名已变、注释过期」的函数标为 stale,全仓库维护才成为可能。纯格式变更(空白、/& 位置)不改变指纹。
- 默认不写文件。 先打印 diff;--write 才落盘,并保留目标文件的 CRLF/LF 风格与 UTF-8 / UTF-8-BOM / GBK 编码。
- 机器上没有 Python 时快速失败。 插件在注册时探测 Python 3.10+ 和 tree-sitter,把结论放在技能正文顶部;解释器缺失或损坏时,技能会指示智能体停下来、交出安装步骤,而不是让 shell 报错变成假的「函数未找到」。node scripts/check_env.mjs 可按需跑同一套探测——它是纯 Node,Python 跑不了的地方它也能跑。
- 对中文文本友好。 脚本强制 UTF-8 输出,避免 GBK Windows 控制台常见的乱码。
仓库结构
doxygen-comment/
├── SKILL.md # skill body: workflow, script contract, template list
├── README.md # this file
├── LICENSE # MIT
├── requirements.txt # Python dependencies
├── package.json # DSH plugin manifest — declares dsh.bundle ├── cordis.patch.yml # plugin insert row (id: doxygen-comment, name: dsh-doxygen) ├── index.js # registers the bundled skill when installed as a plugin ├── assets/ │ └── cpp.json # the six templates as editor snippets (optional) ├── references/ │ └── examples.md # 改前/改后示例、Qt 案例、常见错误 └── scripts/ ├── parse_function.py # 读:定位函数并解析签名(无副作用) ├── gen_doxygen.py # 写:渲染 / 插入 / 补全 / 指纹 / diff / 扫描 ├── install_snippets.py # 可选:把代码片段合并进 VS Code 风格的 IDE ├── check_env.mjs # 环境预检(Node,无需 Python 也能跑) └── lib/ └── env.mjs # check_env.mjs 背后的探测逻辑;index.js 也会用到
安装
1. 获取源码
git clone https://github.com/FantastyQAQ/dsh-doxygen.git
仓库名叫 dsh-doxygen,技能名叫 doxygen-comment:放进技能目录时,目录名要写成 doxygen-comment。
2. 安装
两种方式:作为 DSH 插件包安装,或把文件夹复制进技能目录。
作为 DSH 插件安装。 仓库根目录声明了 dsh.bundle,所以它能像其他插件一样安装:
dsh plugin --profile desktop add github:FantastyQAQ/dsh-doxygen
desktop 是桌面应用使用的配置档——换成你自己的配置档名(desktop+office 等)。
当前宿主(0.2.1 及更新版本)要求带 --profile 参数;只写 dsh plugin add ... 会报错: required option '--profile <name>' not specified。
index.js 会把 SKILL.md 注册为 doxygen-comment 技能,并替你解析 ${SKILL_DIR},不用猜路径。
复制文件夹安装。 目录自包含,脚本里没有项目相关的路径:
| 宿主 | 技能目录 |
| DeepSeek Harness | ~/.dsh/skills/doxygen-comment/ |
| Claude Code | ~/.claude/skills/doxygen-comment/,或项目的 .claude/skills/ |
| CodeBuddy CN / WorkBuddy | ~/.codebuddy/skills/doxygen-comment/、~/.workbuddy/skills/doxygen-comment/ |
e.g. install for Claude Code at user level
git clone https://github.com/FantastyQAQ/dsh-doxygen.git "$env:USERPROFILE\.claude\skills\doxygen-comment"
3. 依赖
需要 Python 3.10+;用 pip install tree-sitter tree-sitter-cpp 安装 C/C++ 解析器:
pip install tree-sitter tree-sitter-cpp
or the version-constrained install from this repo:
pip install -r requirements.txt
已在 tree-sitter 0.26.0 + tree-sitter-cpp 0.23.4 下测试;脚本同时支持 0.22 前后两套 Language/Parser 构造 API。Windows 上一律敲 python(某些环境里 python3 是别名陷阱)。
没装 Python 时,插件会直接说明,而不是跑到一半才失败。 插件包在注册技能时探测一次机器,把结论放在技能正文顶部;结论为失败时,会提示智能体停下来,把安装步骤交给你。探测逻辑是纯 Node (Node 随 DSH 一起提供),所以哪怕机器上根本没有 Python,它也能报出「没有 Python」:
bash
node scripts/check_env.mjs # 人类可读,退出码 0/2/3
node scripts/check_env.mjs --json # 机器可读
退出码:0 可用,2 完全没有 Python,3 找到 Python 但不可用(版本太旧、缺少模块、解释器损坏)。如果 Python 已安装但不在 PATH 上(venv、conda、便携版),把 DOXYGEN_PYTHON 设为解释器的绝对路径,然后重启会话。
4. 验证 bash
node scripts/check_env.mjs # 环境:Python + tree-sitter
python scripts/parse_function.py --file demo.cpp --list
如果第一条打印 ✅,第二条打印函数数组,说明安装成功。
快速开始
下面的命令都在技能根目录下运行;把 : <path> 换成你的源码路径。
1) 定位函数并解析签名 bash
python scripts/parse_function.py --file src/rtc.cpp --line 42 --body-lines 30
python scripts/parse_function.py --file src/rtc.cpp --name RTC_Init
python scripts/parse_function.py --file src/rtc.cpp --list # 列出全部(不含 body_snippet)
输出为 UTF-8 JSON: json { "name": "RTC_Init", "return_type": "int32_t",
"params": [
{"type": "const RTC_Config_t", "name": "config", "direction": "in"},
{"type": "uint32_t", "name": "status", "direction": "out"}
],
"start_line": 42,
"end_line": 68,
"is_definition": true,
"signature": "int32_t RTC_Init(const RTC_Config_t config, uint32_t status)",
"fingerprint": "ac50cb812857de87",
"file": "…/rtc.cpp" }
direction 由脚本按参数方向判断规则(SKILL.md 的「参数方向判断规则」一节)决定,直接采用即可。
2) 生成函数注释
把上一步得到的签名和函数体片段交给模型,让它产出描述 JSON: json { "brief": "初始化 RTC 外设",
"params": [
{"name": "config", "desc": "RTC 配置参数"}, {"name": "status", "desc": "初始化状态码,非 0 表示失败"} ], "return_desc": "0 成功,非 0 为错误码", "retval": "none", "details": "调用前需保证 32.768kHz 晶振已起振。"
}
然后渲染、预览并应用: bash
python scripts/gen_doxygen.py --file src/rtc.cpp --line 42 --kind fun --doc doc.json --diff
python scripts/gen_doxygen.py --file src/rtc.cpp --line 42 --kind fun --doc doc.json --write
不带 --diff/--write 时打印 JSON(含 status、notes、changed、diff 字段)。
3) 其他模板类型 bash
文件头(插入到文件第一行)
python scripts/gen_doxygen.py --file src/rtc.cpp --kind source \
--brief "RTC 驱动" --note "依赖 32.768kHz 晶振" --log-desc "创建" --diff
模块组头 / 组尾(成对使用)
python scripts/gen_doxygen.py --file src/rtc.cpp --kind module --line 30 \
--group rtc_api --title "RTC API" --brief "RTC 对外接口" --desc "全部函数可重入" --diff
python scripts/gen_doxygen.py --file src/rtc.cpp --kind module-end --line 120 --diff
尾随注释 / 短注释(无需解析签名)
python scripts/gen_doxygen.py --file src/rtc.h --kind rear --line 18 --text "已发送帧数" --diff
python scripts/gen_doxygen.py --file src/rtc.h --kind nom --line 25 --brief "RTC 状态枚举" --diff
4) 全仓库扫描(只读)
python scripts/gen_doxygen.py --scan src
返回 {"summary": {...}, "items": [...]},其中每个函数都带一个 status:
| 扫描状态 | 含义 | 该怎么做 |
| missing | 上方没有 Doxygen 注释块 | 按函数注释流程补一个 |
| stale | 注释块存在,但指纹已不匹配(代码改过了) | 先看描述,再刷新 |
| partial | 注释块存在,但字段不全(比如没有 @param) | 只补缺的部分 |
| ok | 完整,且指纹匹配 | 不用动 |
扫描会跳过 .git、build、libs、node_modules 这类目录。不要一次重写几百个文件:按状态分组,先让用户挑范围。
命令与退出码
| 脚本 | 用途 |
| parse_function.py --file --line/--name/--list [--body-lines N] | 解析函数签名 |
| gen_doxygen.py --file … --kind <fun\|nom\|source\|module\|module-end\|rear> | 生成一条注释 |
| gen_doxygen.py --scan <dir> | 扫描整棵目录树的注释状态 |
两个脚本共用同一套退出码:
| 退出码 | 含义 |
| 0 | 成功(包括 status=ok/skipped,即「无需改动」) |
| 1 | 找不到目标函数 / 参数不够 |
| 2 | 参数或文件错误(路径不存在、JSON 无效) |
| 3 | 缺少 tree-sitter 依赖 |
失败时原因写到 stderr,stdout 绝不会输出半截 JSON 文档。
作者与版权
文件头里的作者和版权没有通用默认值:不指定时,脚本写入占位符 <author> 和
Copyright (c) <current year> by <copyright holder>, All Rights Reserved.,由用户自行替换。
有两种指定方式:
python scripts/gen_doxygen.py --file a.cpp --kind source --brief "…" \
--author "Your Name (you@example.com)" --copyright "Copyright (c) 2026 by Your Company, All Rights Reserved."
set once, then every later command reuses it
export DOXYGEN_AUTHOR="Your Name (you@example.com)"
export DOXYGEN_COPYRIGHT="Copyright (c) {year} by Your Company, All Rights Reserved." # {year} becomes the current year
可选:把模板装进你的 IDE
assets/cpp.json 就是这六个模板,做成了编辑器代码片段。输入 doxygen_fun 再按 Tab 即可展开:
python scripts/install_snippets.py # dry run: detect IDEs, show what would be merged (writes nothing)
python scripts/install_snippets.py --apply --create # actually write
python scripts/install_snippets.py --uninstall --apply # remove the snippets this skill installed
- 目标文件是 <IDE user dir>\snippets\cpp.json;对它只做合并,绝不覆盖,原文件会备份为 cpp.json.bak-<timestamp>。
- 片段按语言隔离:cpp.json 只对 .cpp/.cc/.cxx 生效;要在 .c/.h 里用,必须把它们合并到同目录下的 c.json。
- 只改动这一个片段文件,settings.json 保持原样。
- CodeBuddy CN、VS Code、CodeBuddy、Cursor 和 Windsurf 都能自动探测;--target <file> 可显式指定路径。
使用说明
- 已有注释块一律补齐,绝不重写;函数上方的 // 注释会保留,Doxygen 块直接插在函数上方。
- 指纹行只由脚本写入和刷新——不要手写,也不要放在 / 之后。
- 注释一律用 UTF-8;注释里避免 ?、→ 这类非 ASCII 字符,否则源码编码转换时可能悄悄丢字符。
- 缩进跟随目标行:类成员、Qt signals:/slots: 条目的注释会自动对齐。
- 写回前先看 diff;批量改动前先跑 --scan。
兼容性
- Python 3.10+,支持 Windows / Linux / macOS(脚本已处理 Windows 控制台编码)。
- 面向 C/C++ 源码;Qt 项目开箱即用(覆盖 signals:/slots: 区域)。
- 与宿主无关:任何具备 Bash 和文件读写工具的智能体都能驱动它——不绑定特定 IDE 或插件。环境探测(scripts/check_env.mjs)额外需要 Node,DSH 已自带;在其他宿主里手动安装时,可回退到 环境预检 中的表格。
许可证
MIT。
仓库:<https://github.com/FantastyQAQ/dsh-doxygen>
中文说明
给 C/C++(含 Qt)源码生成与维护 Doxygen 注释的 Agent Skill(技能包)。
它不是片段收藏夹,而是一条可被 AI 编程助手直接调用的流水线: 读函数签名 → 生成/补全注释 → 代码改了自动标记注释过期。
特性
- 按行号或函数名定位函数:parse_function.py 用 tree-sitter 解析 C/C++ 签名,输出 JSON (函数名、返回类型、参数及方向、起始行、签名指纹、可选函数体片段),只读、无副作用。
- 六套模板:文件头 / 函数 / 模块头 / 模块尾 / 行尾 /< / / 简短 @brief,与编辑器片段前缀 doxygen_source、doxygen_fun、doxygen_module_head、doxygen_module_end、 doxygen_rear、doxygen_nom 一一对应。
- 只补不重写:函数上方已有 Doxygen 块时,只补齐缺失字段并刷新指纹,不改已有措辞与行序;文件头已有 @file 块则直接跳过。
- 签名指纹:函数注释块末尾写入 @doxygen_sig_fp <16 位十六进制>;--scan 对比当前签名与指纹,把「签名变了、注释过期」的函数标成 stale,从而支持仓库级自动维护。
纯格式化(空格、/& 位置)改动不会导致指纹变化。
- 默认不落盘:先输出 diff,--write 才写回;写回时保持目标文件原有的 CRLF/LF 与 UTF-8 / UTF-8-BOM / GBK 编码。
- 没装 Python 时提前拦下:插件注册技能时就探测 Python 3.10+ 与 tree-sitter,把结论写进技能正文最上方;解释器缺失或损坏时,技能会要求助手立即停止并转告安装步骤,而不是让 shell 报错变成「没找到函数」的假结论。node scripts/check_env.mjs 可随时手动复检——它是纯 Node 脚本,没有 Python 的机器上也能跑。
- 中文友好:脚本强制 UTF-8 输出,规避 Windows 控制台 GBK 造成的中文乱码。
目录结构
doxygen-comment/
├── SKILL.md # 技能正文:工作流、脚本契约、模板列表 ├── README.md # 本文件 ├── LICENSE # MIT ├── requirements.txt # Python 依赖 ├── package.json # DSH 插件清单——声明 dsh.bundle ├── cordis.patch.yml # 插件注册行(id: doxygen-comment,name: dsh-doxygen) ├── index.js # 以插件方式安装时注册本技能 ├── assets/ │ └── cpp.json # 六套模板的编辑器片段(可选安装) ├── references/ │ └── examples.md # 前后对照示例、Qt 场景、常见错误 └── scripts/ ├── parse_function.py # 读:定位函数 + 解析签名(无副作用) ├── gen_doxygen.py # 写:渲染 / 插入 / 补全 / 指纹 / diff / 扫描 ├── install_snippets.py # 可选:把片段合并进 VS Code 系 IDE ├── check_env.mjs # 环境预检(Node 脚本,没装 Python 也能跑) └── lib/ └── env.mjs # 预检实现;index.js 注册技能时也走它
安装
1. 获取源码
git clone https://github.com/FantastyQAQ/dsh-doxygen.git
仓库名是 dsh-doxygen,技能名仍是 doxygen-comment:放进宿主技能目录时目录名请用 doxygen-comment。
2. 安装
两种方式:装成 DSH 插件,或整目录复制进技能目录。
装成 DSH 插件(DeepSeek Harness):仓库根声明了 dsh.bundle,按普通插件安装即可:
dsh plugin --profile desktop add github:FantastyQAQ/dsh-doxygen
desktop 是桌面应用使用的配置档,换成你自己的配置档名即可(如 desktop+office)。
当前宿主(0.2.1 及更新)必须带 --profile:只敲 dsh plugin add ... 会报 required option '--profile <name>' not specified。
index.js 会把 SKILL.md 注册为 doxygen-comment 技能,并自动注入 ${SKILL_DIR},不必自己找路径。
整目录复制:目录自包含,脚本不含任何工程硬编码:
| 宿主 | 技能目录 |
| DeepSeek Harness | ~/.dsh/skills/doxygen-comment/ |
| Claude Code | ~/.claude/skills/doxygen-comment/,或工程的 .claude/skills/ |
| CodeBuddy CN / WorkBuddy | ~/.codebuddy/skills/doxygen-comment/、~/.workbuddy/skills/doxygen-comment/ |
例:装到 Claude Code 用户级技能目录
git clone https://github.com/FantastyQAQ/dsh-doxygen.git "$env:USERPROFILE\.claude\skills\doxygen-comment"
3. 依赖
需要 Python 3.10+,用 pip install tree-sitter tree-sitter-cpp 安装 C/C++ 解析依赖:
pip install tree-sitter tree-sitter-cpp
或使用本仓库的固定下限写法:
pip install -r requirements.txt
实测组合 tree-sitter 0.26.0 + tree-sitter-cpp 0.23.4;脚本对 0.22 前后的 Language/Parser 构造 API 都做了兼容。Windows 下统一写 python(python3 在部分环境是别名陷阱)。
目标机器没装 Python 时,插件不会带着半截错误继续跑。 以插件方式安装时,index.js 在注册技能的那一刻就探测一次环境,把结论放在技能正文最上方的「环境自检」提示块里:没装 Python / 版本过低 / 缺 tree_sitter 模块时,提示块会写字面指令,要求助手立即停止调用脚本,并把安装步骤转告用户。
探测本身是纯 Node 脚本(DSH 自带 Node),所以在没有 Python 的机器上照样能跑出结论:
node scripts/check_env.mjs # 人看:✅/❌ + 安装步骤
node scripts/check_env.mjs --json # 机器看
退出码:0 可用、2 完全没装 Python、3 装了但不可用(版本过低 / 缺模块 / 解释器损坏)。
Python 不在 PATH 上(venv、conda、绿色版)时,把 DOXYGEN_PYTHON 设为解释器绝对路径后重启会话即可。
4. 验证
node scripts/check_env.mjs # 环境:Python + tree-sitter
python scripts/parse_function.py --file demo.cpp --list
第一条输出 ✅、第二条打印出函数数组,即安装成功。
快速开始
以下命令都在技能根目录下执行;: <path> 换成你的源码路径。
1) 定位函数并解析签名
python scripts/parse_function.py --file src/rtc.cpp --line 42 --body-lines 30
python scripts/parse_function.py --file src/rtc.cpp --name RTC_Initbash
python scripts/parse_function.py --file src/rtc.cpp --list # 批量列出(无 body_snippet)
输出为 UTF-8 JSON: json { "name": "RTC_Init", "return_type": "int32_t",
"params": [
{"type": "const RTC_Config_t", "name": "config", "direction": "in"},
{"type": "uint32_t", "name": "status", "direction": "out"}
],
"start_line": 42,
"end_line": 68,
"is_definition": true,
"signature": "int32_t RTC_Init(const RTC_Config_t config, uint32_t* status)",
"fingerprint": "ac50cb812857de87",
"file": "…/rtc.cpp" }
direction 由脚本按[参数方向规则](SKILL.md 的「参数方向判断规则」一节)判定,可直接沿用。
2) 生成函数注释
把上一步的签名 + 函数体片段交给模型,产出描述 JSON: json { "brief": "初始化 RTC 外设",
"params": [
{"name": "config", "desc": "RTC 配置参数"}, {"name": "status", "desc": "初始化状态码,非 0 表示失败"} ], "return_desc": "0 成功,非 0 为错误码", "retval": "none", "details": "调用前需保证 32.768kHz 晶振已起振。"
}
再渲染、预演、落盘: bash
python scripts/gen_doxygen.py --file src/rtc.cpp --line 42 --kind fun --doc doc.json --diff
python scripts/gen_doxygen.py --file src/rtc.cpp --line 42 --kind fun --doc doc.json --write
不带 --diff/--write 时输出 JSON(含 status、notes、changed、diff 字段)。
3) 其他类型 bash
文件头(插到文件第一行)
python scripts/gen_doxygen.py --file src/rtc.cpp --kind source \
--brief "RTC 驱动" --note "依赖 32.768kHz 晶振" --log-desc "创建" --diff
模块分组头 / 尾(成对使用)
python scripts/gen_doxygen.py --file src/rtc.cpp --kind module --line 30 \
--group rtc_api --title "RTC API" --brief "RTC 对外接口" --desc "全部函数可重入" --diff
python scripts/gen_doxygen.py --file src/rtc.cpp --kind module-end --line 120 --diff
行尾注释 / 简短注释(不需要解析签名)
python scripts/gen_doxygen.py --file src/rtc.h --kind rear --line 18 --text "已发送帧数" --diff
python scripts/gen_doxygen.py --file src/rtc.h --kind nom --line 25 --brief "RTC 状态枚举" --diff
4) 仓库级扫描(只读) bash
python scripts/gen_doxygen.py --scan src
返回 {"summary": {...}, "items": [...]},每个函数带 status:
| scan status | 含义 | 处理方式 |
| missing | 上方没有 Doxygen 块 | 按函数注释流程补 |
| stale | 有块但签名指纹对不上(代码改过) | 复核描述后刷新 |
| partial | 有块但缺字段(如缺 @param) | 只补缺失字段 |
| ok | 完整且指纹一致 | 不动 |
扫描会自动跳过 .git、build、libs、node_modules 等目录。不要一次性改上百个文件:先按状态分组汇报,让用户挑范围。
命令与退出码
| 脚本 | 用途 |
| parse_function.py --file --line/--name/--list [--body-lines N] | 解析签名 |
| gen_doxygen.py --file … --kind <fun\|nom\|source\|module\|module-end\|rear> | 生成单处注释 |
| gen_doxygen.py --scan <目录> | 批量扫描注释状态 |
退出码两个脚本一致:
| 码 | 含义 |
| 0 | 成功(含 status=ok/skipped 的「无需改动」) |
| 1 | 未找到目标函数 / 参数不足 |
| 2 | 参数或文件错误(路径不存在、JSON 非法) |
| 3 | 缺少 tree-sitter 依赖 |
失败时原因写入 stderr,stdout 不会输出半截 JSON。
作者与版权
文件头注释里的作者、版权没有通用默认值:不指定时脚本写出 <author>、
Copyright (c) <当年> by <copyright holder>, All Rights Reserved. 这样的占位符,
由使用者替换。指定方式两种: bash
python scripts/gen_doxygen.py --file a.cpp --kind source --brief "…" \
--author "Your Name (you@example.com)" --copyright "Copyright (c) 2026 by Your Company, All Rights Reserved."
一次性预设,之后所有命令沿用
export DOXYGEN_AUTHOR="Your Name (you@example.com)"
export DOXYGEN_COPYRIGHT="Copyright (c) {year} by Your Company, All Rights Reserved." # {year} 会替换成当年
可选:把模板装进 IDE
assets/cpp.json 就是六套模板的编辑器片段。手敲 doxygen_fun + Tab 即可展开:
python scripts/install_snippets.py # 预演:探测 IDE、显示将合并的内容(不写盘)
python scripts/install_snippets.py --apply --create # 实际写入
python scripts/install_snippets.py --uninstall --apply # 撤销
- 目标文件是 <IDE 用户目录>\snippets\cpp.json,合并而非覆盖,写入前自动备份 cpp.json.bak-<时间戳>。
- 片段按语言作用域生效:cpp.json 只对 .cpp/.cc/.cxx 生效,要给 .c/.h 用需另行并入同目录的 c.json。
- 只改这一个片段文件,不动 settings.json。
- 支持探测 CodeBuddy CN、VS Code、CodeBuddy、Cursor、Windsurf;也可用 --target <file> 指定路径。
使用注意
- 已有注释块一律只补不重写;函数上方原有的 // 说明保留,Doxygen 块插在函数正上方。
- 指纹行只由脚本写入/刷新,不要手写,也不要放到 */ 之后。
- 注释统一 UTF-8;不要写 ?、→ 之类的非 ASCII 特殊字形,避免源码转换时丢字。
- 缩进跟随目标行:类内成员、Qt signals:/slots: 下的注释会自动对齐。
- 落盘前先看 diff;批量改动前先 --scan。
兼容性
- Python 3.10+,Windows / Linux / macOS 均可(脚本对 Windows 控制台编码做了处理)。
- C/C++ 源码;Qt 工程可直接用(signals:/slots: 区域已覆盖)。
- 宿主无关:只要有 Bash + 文件读写工具即可驱动,不依赖特定 IDE 或插件。
环境预检脚本 scripts/check_env.mjs 额外需要 Node(DSH 自带);非 DSH 宿主若没有 Node,直接按安装章节的手工方式执行 python -c "import tree_sitter, tree_sitter_cpp" 也能自检。
许可
MIT。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
FantastyQAQ/dsh-doxygen
为 C/C++ 源码生成并维护 Doxygen 注释
相关插件 · 市场 / 管理
插件精选列表awesome-dsh-plugin/awesome-dsh-plugin
DeepSeek Harness(dsh)插件精选列表
★ 22,225未汉化DSH
73.6
新词雷达zhuyansen/new-term-radar
new-term-radar新词雷达
★ 2,049已汉化MCP
72.8
插件生态导航0xsline/awesome-deepseek-harness
安装 贡献指南 DeepSeek Docs 公开插件目录 Issues
★ 1,188已汉化DSH
72.6
技能注册中心iflytek/skillhub
企业级开源智能体技能注册中心——发布、发现并管理组织内可复用的技能包。
★ 5,370已汉化DSH
71.9
插件市场目录imsai-sh/awesome-deepseek-harness-plugins
面向 DeepSeek Harnessdsh生态的社区插件目录,共收录 13941 个插件含 PR 收录与…
★ 355已汉化DSH
71.8
插件精选清单Anil-matcha/awesome-dsh-plugin
DeepSeek Harnessdsh精选指南——DeepSeek…
★ 1,013已汉化DSH
71.7
这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。