全部插件

DSH / BUNDLE / CLIENT-UI

gitee-ai-employee

v1.2.8wangbobo-coder / gitee-ai-employeeb55338710d

可安装组合包UI 与客户端插件社区 · Topic 自动分析Web UI

概览

gitee-ai-employee

Gitee/GitHub AI 员工:issue 里 @ 机器人自动开发并提 PR;v1.2 新增代码安全扫描——配置仓库地址后按内置/自定义提示词扫描漏洞,去重后提交 issue。An issue-driven AI developer for DeepSeek Harness (Gitee & GitHub) with optional static security scanning (dedup + issue reporting).

README / ZH

插件文档

Gitee AI 员工 (gitee-ai-employee)

面向 DeepSeek Harness 的 issue 驱动型 AI 开发者,支持 Gitee(码云)GitHub

在 issue 里 @ 你的机器人,插件就会克隆仓库、派出 AI worker agent 实现改动、 推送分支、按你指定的分支创建 Pull Request,并可按需自动合并、自动关闭 issue。 Gitee 与 GitHub 仓库可以同时监听。

功能

  • 轮询:定时扫描你监听的仓库里新出现 @botName 的 issue。双平台:每个监听行可加 gitee: / github: 前缀(无前缀按 defaultPlatform,默认 gitee),两种平台可混用。
  • AI 开发:创建 worker agent(Windows 下经 PowerShell + curl 克隆仓库),探索代码、 实现需求、跑校验、在 ai-fix/issue-<number> 分支上提交。
  • 分支感知:会读取 issue 里用自然语言指定的分支,作为开发基准和 PR 目标:
    • 需要修改 release-v1.2 分支 / 修改 X 分支 / 改 X 分支
    • 基于 X 分支 / 在 X 分支上 / 以 X 分支为基础
    • 合并到 X / 合到 X / 目标分支 X / base: X 指定分支会用 git ls-remote 校验远端存在性;不存在则退回仓库默认分支并在评论中说明。
  • PR 与关闭:推送分支、创建 PR(base = 所选分支),可按需自动合并(autoMerge)、 成功后自动关闭 issue(autoCloseIssue)。
  • Webhook / 手动触发:可选 webhook 端点与手动触发 URL,无需等轮询即时处理。
  • 代码安全扫描(v1.2):配置扫描仓库(scanRepos)后,插件用内置/自定义安全提示词 驱动扫描 worker(复用 DSH 模型)对克隆仓库做静态安全审计;同一位置(file:line+漏洞类型) 的发现只上报一次(去重状态持久化到 workRoot/scan-state.json),新发现自动提交 issue。 支持定时扫描(scanEnabled + scanIntervalMs)与手动触发(设置卡片「立即扫描」按钮或 POST /gitee-ai/scan)。

环境要求

  • DeepSeek Harness (dsh) 0.1.x,Windows(插件通过 PowerShell + C:\Windows\System32\curl.exe 驱动 git 与 Gitee API),Gitee 账号及个人访问令牌。
  • worker / scanner 预设在包内自带并在首次加载时自动安装$DSH_HOME/.agent-presets/gitee-workergitee-scanner 同理),无需手动配置。

安装

dsh plugin --profile <你的-profile> add gitee-ai-employee

