贡献指南
August 31, 2026 · View on GitHub
感谢你考虑为 dsh-promptkit 贡献代码!以下是参与方式。
快速上手
源码开发与测试使用 Node 24.15+(CI 使用 Node 24 最新补丁版),以满足 jsdom 的运行要求。发布包本身的 Node 运行时下限仍由 package.json 的 engines 声明,开发依赖不随安装包安装。
git clone https://github.com/fsrmqi/dsh-promptkit.git
cd dsh-promptkit
npm ci
npm run build # 全量语法/入口检查 + 方法库 + 标准/轻量 UI
npm test # 源码/产物交互、协议、真实 HTTP 与宿主槽位回归
构建产物 ui/client.js、ui/client-lite.js 和 ui/embed.js 已提交到 Git。修改源码后需重新 npm run build;CI 校验重建后没有产物差异。
QuickEnhancer 的增强事务、浮层关闭分别由 src/ui/quick-enhancer/use-enhancement-flow.js、use-panel-dismiss.js 管理(原 use-file-completion.js 已随 @ 文件补全功能移除,file-menu.js 现仅承载模板变量补值面板)。新模块必须加入 scripts/build-client.mjs 的共享模块清单;源码入口和拼接产物都要通过交互测试,不能依赖拼接后偶然可见的全局符号。
宿主回归流程见 DSH 验证清单。普通 npm test 不调用外部模型,真实 HTTP 测试使用本地模型桩,不能代替真机模型验证。
新增思考方法
- 在
methods/对应场景目录下新建 Markdown 文件,文件名即方法标题 - frontmatter 格式(必须字段:
场景、用途;可选:标签、触发词、强触发词):--- 场景: 学习 用途: 一句话说明这个方法解决什么问题 标签: [关键词1, 关键词2] 触发词: 词1, 词2, 词3 强触发词: 最明确的词1 --- # 方法标题 正文描述... ## Prompt ``` 这里是干净的 prompt 模板(会被 build-methods.mjs 提取为 prompt 字段) ``` - 如果新方法需要
mode: guided(逐步追问而非一次性分析)或自定义outcome,编辑scripts/build-methods.mjs中的OVERRIDES表 - 运行
npm run build重新生成builtin.json+client.js+client-lite.js+embed.js
代码结构
| 目录 | 职责 | 修改注意 |
|---|---|---|
src/core/ | 方法源、Composer、Enhancer、资产源四个接口 | 接口变化需同步更新 docs/EMBED.md、相关契约测试和升级记录;历史 Provider 应保留 onHistoryChange() 订阅语义 |
src/ui/ | React 组件与交互流程 | 修改后运行 npm run build,同步标准、轻量和 Embed 三份产物 |
src/adapters/ | 默认实现 | 可自由扩展,不影响协议面 |
methods/ | 方法库源文件 | Markdown 格式,build:methods 解析为 builtin.json |
scripts/ | 构建脚本 | build-methods.mjs(md→json)+ build-client.mjs(src→client.js/embed.js) |
test/ | 契约测试 | 保护 Embed Protocol 不被意外破坏 |
docs/UPGRADE-HISTORY.md | 每版新增功能、修复和升级操作 | 新版本追加记录,不覆盖历史,不将未发布或未验证事项写成已完成 |
版本更新与升级记录
每次版本更新必须同时完成以下事项:
- 统一
package.json、package-lock.json根记录与ui/package.json的版本号。 - 在 升级记录 顶部追加版本、日期、状态、新增功能、改进/修复、数据或 adapter 升级注意事项和实际验证范围;没有新增功能也要明确说明。
- 同步
CHANGELOG.md、中英文 README 的当前版本与安装命令,以及受影响的接入文档。历史行为保留在旧版条目,当前行为在新版说明。 - 运行
npm run build和npm test。npm run check会校验各清单版本及当前版本的两份记录是否存在;新增文档不得仅在本地留作未跟踪文件。 - 用
npm pack生成最终版本 tarball,在临时目录安装,检查导出、21 个内置方法和浏览器/Node 产物。操作验收清单见 DSH-QA。 - 本地提交、推送、Git 标签、npm 发布是独立步骤。只完成本地提交时保留“待发布”状态;实际发布后再更新升级记录状态,不能用文档代替发布结果。
私有方法与隐私
- 不要把个人 Prompt、Obsidian 笔记或真实会话内容加入
methods/;公开方法必须可安全发布。 - 私有方法通过浏览器 localStorage 导入,不进入仓库、构建产物或测试夹具。
- 本地使用计数和反馈不得上传、不得接入第三方 SDK。
提交规范
- 提交前确保
npm run build和npm test全绿 - Commit message 前缀:
feat:(新功能)/fix:(修复)/docs:(文档)/refactor:(重构)/chore:(杂项) - 如果修改了 Embed Protocol 契约面(
PromptKit命名空间导出符号),在 commit message 中标注BREAKING CHANGE - 构建产物(
ui/client.js、ui/client-lite.js、ui/embed.js、methods/builtin.json)必须随源码一起提交,保证 Git 安装无需构建即可使用
Issue 与 PR
- Bug 报告请使用 Bug report 模板,附上 DSH 版本和复现步骤
- Feature request 请说明使用场景和期望行为
- PR 请基于
main分支创建,描述清楚改了什么、为什么改
License
贡献的代码遵循 MIT 许可证,与项目一致。