贡献指南

August 17, 2026 · View on GitHub

感谢你有兴趣为 dsh-github-cli 贡献!这是一个小而聚焦的插件,欢迎提 issue、PR,或直接改进文档。

开始之前

  • DeepSeek Harness 处于 developer preview,官方明确会有破坏性变更。请先确认你的改动针对的是哪个 @deepseek-ai/dsh 版本(当前锁定 0.1.0-rc.x)。
  • 本插件的核心卖点是安全模型。任何改动都不应弱化三级白名单(只读默认放行 / 写需 fullAccess / 凭据永禁)。

开发环境

git clone https://github.com/Nico0713520/dsh-github-cli.git
cd dsh-github-cli
npm install          # 若 peer 解析报错,用 npm install --legacy-peer-deps

常用命令:

npm run typecheck    # TypeScript 类型检查
npm test             # 运行 vitest 单元测试
npm run build        # tsdown 构建到 dist/

目录结构

src/
├── index.ts              # 插件入口:注册 gh_cli_run / gh_auth_status
├── gh-runner.ts          # 核心逻辑:命令键解析、白名单判断、gh 执行
├── gh-runner.test.ts     # 安全模型单元测试
├── index.test.ts         # 入口冒烟测试
└── __stubs__/dsh-tools.ts  # 测试用 stub(隔离 dsh-tools 的 peer 依赖树)

如何添加一个只读命令到白名单

  1. src/gh-runner.tsREAD_ONLY_COMMANDS 里加入命令前缀(2~3 个 token,如 pr diffworkflow run list)。
  2. VALUE_FLAGS 里加入该命令带值的 flag(如果有)。
  3. src/gh-runner.test.ts 里补对应断言。

提交规范

  • 提交信息用 Conventional Commits 风格:feat: / fix: / docs: / chore: / test:
  • 一个 PR 专注一件事。

测试要求

  • 所有改动应附带或更新测试。
  • 涉及安全模型(白名单、flag 解析、api 方法判断)的改动必须有针对性测试。
  • 提交前确保 npm run typechecknpm test 全部通过。

行为准则

请友善、简洁、聚焦。这是一个社区项目,不是官方 DeepSeek 产品。

License

贡献默认采用与项目一致的 MIT 许可。