dsh-cpp-optimization
Verified@chtholly-fan/dsh-cpp-optimization · v1.1.0 · MIT
DSH 插件包:提供 cpp-opt-audit skill,按目标工程实际 C++ 标准审查或编写又快又安全的底层 C++ 代码(RAII、移动语义、异常安全、性能与内存、并发、ABI)。
Install
dsh plugin add @chtholly-fan/dsh-cpp-optimization Confirm the layer applied with dsh --profile default --dump-config — see the install guide.
Source
Tags
Creators
Readme
@chtholly-fan/dsh-cpp-optimization
English | 中文
一个给 DeepSeek Harness(DSH)用的 bundle 插件包,装好后提供一个 skill:cpp-opt-audit,用于审查或编写「又快又安全」的底层 C++ 代码。
它的核心约束是先确认目标工程真实的 C++ 标准:探测不到就问用户,标准确认之前不推荐、不写入任何高于该标准的特性。结论全部带着「检查点 / 为什么 / 反例→正例 / 适用标准」四要素。
安装
用 dsh CLI 装到指定 profile:
dsh plugin --profile web add @chtholly-fan/dsh-cpp-optimization
--profile 填要装到的 profile(这里按 web 写,tui 同理);desktop profile 由桌面应用独占管理,命令行 dsh plugin 会拒绝,请改用 plugin_manager 的 install_bundle。dsh plugin 之后的参数会原样交给 pnpm,所以从本地目录安装时把包名换成目录的绝对路径即可:
dsh plugin --profile web add <本仓库目录的绝对路径>
本包是 bundle 插件:安装时会写入该 profile 的包依赖,并选中本包的 cordis.patch.yml。不要手动改 profile 的 package.json 或 cordis.patch.yml,也不要在 profile 目录里跑 pnpm。
备选方式:在 DSH 会话里让智能体用 plugin_manager 工具的 install_bundle 动作安装,target 同样传包名或目录的绝对路径。
安装后无需重启即可在会话目录里看到 cpp-opt-audit;如果替换了已安装的同名包,需要重启以加载新的模块。
使用
- 模型自动触发:任务涉及 C++ 代码审查、优化、底层实现时,会话目录会提示模型先加载该 skill。
- 用户显式调用:直接输入
/cpp-opt-audit。
skill 的工作方式是两阶段:阶段 0–3 只读审查并输出带证据的报告,阶段 4 才在得到同意后改代码。
内容结构
assets/cpp-opt-audit/
├── SKILL.md # 入口:硬规则、入口选择、五阶段工作流(0–4)、九维判据速查表、高频检查点
└── references/
├── standard-detection.md # 标准探测步骤、__cplusplus 校验、17/20/23 降级映射
├── audit-report-template.md # 报告结构、P0/P1/P2 分级、单条问题写法
├── verification-tooling.md # 横向参考一:验证手段与工具链、平台自检、最低验证门槛
├── symptom-index.md # 横向参考二:从崩溃/泄漏/变慢/竞争症状反查成因
├── raii-ownership.md # 一、RAII 与所有权(16 条)
├── move-value-categories.md # 二、移动语义与值类别(12 条)
├── exception-safety.md # 三、异常安全(14 条)
├── performance-memory.md # 四、性能与内存(13 条)
├── containers-algorithms.md # 五、容器与算法(7 条)
├── concurrency.md # 六、并发安全(15 条)
├── templates-compile-time.md # 七、模板与编译期(13 条)
├── standard-boundary.md # 八、标准边界与 C++20/23 机制(24 + 11 条)
├── type-safety-abi.md # 九、类型安全与 ABI(19 条)
└── interface-design.md # 十、对象语义与接口设计(15 条)
九个维度(类型安全、ABI 与接口设计合为一个维度)对应十个维度文件,每条标注适用标准;两个横向参考不按维度切分,分别负责「从症状反查候选成因」和「把结论变成可验证的证据」;各文件末尾单列了尚未覆盖的主题,避免把「没查到」当成「没问题」。
作为纯文件 skill 使用
不想装插件时,把 assets/cpp-opt-audit/ 整个目录复制到 skill 扫描根即可,例如:
- 用户级:
~/.dsh/skills/cpp-opt-audit/ - 项目级:
<工程根>/.dsh/skills/cpp-opt-audit/
目录名即 skill 名,SKILL.md 的 frontmatter 会被自动解析。
开发
本包是 Host-only bundle:零运行时依赖、无构建步骤,index.js 直接作为入口导出 apply/inject/name。
node --check index.js # 语法检查
node -e "import('./index.js').then(m => console.log(m.name, m.inject))"
npm test # 运行插件契约测试
npm test 会走 node --test 并启动子进程;在限制子进程的环境(例如部分沙箱)里,改为逐个运行 node test/provider.test.mjs、node test/package-manifest.test.mjs。
插件在 apply(ctx) 里用 ctx.skills.registerProvider(...) 注册一个提供方,list() 解析 SKILL.md 的 frontmatter 生成目录条目,get() 每次重新读取正文(因此编辑 skill 内容无需重新安装)。
改 frontmatter 时注意格式:name 必须是单行 name: cpp-opt-audit,description 支持单行、description: >(折叠为一段)与 description: |(保留换行)三种写法。写成其他形式(例如 description 后直接换行却不给 > / |)会让插件在加载期直接报错,并提示可用写法。
发布
npm publish --access public
发布前核对 package.json 中的 repository/homepage/bugs 与 files 清单,并用 npm pack --dry-run 确认包内文件与版本号。
许可
MIT