(或直接从 GitHub 安装:dsh plugin --profile <p> add github:wangbobo-coder/gitee-ai-employee

重启 dsh 后,打开 设置 → 插件 → 插件配置,找到 Gitee AI 员工 卡片进行配置:

配置项 说明
giteeToken Gitee 个人访问令牌(标记为 secret,状态接口不回显)
githubToken GitHub 个人访问令牌,可选(标记为 secret;仅当监听 github: 仓库时必填)
defaultPlatform 无前缀 watchRepos 行所属平台:gitee(默认)或 github
botName 触发机器人的账号,如 gitee-ai。建议使用 ASCII 名称。
workRoot 仓库克隆目录;留空 = $DSH_HOME/gitee-workers
watchRepos 监听仓库,每行一个:owner/repo(按 defaultPlatform)或 gitee:owner/repo / github:owner/repo
pollEnabled / pollIntervalMs 是否轮询 / 轮询间隔(毫秒)
autoMerge 是否自动合并创建的 PR
autoCloseIssue 任务成功后是否自动关闭 issue
workerPreset worker 使用的 agent 预设 id(默认 gitee-worker
scanEnabled 是否启用定时代码安全扫描(对 scanRepos
scanRepos 扫描仓库,每行一个:owner/repogitee:/github: 前缀(格式同 watchRepos
scanMinSeverity 最低上报级别:critical/high/medium/low/none(默认 medium
scanOneIssuePerRun true=一次扫描新发现合并为一个 issue(默认);false=每个发现一个 issue
scanPrompts 安全提示词 {id:{name,prompt}}:覆盖内置(同 id)或新增自定义 id
scanIntervalMs 定时扫描间隔(默认 21600000 = 6 小时)
scanConcurrency 同时扫描的仓库数(1~8,默认 3);仓库多时自动排队挨个持续扫描

使用

  1. 打开 pollEnabled(或使用状态接口给出的手动触发 URL)。
  2. 在监听的仓库里新建/编辑 issue 并 @ 机器人:
    @gitee-ai
    需要修改 release-v1.2 分支
    参会人员选择增加学生选项,注意回显处理。
    
  3. 插件会在一个轮询周期内接单(评论“已接单”),运行 worker,最后回帖结果与 PR 链接; 开启 autoCloseIssue 时成功后自动关闭 issue。

GitHub 同理:配置 githubToken 后在 watchRepos 里写 github:owner/repo(或把 defaultPlatform 设为 github)。也可以直接手动触发单个任务:

http://<dsh-host>:<port>/gitee-ai/go?platform=github&owner=octo&repo=hello&number=5

机器人匹配使用前瞻断言((?![A-Za-z0-9_])),ASCII 与中文 botName 都能正确触发。

代码安全扫描(v1.2)

  1. 在插件配置卡片(或 /gitee-ai/settings 页面)填写 扫描仓库(每行一个 [gitee:|github:]owner/repo),开启 启用定时扫描,或直接点 立即扫描全部仓库。 点 一键获取我的仓库 会自动拉取当前账号有权限的仓库(自己的 + 所属组织的)填进 输入框,再去掉不需要的、保存即可(等价接口 GET /gitee-ai/my-repos)。
  2. 插件克隆仓库 → 用选中的安全提示词驱动扫描 worker 审计代码 → 结果写入 <repo>/.gitee-scan/result.json → 与 scan-state.json 对比去重 → 把新发现提交 issue。

多仓库排队(v1.2.0+)scanRepos 可以配任意多个仓库。定时 tick 会把全部仓库排进 队列,同时最多扫描 scanConcurrency 个(默认 3,可设 1~8),扫完一个自动接下一个, 排着队把所有仓库持续扫完;重复扫描靠去重保持幂等,不会重复建 issue。

内置提示词(id:general / sqli / xss / command-injection / path-traversal / ssrf / hardcoded-secret / insecure-deserialization / authz / dos / dependency):

  • 覆盖内置:scanPrompts 里用相同的 id 填自己的 {name, prompt}
  • 新增自定义:任意新 id;扫描时自定义提示词会与其他提示词一起发给 worker。

去重规则:发现按 文件路径:行号:漏洞类型 签名记录;已上报过的签名再次出现时跳过, 只建新发现对应的 issue。可用 POST /gitee-ai/scandryRun=true 预演不建 issue、 force=true 强制重新上报)手动控制。

扫描状态GET /gitee-ai/scan 返回提示词清单、扫描任务与去重统计;历史记录在 workRoot/scan-state.json。扫描发现的 issue 标题带 [安全扫描] 前缀。

安全说明

  • 用户配置持久化在用户自身 profile 的 patch 层;随包分发的 cordis.patch.yml 只含空默认,绝不包含 token。
  • token 在 schema 中标记为 secret,状态/配置接口只返回 tokenConfigured 布尔值,不回显明文。
  • 插件与你 dsh 进程同权限运行;worker agent 仅在克隆的工作区内获得 danger-full-access
  • 扫描 worker 只做静态审计;硬编码密钥类发现只报告位置与类型,不回显密钥原文。

开发

  • dsh/index.js — 宿主插件(标准 Cordis 对象插件,声明 dsh.bundle manifest)。
  • dsh/client.js — Web 客户端半体(设置卡片/状态展示)。
  • preset/gitee-worker/ — 内置 worker agent 预设(issue 开发),首次加载缺失时自动复制到 $DSH_HOME/.agent-presets/gitee-worker
  • preset/gitee-scanner/ — 内置安全扫描 agent 预设(v1.2),自动安装到 $DSH_HOME/.agent-presets/gitee-scanner

License

MIT