# 贡献指南 感谢你愿意为 `dsh-task-guard` 贡献力量。 ## 开发环境 - Node.js `^22.19.0 || >=24` - pnpm `10.x` - 一个可用的 DeepSeek Harness 环境(用于本地验证插件加载) ## 常用命令 ```sh pnpm install # 安装依赖;prepare 钩子会自动构建 lib/ pnpm typecheck # TypeScript 类型检查 pnpm build # 构建 lib/index.js pnpm test # 运行 node:test 测试 pnpm check # typecheck + build + test ``` ## 提交规范 - 提交信息建议遵循 [Conventional Commits](https://www.conventionalcommits.org/zh-hans/v1.0.0/)(`feat:`、`fix:`、`docs:` 等)。 - 提交前请保证 `pnpm check` 通过。 - 新增用户可见行为时,同步更新 `README.md` / `README.en.md` 与 `CHANGELOG.md`。 - 涉及 DSH hook、source kind 或 session format 的改动,请在 `CHANGELOG.md` 的 `Verified` 下写明验证方式。 ## 分支与 PR 1. Fork 本仓库并新建功能分支。 2. 在分支上完成修改并自测。 3. 提交 PR,说明动机、改动与测试方式。 ## 代码风格 - TypeScript strict 模式;避免 `any`,除非有明确的结构性边界。 - 不引入运行时依赖,除非确实必要;当前插件只使用 Node 内置模块。 - 不修改 DSH 系统提示词;模型可见文本只通过 `additionalContexts` + plugin notice 发送。 - 注意 session format v4:插件消息的 source 必须是 producer-owned kind(`plugin:`),不能再使用旧的 `{ kind: 'plugin', plugin: ... }`。 ## 安全 涉及凭据、用户会话内容或本地 profile 的改动,请先阅读 [SECURITY.md](./SECURITY.md)。不要在 Issue/PR 中贴真实凭据或完整会话日志。