WorkHub 更新-语音、手机端与 MCP

WORKHUB · 更新日志

语音输入、手机端与 MCP------同一份数据,从桌面延伸到嘴边、口袋和对话框。

上一篇介绍 WorkHub 时,它还是一个坐在电脑前的工作台。这次更新没有加新模块,只做了三件事:让记录快一点,让入口随身一点,再给写作接一个能读会写的智能体。

数据仍然存在本机 SQLite,桌面与浏览器仍然是同一套界面、同一份业务代码。变化在于,你不必每次都先坐回那把椅子。

01 说一句,就进收件箱

桌面工作台顶部的快记栏右侧多了一个麦克风。点一下开始,识别中的临时文字直接铺进输入框,说完一句自动收口,不用再去点停止。最终文本和手打没有区别,按回车或「记下」,它就和平时一样进笔记收件箱。

工作台:快记栏右侧多了麦克风,今日待办与待收金额仍在同一屏

快记栏特写:麦克风在「记下」左侧,聆听时图标变成方形停止键

这个按钮也接在了笔记页、手机首页和手机笔记页。走路时想到一句话,掏出手机说一句,回到电脑前它已经躺在最近笔记里。

语音识别由浏览器提供(Web Speech API),不是 WorkHub 自己训的模型:需要麦克风授权,多数浏览器还要联网。不支持识别的浏览器会把图标直接置为 mic-off,并在提示里说明原因,不会让你对着一颗没有反应的按钮发呆。

02 手机端:不是把桌面缩小

用手机浏览器打开同一个地址,登录后落到 /app。底部四个入口:首页、笔记、任务、我的。再往下还有工作台、财务、发票、回款计划、维护到期等页面,都能从首页或「我的」里进去。

它不是把桌面布局压窄,而是按手机的节奏重新排:一屏先回答一个问题,一屏只做一件事。

手机登录页:品牌说明在上,表单在下;仍用出厂口令登录会先被引到「我的」改密

首页回答三个问题:今天有什么卡在手里、还有多少钱没收、最新的笔记在哪。顶部的快记栏同样带麦克风,说一句就能存进收件箱。

手机首页:语音快记、待办与待收金额、今日提醒和最近笔记

手机快记栏特写:输入框与麦克风并排,说一句就存进收件箱

笔记页保留快记、搜索与分页,点进正文才展开编辑;新建和修改是同一个页面,保存后地址自动换成这条笔记的 Id。任务页用分段筛选加分组列表,点一行改字段,右侧一颗按钮直接完成或重开。

手机笔记:快记、搜索与分页,正文进编辑页再展开

手机任务:分段筛选 + 分组列表,右侧按钮直接完成或重开

发票页把逾期标红,直接给出还剩多少没收回;「我的」只放账号、偏好和出口,没有把桌面设置页整套搬过来。

手机发票:逾期标红,已收、待收与总额一眼看清

手机「我的」:账号、主题、全部功能、桌面端入口与版本信息

要提醒一句:WorkHub 默认只监听 127.0.0.1:5277。想让手机访问,需要显式绑定局域网地址、配好 HTTPS,并把手机网段加进 IP / CIDR 白名单;绑定非回环地址还走明文 HTTP 时,服务会直接拒绝启动。手机端是同一台机器上的另一个入口,不是一朵云。

03 MCP:让智能体直接读写工作台

这次更新的第三件事,是把文章、笔记、任务、收藏与代码片段包装成 MCP 工具,交给 Claude Desktop、Cursor 这类智能体直接读写。一共 20 个工具:

  • 文章 :save_article、search_articles、get_article、set_article_status
  • 笔记 :save_note、search_notes、get_note
  • 任务 :save_task、search_tasks、get_task、set_task_status
  • 收藏 :save_bookmark、search_bookmarks、get_bookmark、set_bookmark_status
  • 代码片段 :save_snippet、search_snippets、get_snippet
  • 封面与附件 :upload_cover、upload_attachment

