Osiris

io.github.MlkBlk-IT由 GitHub 账号 MlkBlk-IT 发布v0.1.0更新于 Nov 1, 2026

Cache-aware context engine for AI agents: server-side payload filtering, honest context ledger.

概览

AI 生成的概览

Osiris 是一个本地运行的上下文治理服务器,为助手提供任务计划、密封状态清单、操作预检、循环检测和过滤式召回,以减少 token 消耗。

可以做什么
  • 规划、恢复任务并查看状态,生成助手在各轮之间携带的密封清单
  • 依据不变量、token 预算和重复检测来批准或拒绝某个操作
  • 记录操作、检测循环、外置大块数据并登记记忆
  • 以服务端过滤方式(grep、范围、大纲、聚合)按需取回已存引用,而非整段载荷
  • 对会话做快照、压缩或清理,并在代理之间签发委派契约
  • 以资源形式提供任务清单、状态和引用原文,并提供任务恢复提示词
适用场景
适合长时间代理会话处理大块载荷(日志、文件、工具输出)导致上下文和成本膨胀的场景,也适合希望对代理操作施加可执行规则与循环保护时使用。它与其他文件系统、Git、shell 服务器并存,而非替代它们。
运行要求
通过 stdio 本地运行;npm 包只是启动器,需要 Python 运行时(按 OSIRIS_PYTHON、uvx、python3、python 顺序解析)以及 PyPI 包 mcp-osiris。可选环境变量:OSIRIS_HOME(状态目录,默认 ~/.osiris)、OSIRIS_ROOTS(允许读取的文件根目录,留空则不读取文件)、OSIRIS_CACHE_TTL_S、OSIRIS_PRUNE_THRESHOLD_TOKENS、OSIRIS_DISPATCH_ONLY。未声明认证。
安装前请注意
会在 OSIRIS_HOME 下写入 SQLite 数据库、报告和缓存,且只能读取 OSIRIS_ROOTS 范围内的文件,应限定为预期项目。它可通过不变量和预算规则阻止或拒绝操作,可能打断工作流。外置载荷保存在本地内容寻址存储中;README 称哈希前会清除密钥,但仍应确认哪些内容被外置。仅限桌面,不支持网页执行。

安装

在 SourceWeft 中

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

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

其他 MCP 客户端

参照 仓库 中的启动说明。

README

[OSIRIS — Cache-aware context engine & state governor for AI agents]

OSIRIS

[PyPI] [npm] [Python] [License]

Cache-aware context engine & state governor for AI agents. Standard MCP server, local-first, independent of any model provider.

OSIRIS makes AI agents cheaper, faster, and more reliable: fewer tokens, fewer loops, zero unnecessary tools, and zero loss of context.

OSIRIS does not replace your other MCP servers (filesystem, Git, GitHub, shell, browser…). It coexists alongside them and drastically cuts what they cost in prompt context.


1. The Core Architectural Constraint

An MCP server never sees the final prompt assembled by the client host. It only sees what the agent sends to it. Therefore, OSIRIS cannot:

What we would wantWhat a standard MCP server can actually do
Write directly into the promptProduce canonical state and have the agent carry it
Erase past conversation turnsDecide what to externalize for future turns
Hide another MCP server's toolsRecommend via Tool Compass
Hard-cap prompt tokensBlock an action (invariants, budget enforcement)

The promise is honest: OSIRIS provides stable state and an enforceable safety contract, not a client prompt builder.


2. Sealed Manifest — The Core Design

osiris.plan returns a deterministic block (~120 tokens) that the agent carries at a fixed position in its context window:

text
OSIRIS/1 task=7c3f obj="fix PowerShell profile bug" plan=3/7inv=4 files=6 refs=9 dec=2 budget=okSEAL=sha256:3f9a1c…c21b

The SEAL is a SHA256 digest of stable zones. The agent passes it on every turn to osiris.observe: OSIRIS recomputes and detects any state drift immediately.

This is OSIRIS's passive transport: even if the agent stops calling tools, it carries the essential state cleanly.

Three Hashes Because Prompt Cache is Prefix-Based

head_hash   = sha256(system_head ‖ rules)                       immutablezoneB_hash  = sha256(objective ‖ global_plan ‖ tool_contract)   quasi-stabletail_hash   = sha256(constraints ‖ pinned_decisions)           append-onlyprefix_hash = sha256(head_hash ‖ zoneB_hash)                   ← cached prefixzoneA_hash  = sha256(head_hash ‖ tail_hash)                    ← full ZONE A
ChangeVerdictCache Cost
head_hashCRITICAL DRIFTFull re-prefill
zoneB_hashMinor driftRe-prefill delta only
tail_hash (append)Normal growthRe-prefill delta only
Pinned item rewrittenCRITICAL DRIFT (semantic)Cache intact, task state corrupted

Appending a constraint or decision changes tail_hash but not prefix_hash: the prompt cache holds, only the new tokens are prefilled.

Rewriting a pinned decision is explicitly caught: OSIRIS checks collection identity, flagging a semantic break (semantic_break: true, cause: pinned_rewrite).


