1. 项目概述当AI遇上杠杆预测市场最近在捣鼓AI Agent的生态工具发现了一个挺有意思的东西dimes-fi/multiply-mcp。简单说这是一个MCP服务器能让Claude这类AI助手直接接入Dimes Multiply这个杠杆预测市场协议。想象一下你正在和Claude讨论美国大选的走向随口问一句“现在哪个预测市场的杠杆倍数最高”它就能直接调用工具从Polymarket、Kalshi这些平台上拉回实时数据并告诉你哪个市场支持10倍杠杆流动性如何保证金要求是多少。这不再是科幻场景而是已经可以跑通的现实。对于熟悉DeFi和预测市场的朋友来说Dimes Multiply并不陌生。它是一个嵌入式的杠杆层允许交易者在Polymarket等预测市场上进行高达10倍的杠杆交易。而MCP全称Model Context Protocol是Anthropic推出的一套协议旨在让AI模型能够安全、标准化地调用外部工具和数据源。multiply-mcp这个项目正是将这两者桥接起来的关键组件。它把复杂的链上杠杆操作、市场数据查询、仓位管理封装成了几个简单的自然语言工具让AI Agent能像调用一个普通函数一样去执行这些专业的金融操作。这个工具的核心价值在于“降维”。预测市场本身就有一定的认知门槛再加上杠杆、保证金、资金费率这些概念对普通用户甚至一些开发者来说都显得复杂。而现在你只需要用最自然的语言向AI描述你的需求背后的所有技术细节——API调用、数据解析、风险参数计算——都由这个MCP服务器和AI模型协同处理了。无论是想快速扫描高杠杆机会的交易员还是想研究市场情绪的 analyst亦或是想为自己的AI助手增加金融感知能力的开发者这个工具都提供了一个极其便捷的入口。2. 核心组件与工具链拆解2.1 MCP协议AI的“手”和“眼”要理解multiply-mcp首先得搞明白MCP是什么。你可以把它想象成给AI模型安装的一套标准化的“外设驱动”。在没有MCP之前如果你想给Claude增加一个查天气的功能可能需要针对Claude的特定接口去开发一个插件这个插件换到其他AI模型上可能就用不了了。MCP的目标就是解决这种碎片化问题它定义了一套通用的协议任何符合MCP标准的服务器Server提供的工具Tools都能被任何支持MCP的客户端Client如Claude Desktop所调用。一个MCP服务器本质上是一个独立的进程它通过标准输入输出或HTTP与AI客户端通信。服务器会向客户端“广告”自己有哪些工具可用每个工具需要什么参数。当用户在聊天中触发某个需求时AI模型会判断是否需要调用工具然后将用户的自然语言转换成结构化的参数发给MCP服务器执行。服务器执行完毕后将结果以结构化的格式返回AI模型再将其组织成自然语言回复给用户。multiply-mcp扮演的就是这个服务器的角色它封装了对Dimes Multiply API的所有调用逻辑。2.2 Dimes Multiply预测市场的“涡轮增压器”Dimes Multiply并不是一个独立的预测市场平台而是一个建立在现有预测市场之上的杠杆协议层。目前它主要支持Polymarket和Kalshi。它的工作原理可以类比为传统金融中的保证金交易但实现方式是基于智能合约的DeFi逻辑。假设Polymarket上有一个事件“特朗普是否赢得2024年大选”市场上有“是”和“否”两个结果代币。正常情况下你需要花1美元购买一个“是”代币如果特朗普赢了这个代币可以赎回1美元否则归零。通过Multiply你可以只提供0.2美元作为保证金然后协议会帮你借入0.8美元买入总计1美元的“是”代币。这就是5倍杠杆。你的盈亏被放大了如果特朗普赢了你拿回1美元偿还0.8美元借款后净赚0.8美元用0.2美元本金赚0.8美元收益率400%如果输了你的0.2美元保证金全部损失。协议会实时计算仓位的健康度一旦保证金不足以覆盖潜在亏损就会触发清算。multiply-mcp通过Dimes的官方API与这一整套系统交互。这意味着通过AI执行的每一个查询或操作最终都映射到了链上真实的状态和合约调用。这不仅仅是“查询”在获得适当授权后理论上AI甚至可以帮你执行开仓、平仓等操作尽管当前版本的公开工具以查询为主。这种将复杂金融协议抽象为语言接口的能力是AI Agent在垂直领域落地的典型范例。2.3 工具集详解AI能做什么multiply-mcp暴露了六个核心工具这构成了AI所有能力的边界。理解每个工具的输入输出是有效使用它的关键。multiply_search_markets(搜索预测市场)这是最常用的工具相当于你的市场雷达。它支持多种过滤条件platform: 平台筛选如polymarket或kalshi。query: 关键词搜索比如 “election” 或 “bitcoin”。minLeverage/maxLeverage: 杠杆倍数范围。想找刺激的可以设minLeverage: 5。minLiquidity: 最低流动性过滤避免进入深度太差、滑点高的市场。status: 市场状态如open开放交易、resolved已结算等。 AI在调用这个工具时会尝试将你的模糊需求转化为具体的参数。例如“帮我找找最近有哪些关于科技公司的高杠杆市场”AI可能会组合query: “tech”和minLeverage: 3这样的参数。multiply_get_market(获取市场详情)当你对某个特定市场感兴趣时就用这个工具。你需要提供市场的唯一标识符marketId。它会返回该市场的详细信息包括所有可能的结果outcomes、每个结果的当前价格、最大允许杠杆倍数、总流动性等。这是你做出交易决策前进行深度分析的基础。multiply_get_leverage_info(获取杠杆信息)杠杆不是免费的午餐。这个工具用于查询特定市场marketId或通用情况下的杠杆细则。它会返回不同杠杆倍数如2x, 5x, 10x对应的初始保证金率、维持保证金率以及资金费率。资金费率是一个关键概念在杠杆头寸持有期间多头和空头之间会定期支付费用以促使市场价格锚定现货预测市场的价格。高杠杆通常伴随着更高的资金费率这是持有成本的一部分。multiply_list_positionsmultiply_get_position(管理仓位)这两个工具用于管理你的杠杆仓位。list_positions可以列出所有仓位并可通过status过滤open,closed,liquidated。get_position则需要具体的positionId它会给出该仓位的详细信息开仓价、当前盈亏、强平价格、保证金占比等。强平价格是需要重点关注的它告诉你市场价变动到什么位置你的仓位会被自动清算。通过与AI的对话你可以随时监控自己的风险暴露比如问“我那个5倍杠杆的仓位现在强平价格是多少还安全吗”multiply_get_account(查看账户)这是一个总览性工具返回你连接API的Dimes账户概况。包括总余额、已锁定为保证金的金额、以及一个综合的健康因子。健康因子是一个重要的风险指标数值越低说明你的整体仓位越接近清算边缘。保持对账户整体健康状况的感知是进行杠杆交易时的纪律。注意目前公开的工具列表主要以查询功能为主。这意味着AI主要扮演一个“分析师”或“监控助手”的角色。实际的开仓、平仓交易操作可能需要通过其他方式如直接使用Dimes前端或SDK完成或者未来该MCP服务器可能会增加相应的工具。在询问AI进行交易时务必清楚当前的能力边界。3. 从零开始环境配置与实操指南3.1 前期准备获取API密钥一切始于API密钥。没有它你的MCP服务器无法与Dimes的后端服务对话。访问开发者门户打开浏览器访问https://app.dimes.fi/developers。你需要使用你的钱包如MetaMask连接Dimes应用。确保这个钱包地址是你打算用于交易和查询的地址。创建API密钥在开发者页面你应该能看到创建新API密钥的选项。点击创建系统可能会让你为这个密钥命名例如“Claude-Desktop-MCP”以便于管理。安全保存创建成功后页面会显示你的API密钥通常是一串长字符。请务必立即复制并妥善保存因为它通常只显示一次。你可以将其保存在本地的密码管理器或一个安全的文本文件中。这个密钥关联着你的账户拥有它就可以查询你的仓位和账户信息因此要像保护私钥一样保护它尽管它不能直接转移资产。实操心得建议为不同的应用场景创建不同的API密钥。例如专门为Claude Desktop创建一个为自定义脚本再创建一个。这样如果某个密钥意外泄露你可以单独将其撤销而不影响其他服务。Dimes的开发者面板通常也提供密钥的禁用或删除功能。3.2 安装MCP服务器dimes-fi/multiply-mcp是一个Node.js包提供了全局命令行工具和可编程的服务器。安装非常简单。打开你的终端命令行工具执行以下命令npm install -g dimes-fi/multiply-mcp这个-g参数代表全局安装安装完成后你可以在系统的任何位置直接运行multiply-mcp这个命令。安装可能遇到的问题及解决权限错误在Linux或macOS上全局安装可能需要sudo权限。你可以使用sudo npm install -g ...但更安全的方式是配置npm使用无需root的全局安装目录。或者你也可以选择不全局安装后续通过npx来运行后面会提到。Node.js版本确保你的Node.js版本不要太旧建议使用Node 18或20的LTS版本。可以使用node -v检查。网络问题如果遇到下载缓慢或超时可以考虑配置npm的国内镜像源。安装完成后可以运行multiply-mcp --help或multiply-mcp --version来验证安装是否成功。3.3 配置Claude Desktop推荐方式Claude Desktop是Anthropic官方的桌面应用程序它内置了对MCP的原生支持配置起来最方便。定位配置文件Claude Desktop的配置文件通常位于以下位置macOS:~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:%APPDATA%\Claude\claude_desktop_config.jsonLinux:~/.config/Claude/claude_desktop_config.json如果文件或目录不存在你需要手动创建。编辑配置文件用任何文本编辑器如VS Code、记事本打开这个JSON文件。如果文件是空的就从一对花括号{}开始。添加MCP服务器配置将以下配置块添加到JSON文件中。关键是替换your-api-key-here为你之前获取的真实API密钥。{ mcpServers: { multiply: { command: multiply-mcp, env: { DIMES_API_KEY: your-api-key-here } } } }multiply这是你给这个服务器起的名字在Claude内部会用到你可以自定义。command: multiply-mcp告诉Claude要执行的命令。因为我们全局安装了所以直接写命令名。env设置环境变量这里传递了关键的API密钥。保存并重启保存配置文件然后完全退出并重新启动Claude Desktop应用程序。重启后Claude会自动加载新的配置并启动multiply-mcp服务器进程。3.4 替代配置方案方案一配置Claude CodeVS Code插件如果你主要在VS Code中使用Claude Code插件配置方式类似。找到Claude Code的配置文件通常位于你的项目根目录或用户目录下的.claude/settings.json。配置内容略有不同因为它需要指定通过npx来运行包。{ mcpServers: { multiply: { command: npx, args: [dimes-fi/multiply-mcp], env: { DIMES_API_KEY: your-api-key-here } } } }这种方式的好处是无需全局安装multiply-mcpnpx会自动下载并运行最新版本。保存后重启VS Code或重新加载Claude Code窗口即可。方案二直接命令行运行对于开发、测试或临时使用你可以直接在终端中运行DIMES_API_KEYyour-api-key-here npx dimes-fi/multiply-mcp运行后服务器会启动并在本地监听默认通常是标准输入输出。此时你需要手动配置其他MCP客户端如一些SDK连接到这个本地服务器进程。这种方式更灵活但不如集成到Claude Desktop方便。注意事项无论哪种方式确保你的API密钥没有错误地提交到公开的代码仓库或分享给他人。配置文件中的密钥是明文存储的请确保你的电脑安全。4. 实战对话让AI成为你的市场分析师配置成功后Claude的对话界面并不会出现明显的变化没有新的按钮或菜单。它的能力是隐式的融合在自然语言对话中。下面通过几个真实的对话场景来展示如何与“武装了Multiply MCP”的Claude进行交互。4.1 场景一探索性市场扫描你的提问“最近有什么热门的、杠杆倍数比较高的预测市场吗”Claude的思考与行动意图理解Claude会解析你的问题识别出核心意图是“搜索市场”并提取关键过滤条件“热门”可能对应高流动性或新开市场、“杠杆倍数比较高”。工具选择与参数构造它会选择multiply_search_markets工具。对于“热门”它可能会设定一个合理的minLiquidity门槛比如500005万美元。对于“杠杆倍数比较高”它可能会设定minLeverage: 3。它可能不会指定平台以进行全局搜索。执行与回应Claude会在回复中展示它调用了工具并附上参数。片刻后它会收到一个结构化的市场列表数据然后将其转化为易于阅读的格式回复你“我搜索了流动性大于5万美元且支持3倍以上杠杆的市场。以下是目前的一些发现‘哪支球队将赢得2025年欧冠’(Polymarket)最高杠杆10x流动性$120,000状态开放中‘美联储在2024年7月前是否会降息’(Polymarket)最高杠杆5x流动性$85,000状态开放中‘比特币在2024年底前是否会突破10万美元’(Polymarket)最高杠杆8x流动性$200,000市场热度很高。 你可以告诉我你对哪个市场更感兴趣我可以为你获取更详细的信息比如具体的价格、保证金要求等。”你的跟进提问“我对比特币那个市场感兴趣详细说说另外用5倍杠杆做多的话资金费率是多少”Claude的思考与行动获取详情首先它会调用multiply_get_market传入比特币市场的ID获取该市场的基础信息如当前“是”和“否”的价格。查询杠杆成本接着调用multiply_get_leverage_info传入市场ID查询5倍杠杆对应的具体参数。综合回复Claude会综合两份数据回复你“好的我查了一下‘比特币在2024年底前是否会突破10万美元’这个市场市场ID: btc-100k-2024。当前市场状况‘是’会突破的价格$0.62‘否’不会突破的价格$0.38最大允许杠杆8x关于5倍杠杆做多初始保证金要求20%即1/5维持保证金要求约15%当保证金低于此比例可能触发清算资金费率目前约为年化-12%。注意负的资金费率意味着如果你做多买入‘是’你需要定期向做空者支付费用。这是持有杠杆头寸的重要成本在计算潜在收益时需要考虑进去。需要我帮你计算一下在当前价格下投入100美元使用5倍杠杆开仓你的强平价格大约是多少吗”4.2 场景二仓位管理与风险监控你的提问“我现在的账户整体情况怎么样有没有仓位快接近强平线了”Claude的思考与行动账户总览调用multiply_get_account获取账户余额、锁定保证金和健康因子。列出开放仓位调用multiply_list_positions设置参数status: “open”获取所有未平仓仓位列表。逐仓分析对于每个开放仓位可能再调用multiply_get_position获取其详细的强平价格和当前标记价格。风险评估与报告Claude会综合分析这些数据“根据你的账户数据总余额1,250 USDC已锁定保证金800 USDC账户健康因子1.8 通常低于1.2会进入高风险区间你的账户目前比较安全当前开放仓位仓位A特朗普胜选 5x杠杆强平价格‘是’价低于 $0.18当前市场价$0.55安全边际充足距离强平线较远。仓位B比特币破10万 8x杠杆强平价格‘是’价低于 $0.52当前市场价$0.62需要关注当前价格距离强平价格只有大约16%的下跌空间。由于是8倍高杠杆市场波动容易触及此线。建议密切关注该市场动态或考虑追加保证金、降低杠杆。”这个例子展示了AI如何将原始数据转化为直观的风险报告并给出初步建议。4.3 高级查询与组合分析你可以提出更复杂、更贴近真实分析师工作流的问题。你的提问“找出所有Polymarket上关于‘选举’主题并且流动性超过10万美元同时提供5倍以上杠杆的市场。然后按杠杆倍数从高到低排列。”Claude的思考与行动执行搜索调用multiply_search_markets参数为platform: “polymarket”,query: “election”,minLiquidity: 100000,minLeverage: 5。数据处理与排序收到结果列表后Claude会在其内部对数组进行排序按maxLeverage降序。格式化呈现以清晰的表格或列表形式呈现结果。“搜索完成共找到4个符合条件Polymarket平台、含‘选举’关键词、流动性10万、杠杆≥5x的市场。按最高杠杆排序如下市场标题最高杠杆流动性状态‘2024年美国总统大选哪位候选人将赢得普选票’10x$450,000开放‘共和党初选特朗普能否获得提名’8x$150,000开放‘英国2024年大选工党能否赢得多数席位’6x$120,000开放‘印度2024年大选NDA联盟是否会获胜’5x$110,000开放其中美国总统大选市场的流动性最深厚杠杆空间也最大。需要查看任一市场的详细条款吗”通过这样的交互AI彻底变成了一个不知疲倦、随叫随到的研究助理能够瞬间完成人力需要花费数分钟在多个网页间切换、筛选、计算的工作。5. 开发与扩展深入MCP服务器内部对于开发者而言multiply-mcp不仅是一个工具也是一个学习如何构建MCP服务器的优秀范例。项目代码结构清晰遵循了MCP的标准范式。5.1 项目结构与核心逻辑典型的MCP服务器TypeScript版会包含以下几个核心部分入口文件 (src/index.ts)这是服务器的启动点。它通常使用modelcontextprotocol/sdk创建Server实例。定义服务器提供的Tools工具列表。实现每个工具对应的处理函数handler。调用server.connect()与客户端建立连接通过stdio。工具定义每个工具都需要一个符合MCP协议的工具模式Tool Schema定义。这包括工具名、描述、输入参数的模式JSON Schema。例如multiply_search_markets工具的定义会详细说明它接受platform、query等参数以及每个参数的类型、是否必填、描述。工具处理器这是业务逻辑的核心。每个工具都有一个对应的异步函数。在这个函数中从输入参数中解析出请求数据。调用底层的业务SDK这里是Dimes的TypeScript SDK或直接发送HTTP请求到外部API。处理API响应可能进行数据转换、错误处理。返回符合MCP协议格式的结果。依赖与配置项目依赖dimes-fi/multiply-sdk这个官方SDK来与Dimes API交互。API密钥通过环境变量DIMES_API_KEY传入在工具处理器中通过SDK客户端初始化时使用。5.2 本地开发与调试如果你想基于此项目进行二次开发或者学习其实现可以轻松地在本地运行# 1. 克隆仓库 git clone https://github.com/dimes-fi/multiply-mcp cd multiply-mcp # 2. 安装依赖 npm install # 3. 构建TypeScript代码如果src是TS npm run build # 通常对应 tsc 命令 # 4. 运行服务器设置你的API密钥 DIMES_API_KEYyour-test-key-here npm start调试技巧你可以在工具处理器函数中添加console.log语句来打印中间变量或API响应这些日志会输出到服务器的标准错误流。在Claude Desktop中配置时可以在终端中看到这些日志如果Claude Desktop有日志输出窗口。使用npx ts-node src/index.ts可以直接运行TypeScript源码无需每次构建适合快速迭代开发。可以编写简单的测试脚本模拟MCP客户端向你的服务器发送请求来独立测试工具功能。5.3 扩展思路构建你自己的金融AI工具multiply-mcp的模式可以复制到其他DeFi协议或数据服务上。想象一下你可以构建uniswap-mcp让AI查询代币价格、池子流动性、甚至计算最优交易路径。lending-mcp让AI查询Compound、Aave等借贷平台的利率、抵押率以及你的仓位健康度。onchain-analytics-mcp集成Dune Analytics或Flipside的API让AI能够执行复杂的链上数据查询。构建这样一个服务器的关键步骤是定义工具集思考你的协议或服务有哪些核心功能可以抽象为自然语言指令是查询、计算还是交易封装SDK或API创建或使用现有的JavaScript/TypeScript SDK来与目标服务交互。确保做好错误处理和类型安全。遵循MCP协议使用modelcontextprotocol/sdk来构建服务器正确定义工具模式和处理器。设计提示词考虑用户会如何提问你的工具参数设计是否能覆盖这些意图参数命名是否清晰开发注意事项在构建涉及交易或资金操作的MCP服务器时安全性是重中之重。必须严格遵守最小权限原则API密钥或私钥绝不能硬编码在代码中。对于交易类操作需要考虑增加二次确认机制或者现阶段仅实现查询功能待MCP和AI Agent的授权与确认流程更加成熟后再行扩展。multiply-mcp目前聚焦于查询是一个安全且实用的起点。6. 常见问题与故障排除实录在实际使用和开发过程中你可能会遇到一些典型问题。以下是我在测试和探索中遇到的情况及解决方法。6.1 配置与连接问题问题1Claude Desktop重启后提示无法连接到MCP服务器。可能原因A配置文件语法错误。JSON格式非常严格多一个逗号或少一个引号都会导致解析失败。排查使用在线的JSON验证工具如 jsonlint.com粘贴你的claude_desktop_config.json内容进行检查。解决修正语法错误确保所有引号、括号配对最后一个属性后没有逗号。可能原因Bmultiply-mcp命令未找到。如果你没有全局安装或者安装路径不在系统的PATH环境变量中。排查打开终端直接输入multiply-mcp --version看是否能运行。解决重新全局安装npm install -g dimes-fi/multiply-mcp。或者在Claude配置中使用npx方案如前文所述改为{ command: npx, args: [dimes-fi/multiply-mcp], ... }可能原因CAPI密钥无效或过期。排查在终端中手动运行DIMES_API_KEYyour-key multiply-mcp观察输出。服务器启动时通常会尝试连接API如果密钥无效可能会在日志中报错。解决登录Dimes开发者后台确认密钥状态必要时重新生成一个。问题2Claude没有反应好像不知道有这些工具。可能原因Claude Desktop没有成功加载配置文件或者MCP服务器进程启动失败但未报错。排查与解决完全退出Claude Desktop包括任务栏/托盘图标再重新启动。检查Claude Desktop是否有日志窗口或开发者工具有时在设置中。查看是否有MCP相关的错误信息。尝试一个明确的工具调用指令例如直接说“请使用 multiply_search_markets 工具搜索一下市场。” 如果Claude回应“我不知道这个工具”则说明连接未建立。如果它尝试调用但失败则会返回工具调用错误。6.2 工具使用与数据问题问题3AI调用的工具参数不符合我的预期比如搜索范围太广或太窄。原因AI对自然语言的解读可能存在偏差。MCP工具的参数是固定的AI需要将模糊的指令映射到具体参数值。解决在提问时尽量具体化。不要只说“找热门市场”可以说“找流动性超过5万美元并且杠杆倍数在3倍以上的市场”。你甚至可以指导AI“请使用multiply_search_markets工具并将minLiquidity参数设为50000minLeverage设为3。” 经过几次交互AI也能更好地学习你的偏好。问题4查询返回“未找到市场”或数据为空。可能原因A过滤条件过于严格。例如同时要求高流动性、高杠杆和特定关键词可能当前确实没有符合条件的市场。解决放宽过滤条件例如先去掉minLeverage看看有多少市场再逐步收紧。可能原因B平台名称拼写错误。工具参数可能对平台名称大小写敏感比如polymarket不能写成PolyMarket。解决参考工具定义或文档使用正确的平台标识符。通常是小写如polymarket,kalshi。可能原因CAPI服务暂时不可用或网络问题。解决稍后重试。可以手动访问Dimes网站确认服务状态。问题5如何查询某个特定市场ID我在网站上看到的ID和工具返回的不一样。原因Dimes Multiply作为一层协议它可能有自己内部使用的市场标识符与底层预测市场平台如Polymarket的ID不同。解决最可靠的方式是先使用multiply_search_markets进行搜索从搜索结果中获取marketId。这个ID才是Multiply API体系内认可的。不要尝试从其他来源拼接ID。6.3 安全与最佳实践问题6使用这个MCP服务器安全吗我的API密钥会不会泄露风险分析API密钥存储在本地配置文件中只要你的电脑没有恶意软件风险是可控的。该密钥目前主要用于查询权限有限。但理论上拥有此密钥可以查询你账户的所有仓位和余额信息。安全建议使用环境变量在配置文件中环境变量值是以明文存储的。确保配置文件权限设置合理如600并且不将其上传到公开的Git仓库。定期轮换密钥在Dimes开发者后台定期如每月更新API密钥并更新本地配置文件。最小权限目前无法细分权限但未来如果Dimes支持创建只读API密钥应优先使用。隔离环境考虑在专用的、安全的电脑或用户环境中使用此类金融工具集成。问题7AI给出的金融建议如“这个市场有机会”可以盲从吗绝对不可以。AI当前主要是Claude在这里扮演的是一个数据检索和计算器的角色。它能够快速、准确地获取市场数据、计算保证金和强平价格。但它不具备真正的市场预测、投资判断或风险管理能力。它的所有分析都基于已有数据和固定公式。正确态度将AI视为你的超级助理它帮你处理繁琐的数据收集和整理工作但最终的决策权必须牢牢掌握在你手中。永远要对杠杆交易保持敬畏充分理解其高风险性绝不投入超出承受能力的资金。这个工具的价值在于极大地提升了信息获取和监控的效率将你从重复性的数据查询中解放出来让你能更专注于策略思考和风险决策本身。它代表了AI与专业领域工具结合的一个非常务实且有力的方向。