corespine
Spine 家族的薄共享核(见 ADR 0001)。
只装 domain-neutral 的底层原语——既不属于 RAG 也不属于 agent 的稳定地基,被 ragspine /
agentspine 兄弟包各自依赖,不含任何它们的领域概念。
刻意地薄。按证据(rule of three)增长,不预先造框架。详见
CLAUDE.md宪章。
缝的元模式
每条缝都长一个样,核心 import 零 SDK、离线可跑:
Protocol + 离线确定性默认 + Registry / make_* 工厂 + 参数化 conformance
里面有什么
| 模块 | 原语 |
|---|---|
seam/registry.py |
Registry:name→factory 解析(大小写/留白/连字符不敏感)+ entry-point 自动发现(corespine.<seam> group)+ 未知 spec 列清可用名 + lazy_extra_import(缺 extra 给"pip install …"友好提示) |
observability/trace.py |
TraceSink 协议 + InProcessPrivacyTraceSink:只记 code/计数/耗时,拒绝任何携带正文(answer/value/text/content…)的载荷 |
llm/provider.py |
LLMProvider 协议 + 离线确定性 MockProvider(零网络、零 key、可复现) |
config/env.py |
load_from_env:把 PREFIX_* 环境变量读进一个 frozen dataclass(范式同 ragspine from_env) |
queue/task_queue.py |
TaskQueue 协议 + FakeQueue:同步内联执行 + 记录,离线/测试用 |
conformance/harness.py |
ConformanceSuite × InvariantPack:把"实现 × 不变量"绑成笛卡尔积逐格执行(机制,具体不变量由各 app 自己绑) |
本地开发(始终从包根)
uv venv .venv
VIRTUAL_ENV="$(pwd)/.venv" uv pip install -e ".[dev]"
.venv/bin/python -m pytest -q
.venv/bin/python -c "import corespine"
30 秒上手
from corespine import Registry, MockProvider, InProcessPrivacyTraceSink, FakeQueue
# 缝:一个 spec 选实现(大小写/留白不敏感;找不到列清可用名;还能 entry-point 自动发现)
reg: Registry = Registry("llm")
reg.register("mock", lambda **kw: MockProvider(**kw))
provider = reg.make(" MOCK ")
# OpenAI chat-completions 规范:messages 进,OpenAI 形状的 ChatCompletion 出(确定性可复现)
out = provider.chat([{"role": "user", "content": "hello"}])
print(out.choices[0].message.content)
# 隐私 trace:只记元数据;塞正文会被直接拒绝(raise TraceError)
sink = InProcessPrivacyTraceSink()
sink.emit("retrieve", count=3, took_ms=12)
# 任务队列:同步内联执行
q = FakeQueue()
jid = q.enqueue(lambda p: {"doubled": p["n"] * 2}, {"n": 21})
print(q.get(jid).result) # {'doubled': 42}
Metadata
Release files for hancore 0.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| hancore-0.0.1.tar.gz | 32.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| hancore-0.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 52.9 kB
Release files / hancore-0.0.1.tar.gz
| Download URL | hancore-0.0.1.tar.gz |
|---|---|
| Size | 32.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6296e26e889bc4f87e17ea0c1abaecf8b86b5aee0f44044d2827b4be60ec552c
|
|
BLAKE2b-256 checksum How to use checksums |
04b9270da101f61e49377c6ebc26fd0556f0cf5d524689ac613d0db6207bfec1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.2
|
Release files / hancore-0.0.1-py3-none-any.whl
| Download URL | hancore-0.0.1-py3-none-any.whl |
|---|---|
| Size | 20.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c8eab3d07b5263ecb9f2be9ac09ed3aeebcf90ee3a1c69561dd0846b8a765f50
|
|
BLAKE2b-256 checksum How to use checksums |
2657e212ddf6c2ca68494558e6ee397cb2e6b5d74a818a02792bd1bec2ff48a6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.2
|