3. The 6 MCP Tools

Access footprint: 1,019 tokens of schemas and descriptions in model context (measured via bench/run_bench.py). Paid on task start, amortized across the session — pays off on the very first turn with ≥800 token payloads.

ToolRoleTypical Response
osiris.planStart / update / resume / status of a task; produces sealed manifest~160 tok
osiris.precheckAuthorize or deny an action (invariants, budget, deduplication)~70 tok
osiris.observeLog actions, loop detection, offload large data, update memory~50 tok
osiris.recallRehydrate refs (server-side filtered: grep, range, outline)variable
osiris.checkpointSnapshot, resume, completion report, reversible compaction~80 tok
osiris.handoffExecutable delegation contracts and structured results~200 tok

osiris.observe combines logging, loop protection, payload externalization, memory registry, and automated pruning in a single call so the agent always reports back seamlessly.

Extended Operations

CallBehavior
osiris.observe(kind="dropped", result=<ref>)Drop receipt: agent confirms payload was evicted from prompt → token savings are proven and credited
osiris.observe(kind="head"|"contract", result=…)Records system prompt head / client contract and detects cache-busting volatile tokens (timestamps, UUIDs)
osiris.recall(op="grep"|"range"|"head"|"tail"|"outline"|"aggregate"|"jsonl")Server-side filtering: only requested matches enter the context window
osiris.plan(mode="status")Context pressure breakdown (measured vs declared vs unknown)
osiris.checkpoint(mode="compact"|"trim"|"clear")Reversible session compaction preparation
osiris.precheck → suggest_alternativeActive collision resolution for duplicate operations

Resources & Prompts

  • osiris://task/{task_id}/manifest — Active zones, drift status, objective
  • osiris://task/{task_id}/status — Real-time context pressure
  • osiris://ref/{ref} — Raw byte content of any referenced payload
  • Prompt osiris/task-resume — Clean agent recovery template after crashes

4. Architecture

┌──────────────────────────────────────────────────────────────┐│  Agent (Claude Code, Cursor, MiniMax Code, Codex, Cline…)   ││  Context: system │ tools │ OSIRIS MANIFEST │ history         │└───────────────────────────┬──────────────────────────────────┘                            │  MCP stdio — 6 tools, ~1,019 tok schema                            ▼┌──────────────────────────────────────────────────────────────┐│  osiris-mcp  (server.py)                                     ││  plan · precheck · observe · recall · checkpoint · handoff   │└───────────────────────────┬──────────────────────────────────┘                            │┌───────────────────────────▼──────────────────────────────────┐│  core/                                                        ││   task_state  Typed TaskState (objective, plan, decisions)    ││   memory     Typed memory registry by kind and scope         ││   refs       Content-addressed store (verified on read)      ││   prefix     Zones, 3-hash system, drift, PrefillPlan        ││   prune      Reversible externalization, 4 modes             ││   query      Server-side payload filtering (grep, range...)  ││   compaction trim / compact / clear (lossless)               ││   pressure   Context pressure metrics & tracking             ││   loopguard  Fingerprinting, 5 loop patterns detection       ││   invariants TOML rule engine (guard rails)                  ││   compass    Tool Compass (dynamic relevance scoring)        ││   handoff    Executable agent delegation contracts           ││   events     Append-only event journal + checkpoints         ││   ledger     Tokens / cost / savings / OSIRIS overhead       ││   fileops    Sandboxed file inspection (roots, size limits)  ││   redact     Secret scrubbing before any hashing             ││   policy     Budget policies & token enforcement             │└───────────────────────────┬──────────────────────────────────┘                            ▼        ~/.osiris/osiris.db  +  ~/.osiris/reports/

5. Memory Model

Deterministic, typed, content-addressable memory — not an opaque vector database.

TaskState├── objective      immutable├── constraints[]  append-only├── decisions[]    append-only, pinned verbatim├── plan           completed / active / remaining steps├── files{}        path, SHA-256 hash, mtime, last access, ref├── tool_results{} cache_key, ref, size, token cost, TTL├── failures{}     error signature, tool, args hash, attempts, lesson├── lessons[]      general behavioral rules learned├── handoffs{}     cross-agent delegation contracts└── budget         estimated vs consumed tokens and cost

Scopes: task → project → agent → global.


6. Cache-Aware Pruning

