Decompose

io.github.echology-io由 GitHub 账号 echology-io 发布v0.1.1更新于 Oct 25, 2026

Decompose text into classified semantic units. Authority, risk, attention. No LLM.

已验证STDIO仅桌面数据与分析AI 与机器学习

概览

AI 生成的概览

本地 MCP 服务器,用正则和启发式规则把文本拆成带权威性、风险、类型和注意力评分的语义单元,不依赖大模型。

可以做什么
把文本拆解为结构化语义单元,标注权威性、风险、类型、不可约性、注意力分数、实体和可执行性,全程不用大模型。抓取指定网址的内容并按同样方式拆解。可据此在送入模型或向量库前过滤样板文字,或按风险分流处理。也可作为命令行工具和 Python 库使用,库中自带面向大模型的预过滤器。
适用场景
适合助手处理冗长的规范、合同、法规或报告,需要先判断哪些段落是强制要求、安全关键或涉及财务,再进行推理的场景。也适合希望在嵌入或提示前剔除样板内容以降低 token 成本的流程。
运行要求
以本地进程运行;需从 PyPI 安装 decompose-mcp 包(pip),并用 uvx 或 python3 -m decompose --serve 启动。分类本身不需要 API 密钥、GPU 或网络;网址工具需要联网抓取页面。
安装前请注意
网址工具会抓取远程内容,所访问的页面会离开本机。分类基于启发式规则,强制或安全关键的标注不宜作为合规决策的权威依据。不要求任何凭据。

安装

在 SourceWeft 中

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

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

其他 MCP 客户端

参照 仓库 中的启动说明。

README

Decompose

[CI] [PyPI] [Python]

Stop prompting. Start decomposing.

Deterministic text classification for AI agents. Decompose turns any text into classified, structured semantic units — instantly. No LLM. No setup. One function call.


Before: your agent reads this

The contractor shall provide all materials per ASTM C150-20. Maximum loadshall not exceed 500 psf per ASCE 7-22. Notice to proceed within 14 calendardays of contract execution. Retainage of 10% applies to all payments.For general background, the project is located in Denver, CO...

After: your agent reads this

json
[  {    "text": "The contractor shall provide all materials per ASTM C150-20.",    "authority": "mandatory",    "risk": "compliance",    "type": "requirement",    "irreducible": true,    "attention": 8.0,    "entities": ["ASTM C150-20"]  },  {    "text": "Maximum load shall not exceed 500 psf per ASCE 7-22.",    "authority": "prohibitive",    "risk": "safety_critical",    "type": "constraint",    "irreducible": true,    "attention": 10.0,    "entities": ["ASCE 7-22"]  }]

Every unit classified. Every standard extracted. Every risk scored. Your agent knows what matters.


Install

bash
pip install decompose-mcp

Use as MCP Server

Add to your agent's MCP config (Claude Code, Cursor, Windsurf, etc.):

json
{  "mcpServers": {    "decompose": {      "command": "uvx",      "args": ["decompose-mcp", "--serve"]    }  }}

Your agent gets two tools:

  • decompose_text — decompose any text
  • decompose_url — fetch a URL and decompose its content

OpenClaw

Install the skill from ClawHub or configure directly:

json
{  "mcpServers": {    "decompose": {      "command": "python3",      "args": ["-m", "decompose", "--serve"]    }  }}

Or install the skill: clawdhub install decompose-mcp

Use as CLI

bash
# Pipe textcat spec.txt | decompose --pretty
# Inlinedecompose --text "The contractor shall provide all materials per ASTM C150-20."
# Compact output (smaller JSON)cat document.md | decompose --compact

Use as Library

python
from decompose import decompose_text, filter_for_llm
result = decompose_text("The contractor shall provide all materials per ASTM C150-20.")
for unit in result["units"]:    print(f"[{unit['authority']}] [{unit['risk']}] {unit['text'][:60]}...")
# Pre-filter for LLM context — keep only high-value unitsfiltered = filter_for_llm(result, max_tokens=4000)print(f"{filtered['meta']['reduction_pct']}% token reduction")llm_input = filtered["text"]  # Ready for your LLM

