在 Workspace Session 悬浮卡片上展示当前活动提醒数和最近触发时间,不修改 Schedule 本身。
- 语言
- TypeScript
- License
- MIT
- 分支
- main
安装
$ dsh plugin --profile web add github:op7418/pilot-harness/packages/schedule/ui-schedule-summary在终端中运行以上命令,通过 dsh CLI 安装此插件。可在右上角切换 Profile。 第一次用 dsh?看这篇新手教程
一句话定位
在 Workspace 的 Session 悬浮卡片上多显示一行活动提醒摘要,让用户在不打开 Session 的情况下就能看到当前还有几条未触发的提醒以及最近一次什么时候触发。插件本身只读不写,不会改动 Schedule 的提醒数据。
核心能力
- 在 Workspace Session 悬浮卡片里追加一行"提醒:N 个 · 时间"
- 通过只读通道读取 Session 持久日志中的活动提醒数量和最近一次触发时间
- 自动避开 Fork 继承:只统计当前 Session 自己的提醒,不展示父 Session 留下的
- 不会唤醒冷 Session,读取操作不会让后台 Session 重新进入运行状态
- 15 秒结果缓存 + 同一 Session 的并发请求合并,避免重复扫描完整日志
- 超过 256 个 Session 时按最近使用顺序淘汰,自动清理过期条目
技术实现
- 语言: TypeScript + React(Host 与 Client 双面)
- 关键依赖:
@deepseek-ai/dsh-schedule(折叠 schedule/change 事件流)、@deepseek-ai/dsh-session-persistence(inspect 持久日志)、@deepseek-ai/dsh-client-connection(loopback RPC 通道)、@deepseek-ai/dsh-client-ui-workspace(侧边栏插槽) - 架构模式: 双面 Cordis 插件 — Host 端注册只允许 loopback 调用的
/pilot-schedule-summaryRPC 端点;Client 端在 Workspace 侧边栏插槽sidebar.workspaces.session.detail注册一个有序条目 - 入口文件:
packages/schedule/ui-schedule-summary/src/index.ts(Host)、packages/schedule/ui-schedule-summary/src/client/index.ts(Client)
适用场景
如果你日常在 Pilot Harness Web 或 Workspace 里通过悬浮卡片浏览大量 Session,需要快速判断某个 Session 是不是还在进行定时提醒、什么时候会触发下一个,又不希望打开 Session 详情去看,这个插件就能在悬浮卡片里直接告诉你。它不会替你管理提醒,也不会影响其他插件对 Schedule 的控制,只是一种"看见状态"的辅助。
前置依赖与兼容性
| 依赖 | 最低版本 | 说明 |
|---|---|---|
| DSH | 0.1.0-rc.7 | 工作区 workspace 依赖;宿主需能公开 sidebar.workspaces.session.detail 插槽契约(Pilot Harness v0.1.0+ 提供) |
| Node | >=22.19.0 | 与仓库根 package.json 的 engines.node 字段保持一致 |
| 平台 | 跨平台 | macOS / Windows / Linux 都可运行;浏览器端为 Web 平台 |
| 原生模块 | 无 | 不依赖 node-pty、node:sqlite 等原生扩展 |
安装方式
dsh plugin --profile web add github:op7418/pilot-harness/packages/schedule/ui-schedule-summary
配置项
本插件无需额外配置。安装后重启 Web profile 即可生效;用 dsh --profile web --dump-config 可以验证 pilot-schedule-summary 是否已加载。
常见问题
Q: 装上后能在哪里看到效果?
A: 在 Pilot Harness Web 桌面或 Workspace 侧边栏里,把鼠标悬停在某个 Session 卡片上(延迟弹出),如果有未触发的提醒,悬浮卡片会多出一行"提醒:N 个 · 时间",零提醒或读取失败则不显示。
Q: 关闭这个插件会丢失提醒吗?
A: 不会。提醒的持久化和生命周期由 @deepseek-ai/dsh-schedule 持有,本插件只是只读呈现,卸载后只是侧边栏不再显示该行提醒。
Q: 为什么安装命令在 README 里和插件 ID 不同?
A: README 给的是打包好的 tgz 预构建 bundle 地址;插件 ID 走源码安装,必须两次来源保持一致,使用时选其一即可。
Q: 远程 Web 客户端能用吗?
A: 当前不能。RPC 通道只允许 loopback 访问,把 LAN origin 加进 Harness 的 trustedHosts 也不会启用;远程场景需要本插件未提供的独立认证传输。
Q: 安装后没看到提醒行怎么办?
A: 先确认 Web profile 已重启并用 dsh --profile web --dump-config 可以看到 pilot-schedule-summary;若宿主没有公开 sidebar.workspaces.session.detail 这个插槽契约(如老版本上游 Harness),插件能加载但无法渲染该行。
Q: 缓存多久会刷新?
A: Host 端对每个 Session 的摘要缓存 15 秒;对应的 schedule/change 事件触发后立即失效;超过 256 个 Session 时按最近使用顺序淘汰。
Q: 卸载怎么操作?
A: 执行 dsh plugin --profile web remove @deepseek-ai/dsh-ui-schedule-summary,然后重启 Web profile。
上手难度
入门 — 单一功能插件,安装即用,没有配置项,不需要理解 Schedule / Fold / Seed 等内部概念。
已知问题与限制
- 悬浮摘要只展示活动数量与最近触发时间,不展示提醒内容、提示词或管理操作入口
- 持久日志损坏或不可用时,悬浮卡片不会出现该行,也不会显示 Schedule 诊断
- RPC 通道仅允许 loopback 调用,刻意不做 trusted-host 例外;远程 Web 客户端需要另接独立认证传输
- 宿主若没有公开
sidebar.workspaces.session.detail插槽契约,插件可加载但浏览器端无法显示该行 - 安装旧版上游 Harness 时,部分依赖(如
@deepseek-ai/dsh-client-ui-workspace的插槽位)可能未提供,会导致 Client 端无法注入
Pilot Harness
English | 中文
A CodePilot-inspired desktop client and plugin suite for DeepSeek Harness.
Run the DeepSeek Harness plugin runtime as a focused native app, manage providers and multimodal models visually, and keep desktop additions isolated as ordinary Harness plugins.
Quick start · Plugins · Architecture · MIT License
Why Pilot Harness
DeepSeek Harness has a powerful “everything is a plugin” architecture, but its default experience is designed around a CLI-launched Web UI. Pilot Harness keeps that runtime model and adds the parts expected from a daily desktop product:
- A real desktop app — Electron packages the local Harness runtime for macOS, Windows, and Linux, owns native window behavior, and provides a recovery screen when startup needs attention.
- A calmer CodePilot-inspired interface — consistent tokens, radii, menus, hover states, settings cards, Markdown, conversation/trajectory navigation, and platform-aware title bars.
- Provider and model management — connect supported providers, declare an OpenAI-compatible endpoint, manage credentials separately from settings, browse the live model catalog, and identify image-capable models.
- Workspace context without clutter — project-aware conversation rows show branch, state, reminder summary, mode, and model details, while Files opens as a true right sidebar.
- Plugin-first extensions — the theme, Worktree sidebar, Schedule summary, and Session-log export remain Cordis/DeepSeek Harness rows rather than desktop-only business logic.
- Reversible customization — disabling the CodePilot theme row removes its product mark and visual overrides so the stock Harness presentation can take over again.
Pilot Harness does not replace the DeepSeek Harness agent loop, Session log, tool pipeline, provider contracts, or RPC implementation. Electron owns packaging and native integration; the composed Harness plugin tree remains the application runtime.
Quick Start
Download the installer for your system from GitHub Releases:
| Platform | Download | Install and handle the security prompt |
|---|---|---|
| macOS (Apple Silicon) | DMG installer ZIP app | Open the DMG, drag pilot-harness.app into Applications, and launch it normally. A formal Release is published only after its Developer ID signature has been verified. Because notarization is not enabled yet, Gatekeeper may still block the first launch; in that case open System Settings → Privacy & Security, click Open Anyway, then confirm Open. Do not run xattr or disable Gatekeeper for a formal Release. If macOS reports that the signed app is damaged, delete it, verify the Release checksum, and download it again instead of bypassing the warning. Apple's security instructions. |
| Windows (x64) | EXE installer | Run the EXE. If Microsoft Defender SmartScreen says Windows protected your PC, first confirm that the file came from this Release, then choose More info → Run anyway. Do not disable SmartScreen globally. A managed computer may hide this option; contact its administrator instead. Microsoft's SmartScreen explanation. |
| Linux (x64) | AppImage DEB RPM | DEB: sudo apt install ./Pilot-Harness-Linux-amd64.debRPM: sudo dnf install ./Pilot-Harness-Linux-x86_64.rpmAppImage: chmod +x Pilot-Harness-Linux-x86_64.AppImage, then ./Pilot-Harness-Linux-x86_64.AppImage. If the file manager blocks execution, enable Allow executing file as program in file properties. The preview packages are unsigned, so only accept a package-manager warning after confirming the official Release source. |
The table links to formal end-user Releases, not the seven-day Actions preview artifacts. Formal macOS files must pass Developer ID verification before publication; while they remain unnotarized, the only expected extra step is Open Anyway in System Settings. Preview macOS artifacts are ad-hoc signed for CI verification and are not the normal installation path. Once notarization is enabled, the Open Anyway step should normally disappear and this guide must be updated with the release pipeline. Windows and Linux preview installers remain unsigned. Only override an operating-system warning for files downloaded from this repository's official GitHub Release; do not turn off platform security globally.
After installation, open Pilot Harness, select a Workspace, then go to Settings → Providers to connect a provider and choose one of its available models. No separate DeepSeek Harness installation is required for the desktop app. Source setup and packaging instructions live in Development, not in the user installation path.
What is included
| Area | What Pilot Harness adds | Ownership |
|---|---|---|
| Desktop shell | Native window, local runtime lifecycle, directory dialog, recovery, installers, and platform icons | Electron app |
| Visual system | CodePilot-inspired design tokens and component contracts | @deepseek-ai/dsh-client-ui-codepilot-theme |
| Workspace Files | Right sidebar, file count, branch summary, row actions, and @path insertion | @deepseek-ai/dsh-ui-worktree |
| Reminder summary | Active reminder count and nearest scheduled time in Session hover details | @deepseek-ai/dsh-ui-schedule-summary |
| Session export | Per-Session ZIP export from the Trajectory toolbar and /export | @deepseek-ai/dsh-session-log-export |
| Providers and models | Configurable adapter, credential/settings UI, live catalog, and multimodal labels | Existing Harness plugins plus the Pilot Harness desktop profile |
The provider/model experience is deliberately a profile composition, not a new provider implementation. It mounts existing adapter, Settings, and Credentials contracts, then replaces the desktop placeholder only after a real provider advertises a usable model.
Use the plugins independently
The desktop client already includes every plugin below. If you use a local DeepSeek Harness Web profile instead, install only the feature you want with one command; each release asset is a prebuilt dsh.bundle, so no repository clone, YAML patch, or local build is required.
CodePilot theme
dsh plugin --profile web add https://github.com/op7418/pilot-harness/releases/latest/download/deepseek-ai-dsh-client-ui-codepilot-theme-0.1.0-rc.5.tgz
Applies the Pilot Harness visual system and product mark. Removing the plugin restores the stock Harness presentation. See theme details.
Files sidebar
dsh plugin --profile web add https://github.com/op7418/pilot-harness/releases/latest/download/deepseek-ai-dsh-ui-worktree-0.1.0-rc.5.tgz
Adds the Workspace-confined right file sidebar, file count, branch summary, row actions, and @path insertion. See Files plugin details.
Reminder summary
dsh plugin --profile web add https://github.com/op7418/pilot-harness/releases/latest/download/deepseek-ai-dsh-ui-schedule-summary-0.1.0-rc.5.tgz
Adds active-reminder metadata to Session hover details while the upstream Schedule plugin remains the reminder authority. See reminder plugin details.
Session-log export
dsh plugin --profile web add https://github.com/op7418/pilot-harness/releases/latest/download/deepseek-ai-dsh-session-log-export-0.1.0-rc.7.tgz
Adds per-Session ZIP export to the Trajectory toolbar and the /export command. See export plugin details.
Restart the Web profile after installation and use dsh --profile web --dump-config to confirm the added row. Files and Reminder summary require the Pilot Harness UI slot contracts included in Pilot Harness v0.1.0; older upstream Harness builds can install their bundles but cannot render those two UI contributions.
Remove a plugin with the same package name shown in its details page, for example:
dsh plugin --profile web remove @deepseek-ai/dsh-ui-worktree
Development
git clone https://github.com/op7418/pilot-harness.git
cd pilot-harness
pnpm install
pnpm run desktop:dev
Run the desktop checks with:
pnpm run desktop:test
pnpm --filter @deepseek-ai/dsh-desktop run typecheck
pnpm --filter @deepseek-ai/dsh-desktop run test:e2e
Official installers are never built or uploaded from a developer machine. Every verified push to main, and a manual workflow dispatch without a release tag, produces seven-day Actions preview artifacts on native macOS, Windows, and Linux runners. A version-matched v* tag starts the formal path, verifies the platform artifacts and macOS Developer ID signature, generates SHA256SUMS.txt, and publishes the GitHub Release.
The Sync DeepSeek Harness upstream workflow checks the newest non-draft official release every day at 09:00 Asia/Shanghai. A clean update is merged without force-pushing, verified, committed to main, and dispatched to the same native release pipeline as v<upstream-version>-pilot.1. A merge conflict opens or refreshes a GitHub Issue and stops before changing main; missing macOS signing secrets also open an issue and leave the verified source synchronized without publishing an unsigned release. Rerunning the workflow after resolving either condition resumes the pending release.
For the underlying system, read the DeepSeek Harness architecture, development guide, and desktop architecture.
Upstream, attribution, and trademark notice
Pilot Harness is an independent community project derived from the MIT-licensed DeepSeek Harness and visually inspired by CodePilot. It is not an official DeepSeek product and is not endorsed by or affiliated with DeepSeek. “DeepSeek”, “DeepSeek Harness”, and “CodePilot” remain the property of their respective owners.
License
Pilot Harness is available under the MIT License. Third-party software and licenses are listed in THIRD_PARTY_NOTICES.md.