Skip to content

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