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}
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
hancore-0.0.1.tar.gz
(32.8 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
hancore-0.0.1-py3-none-any.whl
(20.1 kB
view details)
File details
Details for the file hancore-0.0.1.tar.gz.
File metadata
- Download URL: hancore-0.0.1.tar.gz
- Upload date:
- Size: 32.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6296e26e889bc4f87e17ea0c1abaecf8b86b5aee0f44044d2827b4be60ec552c
|
|
| MD5 |
119455af4905121db925f817c95ac150
|
|
| BLAKE2b-256 |
04b9270da101f61e49377c6ebc26fd0556f0cf5d524689ac613d0db6207bfec1
|
File details
Details for the file hancore-0.0.1-py3-none-any.whl.
File metadata
- Download URL: hancore-0.0.1-py3-none-any.whl
- Upload date:
- Size: 20.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c8eab3d07b5263ecb9f2be9ac09ed3aeebcf90ee3a1c69561dd0846b8a765f50
|
|
| MD5 |
3cc6294266304aa1e82faa12878d000a
|
|
| BLAKE2b-256 |
2657e212ddf6c2ca68494558e6ee397cb2e6b5d74a818a02792bd1bec2ff48a6
|