What Each Field Means

FieldValuesWhat It Tells Your Agent
authoritymandatory, prohibitive, directive, permissive, conditional, informationalIs this a hard requirement or background?
risksafety_critical, security, compliance, financial, contractual, advisory, informationalHow much does this matter?
typerequirement, definition, reference, constraint, narrative, dataWhat kind of content is this?
irreducibletrue/falseMust this be preserved verbatim?
attention0.0 - 10.0How much compute should the agent spend here?
entitiesstandards, codes, regulationsWhat formal references are cited?
actionabletrue/falseDoes someone need to do something?

What to Build With This

Decompose is not the destination. It's the step before the LLM that most developers skip — not because it's hard, but because nobody showed them it exists. Documents have structure. That structure is classifiable. And classification should happen before reasoning.

Without:  document → chunk → embed → retrieve → LLM → answer  (100% of tokens)With:     document → decompose → filter/route → LLM → answer  (20-40% of tokens)

Filter: built-in LLM pre-filter

filter_for_llm() keeps mandatory, safety-critical, financial, and compliance units — drops boilerplate before it reaches your LLM or vector store.

python
from decompose import decompose_text, filter_for_llm
result = decompose_text(open("contract.md").read())filtered = filter_for_llm(result, max_tokens=4000)
# filtered["text"] = high-value units only, ready for LLM# filtered["meta"]["reduction_pct"] = how much was dropped (typically 60-80%)
# Or use the units directly for embeddingfor unit in filtered["units"]:    embed_and_store(unit["text"], metadata={        "authority": unit["authority"],        "risk": unit["risk"],        "attention": unit["attention"],    })

Route: risk-based processing

Safety-critical content goes to one chain. Financial content goes to another. Boilerplate gets skipped.

python
from decompose import decompose_text
result = decompose_text(spec_text)
for unit in result["units"]:    if unit["risk"] == "safety_critical":        safety_chain.process(unit)       # Full analysis + human review    elif unit["risk"] == "financial":        audit_chain.process(unit)         # Flag for finance team    elif unit["attention"] < 0.5:        pass                              # Skip boilerplate    else:        general_chain.process(unit)       # Standard LLM analysis

Measure: token cost reduction

python
from decompose import decompose_text
result = decompose_text(spec_text)total = len(result["units"])high = [u for u in result["units"] if u["attention"] >= 1.0]
print(f"{len(high)}/{total} units need LLM analysis")print(f"{100 - len(high) * 100 // total}% token reduction")

See examples/ for runnable scripts.


Why No LLM?

Decompose runs on pure regex and heuristics. No Ollama, no API key, no GPU, no inference cost.

This is intentional:

  • Fast: <500ms for a 50-page spec
  • Deterministic: Same input always produces same output
  • Offline: Works air-gapped, on a plane, on CI
  • Composable: Your agent's LLM reasons over the structured output — decompose handles the preprocessing

The LLM is what your agent uses. Decompose makes whatever model you're running work better.


Built by Echology

Decompose is built by Echology and extracted from AECai, a document intelligence platform for Architecture, Engineering, and Construction firms. The classification patterns, entity extraction, and irreducibility detection are battle-tested against thousands of real AEC documents — specs, contracts, RFIs, inspection reports, pay applications.

Decompose earned its independence — it started as AECai's text classification module, proved general enough to work across domains (insurance, trading, regulatory), and was released standalone. Free, MIT-licensed.

Case Study: Open Scripture Intelligence

The same chunking and entity extraction patterns that classify engineering specs also structure the Bible. Open Scripture Intelligence uses Decompose's Markdown-aware chunker and regex entity extraction to transform 31,100 verses into a knowledge graph with 344,799 cross-reference edges and semantic embeddings — proving the methodology is domain-agnostic.

Blog

License: MIT — Copyright (c) 2025-2026 Echology, Inc.

来源:README.md,提交 8f74b88

工具

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

版本历史

1
  1. v0.1.1最新Sep 16, 2026

评分

已满足适用检查项的 50%

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

  • 近 30 天内可连通25 分

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

  • 已声明认证方式10 分

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

  • 已列出工具15 分

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

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