DeepSeek又开源了!Harness:一个让AI Agent像搭积木一样组装的框架

AI 时代程序员必备技能

Codex、Claude Code、Cursor、Hermes Agent、OpenClaw等工程化实战专栏 ,讲透 AI 如何接管脏活累活

“# DeepSeek\u53c8\u5f00\u6e90\u4e86\uff01Harness\uff1a\u4e00\u4e2a\u8ba9AI Agent\u50cf\u642d\u79ef\u6728\u4e00\u6837\u7ec4\u88c5\u7684\u6846\u67b6\n\n> \u672c\u6587\u662f\u300aDeepSeek Harness \u6e90\u7801\u5206\u6790\u300b\u7cfb\u5217\u7684\u7b2c 2 \u7bc7\uff08\u5f00\u573a\u4ecb\u7ecd\u7bc7\uff09\u3002\u5982\u679c\u4f60\u8fd8\u6ca1\u770b\u8fc7\u7b2c 1 \u7bc7\u6982\u89c8\uff0c\u53ef\u4ee5\u5148\u8865\uff1ahttps://blog.csdn.net/qq_25964837/article/details/163763093\u3002\u672c\u7bc7\u6211\u4eec\u4e0d\u8bb2\u5e95\u5c42\u6e90\u7801\uff0c\u5148\u5efa\u7acb\u4e00\u79cd\u300c\u62fc\u88c5\u601d\u7ef4\u300d\u2014\u2014\u770b\u6e05 dsh \u4e3a\u4ec0\u4e48\u80fd\u8ba9 Agent \u50cf\u4e50\u9ad8\u4e00\u6837\u642d\u51fa\u6765\u3002\n\n—\n\n## \u4e00\u3001DeepSeek \u53c8\u5f00\u6e90\u4e86\uff0c\u4f46\u8fd9\u6b21\u4e0d\u662f\u6a21\u578b\n\n2024\u20132025 \u5e74\uff0cDeepSeek \u4e00\u6b21\u6b21\u7528\u6a21\u578b\u5237\u5c4f\u3002\u4f46 deepseek-harness\uff08dsh\uff09\u4e0d\u592a\u4e00\u6837\uff1a\u5b83\u4e0d\u662f\u53c8\u4e00\u4e2a\u5927\u6a21\u578b\uff0c\u800c\u662f\u4e00\u4e2a AI Agent \u6846\u67b6\uff0c\u77ed\u77ed\u65f6\u95f4\u51b2\u5230 88K+ Star\u3002\n\n\u5b83\u6700\u6293\u4eba\u7684\u4e00\u53e5 Slogan \u53ea\u6709\u4e09\u4e2a\u8bcd\uff1a\n\n> Everything is a Plugin.\n\n\u8868\u9762\u770b\u662f\u5ba3\u4f20\u8bed\uff0c\u5b9e\u5219\u662f\u67b6\u6784\u7684\u6bcf\u4e00\u5c42\u90fd\u5728\u5151\u73b0\uff1a\u6a21\u578b\u662f\u63d2\u4ef6\u3001\u5de5\u5177\u662f\u63d2\u4ef6\u3001\u4f1a\u8bdd\u65e5\u5fd7\u662f\u63d2\u4ef6\u3001\u751a\u81f3\u6c99\u7bb1\u548c\u6587\u4ef6\u7cfb\u7edf\u90fd\u901a\u8fc7\u63d2\u4ef6\u63d0\u4f9b\u3002\n\n\u8fd9\u5e26\u6765\u7684\u76f4\u63a5\u4f53\u9a8c\u662f\uff1a**\u4f60\u4e0d\u7528 fork \u6e90\u7801\u3001\u4e0d\u7528\u6539\u4e00\u884c\u6838\u5fc3\u4ee3\u7801\uff0c\u5c31\u80fd\u300c\u62fc\u300d\u51fa\u4e00\u4e2a\u5b8c\u5168\u7b26\u5408\u81ea\u5df1\u9700\u6c42\u7684 AI Agent\u3002**\n\n\u5c31\u50cf\u642d\u4e50\u9ad8\u3002\n\n—\n\n## \u4e8c\u3001\u4f20\u7edf\u6846\u67b6\u7684\u75db\uff1a\u60f3\u6539\u4e00\u70b9\uff0c\u5f97 fork \u4e00\u5927\u7247\n\n\u5148\u8bf4\u4f20\u7edf Agent \u6846\u67b6\u4e3a\u4ec0\u4e48\u96be\u7528\u3002\n\n\u5927\u591a\u6570\u6846\u67b6\u91cc\uff0c\u300c\u6838\u5fc3\u80fd\u529b\u300d\u548c\u300c\u80fd\u529b\u5b9e\u73b0\u300d\u662f**\u7d27\u8026\u5408**\u7684\uff1a\n\n- \u60f3\u6362\u6a21\u578b\uff1f\u6539\u4ee3\u7801\u3002\n- \u60f3\u52a0\u4e00\u4e2a\u5de5\u5177\uff1f\u6539\u4ee3\u7801\u3002\n- \u60f3\u6362\u6267\u884c\u73af\u5883\uff08\u672c\u5730 \u2194 \u4e91\u7aef\uff09\uff1f\u6539\u4ee3\u7801\u3002\n- \u60f3\u6362\u5b58\u50a8\uff08\u5185\u5b58 \u2194 \u6570\u636e\u5e93\uff09\uff1f\u8fd8\u662f\u6539\u4ee3\u7801\u3002\n\n\u7ed3\u679c\u5c31\u662f\uff1a\u6bcf\u63a5\u4e00\u4e2a\u65b0\u9700\u6c42\uff0c\u4f60\u90fd\u5728\u6539\u6846\u67b6\u672c\u8eab\u3002\u9879\u76ee\u8d8a\u6539\u8d8a\u50cf\u300c\u6846\u67b6\u7684\u4e00\u4e2a\u79c1\u6709 fork\u300d\uff0c\u5347\u7ea7\u4e0a\u6e38\u7b49\u4e8e\u91cd\u5199\u3002\n\ndsh \u7684\u89e3\u6cd5\u5f88\u5e72\u8106\uff1a**\u628a\u6240\u6709\u80fd\u529b\u62bd\u8c61\u6210\u300c\u79ef\u6728\u300d\uff08\u63d2\u4ef6\uff09\uff0c\u7528\u914d\u7f6e\u7ec4\u5408\uff0c\u800c\u4e0d\u662f\u7528\u4ee3\u7801\u6539\u9020\u3002**\n\n\n\u6846\u67b6\u6838\u5fc3\uff08\u65e0\u7279\u6743\uff09\n \u251c\u2500 [\u6a21\u578b\u79ef\u6728] ctx.llm\n \u251c\u2500 [\u5de5\u5177\u79ef\u6728] ctx.tools (bash / fs / shell / LSP / mcp)\n \u251c\u2500 [\u6267\u884c\u79ef\u6728] sandbox (local / E2B)\n \u251c\u2500 [\u5b58\u50a8\u79ef\u6728] session / storage\n \u2514\u2500 [\u754c\u9762\u79ef\u6728] apps/web / apps/cli\n\n\n\u6bcf\u4e00\u5757\u90fd\u80fd\u5355\u72ec\u62bd\u8d70\u3001\u66ff\u6362\u3001\u53e0\u52a0\u2014\u2014\u8fd9\u5c31\u662f\u300c\u642d\u79ef\u6728\u300d\u3002\n\n—\n\n## \u4e09\u3001\u4e09\u5c42\u79ef\u6728\uff1a\u8fd0\u884c\u65f6 / \u80fd\u529b / \u7ec4\u5408\n\ndsh \u7684\u300c\u53ef\u62fc\u88c5\u300d\u7531\u4e09\u5c42\u6784\u6210\u3002\n\n### 1. \u8fd0\u884c\u65f6\u79ef\u6728\uff1aCordis\uff08\u63d2\u4ef6\u5373\u670d\u52a1\uff09\n\n\u6700\u5e95\u5c42\u662f Cordis \u8fd0\u884c\u65f6\uff08Koishi \u540c\u6b3e\u5185\u6838\uff09\u3002\u5b83\u7684\u94c1\u5f8b\u662f Plugin = Service\uff1a\u6ca1\u6709\u7279\u6743\u6838\u5fc3\uff0c\u63d2\u4ef6\u6ce8\u518c\u5373\u670d\u52a1\uff0c\u5378\u8f7d\u65f6\u81ea\u52a8\u56de\u6eda\u4e00\u5207\u526f\u4f5c\u7528\u3002\n\n> \u8fd9\u4e00\u5c42\u672c\u7cfb\u5217\u7b2c 3 \u7bc7\u4f1a\u6df1\u6316\u6e90\u7801\uff0c\u8fd9\u91cc\u5148\u8bb0\u4f4f\u4e00\u53e5\u8bdd\uff1a**\u6b63\u56e0\u4e3a\u8fd0\u884c\u65f6\u652f\u6301\u300c\u53ef\u70ed\u62d4\u63d2\u300d\uff0c\u4e0a\u5c42\u7684\u79ef\u6728\u624d\u80fd\u968f\u610f\u62c6\u88c5\u3002**\n\n### 2. \u80fd\u529b\u79ef\u6728\uff1a50+ packages\n\n\u4e2d\u95f4\u5c42\u662f dsh \u81ea\u5e26\u7684\u7ea6 50 \u4e2a packages\uff0c\u6bcf\u4e2a\u90fd\u662f\u4e00\u4e2a\u80fd\u529b\u79ef\u6728\uff1a\n\n| \u79ef\u6728\u7c7b\u522b | \u4ee3\u8868\u5305 | \u63d0\u4f9b\u7684\u80fd\u529b |\n|----------|--------|------------|\n| Agent \u6838\u5fc3 | core/agent\u3001core/agent-loop | Agent \u5faa\u73af\u3001\u4f1a\u8bdd\u9a71\u52a8 |\n| \u6a21\u578b | llm/llm\u3001llm/llm-streaming | \u6a21\u578b\u9002\u914d\u3001\u6d41\u5f0f\u8f93\u51fa |\n| \u6267\u884c | sandbox\u3001shell\u3001subprocess\u3001terminal\u3001fs\u3001code-runtime | \u5b89\u5168\u6267\u884c\u3001\u672c\u5730 Shell\u3001\u6587\u4ef6\u7cfb\u7edf\u3001\u4ee3\u7801\u8fd0\u884c |\n| \u534f\u8bae | mcp\u3001acp\u3001skill\u3001subagent | \u5916\u90e8\u5de5\u5177\u3001\u5185\u90e8\u901a\u4fe1\u3001\u6280\u80fd\u3001\u5b50\u4ee3\u7406 |\n| \u4f1a\u8bdd | session\u3001session-query\u3001compaction\u3001storage\u3001goal\u3001jobs | \u6301\u4e45\u5316\u3001\u538b\u7f29\u3001\u76ee\u6807\u3001\u540e\u53f0\u4efb\u52a1 |\n| \u5165\u53e3 | apps/cli\u3001apps/web | \u547d\u4ee4\u884c / Web UI |\n\n\u6ce8\u610f\u4e00\u4e2a\u7ec6\u8282\uff1a\u8fde fs\uff08\u6587\u4ef6\u7cfb\u7edf\uff09\u3001shell\uff08\u547d\u4ee4\u884c\uff09\u90fd\u662f**\u63d2\u4ef6**\uff0c\u4e0d\u662f\u6846\u67b6\u5185\u7f6e\u6b7b\u7684\u80fd\u529b\u3002\u8fd9\u610f\u5473\u7740\u2014\u2014\n\n### 3. \u7ec4\u5408\u79ef\u6728\uff1aProfile + Bundle + Patch\n\n\u6700\u4e0a\u5c42\u51b3\u5b9a\u300c\u600e\u4e48\u628a\u8fd9\u4e9b\u79ef\u6728\u62fc\u8d77\u6765\u300d\uff1a\n\n- Profile\uff1a\u5165\u53e3\u914d\u7f6e\uff0c\u51b3\u5b9a\u52a0\u8f7d\u54ea\u4e00\u7ec4 Bundle\uff08\u4f8b\u5982 web / headless\uff09\n- Bundle\uff1aCordis \u63d2\u4ef6\u7684\u6253\u5305\u683c\u5f0f\uff0c\u4e00\u7ec4\u63d2\u4ef6\u7684\u96c6\u5408\n- Patch\uff1aYAML \u5f62\u5f0f\u7684\u65e0\u4fb5\u5165\u8986\u76d6\uff0c\u6539\u914d\u7f6e\u4e0d\u6539\u6e90\u7801\n\n\u4e09\u5c42\u53e0\u8d77\u6765\uff0c\u5c31\u662f dsh \u7684\u914d\u7f6e\u6a21\u578b\uff1a\n\n\nProfile\uff08\u9009\u54ea\u4e9b Bundle\uff09\n \u2514\u2500 Bundle\uff08\u4e00\u7ec4\u63d2\u4ef6\uff09\n \u2514\u2500 Patch\uff08\u8986\u76d6\u67d0\u4e2a\u63d2\u4ef6\u7684\u914d\u7f6e\uff09\n\n\n—\n\n## \u56db\u3001\u51e0\u5757\u300c\u79ef\u6728\u300d\u957f\u4ec0\u4e48\u6837\n\n\u5149\u8bf4\u6982\u5ff5\u592a\u865a\uff0c\u770b\u51e0\u5757\u5177\u4f53\u79ef\u6728\u3002\n\n**\u6a21\u578b\u79ef\u6728 ctx.llm\uff1a\u6362\u6a21\u578b\u53ea\u6539\u914d\u7f6e\uff0c\u4e0d\u52a8\u4ee3\u7801\u3002DeepSeek \u2194 GPT \u2194 Claude\uff0c\u5bf9\u4e0a\u5c42 Agent \u5b8c\u5168\u900f\u660e\u3002\n\n\u5de5\u5177\u79ef\u6728 ctx.tools\uff1abash\u3001fs\u3001shell\u3001LSP\u3001mcp \u5373\u63d2\u5373\u7528\u3002\u52a0\u81ea\u5b9a\u4e49\u5de5\u5177\u5c31\u662f\u6ce8\u518c\u4e00\u4e2a\u63d2\u4ef6\uff1a\n\nts\nctx.plugin({\n inject: { required: ['tools'] },\n apply(ctx) {\n ctx.tools.register('my-tool', {\n // \u5de5\u5177\u5b9a\u4e49\uff1a\u540d\u5b57\u3001\u53c2\u6570 schema\u3001\u6267\u884c\u51fd\u6570\n })\n }\n})\n\n\n\u6267\u884c\u79ef\u6728 sandbox\uff1a\u672c\u5730\u6267\u884c \u2194 \u4e91\u7aef E2B \u6c99\u7bb1\uff0c\u4e00\u952e\u5207\u6362\u3002\u4e0d\u53d7\u4fe1\u4ee3\u7801\u5168\u7a0b\u9694\u79bb\u3002\n\n\u5b58\u50a8\u79ef\u6728 session / storage\uff1a\u4f1a\u8bdd\u72b6\u6001\u53ef\u5185\u5b58\u3001\u53ef\u6301\u4e45\u5316\uff1b\u957f\u5bf9\u8bdd\u81ea\u52a8 compaction \u538b\u7f29\uff0c\u4e0d\u4f1a\u7206\u4e0a\u4e0b\u6587\u3002\n\n\u754c\u9762\u79ef\u6728 apps/web \u2194 apps/cli\uff1a\u540c\u4e00\u4e2a Agent \u6838\u5fc3\uff0c\u65e2\u80fd\u8dd1 Web UI\uff0c\u4e5f\u80fd\u8dd1\u65e0\u5934\u547d\u4ee4\u884c\u3002\n\n—\n\n## \u4e94\u3001\u5b9e\u6218\uff1a\u7528\u540c\u4e00\u76d2\u79ef\u6728\u62fc\u4e24\u4e2a\u4e0d\u540c\u7684 Agent\n\n\u6700\u80fd\u4f53\u73b0\u300c\u642d\u79ef\u6728\u300d\u7684\uff0c\u662f\u770b\u540c\u4e00\u5957\u63d2\u4ef6\u4ee3\u7801\uff0c\u600e\u4e48\u62fc\u51fa\u4e24\u4e2a\u5dee\u522b\u5de8\u5927\u7684 Agent**\u3002\n\nAgent A\uff1a\u672c\u5730\u4ee3\u7801\u52a9\u624b\n\n\nfs + shell + LSP + code-runtime + ctx.llm(DeepSeek) + apps/web\n\n\n\u672c\u5730\u8bfb\u5199\u78c1\u76d8\u3001\u8dd1\u547d\u4ee4\u3001\u4ee3\u7801\u8865\u5168\u3001\u6267\u884c\u7247\u6bb5\uff0cWeb \u754c\u9762\u91cc\u8ddf\u5b83\u5bf9\u8bdd\u3002\n\nAgent B\uff1a\u4e91\u7aef\u5b89\u5168 Agent\n\n\nfs + shell + LSP + code-runtime + ctx.llm(DeepSeek) + sandbox=E2B + apps/cli\n\n\n\u79ef\u6728\u51e0\u4e4e\u4e00\u6837\uff0c\u53ea\u628a\u300c\u6267\u884c\u73af\u5883\u300d\u4ece\u672c\u5730\u6362\u6210 E2B \u4e91\u7aef\u6c99\u7bb1\uff0c\u5165\u53e3\u4ece Web \u6362\u6210\u547d\u4ee4\u884c\u3002\n\n\u5173\u952e\u6765\u4e86\uff1aA \u548c B \u5171\u7528\u540c\u4e00\u4efd\u63d2\u4ef6\u4ee3\u7801\uff0c\u53ea\u5dee\u4e00\u4e2a Profile / Patch\u3002\u4f60\u4e0d\u9700\u8981\u4e3a B \u53e6\u5199\u4e00\u5957\u6846\u67b6\uff0c\u4e5f\u4e0d\u9700\u8981 fork\u3002\n\n\u8fd9\u5c31\u662f dsh \u6700\u503c\u94b1\u7684\u5730\u65b9\u2014\u2014**\u80fd\u529b\u8fb9\u754c\uff08Seam\uff09\u53ef\u66ff\u6362**\uff1a\u628a shell \u6307\u5411\u4e91\u7aef\uff0cBash \u5de5\u5177\u548c\u4ee3\u7801\u8865\u5168\u300c\u4e00\u8d77\u300d\u8fc1\u79fb\u5230\u4e91\u7aef\uff0c\u5e95\u5c42\u63d2\u4ef6\u5b8c\u5168\u4e0d\u77e5\u9053\u4e0a\u5c42\u6362\u4e86\u73af\u5883\u3002\n\n—\n\n## \u516d\u3001\u4e3a\u4ec0\u4e48\u300c\u642d\u79ef\u6728\u300d\u6bd4 fork \u5f3a\n\n| \u7ef4\u5ea6 | \u4f20\u7edf fork \u6539\u9020 | dsh \u62fc\u88c5 |\n|------|----------------|----------|\n| \u6539\u6a21\u578b | \u6539\u6e90\u7801 | \u6539 Profile \u914d\u7f6e |\n| \u52a0\u5de5\u5177 | \u6539\u6838\u5fc3 | \u6ce8\u518c\u63d2\u4ef6 |\n| \u6362\u6267\u884c\u73af\u5883 | \u6539\u6838\u5fc3 | Patch \u8986\u76d6 sandbox |\n| \u5347\u7ea7\u4e0a\u6e38 | \u75db\u82e6\u7684\u91cd\u5199 | \u63d2\u4ef6\u4e0d\u53d8\uff0c\u53ea\u5347\u7248\u672c |\n| \u5378\u8f7d\u80fd\u529b | \u624b\u52a8\u6e05\u526f\u4f5c\u7528 | \u8fd0\u884c\u65f6\u81ea\u52a8\u56de\u6eda |\n\n\u5c24\u5176\u662f\u6700\u540e\u4e00\u884c\uff1aCordis \u7684 Scope.disposables \u4f1a\u5728\u63d2\u4ef6\u5378\u8f7d\u65f6\u81ea\u52a8\u64a4\u6d88\u5b83\u6ce8\u518c\u7684\u4e00\u5207\uff08\u76d1\u542c\u3001\u8fde\u63a5\u3001\u5de5\u5177\uff09\u3002\u4f60\u62fc\u9519\u4e86\u4e00\u5757\uff0c\u62d4\u6389\u5c31\u597d\uff0c\u4e0d\u7559\u6b8b\u5c40\u3002\n\n—\n\n## \u4e03\u3001\u4e24\u5206\u949f\u4e0a\u624b\uff1a\u771f\u7684\u80fd\u62fc\n\nbash\n# \u65b9\u5f0f\u4e00\uff1a\u4e00\u952e\u4f53\u9a8c\uff08\u65e0\u9700\u514b\u9686\uff09\nnpx @deepseek-ai/dsh web\n\n# \u65b9\u5f0f\u4e8c\uff1a\u4ece\u6e90\u7801\u8dd1\ngit clone https://github.com/deepseek-ai/deepseek-harness.git\ncd deepseek-harness\npnpm install\npnpm run build\npnpm dsh web\n\n\n\u542f\u52a8\u540e\u8bbf\u95ee http://127.0.0.1:3080 \u5c31\u80fd\u770b\u5230 Web UI\u3002\u60f3\u770b\u6e05\u5f53\u524d\u5230\u5e95\u8dd1\u4e86\u54ea\u4e9b\u79ef\u6728\uff1a\n\nbash\npnpm dsh web --dump-config\n\n\n\u5b83\u4f1a\u628a\u5f53\u524d Profile / Bundle / Patch \u89e3\u6790\u540e\u7684\u5b8c\u6574\u914d\u7f6e\u6253\u5370\u51fa\u6765\u2014\u2014\u4f60\u62fc\u4e86\u54ea\u4e9b\u5757\uff0c\u4e00\u76ee\u4e86\u7136\u3002\n\n> \u76ee\u524d\u5904\u4e8e \u5f00\u53d1\u8005\u9884\u89c8\u7248\uff08developer preview\uff09\uff0c\u5feb\u901f\u8fed\u4ee3\u4e2d\uff0c\u751f\u4ea7\u4f7f\u7528\u8bf7\u6ce8\u610f\u517c\u5bb9\u6027\u58f0\u660e\u3002\n\n—\n\n## \u516b\u3001\u7cfb\u5217\u5bfc\u822a\uff1a\u63a5\u4e0b\u6765\u62c6\u54ea\u5757\u79ef\u6728\n\n\u672c\u7bc7\u5efa\u7acb\u4e86\u300c\u62fc\u88c5\u601d\u7ef4\u300d\u3002\u540e\u9762\u6211\u4eec\u4f1a\u4e00\u5757\u5757\u62c6\u5f00\u770b\uff1a\n\n- \u7b2c 3 \u7bc7\uff1aCordis \u8fd0\u884c\u65f6\u6e90\u7801\u2014\u2014\u300c\u63d2\u4ef6\u5373\u670d\u52a1\u300d\u548c\u53ef\u9006\u6ce8\u518c\u600e\u4e48\u5b9e\u73b0\n- Profile / Bundle / Patch\uff1a\u5982\u4f55\u7528\u914d\u7f6e\u7ec4\u5408\u51fa\u65e0\u9650\u53ef\u80fd\uff08\u542b YAML Patch \u5b9e\u6218\uff09\n- Agent Loop\uff1a\u4ece turn/start \u5230 turn/end \u7684\u4e8b\u4ef6\u7011\u5e03\n- \u5de5\u5177\u7cfb\u7edf\uff1atools/pre-execute \u2192 execute \u2192 post-execute \u6267\u884c\u7ba1\u9053\n- LLM \u9002\u914d\u5c42\uff1actx.llm \u5982\u4f55\u5bf9\u63a5\u4efb\u610f\u6a21\u578b\n- Seam \u80fd\u529b\u8fb9\u754c\uff1a\u4e3a\u4ec0\u4e48\u6362\u4e00\u4e2a Provider\uff0cBash \u548c LSP \u4e00\u8d77\u8fc1\u79fb\n\n—\n\n## \u9644\u5f55\n\n- \u9879\u76ee\u4ed3\u5e93\uff1ahttps://github.com/deepseek-ai/deepseek-harness\n- \u67b6\u6784\u6587\u6863\uff1ahttps://github.com/deepseek-ai/deepseek-harness/blob/main/docs/architecture.md\n- Cordis Primer\uff1ahttps://github.com/deepseek-ai/deepseek-harness/blob/main/docs/cordis-primer.md\n- \u7b2c 1 \u7bc7\u300a\u6982\u89c8\u300b\uff1ahttps://blog.csdn.net/qq_25964837/article/details/163763093\n”

AI 时代程序员必备技能

Codex、Claude Code、Cursor、Hermes Agent、OpenClaw等工程化实战专栏 ,讲透 AI 如何接管脏活累活

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

甄同学

感谢我的朋友

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值