为智能体提供可执行的数学词汇:发现一个类型化操作,运行它,并组合其结果。
67/100
综合分
352
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/11/3 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/morluto/jacobian.git状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
生态应用
桌面端 / Web 外壳,不以 dsh plugin add 安装
装得上吗
该类项目不使用 dsh plugin add 安装,静态安装检查不适用
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 1 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装仓库根目录及浅层子目录均无 dsh 插件清单,无法用 dsh 插件安装命令安装
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包jacobian(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✗入口文件缺少入口声明
源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/29 15:33:42
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件
查看扫描证据(共 147 处,展示前 36 条)
- 执行外部命令来自配置/变量npm/bin/jacobian.cjs:76
const child = spawn( - 写入本地文件npm/carrier.test.mjs:19
await mkdir(bin, { recursive: true }); - 写入本地文件npm/carrier.test.mjs:20
await writeFile(join(bin, "uvx"), "#!/bin/sh\nexit 0\n", "utf8"); - 写入本地文件npm/carrier.test.mjs:21
await chmod(join(bin, "uvx"), 0o755); - 执行外部命令来自配置/变量npm/carrier.test.mjs:30
return spawnSync(process.execPath, [join(npmRoot, "bin", "jacobian.cjs"), ...args], { - 写入本地文件npm/carrier.test.mjs:104
await writeFile( - 写入本地文件npm/carrier.test.mjs:114
await chmod(fakeUvx, 0o755); - 执行外部命令来自配置/变量npm/carrier.test.mjs:116
const result = spawnSync( - 读取本地文件npm/carrier.test.mjs:135
assert.deepEqual(JSON.parse(await readFile(log, "utf8")), [ - 删除本地文件递归npm/carrier.test.mjs:145
await rm(base, { recursive: true, force: true }); - 执行外部命令来自配置/变量npm/carrier.test.mjs:151
const result = spawnSync( - 执行外部命令来自配置/变量npm/carrier.test.mjs:161
const result = spawnSync( - 写入本地文件npm/carrier.test.mjs:176
await writeFile( - 执行外部命令来自配置/变量npm/carrier.test.mjs:185
const result = spawnSync( - 读取本地文件npm/carrier.test.mjs:196
await assert.rejects(readFile(marker), { code: "ENOENT" }); - 删除本地文件递归npm/carrier.test.mjs:198
await rm(base, { recursive: true, force: true }); - 读取本地文件npm/carrier.test.mjs:217
await assert.rejects(readFile(join(env.HOME, ".codex", "config.toml")), { - 读取本地文件npm/carrier.test.mjs:220
await assert.rejects(readFile(join(env.HOME, ".agents", "skills", "jacobian-math", "SKILL.md")), { - 删除本地文件递归npm/carrier.test.mjs:224
await rm(base, { recursive: true, force: true }); - 读取本地文件npm/carrier.test.mjs:253
const claude = JSON.parse(await readFile(claudePath, "utf8")); - 读取本地文件npm/carrier.test.mjs:261
const codex = await readFile(join(env.HOME, ".codex", "config.toml"), "utf8"); - 删除本地文件递归npm/carrier.test.mjs:294
await rm(base, { recursive: true, force: true }); - 删除本地文件递归npm/carrier.test.mjs:316
await rm(base, { recursive: true, force: true }); - 删除本地文件递归npm/carrier.test.mjs:340
await rm(base, { recursive: true, force: true }); - 执行外部命令固定命令npm/carrier.test.mjs:787
const pack = spawnSync( - 读取本地文件npm/lib/setup.cjs:185
const entry = await fs.lstat(filePath).catch((error) => { - 读取本地文件npm/lib/setup.cjs:195
return await fs.realpath(filePath); - 读取本地文件npm/lib/setup.cjs:207
const stat = await fs.stat(selectedPath); - 读取本地文件npm/lib/setup.cjs:212
return await fs.readFile(selectedPath, "utf8"); - 执行外部命令固定命令npm/lib/setup.cjs:374
const result = spawnSync("uvx", ["--version"], { stdio: "ignore" }); - 读取本地文件npm/lib/setup.cjs:386
const skillSource = await fs.readFile(BUNDLED_SKILL_PATH, "utf8"); - 写入本地文件npm/lib/setup.cjs:427
await fs.mkdir(path.dirname(selectedPath), { recursive: true }); - 读取本地文件npm/lib/setup.cjs:428
const originalMode = await fs.stat(selectedPath).then( - 写入本地文件npm/lib/setup.cjs:444
await fs.rename(temporary, selectedPath); - 删除本地文件npm/lib/setup.cjs:446
await fs.unlink(temporary).catch((error) => { - 删除本地文件npm/lib/setup.cjs:454
await fs.unlink(filePath).catch((error) => {
扫描于 2026/11/2(1 天前) · 范围 全包扫描 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 发现类型化操作
- 运行数学操作
- 组合操作结果
可组合的数学工具,供智能体使用
README
由 DeepSeek 最新模型翻译生成English · 简体中文
Jacobian
为智能体提供可执行的数学词汇:发现一个类型化操作,运行它,并组合其结果。
Jacobian 是一个 MCP 服务器,为 AI 智能体提供一套可搜索、类型化的数学操作。math.find 用来匹配候选操作或读取一个操作的精确契约,math.run 执行该契约并返回类型化结果。同样的数学库也可以通过 CLI 和原生 Python API 直接使用。
每个操作只确立一个稳定、可复用的数学后置条件,而不是规定工作流或证明策略。声称精确的地方就会保持精确,近似、不完备或不确定性也会显式标出。
Jacobian 的假设是:数学推理会受益于一套语义范围明确、有界且可执行的词汇。 与其提供庞大的领域求解器或预先排好的工作流,Jacobian 只提供可搜索、可组合的数学原语——智能体可以把它们拼成超出单个操作设计目标的解法。库负责提供可信的数学步骤,模型决定怎么选、怎么组合、何时停。操作保持语义范围明确并由所属领域维护,避免把某种证明策略固化到工具里。
更多关于语义原子性的讨论,见可执行的数学词汇。
展开完整文档(README 剩余 1 节)
English · 简体中文
Jacobian
为智能体提供可执行的数学词汇:发现一个类型化操作,运行它,并组合其结果。
Jacobian 是一个 MCP 服务器,为 AI 智能体提供一套可搜索、类型化的数学操作。math.find 用来匹配候选操作或读取一个操作的精确契约,math.run 执行该契约并返回类型化结果。同样的数学库也可以通过 CLI 和原生 Python API 直接使用。
每个操作只确立一个稳定、可复用的数学后置条件,而不是规定工作流或证明策略。声称精确的地方就会保持精确,近似、不完备或不确定性也会显式标出。
Jacobian 的假设是:数学推理会受益于一套语义范围明确、有界且可执行的词汇。 与其提供庞大的领域求解器或预先排好的工作流,Jacobian 只提供可搜索、可组合的数学原语——智能体可以把它们拼成超出单个操作设计目标的解法。库负责提供可信的数学步骤,模型决定怎么选、怎么组合、何时停。操作保持语义范围明确并由所属领域维护,避免把某种证明策略固化到工具里。
更多关于语义原子性的讨论,见可执行的数学词汇。
快速开始
用一条命令为你的智能体配好 Jacobian,需要 Node.js 20.17+、22.13+ 或 23.5+,并确保 uvx 在 PATH 中:
npx jacobian@latest setup
它会检测已安装的智能体,让你在写入前确认改动。它不会帮你安装 Node.js、Python、uv 或智能体本身。需要自动化预览时,可用 npx jacobian@latest setup --codex --dry-run 查看计划;只有在明确指定 --codex、--all 等参数时才加 --yes。
不用全局安装,也可直接运行标准的 Python MCP 命令:
uvx --python 3.12 --from jacobian jacobian-mcp
若 MCP 客户端只能通过 npm 命令启动,npm 包会原样转发到同一条命令:
npx jacobian mcp
需要长期安装时:
python -m pip install jacobian
jacobian-mcp
这个包自带了 Jacobian 维护的完整 Python 后端栈:SymPy、NetworkX、Z3 和 Python-FLINT。所以无论是常规的 Python 安装还是 npm 安装,你拿到的都是同一套基于 Python 的内置操作。官方测试过的环境是 glibc Linux x86-64 上的 CPython 3.12 / 3.13,发版时会在这两个版本上安装构建好的 wheel 并启动验证。其他系统也可能有可用的上游 wheel,但不在官方测试范围内。特别地,Alpine/musl 无法从 PyPI 装全必需的后端。
Python 发行包里包含了数学内核、CLI 和 MCP 服务器。npm 包本身不提供 JavaScript API,只是把当前 npm 包的精确版本映射到对应的 uvx 调用。
计算一个有界结果
普通操作直接返回数学结果。例如,matrix.determinant.compute 接收一个精确的有理数矩阵,直接返回它的行列式。你可以把类型化的结果传给下一个操作,串起来完成更复杂的计算。
在本地终端中,先查看已安装操作的精确契约,再运行其中一个示例:
jacobian inspect integer.compute.extended_gcd
jacobian run integer.compute.extended_gcd --json '{"left":"84","right":"30"}'
第二条命令会以 JSON 返回最大公约数和 Bézout 系数。在 MCP 主机中,用用 math.find 的检查模式查看同一份契约,再用相同形状的 payload 调用 math.run。具体的智能体调用流程见发现和调用操作。
可用的数学能力
内置能力覆盖:
- 多项式映射与多项式代数;
- 精确线性代数;
- 图、路径、着色与同构;
- 有界 SAT 和 SMT 求解;
- 有限代数、概率、几何与拓扑。
SAT 和 SMT 操作直接调用 Z3 的 Python 绑定。用 math.find 匹配所需的数学结果并查看候选操作的契约,最后用 math.run 执行一次。
请参阅领域操作库了解操作契约与准入规则,用 math.find 查找实际操作,并参阅后端要求。
状态
Jacobian 0.23.0 仍为预稳定版本。已发布包和操作契约即为受支持的接口,实验性契约可能在后续版本中调整。
文档
- 文档首页:教程、操作指南、参考和原理说明
- 架构:运行时结构与信任边界
- 产品模型:操作契约、归属和项目边界
- 工具参考:MCP 资源与调用契约
- 后端要求:维护的 Python 后端
- 远程部署:HTTP 部署与身份认证
贡献
Jacobian 使用 Python 3.12、uv 和精简的 Makefile:
make setup
make handoff LANE=math TESTS=tests/math/graphs/test_graph_distance_matrix.py
改代码前请先读 CONTRIBUTING.md,里面有聚焦的测试命令、校验规则、文档组织和 PR 要求。
许可证
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
morluto/jacobian
为智能体提供可执行的数学词汇:发现一个类型化操作,运行它,并组合其结果。
相关插件 · 工具 / 效率
破甲管控台kingcharleslzy-ai/dsh-purge
dsh-purge Community · DeepSeek Harness 社区维护版:宿主兼容、状态诊断、提示词管理、更新与本机备份回滚。基于小杨 / YuJunZhiXue 的 dsh-purge。
★ 4,173已汉化DeepSeek 客户端
74.4
网文长卷lingfengQAQ/webnovel-writer
基于 Claude Code 的长篇网文辅助创作系统,解决 AI 写作中的「遗忘」和「幻觉」问题,支持 200…
★ 7,636已汉化DSH
72.2
多智能体协作HKUDS/AutoSwarm
AutoSwarm: Unify Your Agents. Unify Your Context (Codex · Claude Code · DeepSeek Harness · Muse · Grok · WorkBuddy· nanobot · and more)
★ 2,197已汉化DSH
71.7
Vox 拼贴视频生成Alisa0808/vox-director
🎬 Vox Director拼贴动效导演
★ 2,129已汉化DSH
71.4
Agent 演化引擎Q00/ouroboros
智能体 OS:智能体自己变聪明,我们只守住底线:面试准入、分阶段评估、带预算的进化循环。MCP 服务器,14 种运行时:Claude Code、Codex CLI、Gemini CLI、OpenCode、Copilot、Kiro 等。
★ 6,308已汉化DSH
71.3
智能体运行框架路由HarnessRouter/harnessrouter
智能体运行框架的统一接口。
★ 3,897已汉化DSH
71.2