Chuyển đến nội dung chính

dsh-github-flow

Đã xác minh

dsh-github-flow · v0.1.7 · MIT · Giao diện web

GitHub Flow: Native GitHub CLI (gh) integration for DeepSeek Harness — Agent Tools, Slash Commands, and Web UI Workspace

Cài đặt

dsh plugin add dsh-github-flow

Xác nhận layer đã áp bằng dsh --profile default --dump-config — xem hướng dẫn cài plugin.

Mã nguồn

Thẻ

Tác giả

Readme

DSH GitHub Flow (dsh-github-flow)

npm version npm downloads license Cordis

基于 GitHub CLI (gh) 为 DeepSeek Harness (DSH) 打造的现代化原生工作流集成插件。
深度打通本地 Git 仓库开发与远程 GitHub 协作(PR、Issue、Actions CI 诊断与代码审查),兼备 Agent 模型工具、人类 Slash 指令以及原生 Web UI 双重视图。

简体中文 | English


🌟 核心特性

  1. 零鉴权配置,开箱即用:
    • 自动复用宿主机已通过 gh auth login 认证的登录凭据(OAuth Token / 系统 Keyring),无需在 DSH 中存储任何明文 GitHub PAT。
  2. 工作区目录深度亲和与零参数探测 (CWD & Git Auto-Binding):
    • 自动绑定当前会话所在的物理工作区目录,原生直读本地 .git/config 并映射 workspace.json;具备 Git 强校验、父子级目录智能穿透与会话 ID 上下文透传机制,杜绝非 Git 目录误选,无需 Agent 或人类手动传参 owner/repo,零参数直接识别关联仓库。
  3. 高信噪比与 Token 防溢出治理:
    • 拒绝 70+ 个碎片化微型工具撑爆上下文,收敛聚合为 5 大领域核心 Tool。
    • 所有查询原生采用 --json <fields> 按需返回;对 diff、log_failed 设置安全截断保护(默认 24KB),防止模型上下文窗口溢出崩溃。
    • 工具层已通过防御性输出包装,列表与标量 100% 契合 DSH 工具网关模式约束。
  4. 原生 Web UI 双重视图与多维任务治理:
    • 全局驾驶舱(主导航栏 sidebar.panellist,Order 20):透视账号全局仓库、本地工作区矩阵联动状态;重构并支持三维 Issue 智能聚合(「📥 用户提单」/「🎯 分配待办」/「✍️ 我发起的」),提供四态响应式药丸过滤与身份徽章;
    • 右侧栏工作区面板(sidebarRightTabs,Order 40):自动绑定当前工程,常驻呈现 PR 门禁状态、当前仓库 Open Issues 任务列表(带提出人、分类徽章、标签与直达链接)、CI 构建流水线,以及快捷黄金网格(浏览器打开、查看所有 Issues、查看所有 PRs、快速创建 PR、新建 Issue),零弹窗依赖;
    • 全场景双模式原生自适应:深度契合 DSH 官方 DSW(DeepSeek Web)设计变量规范,通过 body[data-ds-dark-theme] 驱动浅色与深色主题实时零延迟平滑切换。
  5. 健全的环境诊断与三态就绪引导 (Three-State Setup Engine):
    • 告别空状态困惑:精准建立「未安装 CLI (Missing)」➜「已安装未登录 (Required)」➜「已认证就绪 (Active)」三态状态机;
    • 自动识别宿主机操作系统(Windows/macOS/Linux),按平台提供包管理器安装命令(Windows 下 winget install --id GitHub.cli、macOS 下 brew install gh)与官方安装包直达;
    • 支持一键复制命令与安全白名单系统终端一键唤起;
    • 具备**窗口焦点自愈(Focus Auto-Recovery)**机制:切到外部终端或浏览器授权完毕后,切回 DSH 界面自动探测刷新,无感恢复。
  6. 符合 Cordis 官方微内核架构:
    • 暴露原生 GitHubService(ctx.github),允许生态其他插件复用;
    • 具备符合 Standard Schema 规范的运行时配置校验(Config);
    • 支持领域事件系统(github/pr:create, github/issue:create)。

📸 界面预览

全局全景驾驶舱 (Global Cockpit)

透视账号云端所有 GitHub 仓库、本地工作区矩阵联动状态,以及待办 PR 和多维分类 Issues(支持用户提单、指派待办、我发起的多维药丸切换与状态徽章):

GitHub 全景驾驶舱

会话右侧栏工作区面板 (Session Workspace Panel)

自动绑定当前工程关联仓库,常驻呈现 PR 状态药丸、当前仓库 Open Issues 任务列表、Actions 构建流水线与快捷操作网格:

右侧栏工作区面板


🚀 安装指南

在 DSH 终端执行以下命令直接从 npm 安装:

# 安装到桌面端 Profile
dsh plugin --profile desktop add dsh-github-flow

# 或者安装到 Web Profile
dsh plugin --profile web add dsh-github-flow

🛠️ Agent 工具集速查

工具名称 核心操作 (action) 典型场景
github_pr list, view, create, diff, checks, review, merge 让 Agent 查看 PR 详情、检查 CI 状态、执行代码评审、合并 PR
github_issue list, view, create, comment, close, reopen 查看与搜索 Issue、创建 Issue、追加排查进展评论
github_run list, view, log_failed, rerun, cancel 查看 CI 构建流水线,特别是 log_failed 可直接提取报错日志供 Agent 修复
github_repo view, search_code, search_repos 查看仓库元数据、跨仓库代码搜索
github_api 任意端点(如 repos/{owner}/{repo}/releases) 底层直接调用 REST / GraphQL API(支持 --jq 预过滤、raw 原始响应体模式)

💬 人类 Slash 命令

在 DSH 对话输入框直接使用:

  • /gh status:检查当前 GitHub CLI 账号登录状态、授权作用域与当前本地目录关联仓库;
  • /gh help:查看使用帮助与常见语法示例。

⚙️ 插件配置项 (Config)

在 cordis.patch.yml 或 Profile 配置中自由覆盖如下字段:

- insert:
    - id: github-flow
      name: dsh-github-flow
      config:
        ghPath: 'gh'              # GitHub CLI 程序路径(内网或特定环境可指定绝对路径)
        defaultTimeoutMs: 30000   # 命令执行超时时间(毫秒)
        maxOutputChars: 24000     # 单次命令最大返回字符数(防 Token 溢出保护)
        maxOutputBytes: 96000     # 单次命令最大返回字节数硬上限,默认 maxOutputChars × 4
        cacheTtlMs: 15000         # 单仓库概览缓存时长(毫秒);全局驾驶舱按此值的 20 倍缓存,下限 5 分钟
        defaultListLimit: 20      # 默认查询列表返回条数

关于 Web 面板的刷新节奏:全局驾驶舱每次刷新要执行十余次 gh(本机实测 8-13 秒), 因此它按 5 分钟缓存,并在你点击「🔄 刷新全局数据」时强制重取。 工作区矩阵只读取本地 .git/config 识别仓库归属,不发起网络请求。 /gh status 命令始终绕过认证缓存,保证你 gh auth login 后立刻能看到真实状态。


🔌 生态服务扩展 (Cordis Service)

其他 DSH 插件可通过依赖注入复用本插件的能力:

import type { Context } from '@deepseek-ai/cordis';

export const inject = ['github'];

export function apply(ctx: Context) {
  // 通过 ctx.github 直接调用底层安全执行引擎
  const auth = await ctx.github.checkAuth();
  const repo = await ctx.github.getRepoMetadata();
}

📚 开发与维护文档


📄 开源协议 (License)

本项目基于 MIT License 协议开源。