SolidInvoice
Create and send invoices and quotes, manage clients, and track payments in SolidInvoice.
Exact math execution layer for AI agents: fractions, finance, units, dates. 19 packs.
使っているAIアプリを選んで、設定をコピーしてください。
チェック 3/3 合格 · あなたのパソコンで動きます · ✓ コマンド確認済み 2026年11月13日
まず:どの AI を使っていますか?
使っているアプリを選ぶと、下に手順が表示されます。
Claude につなげますが、先に準備が必要です
先にパソコンへ Python (uv) を入れてください(1 回だけ) · パソコン版 Claude アプリ(Windows または Mac)のみ。Web やスマホでは使えません
このメッセージを Claude のチャットに貼り付けます。AI がパソコンを確認し、変更するファイルを伝え、毎回あなたの了承を待ちます。
このパソコンの Claude に MCP server Jiheng を入れてください。順番に:1) uv --version で uv があるか確認。なければ https://docs.astral.sh/uv/getting-started/installation/ から入れるよう私に伝え、自分では入れない。2) この設定だけを使う(PopNx MCP の確認済み):{ "mcpServers": { "jiheng": { "command": "uvx", "args": [ "jiheng-mcp" ] } } } 3) 変更するファイルのフルパスか実行するコマンドを伝えて、私の了承を待つ。4) キーは不要。5) 了承した内容を実行し、Jiheng のツールが本当に表示されるか確認する。このメッセージにあなたのキーは含まれません。キーが必要な場合は、AI がファイルやアプリの入力欄にご自身で貼るよう案内します。
もう入っていますか?先に確認 · ターミナルを開き、このコマンドを入力して Enter
uv --versionMac:⌘ + Space を押し、Terminal と入力して Enter
Windows:スタートメニューを開き、Windows PowerShell と入力して「開く」
まだ入っていない場合: uv にはクリック式のインストーラーがありません。uv 公式ページからお使いの OS(macOS か Windows)用の 1 行コマンドをコピーしてターミナルに貼り付けます · Python を別に入れる必要はなく、必要なときに uv が自動で取得します
入れ終わったらターミナルを閉じて開き直し、同じコマンドをもう一度実行します。バージョン番号が出れば完了です: uv --version
一度入れれば、uv を使うすべてのツールで使えます
SettingsDeveloperEdit Config
{
"mcpServers": {
"jiheng": {
"command": "uvx",
"args": [
"jiheng-mcp"
]
}
}
}Jiheng を使って、私に何ができるか教えて、1 つやってみせて✓ Claude が Jiheng を使っていると言うか、回答に Jiheng のツール名が出れば接続成功です
メニュー名は 2026年11月11日 に Anthropic のヘルプページで確認 · アプリのバージョンにより画面が少し違うことがあります
ChatGPT はまだ Jiheng につなげません
Jiheng はパソコンに入れて使うものですが、ChatGPT は Web 上で動くサーバーにしかつなげません
A · Jiheng につなげるアプリを使う
B · 会計・財務・税務 の中で ChatGPT につなげる別のサーバー
同じカテゴリでよく使われているものから、キーなしでアドレスだけでつなげるものを選びました
Claude Code につなげますが、先に準備が必要です
先にパソコンへ Python (uv) を入れてください(1 回だけ)
このメッセージを Claude Code のチャットに貼り付けます。AI がパソコンを確認し、変更するファイルを伝え、毎回あなたの了承を待ちます。
このパソコンの Claude Code に MCP server Jiheng を入れてください。順番に:1) uv --version で uv があるか確認。なければ https://docs.astral.sh/uv/getting-started/installation/ から入れるよう私に伝え、自分では入れない。2) この設定だけを使う(PopNx MCP の確認済み):claude mcp add --scope user jiheng -- uvx jiheng-mcp 3) 変更するファイルのフルパスか実行するコマンドを伝えて、私の了承を待つ。4) キーは不要。5) 了承した内容を実行し、Jiheng のツールが本当に表示されるか確認する。このメッセージにあなたのキーは含まれません。キーが必要な場合は、AI がファイルやアプリの入力欄にご自身で貼るよう案内します。
もう入っていますか?先に確認 · ターミナルを開き、このコマンドを入力して Enter
uv --versionMac:⌘ + Space を押し、Terminal と入力して Enter
Windows:スタートメニューを開き、Windows PowerShell と入力して「開く」
まだ入っていない場合: uv にはクリック式のインストーラーがありません。uv 公式ページからお使いの OS(macOS か Windows)用の 1 行コマンドをコピーしてターミナルに貼り付けます · Python を別に入れる必要はなく、必要なときに uv が自動で取得します
入れ終わったらターミナルを閉じて開き直し、同じコマンドをもう一度実行します。バージョン番号が出れば完了です: uv --version
一度入れれば、uv を使うすべてのツールで使えます
Mac:Command+スペースで Terminal と入力 · Windows:PowerShell を開く
claude mcp add --scope user jiheng -- uvx jiheng-mcpJiheng が一覧にあり、接続済みと表示されれば OK です
Jiheng を使って、私に何ができるか教えて、1 つやってみせて✓ Claude Code が Jiheng を使っていると言うか、回答に Jiheng のツール名が出れば接続成功です
メニュー名は 2026年11月11日 に Anthropic のヘルプページで確認 · アプリのバージョンにより画面が少し違うことがあります
Cursor につなげますが、先に準備が必要です
先にパソコンへ Python (uv) を入れてください(1 回だけ)
このメッセージを Cursor のチャットに貼り付けます。AI がパソコンを確認し、変更するファイルを伝え、毎回あなたの了承を待ちます。
このパソコンの Cursor に MCP server Jiheng を入れてください。順番に:1) uv --version で uv があるか確認。なければ https://docs.astral.sh/uv/getting-started/installation/ から入れるよう私に伝え、自分では入れない。2) この設定だけを使う(PopNx MCP の確認済み):{ "mcpServers": { "jiheng": { "command": "uvx", "args": [ "jiheng-mcp" ] } } } 3) 変更するファイルのフルパスか実行するコマンドを伝えて、私の了承を待つ。4) キーは不要。5) 了承した内容を実行し、Jiheng のツールが本当に表示されるか確認する。このメッセージにあなたのキーは含まれません。キーが必要な場合は、AI がファイルやアプリの入力欄にご自身で貼るよう案内します。
もう入っていますか?先に確認 · ターミナルを開き、このコマンドを入力して Enter
uv --versionMac:⌘ + Space を押し、Terminal と入力して Enter
Windows:スタートメニューを開き、Windows PowerShell と入力して「開く」
まだ入っていない場合: uv にはクリック式のインストーラーがありません。uv 公式ページからお使いの OS(macOS か Windows)用の 1 行コマンドをコピーしてターミナルに貼り付けます · Python を別に入れる必要はなく、必要なときに uv が自動で取得します
入れ終わったらターミナルを閉じて開き直し、同じコマンドをもう一度実行します。バージョン番号が出れば完了です: uv --version
一度入れれば、uv を使うすべてのツールで使えます
Jiheng を使って、私に何ができるか教えて、1 つやってみせて✓ Cursor が Jiheng を使っていると言うか、回答に Jiheng のツール名が出れば接続成功です
メニュー名は 2026年11月11日 に Cursor のヘルプページで確認 · アプリのバージョンにより画面が少し違うことがあります
VS Code につなげますが、先に準備が必要です
先にパソコンへ Python (uv) を入れてください(1 回だけ)
このメッセージを VS Code のチャットに貼り付けます。AI がパソコンを確認し、変更するファイルを伝え、毎回あなたの了承を待ちます。
このパソコンの VS Code に MCP server Jiheng を入れてください。順番に:1) uv --version で uv があるか確認。なければ https://docs.astral.sh/uv/getting-started/installation/ から入れるよう私に伝え、自分では入れない。2) この設定だけを使う(PopNx MCP の確認済み):{ "servers": { "jiheng": { "type": "stdio", "command": "uvx", "args": [ "jiheng-mcp" ] } } } 3) 変更するファイルのフルパスか実行するコマンドを伝えて、私の了承を待つ。4) キーは不要。5) 了承した内容を実行し、Jiheng のツールが本当に表示されるか確認する。このメッセージにあなたのキーは含まれません。キーが必要な場合は、AI がファイルやアプリの入力欄にご自身で貼るよう案内します。
もう入っていますか?先に確認 · ターミナルを開き、このコマンドを入力して Enter
uv --versionMac:⌘ + Space を押し、Terminal と入力して Enter
Windows:スタートメニューを開き、Windows PowerShell と入力して「開く」
まだ入っていない場合: uv にはクリック式のインストーラーがありません。uv 公式ページからお使いの OS(macOS か Windows)用の 1 行コマンドをコピーしてターミナルに貼り付けます · Python を別に入れる必要はなく、必要なときに uv が自動で取得します
入れ終わったらターミナルを閉じて開き直し、同じコマンドをもう一度実行します。バージョン番号が出れば完了です: uv --version
一度入れれば、uv を使うすべてのツールで使えます
Jiheng を使って、私に何ができるか教えて、1 つやってみせて✓ VS Code が Jiheng を使っていると言うか、回答に Jiheng のツール名が出れば接続成功です
メニュー名は 2026年11月11日 に VS Code のヘルプページで確認 · アプリのバージョンにより画面が少し違うことがあります
Claude Code
claude mcp add --scope user jiheng -- uvx jiheng-mcpClaude Desktop (claude_desktop_config.json)
{
"mcpServers": {
"jiheng": {
"command": "uvx",
"args": [
"jiheng-mcp"
]
}
}
}Cursor (~/.cursor/mcp.json)
{
"mcpServers": {
"jiheng": {
"command": "uvx",
"args": [
"jiheng-mcp"
]
}
}
}VS Code (mcp.json)
{
"servers": {
"jiheng": {
"type": "stdio",
"command": "uvx",
"args": [
"jiheng-mcp"
]
}
}
}この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
このサーバーのつなぎ方と、各アプリの公式ドキュメントに基づきます。2026年11月10日に確認。
パソコン上で動かせるアプリ
ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast
パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月15日にチェック
レジストリ名は、リポジトリを所有するGitHubアカウント CQQOOQ123 で確認済みです
コードの最終更新:10 日前
MITを使用
これはパソコンで動くため、インターネット上のエンドポイントはありません
パソコンで動き、代わりにローカルの設定を使います
パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです
OSV.dev に jiheng-mcp@0.3.9 の登録はありません
このバージョンのパッケージ本体のみ確認。すべての依存関係ではありません · 確認日 2026年11月15日
質問、コツの共有、使えないことの報告ができます。「役に立った」の多い順です。
まだレビューはありません
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック3項目のうち3項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
レジストリには必須のキーは載っていません。ただし、最初に使うときにサインインを求めるサーバーもあります。
あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。
GitHubリポジトリの最終更新は10 日前、最新バージョン(0.3.9)がレジストリに届いたのは10 日前です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにPython (uv)も必要です。
同じカテゴリには:SolidInvoice, Signal8, Journalit, Tapetide - Indian Stock Market MCP, Twelve Data
同じカテゴリでほかの作者のもの。コマンドは確認済み。公式を先に、次にスター順。
カードの見方:↓ 週あたりのダウンロードi★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
Create and send invoices and quotes, manage clients, and track payments in SolidInvoice.
SEC filings, dilution, insider & institutional ownership, and political-trade data for AI agents.
Trading journal in Obsidian. Ask Claude or ChatGPT about your trades; edits are previewed first.
48 tools for ~8,000 NSE & BSE stocks: quotes, screener, financials, filings, FII/DII, options
Real-time and historical market data: stocks, forex, crypto, ETFs, fundamentals and 60+ indicators.
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
English | 中文
不是让计算器替 AI 思考,而是让 AI 不必自己心算。
模型擅长推理,却不擅长算术。一个被静默舍入的数字,可能一路传进报价、报表或仓位里。
玑衡只做一件事:要么给出精确值,要么明确告诉你为什么给不了。
给 AI Agent / MCP 客户端使用的精确数学执行层:分数、根号、符号、统计、金融、单位、日期。 既可以作为 MCP 服务器,也可以作为 DSH 插件 接入。
1/3 保留分数,sqrt(2) 保留根号,2^200 逐位精确{
"mcpServers": { "jiheng": { "command": "uvx", "args": ["jiheng-mcp"] } } }
DSH 插件:@local/jiheng,设置页可查看状态与策略。
uv pip install jiheng-mcp==x.y.z若报 unsatisfiable,但 PyPI 页面已有该版本:
执行
uv cache clean jiheng-mcp后重试;仍失败则执行完整uv cache clean。通常是 uv 本地缓存了旧索引。
不同工具优化的目标不同。Jiheng 只专注一件事: 给 AI 代理一个快、准、本地、接口干净的精确计算器。
| Jiheng | Wolfram(Alpha / Cloud) | SymPy MCP | Code Interpreter | |
|---|---|---|---|---|
| 精确分数/根号 | ✅ 始终(1/3、sqrt(2)) | ✅ | ✅ 但接口偏底层 | ⚠️ 不写代码就是浮点 |
| AI 原生接口 | ✅ steps、functions()、help()、教学式错误 | ⚠️ 偏文档 | ❌ 原始 API | ✅ 通用 |
| 本地、无需 API key | ✅ uvx jiheng-mcp | ❌ 云端/付费 | ✅ 本地 | ❌ 托管 |
| 热延迟 | 约 3ms/次 | 网络往返 | 每次起 Python | 秒级 |
| 领域覆盖 | 19 个包:统计、金融、工程、单位、日期、分布、ODE、线代… | ✅ 很广 | 只有基础数学 | ⚠️ 靠库 |
| 一次调用多步 | ✅ 命名 steps | ⚠️ | ❌ | ✅ 写代码 |
| 并行拆题 | ✅ calc_shard + worker 池 | ❌ | ❌ | ⚠️ 手动 |
| 符号深度 | ⚠️ 够用,非 Wolfram 级 | ✅ 最强 | ✅ 强 | ⚠️ 靠 SymPy |
| 难数值积分 | ⚠️ 已改进,非 Wolfram 级 | ✅ | ⚠️ | ✅ SciPy |
| 中文口径 | ✅ 折扣/税/日期/单位模板 | ⚠️ | ❌ | ⚠️ |
| 许可/成本 | MIT,免费 | 付费/云端 | BSD,免费 | 免费但托管 |
| 可测量基准 | ✅ 1000 题混合基准 97.6% | — | — | — |
适合用 Jiheng:
不适合用 Jiheng:
Jiheng 是计算层,不是数据层。它不连接数据库、不抓网页、不读文件, 只负责把“已经拿到的数字”算准。数据获取交给专门的 MCP 工具,两者组合使用:
| 需要做什么 | 用什么 |
|---|---|
| 从数据库/CSV 取数 | 数据库 MCP、文件 MCP、代码解释器 |
| 统计、金融、单位、日期计算 | Jiheng |
| 大表 join / ETL | DuckDB / 代码执行 |
| 画图 | 图表 MCP |
典型链路:
数据库 MCP:SELECT month, revenue FROM finance
↓ [120000, 135000, 149000, 162000] ↓ Jiheng:cagr(162000, 120000, 3) → 0.105... Jiheng:mean([...]) → 141500 Jiheng:npv(0.08, [...], 1) → 折现值
为什么不在 calc 里内置数据库连接:
如果你需要“只读 SQLite / DuckDB / CSV”,建议用独立的数据工具或 MCP, 把结果数字交给 Jiheng 计算。
1. 安装 uv(已装可跳过)
# macOS / Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
irm https://astral.sh/uv/install.ps1 | iex
2. 让客户端启动 Jiheng
在 Claude Desktop、Cursor、Codex 等 MCP 客户端配置里加入:
{
"mcpServers": { "jiheng": { "command": "uvx", "args": ["jiheng-mcp"] } } }
第一次启动时 uvx 会自动下载 jiheng-mcp,之后走本地缓存。
3. 重启客户端,直接提问
用 calc 算 1/3 + 1/6
用 calc 算 mean([12,15,9,22]) 用 calc 算 npv(0.08, [623,644,431,286], 1) 用 calc 算 sqrt(2)*sqrt(2)
| 方式 | 命令 |
|---|---|
| PyPI(pip) | pip install jiheng-mcp |
| 本地目录开发 | uvx --from ./dsh-calc jiheng-mcp |
| 直接从 git | uvx --from git+https://github.com/CQQOOQ123/jiheng jiheng-mcp |
plugin_manager install_bundle target="D:\AI\DeepSeek-workplace\创造模式\dsh-calc"
plugin_manager set_bundle target="@local/jiheng" enabled=true
装载后工具表出现 calc;设置 → 计算器 出现配置页。
cd dsh-calc
python -u mcp_server.py # 读取 stdin 的 JSON-RPC
{
"expr": "最终表达式(可省略,若 steps 已给出结果)", "steps": [{"name": "中间变量名", "expr": "子表达式"}], "defs": {"const": {"k": 1.05}, "fn": {"f": {"p": ["x"], "e": "x^2"}}} }
返回:content[0].text 为十进制优先的结果(附精确形式);错误时 isError: true, 文本中包含可修正的提示。
calc(expr="1/3 + 1/6") → 1/2
calc(expr="sqrt(2)*sqrt(2)") → 2 calc(expr="mean([12,15,9,22])") → 14.5 calc(expr="loan_pmt(1000000, 0.049, 20)") → 月供 calc(expr="black_scholes_call(115,113,1,0.05,0.30)") calc(expr="npv(0.08, [623,644,431,286], 1)") → start=1 表示首笔第 1 年末 calc(expr="functions()") → 全部函数名 calc(expr="help(\"norm_cdf\")") → norm_cdf(x, mu, sigma) — 正态累积分布
多步一次提交(推荐,减少往返):
{
"steps": [ {"name": "d1", "expr": "(ln(115/113)+(0.05+0.3^2/2)*1)/(0.3*sqrt(1))"}, {"name": "d2", "expr": "d1-0.3*sqrt(1)"}, {"name": "C", "expr": "115*norm_cdf(d1)-113*exp(-0.05)*norm_cdf(d2)"} ] }
⚠️
N(expr, digits)是数值求值,不是正态 CDF;CDF 用norm_cdf(x)。
+ - * / % ** ^、pi、esum mean std std_pop std_sample var_pop var_sample median quantile min max count corr cov regressionloan_pmt npv(rate, flows[, start]) annuity_pv discount_factor irr bond_price bond_duration black_scholes_call black_scholes_put irr_allunit_convert unit_add unit_mul unit_div unit_pow unit_eval + convertdays_between date_add weekdaysolve diff integrate simplify expand factor subs limit series taylorstress strain bending_stress beam_cantilever_point heat_flux thermal_resistancenorm_pdf norm_cdf norm_quantile t_pdf chi2_pdffunctions()、help("name")完整 61+ 函数见 AI-USAGE.md。
设置页可选,或 cordis.patch.yml 的 config.policy:
| policy | 行为 |
|---|---|
always | 任何计算都调工具 |
complex | 只在数组统计、金额、单位、符号、3+ 步、大数时调(默认) |
auto | 模型自判 |
never | 不注册工具 |
custom | 用 customRules 自然语言规则 |
设置 → 计算器 → 限额(存 /settings.json,立即生效):
| 限额 | 默认 | 超限 |
|---|---|---|
max_series | 10000 | 报错 |
max_output_items | 200 | 列表转摘要 |
max_expr_chars | 2000 | 报错 |
max_steps | 50 | 报错 |
max_symbol_len / max_decimal_len | 120 / 4000 | 降级为数值 + exact=false |
exact_only | 1 | 长符号表达式保留精确形式(同时给 d) |
strict_numeric | 0 | 1=无法精确表示时报错 |
默认 1 个常驻进程(单次约 3ms);高并发/重符号任务可开池:
# cordis.patch.yml
workers: 1 # 1..maxWorkers,或 auto maxWorkers: 8 # 硬上限 16;每个约 52MB
auto:起始 1 个,忙时自动扩到 maxWorkersGET/POST /calc/workers、POST /calc/batch(1..200 条表达式并行){"ready":true} 握手;扩容后等全部就绪再返回| 变量 | 默认 | 说明 |
|---|---|---|
DSH_CALC_PYTHON | 自动探测 | worker 解释器 |
DSH_CALC_HOME | ./.calc 或 ~/.calc | 公式/设置目录 |
DSH_CALC_TIMEOUT_MS | 8000 | 单次求值超时 |
DSH_CALC_DEBUG | 空 | 透传 worker stderr |
DSH_CALC_POLICY | 空 | 临时覆盖策略 |
DSH_CALC_BUILTIN_PACKS | 包内 packs/ | 内置能力包目录 |
DSH Host (Node, 常驻)
└─ index.js ──注册 calc / calc_shard 工具──▶ ctx.tools.register │ spawn(1..N 个) ▼ worker.py(常驻,JSON 行协议,~3ms/次) └─ calc_core.py AST 白名单 + Fraction + SymPy └─ packs/*.py 能力包(热加载)
MCP 客户端 ──stdio JSON-RPC──▶ mcp_server.py ──▶ calc_core.py + packs/
eval:AST 白名单,只允许数字/字符串/列表/四则/幂/白名单函数1/7*7 = 1、2^200 精确d 字段(30 位小数)sin(pi/6)=1/2、log(1000,10)=3)exact=false{"e":"ValueError","msg":"unknown function 'norm_cdf'... did you mean ..."}
{"e":"ValueError","msg":"invalid date '2026-02-30': 2026-02 has 28 days ... Do not roll over."} {"e":"ValueError","msg":"dimension mismatch: GB (data) vs kg (mass)"} {"e":"ValueError","msg":"not an expression (hint: multiple statements are not supported ...)"}
/calc/status:版本、策略、注册状态、worker/就绪数、目录POST /calc/policy:{policy, customRules}GET/POST /calc/limits:限额;{"reset":true} 恢复默认GET/POST /calc/workers:worker 池POST /calc/batch:{exprs:[...]} 并行求值GET/POST /calc/packs:公式包/能力包.calc/plugins/*.py(或包内 packs/):
NAME = "stats"
def register(reg): reg.func("corr", ["x", "y"], corr_impl, doc="Pearson 相关系数")
PACKS.mdcalc_shard(expr="x*exp(x)", var="x", from=0, to=1, shards=4, mode="integrate", op="sum")
→ sum(nintegrate) = 1
mode: integrate / sum;op: sum / mean / max / minpython dsh-calc/test_cases.py # 63 项:精度/统计/语义/错误/安全
python dsh-calc/test_packs.py # 169 项:能力包 python dsh-calc/test_worker.py # 12 项:worker 协议/热加载/ready node dsh-calc/test_client_contract.mjs # 8 项:客户端契约 node dsh-calc/test_routes.mjs http://127.0.0.1:3379 # 26 项:HTTP 路由 python research/bench/mcp_smoke.py # 7 项:MCP 冒烟
质量审计记录见 QUALITY.md。
基准(1000 题混合题集,deepseek-v4-flash,自然使用模式):97.6%(976/1000)。
| 项目 | 结果 |
|---|---|
| 综合任务银行 | 1,000/1,000 |
| 按能力包 | 19 包 × 1,000 = 19,000/19,000 |
| 真值来源 | Fraction / mpmath dps=50 / 日历事实;不调用插件自身算答案 |
| 调用方式 | 通过 MCP stdio 黑盒调用,只看输入/输出 |
| 难度分布(综合集) | easy 639 / medium 131 / hard 130 / adversarial 100 |
| 构建产物性能 | 冷启动 ~4.2 ms,p50 ~1.8 ms,p95 ~42 ms,p99 ~45 ms,~119 calls/s |
说明:这是生成式验收集,覆盖行为一致性、精确契约和 fail-loud 边界;难度以工程/量化计算为主,不等同于竞赛数学。
Q:`std` 是样本还是总体? A:std/std_pop/var/var_pop 是总体;std_sample/var_sample 是样本。 sharpe、zscore、cov 内部使用样本口径(ddof=1);max_drawdown 默认要求价格严格 >0,allow_leading_zeros=1 时允许前导 0。
Q:为什么 `N(...)` 不等于正态 CDF? A:N(expr, digits) 是数值求值;正态 CDF 用 norm_cdf(x)。
Q:`npv` 第一笔为什么不折现? A:默认 start=0(flows[0] 在 t=0);年末现金流用 npv(rate, flows, 1)。
Q:非法日期会怎样? A:明确报错(如 2026-02-30),不会顺延到 3 月 2 日。
Q:`api retries exhausted` 是什么? A:模型 API 连续重试 6 次仍失败(限流/网络),不是计算器错误;用 --resume 补跑。
.github/workflows/test.yml 在 push / PR 时跑核心、能力包、文档、客户端、MCP 冒烟测试.github/workflows/publish.yml 在 GitHub Release 发布时自动构建并上传 PyPI (Trusted Publishing:GitHub OIDC,无需长期 token)发布流程:
# 1. 改版本号(同步 package.json / pyproject / mcp_server)
python scripts/bump_version.py 0.3.2
PyPI 项目需在 Publishing 里配置 GitHub publisher:
Owner: CQQOOQ123
Repository: jiheng Workflow: publish.yml Environment: (留空)
手动发布(备用):
$env:UV_PUBLISH_TOKEN = "pypi-..."
uv build --directory dsh-calc uv publish dsh-calc/dist/*
exact=false 标记)calc_shard 切分index.js 不热更新;calc_core.py 在 worker 重启后生效uv build --directory dsh-calc
Do