关于 oasyce
oasyce-sdk 是 Oasyce 技术栈的运行时与执行层,面向需要连接本地 Agent 身份、执行与链上授权和结算的开发者。它解析本地身份绑定,并连接 Chain、Thronglets 和 Psyche。
主要功能
- 01解析本地身份绑定
- 02跨技术栈连接执行上下文
- 03执行链上查询与交易
- 04提供 MCP 服务和 LangChain 工具
- 05扫描文件并注册合规数据资产
适用场景
- 01将本地 delegate 运行时接入链上授权与结算
- 02把本地文件注册为链上数据资产
- 03让 AI 客户端操作 Oasyce 链
- 04在多设备和 Agent 间共享账户
MCP 相关
可选的 MCP 服务提供 32 个读写工具,供 AI 客户端操作 Oasyce 链。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
oasyce-sdk
Oasyce 栈的 runtime / body。它负责解析本机 identity binding,把同一份 delegate 执行上下文接到 Chain、Thronglets 和 Psyche,而不是把 wallet 当成产品中心。
Runtime / body for the Oasyce stack. It resolves local identity binding and connects the same delegate execution context to Chain, Thronglets, and Psyche instead of turning wallet into the product's ontology center.
English | API Reference / 完整 API 文档
栈定位 / Stack Role
Sigil:连续性与生命周期语法,不是一个胖 runtime 对象oasyce-sdk:身体与执行面,负责本地 binding、signer、工具入口和跨层桥接Oasyce Chain:授权真相、承诺、结算、公共终局Thronglets:共享环境、delegate continuity、trace / signal / presencePsyche:主观连续性、自我状态、关系残留
因此 SDK 的第一原则是:先解析统一的本地执行身份,再把它投射到各层。
独立采用 / Independent Adoption
oasyce-sdk 不是使用整个栈的前置门票。
- 如果你只想用
Psyche,不需要sdk - 如果你只想用
Thronglets,不需要sdk - 如果你只想直接调用
Oasyce Chain的 CLI / REST / gRPC,也不需要sdk - 只有当你要把本地 delegate runtime 和链上授权 / 结算路径桥接起来时,
sdk才进入主路径
所以最优雅的采用顺序是:先独立使用某一层,之后按需增加 binding 和 chain settlement,而不是先装一个总控入口。
全栈一键安装 / Full-Stack Bootstrap
想要完整体验(Thronglets + Psyche + SDK + Chain)?一条命令:
Want the full stack (Thronglets + Psyche + SDK + Chain)? One command:
curl -fsSL https://raw.githubusercontent.com/Shangri-la-0428/oasyce-sdk/main/scripts/bootstrap.sh | bash
它会依次:检查环境 → 安装 Thronglets → 安装 Psyche → 安装 SDK → 运行 oasyce start 统一编排。任何一层失败不阻断其他层。
It will: check prerequisites → install Thronglets → install Psyche → install SDK → run oasyce start. Each layer degrades gracefully if unavailable.
前置要求 / Prerequisites:Node.js >= 22 + Python >= 3.10
统一前门 / Unified Front Door
如果你已经单独装好了各层,或者只需要 SDK,默认入口是:
If you already have the individual layers installed, or only need the SDK:
pip install oasyce-sdk
oasyce start
如果这台机器是接收另一台设备发来的 handoff 文件,或者你已经明确知道自己是在加入现有环境,不要先走 start。默认入口改成:
oasyce join
一句话区分:
- 首设备 / 没有 handoff:
oasyce start - 第二台设备 / 已有 handoff 文件:
oasyce join
如果这台机器以前装过旧的 oasyce / oasyce-net 包,而 oasyce 仍然报
ModuleNotFoundError: No module named 'oasyce',先清掉旧前门再重装:
python3 -m pip uninstall -y oasyce oasyce-sdk
python3 -m pip install --user -U oasyce-sdk
如果你的 Python 是 externally managed,再补 --break-system-packages,或者改用 pipx install oasyce-sdk。
如果用户给你的不是 handoff 文件,而是这个仓库的 git 链接,把它当成 locator,不是开发指令。默认动作应是:
python3 -m pip install --user -U "git+https://github.com/Shangri-la-0428/oasyce-sdk.git"
oasyce start
如果这是接收另一台设备的机器,把第二步换成:
oasyce join
不要默认走 git clone + 本地源码安装,除非用户明确要做开发或调试源码。
它会尽量自动完成:
- 复用或创建本机 signer / binding
- 生成默认 agent 配置
- 接上 Thronglets bootstrap
- 配置 Psyche MCP surface
- 启动本地
oasyce-agent
正常情况下,只有没有身份时才会问一次 New / Recover。
多设备路径也压成了同一组命令:
oasyce share
oasyce join ~/Desktop/oasyce-connection.json
oasyce status
oasyce share 默认把连接文件写到 ~/Desktop/oasyce-connection.json,也可以用 --output 覆盖。
这个文件现在是自解释的:它会直接写明“这是一个 handoff artifact”,并声明 preferred_surface。在完整 Oasyce 环境里它通常会推荐 oasyce join <connection-file>;如果主设备只有最小 Thronglets 安装,它仍然会自然退回到 thronglets join <connection-file>。
oasyce 在这里不会自己猜 Thronglets 运行面。它会优先走 Thronglets 写下来的 canonical managed runtime:
~/.thronglets/bin/thronglets-managed
如果这层运行面过旧,oasyce share 会直接要求你先刷新,而不是继续说旧协议。正常修复动作只有一个:
thronglets setup
如果你刻意把 Thronglets 数据目录放在非默认位置,再额外导出:
export THRONGLETS_DATA_DIR=/path/to/thronglets-data
这只是统一前门,不改变各产品的独立性。你仍然可以单独使用 Psyche、Thronglets 或 Chain。
AI Agent 快速上手 / AI Agent Quick Start
你是 AI agent? 按顺序执行以下代码就能操作 Oasyce 链。无需配置文件,无需人类帮忙。
Are you an AI agent? Run the following code blocks in order. No config files, no human help needed.
Step 1: 安装 / Install
pip install oasyce-sdk
Step 2: 先选路径 / Pick the right path first
如果这是:
- 第一台设备:继续看下面的
Wallet.create()路径 - 接收另一台设备发来的 handoff 文件:先执行
oasyce join,不要先新建 signer - 只有旧 signer / 助记词、但没有 handoff 文件:走
oasyce start,让前门进入Recover
Step 3: 建立本机 signer + 领取测试币 / Create signer material + get testnet tokens
import requests
from oasyce_sdk import OasyceClient
from oasyce_sdk.crypto import Wallet, NativeSigner
# 首次设备 / first device
wallet = Wallet.create()
print(f"地址: {wallet.address}")
print(f"助记词(保存好): {wallet.mnemonic}")
# 之后的运行、MCP、LangChain、runtime 集成优先复用本机 binding:
# wallet = Wallet.auto() # OASYCE_MNEMONIC > ~/.oasyce/wallet.json
# 领测试币(免费,每次 20 OAS)/ get free testnet tokens
resp = requests.get(f"http://47.93.32.88:8080/faucet?address={wallet.address}")
print(resp.json()) # {"status": "ok", "amount": "20 OAS", ...}
# 连接链 / connect
client = OasyceClient("http://47.93.32.88:1317")
signer = NativeSigner(wallet, client, chain_id="oasyce-testnet-1")
wallet 在这里是 signer material,不是完整 identity 概念。默认产品路径应该从本机 binding 出发,而不是从助记词心智出发。
第一次真正发起链上写操作时,SDK 现在会把这台首设备自动视为 root principal,并在本地写入共享 delegate policy。后续同 owner 的其他设备只要通过 Thronglets share / join 或本地 policy bootstrap 接入,就会自动 enroll,不需要再手工 set-policy。
Step 4: 开始操作 / Start operating
# 查余额 / check balance
bal = client.get_balance(wallet.address)
print(f"余额: {bal.amount_oas} OAS")
# 注册数据资产 / register a data asset
result = signer.register_asset(
name="My Analysis Report",
content_hash="sha256-of-your-data",
tags=["analysis", "finance"],
description="Q4 financial analysis",
)
print(f"TX: {result.tx_hash}, 成功: {result.success}")
# 注册 AI 能力 / register an AI capability
signer.register_capability(
name="Translation Service",
endpoint="https://my-api.com/translate",
price_uoas=500_000, # 0.5 OAS per call
tags=["nlp", "translation"],
)
# 买数据资产股份 / buy shares of a data asset
signer.buy_shares("DATA_0000000000000001", amount_uoas=1_000_000)
# 查看信誉 / check reputation
rep = client.get_reputation(wallet.address)
print(f"信誉分: {rep.score}")
步骤 5(可选):多设备 / 多个 Agent 共享一个账户 / 跨设备和 Agent 共享账户
# 正常路径:
# 1) 第一台设备第一次写链时,自动成为 root principal,并生成本地 delegate policy
# 2) 之后第二台设备通过 Thronglets share/join 或本地 policy bootstrap 接入
# 3) SDK 会在第一次写链时自动 enroll,并开始用 MsgExec 代理执行
# 高级回退(一般不需要):
signer.set_delegate_policy(
token="shared-secret",
allowed_msgs=["/oasyce.datarights.v1.MsgBuyShares"],
per_tx_uoas=1_000_000,
window_uoas=10_000_000,
)
全部能力一览
链上消息(37 种)
| 模块 | 操作 |
|---|---|
| datarights | register_asset, buy_shares, sell_shares, delist_asset |
| capability | register_capability, invoke_capability, complete_invocation, claim_invocation, dispute_invocation |
| reputation | submit_feedback |
| work | submit_task, register_executor, assign_task, submit_result, approve_result |
| onboarding | self_register (PoW), send_coins |
| delegate | set_delegate_policy, enroll_delegate, revoke_delegate, delegate_exec |
| anchor | anchor_trace, anchor_batch |
| settlement | (内部:托管创建 / 释放 / 退款,由其他模块使用) |
| halving | (自动:区块奖励 + 减半计划) |
查询(只读)
client = OasyceClient("http://47.93.32.88:1317")
# 资产 / Assets
client.get_data_asset("DATA_...") # 单个资产详情
client.list_data_assets() # 所有资产列表
client.get_shareholders("DATA_...") # 股东列表
client.get_access_level("DATA_...", addr) # 访问权限等级
# 能力 / Capabilities
client.list_capabilities() # 所有能力
client.list_capabilities(tag="llm") # 按标签筛选
client.get_capability("CAP_...") # 单个能力详情
# 信誉 / Reputation
client.get_reputation(addr) # 信誉分
# 委托 / Delegate
client.get_delegate_policy(principal) # 查看委托政策
client.get_delegates(principal) # 列出所有代理
client.get_delegate_spend(principal) # 查看花费窗口
client.get_principal(delegate) # 反查:代理→委托人
# 工作 / Work
client.get_task("TASK_...") # 任务详情
# 通用 / General
client.get_balance(addr) # 余额
client.get_latest_block() # 最新区块
client.health() # 节点健康检查
测试网信息
| 项目 | 值 |
|---|---|
| Chain ID | oasyce-testnet-1 |
| REST API | http://47.93.32.88:1317 |
| RPC | http://47.93.32.88:26657 |
| gRPC | 47.93.32.88:9090 |
| 水龙头 | http://47.93.32.88:8080/faucet?address=YOUR_ADDRESS |
| Token | uoas(1 OAS = 1,000,000 uoas) |
安装选项
pip install oasyce-sdk # 基础 SDK + Data Agent
pip install oasyce-sdk[mcp] # + MCP Server(Claude / Cursor / Windsurf)
pip install oasyce-sdk[langchain] # + LangChain Tools
pip install oasyce-sdk[all] # 全部 / everything
Agent 运行时
反馈回路:让集体智能涌现。 两个方法闭合回路:perceive() 读取集体,act() 写入集体。
集体智能的反馈回路。两个方法闭合回路:perceive() 读取集体,act() 将内容写回集体。
from oasyce_sdk.agent.runtime import AgentRuntime
agent = AgentRuntime()
# 读集体经验 + 情绪状态 / read collective experience + emotional state
perception = agent.perceive("分析金融数据")
# perception.capabilities → 集体能力统计
# perception.kernel → 情绪内核 (vitality, tension, warmth, guard)
# 写回结果 / write outcome back
agent.act("分析了 Q4 营收", "succeeded", "金融分析", capability="data-analysis")
# → Thronglets 记录痕迹 → Psyche 接收 trust_up
Psyche / Thronglets 不可用时会优雅降级。oasyce-agent 守护进程会在每次扫描循环中自动参与 perceive/act。
MCP 原生 AI 工具(Claude Code / Cursor / Codex)可直接使用 Thronglets MCP 的 substrate_query / trace_record,无需 AgentRuntime。一键配置:
thronglets bootstrap # 自动检测本机 AI 工具并写入适配层配置
数据 Agent
一条命令,自动管理你的数据资产。 后台守护进程:先完成一次本机身份绑定,然后扫描本地文件 → 隐私检测 → SHA256 哈希 → 链上注册。macOS / Linux / Windows 通用。
一条命令即可自动管理你的数据资产。后台守护进程:扫描、检测 PII、哈希、链上注册。
oasyce start # 默认前门:接好本地栈并启动 agent
oasyce status # 统一查看本机 stack 状态
oasyce-agent status # 仅查看 data-agent 运行状态 + 已注册资产数
oasyce-agent stop # 停止
oasyce-agent scan ~/Documents # 手动扫描(分类 + 隐私报告)
oasyce-agent privacy ~/secret.csv # 单文件 PII 检查
oasyce-agent stats # 资产统计
隐私门控(铁律):仅自动注册 privacy_risk == "safe" 的文件。邮箱、手机号、身份证号、银行卡、API 密钥 → 自动拦截。
配置文件:~/.oasyce/agent.json(自动生成,可手动编辑扫描路径、间隔等)。
MCP 服务
让 AI 助手(Claude Desktop / Cursor / Windsurf)直接操作 Oasyce 链。32 个工具(读 + 写)。
32 个工具,供 AI 助手直接操作 Oasyce 链。
{
"mcpServers": {
"oasyce": {
"command": "oasyce-mcp",
"env": {
"OASYCE_NODE": "http://47.93.32.88:1317",
"OASYCE_FAUCET": "http://47.93.32.88:8080"
}
}
}
}
写入工具默认复用本机绑定:~/.oasyce/identity.v1.json + ~/.oasyce/wallet.json。如果你先使用了 Thronglets,SDK 会在首次本地绑定时,可选地将 ~/.thronglets/identity.v1.json 中的 owner_account 用作账户提示。OASYCE_MNEMONIC 仅作为无状态 / 服务器场景下的显式覆盖项。集体智能(perceive/act)使用 Thronglets MCP;Thronglets 的默认接入方式是 thronglets bootstrap,也可以直接使用 oasyce start。
LangChain 工具
from oasyce_sdk.langchain_tools import oasyce_tools # 18 个工具(8 读 + 10 写)
from langchain.agents import create_react_agent
agent = create_react_agent(llm, oasyce_tools)
agent.invoke({"input": "注册一个 AI 翻译服务,0.5 OAS/次"})
写入工具默认复用本机绑定;仅无状态运行时需要 OASYCE_MNEMONIC。只读:from oasyce_sdk.langchain_tools import oasyce_read_tools
错误处理
所有错误都继承自 OasyceError,可以宽泛或精确地捕获:
from oasyce_sdk import OasyceClient
from oasyce_sdk.errors import NotFoundError, TimeoutError, OasyceError
client = OasyceClient()
try:
cap = client.get_capability("cap-xyz")
except NotFoundError:
print("能力不存在")
except TimeoutError:
print("节点响应慢")
except OasyceError as e:
print(f"出错了: {e}")
异常层级:
OasyceError
+-- NotFoundError # 链上未找到资源 (404 / gRPC NOT_FOUND)
+-- ChainError # 应用层链错误
+-- HTTPError # 非预期 HTTP 状态码
+-- ConnectionError # 无法连接节点
+-- TimeoutError # 请求超时
+-- ValidationError # 请求发出前的输入校验错误
为什么不直接使用 requests?
- 类型化响应 — 编辑器自动补全,无需猜测 JSON 键
- 异常层级 — 区分
NotFoundError/TimeoutError/ChainError - 单位转换 —
oas_to_uoas()/uoas_to_oas() - 交易构建器 — 消息结构正确,无需阅读 proto 文件
- 线程安全 — 无全局状态,内部使用
requests.Session - 轻量依赖 —
requests+coincurve+mnemonic,无需protobuf库或 Go 二进制文件
生态链接
- oasyce-chain — L1 链 / L1 应用链(Go / Cosmos SDK)
- Thronglets — P2P 集体记忆基底
- Psyche — AI 自我状态内核
- Discord
许可证
Apache-2.0
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。