Security Invariant: Pruning moves payload data to content-addressed refs (mem://sha256:…). It NEVER deletes.

ZONE_A_pruning_cost = pruned_tokensZONE_C_or_D_pruning_cost = 0                      ← always zero costnet_savings = pruned_tokens − (prefix_tokens × P(cache_dead) × prefix_pruned)
ModeTriggerEvictsCache ImpactUse Case
cache_ttl (default)Δt > TTLC/D, and A/B only if cache expiredNeutralRecommended default
conservativeVery high thresholdWorking zone (C/D) onlyZeroHigh-cost API models
balancedModerate thresholdC/D + cold historical turnsZeroStandard agent workflows
aggressiveLow thresholdEverything rehydratableMinor prefill riskFast local LLMs

7. LoopGuard Protection

fingerprint = sha256(tool ‖ canonical_args ‖ result_signature)
DetectionTrigger SignalVerdict
Exact duplicateIdentical fingerprintsuggest_alternative
Repeated failureSame error signature (≥3 times)block + required_action
Loop patternSame error across varying argswarn
OscillationAlternating A/B/A/B patternwarn
RunawayN calls with zero state progresswarn / block

8. Invariants (Guard Rails)

Define project safety rules in .osiris/invariants.toml:

toml
[[invariant]]id = "tests-before-commit"when = { tool = "git.commit" }require = { state = "tests_passed" }message = "Cannot commit while tests are failing"
[[invariant]]id = "no-test-edit"when = { path_glob = "tests/**" }verdict = "block"message = "Modifying test suites requires explicit approval"

9. Lossless Verification & Non-Loss Proof

OSIRIS guarantees full auditability for offloaded data:

  1. Self-verifying refs: mem://sha256:<hash>. Reads re-verify data integrity against the hash before returning.
  2. Zero deletion paths: data is relocated to the local store, never pruned permanently.
  3. Reproducible audit:
    bash
    python -m osiris audit --task <task_id>
    Outputs cryptographic proof of non-loss:
    json
    {"lossless": true, "items_externalized": 14, "items_verified": 14, "items_missing": 0, "integrity_violations": []}

10. Verified Benchmarks

Real measurements from python bench\run_bench.py running an automated coding workflow:

Payload SizeBaseline ContextFixed OSIRISAdaptive OSIRISNet ImprovementOSIRIS ModeOverhead
200 tok1,5832,6871,651−4.30%bystander34 tok
800 tok3,8513,7553,261+15.32%light1,810 tok
2,000 tok9,0155,2295,233+41.95%standard2,492 tok
5,000 tok20,9798,1718,168+61.07%standard2,439 tok
20,000 tok82,13523,42723,440+71.46%full2,422 tok
  • Access Cost: 1,019 tokens of schemas, amortized across session tasks.
  • Session Net Gate: PASS (Worst-case net across full suite: +951 tokens).
  • At 20,000 tokens: +71.46% net savings on context usage.

11. Quick Start

powershell
cd D:\MCP-Osirisuv venv --python 3.12 .venvuv pip install --python .venv\Scripts\python.exe -e ".[dev]"

CLI Verification

powershell
.venv\Scripts\python.exe -m pytest tests -q        # Run test suite (77 passed).venv\Scripts\python.exe -m ruff check src tests    # Code linting.venv\Scripts\python.exe -m osiris health           # Server health check.venv\Scripts\python.exe -m osiris audit --task t_1 # Cryptographic non-loss proof.venv\Scripts\python.exe bench\run_bench.py         # Reproduce benchmarks

Registration as MCP Server

Add to your client configuration (mcp.json):

json
{  "mcpServers": {    "osiris": {      "command": "D:\\mcp-osiris\\.venv\\Scripts\\python.exe",      "args": ["-m", "osiris"],      "env": {        "OSIRIS_HOME": "C:\\Users\\Tech\\.osiris",        "OSIRIS_ROOTS": "D:\\mcp-osiris"      }    }  }}

12. Installation

From PyPI (recommended)

bash
pip install mcp-osiris          # or: uv pip install mcp-osirismcp-osiris                      # runs the MCP server on stdioosiris health                   # CLI verificationosiris-dashboard --port 8770    # Control Plane (dashboard)

From npm (no Python setup)

bash
npx -y osiris-mcp

The npm package is a stdio launcher. It resolves the Python runtime in this order — OSIRIS_PYTHON → uvx → python3 → python — and runs the PyPI package mcp-osiris.

From source

powershell
git clone https://github.com/MlkBlk-IT/osiris.gitcd osirisuv venv --python 3.12 .venvuv pip install --python .venv\Scripts\python.exe -e ".[dev]"

MCP client configuration

json
{  "mcpServers": {    "osiris": {      "command": "npx",      "args": ["-y", "osiris-mcp"],      "env": {        "OSIRIS_HOME": "~/.osiris",        "OSIRIS_ROOTS": "/path/to/project"      }    }  }}
VariableDefaultRole
OSIRIS_HOME~/.osirisSQLite database, reports, caches
OSIRIS_ROOTS(empty)Roots allowed for file reading (; separated)
OSIRIS_CACHE_TTL_S300Cache TTL (seconds)
OSIRIS_PRUNE_THRESHOLD_TOKENS40000Prune threshold
OSIRIS_DISPATCH_ONLY01 → exposes only osiris.call

License

MIT © 2026 Malik Belkacemi (MLKBLK-IT)

来源:README.md,提交 57651cd

工具

0
SourceWeft 曾在隔离沙箱中以无凭据方式启动该软件包一次,以列出其工具,但未能完成:服务器未能启动。

版本历史

1
  1. v0.1.0最新Nov 1, 2026

评分

已满足适用检查项的 50%

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

  • 近 30 天内可连通25 分

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

  • 已声明认证方式10 分

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

  • 已列出工具15 分

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

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