两种接法:推荐 Web 端 /mcp 端点,HTTP 加令牌,客户端配置里不出现账号口令;只支持 stdio 的客户端则用 WorkHub.Mcp 进程,通过 WorkHubWeb 的 /api/* 读写。两条路都要求 WorkHubWeb 先跑起来------MCP 不自己起服务,也不会在没登录或没令牌的情况下写库。

令牌在「偏好设置 → 智能体」里生成,只有 Owner 能进这个页签。令牌绑定一个现有账号,角色改了立即生效;停用账号或吊销令牌,下一次调用就是 401。写操作照常落审计,来源记为 mcp,并带令牌名称。

偏好设置 → 智能体:令牌只显示一次明文,列表里保留前缀、绑定账号、最近使用与有效期

生成后可以直接复制整段配置,粘进客户端的 mcpServers:

json 复制代码
{
  "mcpServers": {
    "workhub": {
      "type": "http",
      "url": "http://127.0.0.1:5277/mcp",
      "headers": { "Authorization": "Bearer whmcp_..." }
    }
  }
}

之后就能用自然语言交代事情:把一段 Markdown 存成文章、把讨论整理成笔记、把「这周要做的三件事」记成任务、把链接存进收藏并标成已读,或者把一段脚本存成代码片段。保存工具在不传 Id 时按自然键查重,智能体重试不会写出重复;更新时没给的字段沿用原值,只改正文不会清空摘要、标签与封面。

封面和附件也接上了。upload_cover 收 jpg / jpeg / png / webp,不超过 8MB,返回 /uploads/... 站内地址,再交给 save_article 的 cover;upload_attachment 收任意附件,不超过 16MB,返回地址后可写进 Markdown。文件内容二选一:与宿主同机的客户端传 filePath,远程调用传 contentBase64。

MCP 保存的文章:标题、摘要、封面与正文都已落库,右侧可直接校对 Markdown

保存不等于发布。save_article 默认存草稿,只有 publish=true 或显式调用 set_article_status 才会记录发布时间、把状态置为完成。删除尚未接入;附件上传也只把文件落到附件根并返回地址,不会自动挂到发票或项目上。这些边界写在 Document/MCP.md 里,配置示例、环境变量与已知限制都在那儿。

04 边界仍然收紧

新增三个入口,安全边界没有放松:

  • 默认只监听回环地址;绑定非回环地址还走明文 HTTP 时,启动直接拒绝。
  • 令牌只存 SHA-256 摘要,明文展示一次;可设有效期,也可随时吊销。
  • 令牌绑定账号的角色即时生效,Viewer 只能读,Editor 才能写;停用账号即刻失效。
  • MCP 的写操作与网页端走同一套服务、同一套校验,审计来源单独标记。
  • 手机端没有另开一套鉴权,仍然走登录 Cookie 与访问白名单。

换句话说,变的是入口数量,不是信任模型。

05 怎么开始

浏览器版仍然一条命令:

powershell 复制代码
dotnet run --project WorkHubWeb

打开 127.0.0.1:5277,首次启动会种入本地管理员账号 admin / admin123,登录后请先改密。桌面版发布后双击即用,和浏览器版看到的是同一套页面。

手机访问按前文的安全边界显式开放局域网;MCP 的两种接法与完整工具说明见仓库里的 Document/MCP.md。

项目以 Apache-2.0 协议开源,仓库在 https://gitee.com/known/WorkHub。


把它变成你自己的数字工作室

OPEN SOURCE · WORKHUB

如果这次更新让你少掏一次手机、少复制一次粘贴,欢迎去 Gitee 点一个 Star;也欢迎提 Issue,说说你最想让智能体替你做的下一件事。

运行环境:.NET 10 SDK + Windows;浏览器版一条命令启动,桌面版发布后双击即用。


入口可以变多,数据只该有一份。

说一句、掏手机、交给智能体,最后都落回同一张工作台。

相关推荐
known1 天前
一个人,也要有一间像样的数字工作室
blazor·known
CSharp精选营1 天前
2026 年 Blazor UI 组件库盘点:6 个好用的开源库,怎么选不踩坑
blazor·ui框架·ant design blazor·mudblazor·blazor组件库
CSharp精选营8 天前
我把 Ant Design Blazor 翻了一遍:Blazor 中后台组件库到底能不能用
.net·blazor·ant design blazor·中后台系统·mudblazor
known18 天前
用 C# + Blazor 开发智能体(Agent)教程
ai·blazor
CSharp精选营1 个月前
Radzen 6.0.0 这几个 API 坑,我替你踩了
blazor·datagrid·依赖冲突·radzen·api升级
CSharp精选营1 个月前
新项目选 Blazor 还是 Razor Pages?我交了学费
blazor·技术选型·混合架构·razorpages·net全栈
CSharp精选营1 个月前
Blazor 里 JWT 过期,用户正下单就被踢
认证·jwt·webassembly·blazor·令牌刷新
gudufy1 个月前
ASP.NET Core 多租户如何动态创建数据库?数据库初始化怎么做?
数据库·blazor·admin
gudufy1 个月前
EasyAdminBlazor Excel 导入源码解析:数据验证、权限与事务如何处理?
excel·blazor·admin