寰汐 v2 上线双 MCP(个人端 /mcp/ 与管理端 /admin-mcp/),两条端点是**两条独立的 信任边界**——Token 前缀不同、工具集不同、视角不同(管理端看全量、个人端只看我参与的)。 一个插件塞两套会让普通员工的客户端里出现他根本调不动的管理工具,因此拆成两个插件, 按角色各装各的。 ## huanxi(个人端,全体员工) 7 个技能:shared / report / leader / task / issue / meeting / org - 新增 `issue` `meeting`——v2 的议题域与会议域(M6v2 会议×议题解耦后的产物) - **删除 `weekly`**——v2 没有 weekly_report 表,周报已并入报告体系 - 各技能重写为**流水线定义**而非使用说明:写明工具调用顺序、ID 在步骤间怎么传、 人工确认节点落在哪。「禁止自动提交」这条 v1 已验证的硬约束保留 - 删掉 `references/` 拆分文件——v2 技能自包含 ## huanxi-admin(管理端,仅后台管理员) 4 个技能:admin-shared / admin-report / admin-module / admin-ops MCP server key 取 `huanxi-admin`(与个人端的 `huanxi` 不同名),否则两插件并存时 会键冲突。 ## 缓存目录按信任边界隔离 `~/.claude/huanxi-cache/` 下分 `personal/` `admin/` `dict/`:前两者视角不同, 混用会越权展示或数据错乱;`dict/` 与身份无关可共享。业务数据(任务/日报/会议/议题) **显式声明不缓存**——v1 没写这条,Agent 会自行决定缓存然后拿到陈旧数据。 ## 源码单一真相不在本仓库 技能源码在寰汐仓库 `skills/`,与 MCP docstring 同仓库同 commit——签名一改, 技能与工具在同一次改动里更新,从结构上消除跨仓库漂移(本仓库记忆 `feedback_plugin_dev.md` 记录的 4 类漂移覆盖全部 6 个 v1 技能,正是这个病)。 本仓库退化为**分发壳**,只接收 `python skills/sync_marketplace.py` 的产物,不手工编辑。 寰汐侧有 CI 守卫:技能里出现的每个工具名必须存在于实际注册表、个人端技能不得 指导调用管理端独有工具、不得硬编码状态字面量。 ## 本分支不合 main 插件配置的域名此刻跑的还是 v1,合进 main 会通过自动更新推给已安装用户, 他们的技能会去调 v1 上不存在的工具。合并前置条件写在 CLAUDE.md「已发布插件」节。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019Vyeia9k43dVaUFNLo8Lny
2.4 KiB
2.4 KiB
name, description
| name | description |
|---|---|
| huanxi-admin-report | 寰汐管理端汇报盘点:谁没交日报、跨用户查汇报内容、团队负载看板。当用户说「全公司谁没交」「盘点汇报」「谁比较闲」「看看某人这周报了什么」时使用。 |
寰汐管理端 · 汇报盘点
前置:先读 huanxi-admin-shared。
管理端最高频的场景。个人端只能看自己和自己负责的模块,这里是全量视角。
谁还没交(最常被问)
report_pending(module_ids?, date?)
只返回存在未提交人员的模块——交齐的模块不占篇幅。不传 module_ids 则盘点全部。
统计口径含两条容易忽略的规则,不要自己重算:
- 模块杂记不计入分母(那是零散工作的承载容器,不代表当天有汇报义务)
- 当日免报的人整体排除——既不算未提交也不算已提交,不是「视为已提交」。 这个区别很重要:算成已提交会污染「已交人数」,算成未提交会一直催不该催的人
回答用户时直接给名单和模块,不要把原始结构丢回去让他自己数。
查汇报内容
report_query(user_id?, module_id?, date_from?, date_to?) 员工日报条目
leader_report_query(user_id?, module_id?, date_from?, date_to?) 负责人日报
三个维度可任意组合,都不传即查今天全部。典型用法:
- 「张三这周报了什么」→
report_query(user_id=..., date_from=周一, date_to=今天) - 「智能诊断模块上周的汇报」→
report_query(module_id=..., date_from=..., date_to=...)
只读。管理端不能替别人写或提交日报——那会让汇报失去「本人确认」的意义。
负载看板
people_board()
按人聚合的跨模块任务负载,含 0 任务的人。回答「谁比较闲」「谁扛得太多」时用它,
比逐个 task_query 快得多。含 0 任务的人是有意的——那正是「谁完全没有负载」的答案。
组合用法
「这周谁又没交日报、手上还压着多少活」这类问题,是 report_pending + people_board
两个结果的交叉,不需要额外工具:先拿未提交名单,再从看板里查这些人的任务数。
⏸ 涉及要不要点名、要不要发提醒时,先把名单给用户确认再说下一步—— 盘点的产出是信息,催办是另一个决定。