Pacevera

io.github.henryyeh182由 GitHub 账号 henryyeh182 发布v0.5.9更新于 Nov 8, 2026

Turns the training evidence you already have into a decision about today's session.

已验证STDIO仅桌面位置与生活数据与分析

概览

AI 生成的概览

一个本地健身决策引擎,把 AI 主机提供的训练与健康证据转化为对既定训练课的确定性决策。

可以做什么
Pacevera 根据调用方主机提供的证据评估恢复、准备度、肌群疲劳和训练负荷,然后对已有的既定训练课返回结构化决策:keep、adjust、substitute、defer 或 advance。工具包括 assess_fitness_state、decide_session、decide_exercise_substitution、generate_plan、preview_adjust_plan 和 commit_adjust_plan,以及用于证据覆盖、决策追踪、动作库、训练内容、用户档案和训练历史的读取工具。结果是确定性的,并包含所用规则标识、测量值、置信度和信号覆盖。它不调用模型,也不自行获取供应商数据。
适用场景
当助手已经拥有规范化的训练或健康数据,需要就保留、调整还是跳过既定训练课得到一致且可解释的答案,或需要生成和调整训练计划时使用。适合希望获得基于规则、可追溯的决策而非模型生成建议的用户。
运行要求
以 Claude Desktop 扩展(.mcpb)形式通过 stdio 在本地运行;需要 Node.js 20 或更高版本,决策追踪与结果的本地持久化需要 Node.js 22.5 或更高版本。未声明任何账户、API 密钥、环境变量或请求头。主机必须自行获取并规范化供应商导出文件或 API 响应;可选的本地 Google Health 连接可在浏览器中授权。
安装前请注意
它不是医疗器械,也不提供医疗建议。它会在本地保留持久记录:一份有界的连续性记录,以及一个本地 SQLite 存储,保存其产生的决策、用户回报的结果和派生状态,用户可自行导出或删除。可选的 Google Health 连接上限为 100 个账户,且 Google 会显示应用未经验证的警告;二维码授权路径会经过 Pacevera 中继,该中继只处理一次短时授权交接。AI 主机、操作系统和导入的文件不在其控制范围内。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Pacevera,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

Pacevera Fitness Decision Engine

Pacevera is a deterministic fitness decision engine exposed through the Model Context Protocol (MCP). It receives normalized training and health evidence supplied by the calling AI host, evaluates recovery and training constraints, and returns a structured decision.

The primary operation is to evaluate an existing scheduled session. A decision describes the change from the scheduled session to the resulting session:

text
scheduled session (from) -> resulting session (to)

Each decision includes the relevant evidence, applied rules, confidence, signal coverage, and limitations.

Scope

Pacevera provides the following capabilities:

  • Deterministic calculation of recovery state, readiness, muscle-group fatigue, and training load.
  • Session decisions with the types keep, adjust, substitute, defer, and advance.
  • Constraint handling for injuries, equipment, available time, and exercise substitutions.
  • Training-plan generation and caller-owned plan adjustment through preview and commit operations.
  • Structured decision provenance through rule identifiers, measured values, source information, and version metadata.
  • Normalization support for Apple Health, Google Health Takeout, Garmin, Strava, Oura, and WHOOP data shapes.

Pacevera does not connect to these providers on behalf of the user. The calling host must obtain and normalize provider exports or API responses before passing them to an MCP tool.

Architecture

text
AI host  └─ Collects the user's question and evidence       └─ MCP server / desktop extension            ├─ Evidence normalization            ├─ Fitness-state calculation            ├─ Training-load calculation            ├─ Deterministic rule evaluation            ├─ Decision and plan operations            └─ Structured result: Decision / Action / Reason

The AI host is responsible for interpreting the user's request, collecting evidence, selecting tools, and presenting the result. Pacevera performs the calculations and rule evaluation; it does not call a model to generate a decision. Given the same code, rule set, and input, the result is deterministic.

Decision and recommendation

TypeDescription
RecommendationA training suggestion generated without a required prior session or plan.
DecisionA traceable change applied to an existing scheduled session or plan.

decide_session requires scheduledSession to establish the prior state. If no scheduled session is provided, the tool returns no_scheduled_session rather than creating a session. Use generate_plan when a plan is required.

Decision output follows five layers:

text
Evidence -> Fitness State -> Decision -> Action -> Reason

Decision intent and resulting action are separate fields. The same intent may produce different actions depending on the user's equipment, available time, injuries, and scheduled session.

MCP tools

Decision and planning tools

ToolDescription
assess_fitness_stateReturns recovery, readiness, muscle-group fatigue, and training-load state.
decide_sessionEvaluates a scheduled session and returns the resulting session.
decide_exercise_substitutionSelects a replacement movement subject to injury and equipment constraints.
generate_planGenerates a periodized training plan.
preview_adjust_planReturns a deterministic patch and diff for a caller-owned plan.
commit_adjust_planValidates the plan version and applies a caller-owned patch.

Supporting and read tools

