packages/dsh-task-board
zhu1090093659/dsh-web侧边栏多列任务看板:卡片交给真实 DSH 智能体会话执行,支持 cron 定时(Host 侧到点执行,关浏览器也生效)。
DeepSeek Harness 的 MCP 服务器与技能管理面板:侧栏面板加插件页配置区,支持搜索、状态灯、逐行开关、详情,以及按 Codex mcp_servers 字段设计的添加服务器表单。
DeepSeek Harness 的 MCP 服务器与技能管理面板
侧栏一个入口、插件页一个配置区。MCP 服务器的状态与启停、技能的四态切换与新建编辑,都在界面里完成。
模块 · 能力 MCP · 列出组合里所有 @deepseek-ai/dsh-mcp-client 行,状态灯、工具数、工具名,逐行启停;支持 stdio 与 streamable-http 的添加、编辑、删除 技能 · 扫描 .dsh/skills、.agents/skills 和自定义根,按来源目录分组、当前项目置顶;每个技能四态切换,并支持重命名/移动、复制、删除 新建/编辑 · 表单填写名称、描述、何时使用、正文,选择调用方式与创建位置;内置文件夹选择器,可直接跳转、进入子目录 导入/导出 · 读取 Codex 的 config.toml、Claude/Cursor 的 mcpServers JSON,或本插件导出的 JSON;导出可复制、可下载 模板 · 添加服务器时可选 filesystem、github、fetch、git、sqlite、brave-search,自动填好命令与参数 密钥 · env / headers 支持 @env:变量名,生成 !!js process.env.变量名,密钥不写进 patch 文件 预设 · Agent 预设自带的技能以只读方式列出,因为它们位于安装包内 边界 · 只改写本插件管理的配置块和技能根内的文件;MCP 删除仅针对本页添加的服务器,需二次确认
新建技能 · 文件夹选择 ·
界面组件全部自绘:按钮、输入框、下拉选择、开关、弹窗与提示条都跟随 DSH 主题,不依赖原生控件样式。弹窗按内容自适应高度,常规场景不出现滚动条;文本域随内容自动增高,超长内容只在自己的区域内滚动。/ 可以快速聚焦搜索框。
要求 DSH >= 0.2.0-rc.2 < 0.3.0,范围写在 peerDependencies 中,插件管理器的兼容性检查会拦住版本不匹配。
dsh plugin --profile desktop add dsh-mcp-skills-board也可以在「插件 → 添加插件」里填写包名,安装后刷新一次页面。
本地开发使用 link 安装:
dsh plugin --profile desktop add link:/absolute/path/to/dsh-mcp-skills-board$DSH_HOME/mcp-skills.json(默认 ~/.dsh/mcp-skills.json,权限 0600):本页管理的 MCP 服务器定义,是这部分配置的唯一事实源;$DSH_HOME/profiles//cordis.patch.yml 中一个带围栏的块,由上面的 JSON 生成:# >>> dsh-mcp-skills-board (managed — edit MCP servers from Settings → MCP & Skills)
- insert:
- id: "mcp-github"
name: "@deepseek-ai/dsh-mcp-client"
config:
serverName: "github"
transport: "stdio"
command: "npx"
args:
- "-y"
- "@modelcontextprotocol/server-github"
toolCallTimeoutMs: 60000
failOnStartupError: false
disabled: false
# <<< dsh-mcp-skills-board块外的内容保持原样;别处声明的 MCP 行不会被改写,启停只追加一条按 id 定向的 disabled: 覆盖。
技能文件写在所选技能根内(默认 ~/.dsh/skills),一个技能一个目录:
~/.dsh/skills/release-notes/SKILL.md保存时只重写受管的前置字段(名称、描述、何时使用、两个调用开关)和正文,文件里的其它自定义 frontmatter 键会保留。
Codex · 本插件 config.toml 的 [mcp_servers.*] · mcp-skills.json + 生成的 patch 块 Settings → MCP servers · MCP 服务分页 Add server 表单 · 添加服务器表单 /mcp 查看连接与工具 · 行状态灯、工具数、详情 enabled = false · 行开关,定义保留 startup_timeout_sec / tool_timeout_sec · toolCallTimeoutMs;启动超时由 MCP SDK 控制 bearer_token_env_var / env_http_headers · 不支持;env 与 headers 明文写入 patch 文件(0600) codex mcp login(OAuth) · 不支持,DSH 的 MCP 客户端没有 OAuth [[skills.config]] enabled = false · 四态选择器,改写两个 frontmatter 键 技能位置(repo/user/admin/system) · 磁盘扫描根 + 预设作用域(只读)
env / headers 的值默认会写进 cordis.patch.yml(0600)。表单里把值写成 @env:变量名 就会生成 !!js process.env.变量名,密钥留在环境变量里,不落盘;patchReload: live 时,MCP 改动需要下次启动才生效,页面会提示;package.json # dsh.bundle.patch、dsh.client.platform、icon、exports
cordis.patch.yml # 插入 id=mcp-skills 一行
lib/index.js # 宿主:state/action/browse 路由、技能扫描与写入、MCP patch 块
lib/client.js # 浏览器:面板、插件页配置区、自绘组件与弹窗
locale/zh.json # 插件页展示信息(meta.title / meta.description)
locale/en.json # 英文回退
assets/icon.svg # 插件列表与详情页图标
assets/screenshot-*.png # 本文档使用的界面截图
assets/social-preview.png # GitHub 社交预览图(1280×640)
test/ # 宿主集成测试插件页的标题与描述由 readPluginMeta 读取:包导出的 locale/en.json 与同目录的 .json,缺失字段回退到 package.json;图标取清单里的 icon 字段。这些子路径需要写进 exports,否则 Node 解析不到。
npm test覆盖 state/action 路由、服务器增删改与启停、技能策略写入、技能新建/读取/保存、目录浏览与越界校验、认证栅栏。
本项目在 LINUX DO 社区推广。
MIT。侧栏图标复用了 @deepseek-ai/dsh-client-ui-primitives(MIT)中 IconSkillOutlineRegular 的路径数据,以便与 DSH 自身的图标粗细一致。