ToolDescription
get_evidence_coverageReports available and missing evidence signals.
explain_decisionReturns the process-local rule and source trace for a previous decision.
submit_outcomeAccepts an observed outcome for a prior case; storage is bounded and local to the configured environment.
search_exercises / get_exerciseQueries the exercise catalog and graph relationships.
search_workouts / get_workoutQueries structured workout content.
get_user_profileReturns caller-supplied user constraints and training settings.
get_training_history / get_training_contextReturns training history and related context.

Evidence and output

Evidence is supplied by the calling host. It may include recovery measurements, vendor-computed assessments, completed workouts, scheduled sessions, goals, and constraints.

Important input rules:

  • Only measured or explicitly provided values should be sent. Missing signals are reported in signalCoverage and may lower confidence.
  • A workout without a training-load value is not treated as zero load and is excluded from muscle-group fatigue calculations.
  • RPE may be retained as evidence but is not a term in training-load or muscle-fatigue calculations.
  • Vendor-computed values such as readiness, recovery, and Body Battery are used as reported and are not recomputed by Pacevera.

A typical decide_session response has this shape:

json
{  "decision": { "type": "adjust", "intent": "reduce_today_intensity" },  "action": {    "from": { "focus": "Tempo Run", "durationMinutes": 50, "intensity": "high" },    "to": { "focus": "Moderate run", "durationMinutes": 50, "intensity": "moderate" },    "changed": ["focus", "intensity"]  },  "confidence": "high",  "signalCoverage": {    "recovery": { "usable": ["readiness"], "missing": ["sleep"] },    "training": { "usable": ["trainingLoad"], "missing": [] }  },  "decisionBasis": {    "governingRule": {      "ruleId": "EVD-R-002",      "measured": { "quantity": "readiness_score", "value": 48 }    }  }}

Pacevera does not fill missing values with defaults. signalCoverage.recovery describes current recovery-signal availability; signalCoverage.training describes whether recent workouts include the training-load data required for fatigue calculations.

Deployment status

Deployment modeStatusBoundary
Local desktop extensionAvailableRuns through stdio on the user's computer. The Pacevera process does not fetch provider data, persist Evidence, or make model calls.
User-controlled private deploymentPlannedIntended to run in a device, private network, or VPC controlled by the user or organization.
Hosted remote deploymentNot availableThe repository contains resource-server readiness code, but production deployment, authorization infrastructure, and hosted privacy controls are not complete.

The desktop extension has no runtime dependencies beyond the Node.js standard library. It does not use analytics, telemetry, crash reporting, provider accounts, or provider OAuth tokens.

Privacy

The desktop extension processes the minimum health-related Evidence supplied by the caller for the requested fitness decision. It does not retain, sell, use for model training, or use Evidence for unrelated purposes.

The extension makes no outbound network requests and sends Evidence nowhere. On the user's own computer it does keep durable records: a bounded continuity record, and a local SQLite store holding the decisions it produced, the outcomes the user reports back, and the derived state behind them. Both are the user's to export or delete. The AI host, operating system, imported files, and any host conversation history are outside the extension's control and are governed by their respective policies.

See PRIVACY.md for the complete policy and deployment scope, and TERMS.md for the terms of use. The canonical versions are published at https://pacevera.com/privacy and https://pacevera.com/terms.

Pacevera is not a medical device and does not provide medical advice. It is intended for general fitness and training purposes only.

Installation

Pacevera is distributed as a Claude Desktop extension (.mcpb).

  1. Download pacevera.mcpb from Releases.

  2. Optionally verify the SHA-256 checksum published in the release notes:

    bash
    shasum -a 256 pacevera.mcpb
  3. In Claude Desktop, open Settings -> Extensions and install the file.

  4. Restart Claude Desktop after installing or upgrading the extension.

The extension requires Node.js 20 or newer. Local persistence of decision traces and outcomes needs Node.js 22.5 or newer, which is where node:sqlite exists; on Node 20 or 21 the extension installs and runs without it, and reading your selected export folder for a decision is unaffected. The local plan decision is offered only once this machine holds a plan and its context, so a fresh installation does not list it — that depends on what is stored, not on the Node version.

Claude Desktop and other local MCP hosts are supported through the desktop extension, and Claude's own Dispatch can drive that installed extension from a phone with no remote deployment anywhere in the path — it needs the desktop app running, a Pro or Max plan, and the feature to be available to you. A Pacevera-operated hosted remote deployment is still not available for public use.

Release status

The current public release is v0.5.8, using Decision Engine 1.12.0 and [email protected]. It includes ten public tools, bounded local continuity, personalized single-workout generation, decision traces, package validation/dry-run/rollback, and an optional local Google Health connection. The Oura and WHOOP readers were implemented from their published API specifications and have not yet been validated against real responses; Apple Health, Garmin, Google Health, and Strava readers were developed from real export files.

Support

License

Pacevera is proprietary software. See LICENSE for the applicable terms.

Pacevera v0.5.8

The Claude Desktop extension includes Today’s Brief, evidence-first local export reading, and plain-language tool titles. During installation, choose Your exported health data folder and select the parent folder containing any of these optional subfolders:

text
Your exported health data folder/├── export_apple_health/        # Apple Health export.xml├── export_garmin/              # Garmin Export Your Data / DI_CONNECT├── export_strava/              # Strava activities.csv└── export_google_health/       # raw/ for JSON you pulled yourself,                                # normalized/ for what the connection wrote

Pacevera reads the selected folder locally; missing sources are reported as unavailable rather than guessed. The MCPB checksum is published in the release notes.

v0.5.8 includes an optional Google Health connection that runs on your computer. You approve it in your own browser, or by scanning a QR code with a phone; the browser route reaches Google with no Pacevera server anywhere in its path, and the QR route passes through a Pacevera relay that handles only a short-lived authorization handoff — never your health data, your tokens, or the PKCE secret that completes the exchange on your machine. Whichever route you finish cancels the other.

In v0.5.8 the connection normalizes each Google Health response in memory and writes only the resulting evidence; the provider response itself is never written to disk. You can also disconnect from inside the app: it revokes the grant at Google, deletes the stored credential, deletes the evidence earlier syncs wrote, and clears the derived records from the local store. Files you placed in the folder yourself are reported back for you to delete, never removed for you.

This connection is capped at 100 accounts, and Google will warn you that it has not verified the app. Pacevera's Google app moved out of Testing into Production on 2026-08-20, so an invitation is no longer required — but Google's verification review for the health scopes is not complete. Until it is, Google shows its own "Google hasn't verified this app" screen before you can consent, and at most 100 accounts can authorize the connection, counted over the app's entire lifetime. Reading your own exported folders, supplying evidence through your AI host, and every decision tool are unaffected.

v0.5.8 corrects three things a decision was saying that it could not support. When a movement you ruled out emptied a session, the replacement Pacevera offered had never been checked against the same restriction — say you cannot squat, and both barbell squats came out while a bodyweight squat went in, with the reason line mentioning only what had been removed. The replacement now passes the same check, and when nothing passes, no movement is named and the limitation says why instead of inventing one. It also tells you the movement is a fallback rather than something taken from your own plan, which it never used to mention at all. When no rule acts, the closing sentence no longer says every reading is in range: recovery below 60 on an already-easy day, or muscle-group fatigue at 40 on a day that is not hard, can cross a line without any rule acting, and the sentence now names the reading, the line, and why nothing stepped in. And on a week with no recorded training at all, it no longer says the target muscles carry no load from the last week — there was nothing to read, which is a different statement, and it is the one you now get.

Today's Brief follows the language of the conversation: ask in Traditional Chinese and the card is in Traditional Chinese, ask in English and it is in English. In v0.5.7 it followed your desktop app's display language instead, regardless of what you were speaking.

Pacevera also stops implying that Garmin has a connection to repair. Garmin readings only ever arrive as an export you place in your folder — there is no account to link and no sync to check — and the assistant is now told so, rather than offering to look into a sync that does not exist.

v0.5.7 fixes two ways the extension could stop answering, both of them present in v0.5.6. On a day when no fresh recovery reading arrived — the day a decision is most worth asking for — asking for today's decision from a stored plan returned nothing at all, because the local store refused to record the empty readiness the engine deliberately reports. Existing stores are repaired in place, with your rows intact. And a single very large, deeply nested request could end the extension outright, which looks from the outside like the whole connector vanishing; one bad request now fails on its own and the extension keeps running. The one rule that raises a session's intensity no longer raises it while confidence is low: thin evidence may hold a session or lower it, not add load. Coverage is also reported more plainly — the vendor scores that were actually used are named, and the coverage figure is a fraction of five kinds of evidence rather than a number that could run past its own maximum. The folder reading records what it imported from Garmin without handing your folder path or file fingerprints to your AI host. (This release was described as making Today's Brief follow the language you are speaking in. That was inaccurate: in v0.5.7 the card follows your desktop app's display language. v0.5.8 is the release where it follows the conversation.)

v0.5.6 reads your HRV against your own recent nights rather than a fixed reference, and where your device already computed a readiness or HRV score, that score is used instead of scoring the raw reading a second time. The raw reading is kept and reported as superseded, named alongside what replaced it, so a decision can no longer say a reading is missing when you supplied one. Connecting Google Health, syncing it, and asking for today's decision from a stored plan no longer ask you for an account identifier: Pacevera never issued one, and being asked for it again in a later conversation is what made a working connection look expired. Where this machine holds more than one profile, Pacevera asks which one by name rather than guessing.

v0.5.2 added the source chain to every reading — where Pacevera read it, and which app wrote it, so a Garmin figure synced into Apple Health is not reported as Apple Health's own. A reading whose writer the export does not name is reported as unnamed rather than guessed. Decisions also carry a small continuity record that a later conversation can hand back; Pacevera checks whether it still describes your current state and says so when it does not. It is checked, never merged: the decision always comes from the evidence held now.

来源:README.md,提交 5df29ad

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v0.5.8Sep 16, 2026

评分

已满足适用检查项的 40%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分

    请在仓库或注册中心条目中声明许可证。