{"id":221,"date":"2026-06-11T14:43:07","date_gmt":"2026-06-11T06:43:07","guid":{"rendered":"https:\/\/blog.mumudlin.com\/?p=221"},"modified":"2026-06-11T18:20:00","modified_gmt":"2026-06-11T10:20:00","slug":"reasonix-%e5%91%bd%e4%bb%a4%e4%bd%bf%e7%94%a8%e6%89%8b%e5%86%8c","status":"publish","type":"post","link":"https:\/\/blog.mumudlin.com\/index.php\/reasonix-%e5%91%bd%e4%bb%a4%e4%bd%bf%e7%94%a8%e6%89%8b%e5%86%8c\/","title":{"rendered":"Reasonix \u547d\u4ee4\u4f7f\u7528\u624b\u518c"},"content":{"rendered":"<h1>Reasonix \u547d\u4ee4\u4f7f\u7528\u624b\u518c<\/h1>\n<blockquote>\n<p>Reasonix \u2014 \u4e00\u4e2a\u914d\u7f6e\u9a71\u52a8\u3001\u63d2\u4ef6\u5316\u7684 AI \u7f16\u7a0b\u4ee3\u7406\uff08\u591a\u6a21\u578b\u652f\u6301\uff09\uff0cDeepSeek \u539f\u751f\uff0c\u7ec8\u7aef\u4f18\u5148\u3002<\/p>\n<p>\u4ed3\u5e93\uff1a<a target=\"_blank\" rel=\"noopener\" href=\"https:\/\/github.com\/esengine\/DeepSeek-Reasonix\">esengine\/DeepSeek-Reasonix<\/a> | Discord: <a target=\"_blank\" rel=\"noopener\" href=\"https:\/\/discord.gg\/XF78rEME2D\">https:\/\/discord.gg\/XF78rEME2D<\/a><\/p>\n<p>\u7248\u672c\uff1av1.0+ (Go \u91cd\u5199\u7248)<\/p>\n<\/blockquote>\n<hr \/>\n<h2>\u76ee\u5f55<\/h2>\n<ul>\n<li><a target=\"_blank\" rel=\"noopener\" href=\"#1-cli-\u547d\u4ee4\">1. CLI \u547d\u4ee4<\/a><\/li>\n<li><a target=\"_blank\" rel=\"noopener\" href=\"#2-chat-\u6a21\u5f0f\u4e0b\u7684\u659c\u6760\u547d\u4ee4\">2. Chat \u6a21\u5f0f\u4e0b\u7684\u659c\u6760\u547d\u4ee4<\/a><\/li>\n<li><a target=\"_blank\" rel=\"noopener\" href=\"#3-\u5185\u7f6e\u6280\u80fd-skills\">3. \u5185\u7f6e\u6280\u80fd (Skills)<\/a><\/li>\n<li><a target=\"_blank\" rel=\"noopener\" href=\"#4-\u5185\u7f6e\u5de5\u5177-tools\">4. \u5185\u7f6e\u5de5\u5177 (Tools)<\/a><\/li>\n<li><a target=\"_blank\" rel=\"noopener\" href=\"#5-codegraph-\u667a\u80fd\u4ee3\u7801\u5206\u6790\u5de5\u5177\">5. CodeGraph \u667a\u80fd\u4ee3\u7801\u5206\u6790\u5de5\u5177<\/a><\/li>\n<li><a target=\"_blank\" rel=\"noopener\" href=\"#6-lsp-\u8bed\u8a00\u670d\u52a1\u5668\u5de5\u5177\">6. LSP \u8bed\u8a00\u670d\u52a1\u5668\u5de5\u5177<\/a><\/li>\n<li><a target=\"_blank\" rel=\"noopener\" href=\"#7-\u914d\u7f6e\u6587\u4ef6-reference\">7. \u914d\u7f6e\u6587\u4ef6 reference<\/a><\/li>\n<li><a target=\"_blank\" rel=\"noopener\" href=\"#8-\u81ea\u5b9a\u4e49\u659c\u6760\u547d\u4ee4\">8. \u81ea\u5b9a\u4e49\u659c\u6760\u547d\u4ee4<\/a><\/li>\n<li><a target=\"_blank\" rel=\"noopener\" href=\"#9-mcp-\u63d2\u4ef6\">9. MCP \u63d2\u4ef6<\/a><\/li>\n<li><a target=\"_blank\" rel=\"noopener\" href=\"#10-\u6743\u9650\u7cfb\u7edf\">10. \u6743\u9650\u7cfb\u7edf<\/a><\/li>\n<li><a target=\"_blank\" rel=\"noopener\" href=\"#11-\u6c99\u7bb1\">11. \u6c99\u7bb1<\/a><\/li>\n<li><a target=\"_blank\" rel=\"noopener\" href=\"#12-\u53cc\u6a21\u578b\u534f\u4f5c\">12. \u53cc\u6a21\u578b\u534f\u4f5c<\/a><\/li>\n<li><a target=\"_blank\" rel=\"noopener\" href=\"#13-\u5f15\u7528\">13. @ \u5f15\u7528<\/a><\/li>\n<li><a target=\"_blank\" rel=\"noopener\" href=\"#14-\u5b89\u88c5\u65b9\u5f0f\">14. \u5b89\u88c5\u65b9\u5f0f<\/a><\/li>\n<\/ul>\n<hr \/>\n<h2>1. CLI \u547d\u4ee4<\/h2>\n<h3><code>reasonix chat<\/code><\/h3>\n<p>\u542f\u52a8\u4ea4\u4e92\u5f0f\u4f1a\u8bdd\uff08\u591a\u8f6e\u5bf9\u8bdd\uff0cTUI \u754c\u9762\uff09\u3002<\/p>\n<pre><code class=\"language-sh\">reasonix chat                          # \u65b0\u4f1a\u8bdd\nreasonix chat --continue               # \u6062\u590d\u6700\u8fd1\u4e00\u6b21\u4f1a\u8bdd\nreasonix chat --resume                 # \u4ece\u4fdd\u5b58\u7684\u4f1a\u8bdd\u4e2d\u9009\u62e9\u6062\u590d\nreasonix chat --model deepseek-pro     # \u6307\u5b9a\u6a21\u578b<\/code><\/pre>\n<h3><code>reasonix run<\/code><\/h3>\n<p>\u6267\u884c\u5355\u6b21\u4efb\u52a1\u5e76\u9000\u51fa\uff0c\u7ed3\u679c\u6d41\u5230 stdout\u3002\u9002\u5408\u811a\u672c\/\u81ea\u52a8\u5316\u3002<\/p>\n<pre><code class=\"language-sh\">reasonix run &quot;implement the TODOs in main.go&quot;\nreasonix run --model mimo-pro &quot;add unit tests for this function&quot;\nreasonix run --max-steps 20 &quot;\u590d\u6742\u7684\u91cd\u6784\u4efb\u52a1&quot;\necho &quot;explain this code&quot; | reasonix run   # \u7ba1\u9053\u8f93\u5165<\/code><\/pre>\n<h3><code>reasonix serve<\/code><\/h3>\n<p>\u901a\u8fc7 HTTP+SSE \u63d0\u4f9b\u4f1a\u8bdd\u670d\u52a1\uff0c\u6d4f\u89c8\u5668\u5ba2\u6237\u7aef\u5728 <code>\/<\/code>\u3002<\/p>\n<pre><code class=\"language-sh\">reasonix serve --addr 127.0.0.1:8080<\/code><\/pre>\n<h3><code>reasonix acp<\/code><\/h3>\n<p>\u901a\u8fc7 stdio \u63d0\u4f9b Agent Client Protocol \u670d\u52a1\u3002<\/p>\n<pre><code class=\"language-sh\">reasonix acp\n# \u6216\nreasonix --acp<\/code><\/pre>\n<h3><code>reasonix setup<\/code><\/h3>\n<p>\u4ea4\u4e92\u5f0f\u914d\u7f6e\u5411\u5bfc\uff0c\u5f15\u5bfc\u751f\u6210 <code>reasonix.toml<\/code>\uff08\u548c <code>.env<\/code>\uff09\u3002<\/p>\n<pre><code class=\"language-sh\">reasonix setup              # \u5728\u5f53\u524d\u76ee\u5f55\u751f\u6210\nreasonix setup \/path\/dir    # \u5728\u6307\u5b9a\u76ee\u5f55\u751f\u6210<\/code><\/pre>\n<h3><code>reasonix config<\/code><\/h3>\n<p>\u7ba1\u7406\u914d\u7f6e\u9879\uff08\u5f53\u524d\u652f\u6301 <code>auto-plan<\/code>\uff09\u3002<\/p>\n<pre><code class=\"language-sh\">reasonix config auto-plan off    # \u5173\u95ed\u81ea\u52a8\u8ba1\u5212\u6a21\u5f0f\nreasonix config auto-plan on     # \u5f00\u542f\u81ea\u52a8\u8ba1\u5212\u6a21\u5f0f<\/code><\/pre>\n<h3><code>reasonix mcp<\/code><\/h3>\n<p>\u7ba1\u7406 MCP \u670d\u52a1\u5668\uff08\u5728 <code>reasonix.toml<\/code> \u4e2d\u589e\u3001\u5220\u3001\u67e5\uff09\u3002<\/p>\n<pre><code class=\"language-sh\">reasonix mcp list              # \u5217\u51fa\u6240\u6709 MCP \u670d\u52a1\u5668\nreasonix mcp add ...           # \u6dfb\u52a0\u670d\u52a1\u5668\nreasonix mcp remove &lt;name&gt;     # \u79fb\u9664\u670d\u52a1\u5668<\/code><\/pre>\n<h3><code>reasonix doctor<\/code><\/h3>\n<p>\u6253\u5370\u672c\u5730\u8bca\u65ad\u4fe1\u606f\uff08\u5df2\u81ea\u52a8\u8131\u654f\uff09\u3002<\/p>\n<pre><code class=\"language-sh\">reasonix doctor          # \u6587\u672c\u683c\u5f0f\nreasonix doctor --json   # JSON \u683c\u5f0f<\/code><\/pre>\n<h3><code>reasonix bot<\/code><\/h3>\n<p>\u591a\u901a\u9053 IM \u673a\u5668\u4eba\u7f51\u5173\u3002<\/p>\n<pre><code class=\"language-sh\">reasonix bot start\nreasonix bot doctor\nreasonix bot weixin-login<\/code><\/pre>\n<h3><code>reasonix version<\/code><\/h3>\n<p>\u663e\u793a\u5f53\u524d\u7248\u672c\u53f7\u3002<\/p>\n<h3><code>reasonix help<\/code><\/h3>\n<p>\u663e\u793a\u5e2e\u52a9\u603b\u89c8\u3002<\/p>\n<hr \/>\n<h2>2. Chat \u6a21\u5f0f\u4e0b\u7684\u659c\u6760\u547d\u4ee4<\/h2>\n<p>\u5728 <code>reasonix chat<\/code> \u4ea4\u4e92\u5f0f TUI \u4e2d\u53ef\u7528\uff1a<\/p>\n<table>\n<thead>\n<tr>\n<th>\u547d\u4ee4<\/th>\n<th>\u529f\u80fd<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>\/help<\/code><\/td>\n<td>\u663e\u793a\u5e2e\u52a9\u4fe1\u606f<\/td>\n<\/tr>\n<tr>\n<td><code>\/new<\/code><\/td>\n<td>\u5f00\u59cb\u65b0\u4f1a\u8bdd\uff08\u4fdd\u5b58\u5f53\u524d\u4f1a\u8bdd\u4e3a\u5386\u53f2\uff0c\u53ef\u6062\u590d\uff09<\/td>\n<\/tr>\n<tr>\n<td><code>\/clear<\/code><\/td>\n<td>\u786e\u8ba4\u540e\u4e22\u5f03\u5f53\u524d\u4f1a\u8bdd\u4e0a\u4e0b\u6587\uff08\u4e0d\u4fdd\u5b58\uff09<\/td>\n<\/tr>\n<tr>\n<td><code>\/compact<\/code><\/td>\n<td>\u538b\u7f29\u5f53\u524d\u4e0a\u4e0b\u6587\u4ee5\u91ca\u653e token<\/td>\n<\/tr>\n<tr>\n<td><code>\/rewind<\/code><\/td>\n<td>\u56de\u9000\u5230\u4e4b\u524d\u7684\u67d0\u4e2a\u72b6\u6001<\/td>\n<\/tr>\n<tr>\n<td><code>\/tree<\/code><\/td>\n<td>\u67e5\u770b\u4fdd\u5b58\u7684\u4f1a\u8bdd\u5206\u652f\u6811<\/td>\n<\/tr>\n<tr>\n<td><code>\/branch [name]<\/code><\/td>\n<td>\u4ece\u5f53\u524d\u4f1a\u8bdd\u9876\u90e8\u521b\u5efa\u65b0\u5206\u652f<\/td>\n<\/tr>\n<tr>\n<td><code>\/branch &lt;turn&gt; [name]<\/code><\/td>\n<td>\u4ece\u6307\u5b9a checkpoint \u70b9\u521b\u5efa\u5206\u652f<\/td>\n<\/tr>\n<tr>\n<td><code>\/switch &lt;id\\|name&gt;<\/code><\/td>\n<td>\u5207\u6362\u5230\u53e6\u4e00\u4e2a\u5206\u652f<\/td>\n<\/tr>\n<tr>\n<td><code>\/todo<\/code><\/td>\n<td>\u67e5\u770b\/\u7ba1\u7406\u7ed3\u6784\u5316\u4efb\u52a1\u5217\u8868<\/td>\n<\/tr>\n<tr>\n<td><code>\/model<\/code><\/td>\n<td>\u5207\u6362\u5f53\u524d\u4f7f\u7528\u7684\u6a21\u578b<\/td>\n<\/tr>\n<tr>\n<td><code>\/effort<\/code><\/td>\n<td>\u8c03\u6574\u63a8\u7406\u52aa\u529b\u7a0b\u5ea6<\/td>\n<\/tr>\n<tr>\n<td><code>\/mcp<\/code><\/td>\n<td>\u67e5\u770b\/\u7ba1\u7406 MCP \u670d\u52a1\u5668\u8fde\u63a5\u72b6\u6001<\/td>\n<\/tr>\n<tr>\n<td><code>\/memory<\/code><\/td>\n<td>\u67e5\u770b\/\u7ba1\u7406\u6301\u4e45\u5316\u8bb0\u5fc6<\/td>\n<\/tr>\n<tr>\n<td><code>\/auto-plan off\\|on<\/code><\/td>\n<td>\u5207\u6362\u81ea\u52a8\u8ba1\u5212\u6a21\u5f0f<\/td>\n<\/tr>\n<tr>\n<td><code>\/init<\/code><\/td>\n<td>\u751f\u6210\/\u5237\u65b0\u9879\u76ee AGENTS.md \u8bb0\u5fc6\u6587\u4ef6<\/td>\n<\/tr>\n<tr>\n<td><code>\/explore<\/code><\/td>\n<td>\u63a2\u7d22\u4ee3\u7801\u5e93\uff08\u5b50\u4ee3\u7406\u53ea\u8bfb\u8c03\u67e5\uff09<\/td>\n<\/tr>\n<tr>\n<td><code>\/research<\/code><\/td>\n<td>\u7814\u7a76\u95ee\u9898\uff08web \u68c0\u7d22 + \u4ee3\u7801\u9605\u8bfb\uff09<\/td>\n<\/tr>\n<tr>\n<td><code>\/review<\/code><\/td>\n<td>\u5ba1\u67e5\u5f53\u524d\u5206\u652f pending \u53d8\u66f4<\/td>\n<\/tr>\n<tr>\n<td><code>\/security-review<\/code><\/td>\n<td>\u5b89\u5168\u4e13\u9879\u5ba1\u67e5\u5f53\u524d\u5206\u652f\u53d8\u66f4<\/td>\n<\/tr>\n<tr>\n<td><code>\/test<\/code><\/td>\n<td>\u8fd0\u884c\u6d4b\u8bd5\u5957\u4ef6\u5e76\u8bca\u65ad\u4fee\u590d<\/td>\n<\/tr>\n<tr>\n<td><code>\/install-capability<\/code><\/td>\n<td>\u5b89\u88c5\/\u5378\u8f7d MCP \u670d\u52a1\u5668\u548c\u6280\u80fd<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>\u81ea\u5b9a\u4e49\u659c\u6760\u547d\u4ee4<\/h3>\n<p>\u5728 <code>.reasonix\/commands\/<\/code>\uff08\u9879\u76ee\u7ea7\uff09\u6216 <code>~\/.config\/reasonix\/commands\/<\/code>\uff08\u7528\u6237\u7ea7\uff09\u653e\u7f6e Markdown \u6587\u4ef6\u5373\u53ef\u521b\u5efa\u81ea\u5b9a\u4e49\u547d\u4ee4\u3002<\/p>\n<p><strong>\u793a\u4f8b<\/strong> <code>.reasonix\/commands\/review.md<\/code>\uff1a<\/p>\n<pre><code class=\"language-markdown\">---\ndescription: \u5ba1\u67e5\u6682\u5b58\u533a diff\nargument-hint: [focus-area]\n---\nReview the staged diff. Focus on $ARGUMENTS, list bugs with file:line.<\/code><\/pre>\n<ul>\n<li>\u6587\u4ef6\u540d <code>review.md<\/code> \u2192 \u547d\u4ee4 <code>\/review<\/code><\/li>\n<li>\u5b50\u76ee\u5f55 <code>git\/commit.md<\/code> \u2192 \u547d\u4ee4 <code>\/git:commit<\/code><\/li>\n<li><code>$ARGUMENTS<\/code> \u5c55\u5f00\u4e3a\u6240\u6709\u53c2\u6570\uff0c<code>$1<\/code>\u2026<code>$N<\/code> \u5c55\u5f00\u4e3a\u4f4d\u7f6e\u53c2\u6570<\/li>\n<\/ul>\n<hr \/>\n<h2>3. \u5185\u7f6e\u6280\u80fd (Skills)<\/h2>\n<p>\u6280\u80fd\u662f\u53ef\u590d\u7528\u7684\u5267\u672c\u3002\u8c03\u7528\u65b9\u5f0f\uff1a<code>run_skill({ name: &quot;&lt;name&gt;&quot;, arguments: &quot;&lt;task&gt;&quot; })<\/code>\u3002<\/p>\n<h3>3.1 explore <code>[\ud83e\uddec subagent]<\/code><\/h3>\n<p><strong>\u5b50\u4ee3\u7406\u6a21\u5f0f<\/strong> \u2014 \u9694\u79bb\u5b50\u4ee3\u7406\u4e2d\u63a2\u7d22\u4ee3\u7801\u5e93\uff0c\u8fd4\u56de\u4e00\u4e2a\u7cbe\u70bc\u7b54\u6848\u3002<\/p>\n<ul>\n<li>\u9002\u7528\uff1a\u300c\u627e\u51fa\u6240\u6709 X \u7684\u5730\u65b9\u300d\u300cY \u5728\u9879\u76ee\u4e2d\u5982\u4f55\u5de5\u4f5c\u300d\u300c\u8c03\u67e5 Z \u7684\u4ee3\u7801\u300d<\/li>\n<li>\u53ea\u8bfb\uff0c\u4e0d\u4fee\u6539\u6587\u4ef6<\/li>\n<\/ul>\n<h3>3.2 init <code>[inline]<\/code><\/h3>\n<p><strong>\u5185\u8054\u6a21\u5f0f<\/strong> \u2014 \u5206\u6790\u4ee3\u7801\u5e93\uff08\u7ed3\u6784\u3001\u6784\u5efa\/\u6d4b\u8bd5\u547d\u4ee4\u3001\u67b6\u6784\u3001\u7ea6\u5b9a\uff09\uff0c\u751f\u6210 <code>AGENTS.md<\/code>\u3002<\/p>\n<ul>\n<li>\u751f\u6210\u7684\u6587\u4ef6\u4f1a\u5728\u6bcf\u6b21\u4f1a\u8bdd\u52a0\u8f7d<\/li>\n<li>\u5982\u5df2\u5b58\u5728\u5219\u539f\u5730\u6539\u8fdb\uff08\u4e0d\u8986\u76d6\uff09<\/li>\n<\/ul>\n<h3>3.3 install-capability <code>[inline]<\/code><\/h3>\n<p><strong>\u5185\u8054\u6a21\u5f0f<\/strong> \u2014 \u4ece URL\u3001GitHub raw\u3001\u672c\u5730\u8def\u5f84\u3001<code>.mcp.json<\/code>\u3001\u53ef\u6267\u884c\u6587\u4ef6\u6216 npm \u5305\u540d\u5b89\u88c5\/\u5378\u8f7d MCP \u670d\u52a1\u5668\u548c\u6280\u80fd\u3002<\/p>\n<ul>\n<li>\u4e24\u6b65\u64cd\u4f5c\uff1a\u5148 <code>apply=false<\/code> \u51fa\u8ba1\u5212\uff08\u542b\u98ce\u9669\u7b49\u7ea7\uff09\uff0c\u518d <code>apply=true<\/code> \u6267\u884c<\/li>\n<li>\u98ce\u9669\u7b49\u7ea7\uff1alow\uff08\u81ea\u52a8\u5e94\u7528\uff09\/ medium\uff08\u63d0\u53ca\u5373\u53ef\uff09\/ high\uff08\u9700\u7528\u6237\u786e\u8ba4\uff09<\/li>\n<\/ul>\n<h3>3.4 research <code>[\ud83e\uddec subagent]<\/code><\/h3>\n<p><strong>\u5b50\u4ee3\u7406\u6a21\u5f0f<\/strong> \u2014 \u7ed3\u5408 <code>web_fetch<\/code> \u548c\u672c\u5730\u4ee3\u7801\u9605\u8bfb\u7814\u7a76\u95ee\u9898\u3002<\/p>\n<ul>\n<li>\u9002\u7528\uff1a\u300c\u5e93 Y \u652f\u4e0d\u652f\u6301 X\u300d\u300cZ \u7684\u89c4\u8303\u5199\u6cd5\u300d\u300c\u5bf9\u6bd4\u5b9e\u73b0\u548c\u5b98\u65b9 spec\u300d<\/li>\n<\/ul>\n<h3>3.5 review <code>[\ud83e\uddec subagent]<\/code><\/h3>\n<p><strong>\u5b50\u4ee3\u7406\u6a21\u5f0f<\/strong> \u2014 \u5ba1\u67e5\u5f53\u524d\u5206\u652f diff\uff0c\u6807\u8bb0\uff1a\u6b63\u786e\u6027\u3001\u5b89\u5168\u3001\u7f3a\u5931\u6d4b\u8bd5\u3001\u9690\u85cf\u884c\u4e3a\u53d8\u66f4\u3002<\/p>\n<ul>\n<li>\u53ea\u8bfb\uff0c\u8fd4\u56de <code>file:line<\/code> \u7ea7\u95ee\u9898\u5217\u8868<\/li>\n<\/ul>\n<h3>3.6 security-review <code>[\ud83e\uddec subagent]<\/code><\/h3>\n<p><strong>\u5b50\u4ee3\u7406\u6a21\u5f0f<\/strong> \u2014 \u5b89\u5168\u4e13\u9879\u5ba1\u67e5\uff0c\u6807\u8bb0\u6ce8\u5165\/\u8ba4\u8bc1\/\u5bc6\u94a5\u6cc4\u9732\/\u53cd\u5e8f\u5217\u5316\/\u8def\u5f84\u7a7f\u8d8a\/\u52a0\u5bc6\u95ee\u9898\uff0c\u9644\u4e25\u91cd\u7b49\u7ea7\u3002<\/p>\n<h3>3.7 test <code>[inline]<\/code><\/h3>\n<p><strong>\u5185\u8054\u6a21\u5f0f<\/strong> \u2014 \u8fd0\u884c\u6d4b\u8bd5\u5957\u4ef6 \u2192 \u8bca\u65ad\u5931\u8d25 \u2192 \u4fee\u590d \u2192 \u91cd\u65b0\u8fd0\u884c \u2192 \u76f4\u5230\u7eff\u8272\uff08\u540c\u4e00\u5931\u8d25\u6700\u591a\u4fee 2 \u6b21\uff09\u3002<\/p>\n<ul>\n<li>\u81ea\u52a8\u68c0\u6d4b Go \/ npm \/ pnpm \/ yarn \/ pytest \/ cargo<\/li>\n<li>\u4e0d\u4f1a\u8df3\u8fc7\/\u5220\u9664\u6d4b\u8bd5\u6765\u5f3a\u5236\u7eff\u8272<\/li>\n<\/ul>\n<hr \/>\n<h2>4. \u5185\u7f6e\u5de5\u5177 (Tools)<\/h2>\n<p>\u4ee3\u7406\u5728\u4efb\u52a1\u6267\u884c\u4e2d\u53ef\u8c03\u7528\u7684\u5168\u90e8\u5de5\u5177\uff1a<\/p>\n<h3>4.1 \u6587\u4ef6\u7cfb\u7edf\u5de5\u5177<\/h3>\n<table>\n<thead>\n<tr>\n<th>\u5de5\u5177<\/th>\n<th>\u529f\u80fd<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>read_file<\/code><\/td>\n<td>\u8bfb\u53d6\u6587\u4ef6\uff08\u652f\u6301\u504f\u79fb\u91cf\u548c\u884c\u6570\u9650\u5236\uff09<\/td>\n<\/tr>\n<tr>\n<td><code>write_file<\/code><\/td>\n<td>\u5199\u5165\u6587\u4ef6\uff08\u8986\u76d6\uff0c\u81ea\u52a8\u521b\u5efa\u7236\u76ee\u5f55\uff09<\/td>\n<\/tr>\n<tr>\n<td><code>edit_file<\/code><\/td>\n<td>\u7cbe\u786e\u66ff\u6362\u6587\u4ef6\u4e2d\u552f\u4e00\u5339\u914d\u7684\u5b57\u7b26\u4e32<\/td>\n<\/tr>\n<tr>\n<td><code>multi_edit<\/code><\/td>\n<td>\u539f\u5b50\u6027\u6279\u91cf\u7f16\u8f91\uff1a\u6240\u6709\u7f16\u8f91\u5728\u5185\u5b58\u4e2d\u4f9d\u6b21\u5e94\u7528\uff0c\u4efb\u4e00\u6b65\u5931\u8d25\u5219\u539f\u6587\u4ef6\u4e0d\u53d8<\/td>\n<\/tr>\n<tr>\n<td><code>delete_range<\/code><\/td>\n<td>\u901a\u8fc7\u9996\u5c3e\u951a\u70b9\u5b9a\u4f4d\uff0c\u5220\u9664\u4e00\u6bb5\u6587\u672c<\/td>\n<\/tr>\n<tr>\n<td><code>delete_symbol<\/code><\/td>\n<td>\u5220\u9664 Go \u6e90\u6587\u4ef6\u4e2d\u7684\u547d\u540d\u7b26\u53f7\uff08\u51fd\u6570\/\u65b9\u6cd5\/\u7c7b\u578b\/\u63a5\u53e3\/\u5e38\u91cf\/\u53d8\u91cf\uff09<\/td>\n<\/tr>\n<tr>\n<td><code>ls<\/code><\/td>\n<td>\u5217\u51fa\u76ee\u5f55\u5185\u5bb9\uff08\u652f\u6301\u9012\u5f52\uff09<\/td>\n<\/tr>\n<tr>\n<td><code>glob<\/code><\/td>\n<td>glob \u6a21\u5f0f\u67e5\u627e\u6587\u4ef6\uff08\u652f\u6301 <code>**<\/code> \u9012\u5f52\uff0c\u9075\u5faa <code>.gitignore<\/code>\uff09<\/td>\n<\/tr>\n<tr>\n<td><code>grep<\/code><\/td>\n<td>\u6b63\u5219\u641c\u7d22\u6587\u4ef6\u5185\u5bb9\uff08\u8df3\u8fc7\u9690\u85cf\u6587\u4ef6\u548c <code>.gitignore<\/code> \u6587\u4ef6\uff09<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>4.2 Shell \u5de5\u5177<\/h3>\n<table>\n<thead>\n<tr>\n<th>\u5de5\u5177<\/th>\n<th>\u529f\u80fd<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>bash<\/code><\/td>\n<td>\u6267\u884c shell \u547d\u4ee4\uff08Windows \u4e0b\u4e3a PowerShell\uff09\uff0c\u652f\u6301 <code>run_in_background<\/code> \u540e\u53f0\u8fd0\u884c<\/td>\n<\/tr>\n<tr>\n<td><code>bash_output<\/code><\/td>\n<td>\u8bfb\u53d6\u540e\u53f0\u4efb\u52a1\u7684\u65b0\u8f93\u51fa<\/td>\n<\/tr>\n<tr>\n<td><code>kill_shell<\/code><\/td>\n<td>\u7ec8\u6b62\u6307\u5b9a\u7684\u540e\u53f0\u4efb\u52a1<\/td>\n<\/tr>\n<tr>\n<td><code>wait<\/code><\/td>\n<td>\u963b\u585e\u7b49\u5f85\u540e\u53f0\u4efb\u52a1\u5b8c\u6210<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>4.3 \u5de5\u4f5c\u6d41\u5de5\u5177<\/h3>\n<table>\n<thead>\n<tr>\n<th>\u5de5\u5177<\/th>\n<th>\u529f\u80fd<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>task<\/code><\/td>\n<td>\u751f\u6210\u5b50\u4ee3\u7406\u6267\u884c\u72ec\u7acb\u5b50\u4efb\u52a1\uff08\u9694\u79bb\u4f1a\u8bdd\uff0c\u53ea\u8fd4\u56de\u6700\u7ec8\u7b54\u6848\uff09\uff1b\u652f\u6301\u540e\u53f0\u8fd0\u884c<\/td>\n<\/tr>\n<tr>\n<td><code>todo_write<\/code><\/td>\n<td>\u8bb0\u5f55\u548c\u66f4\u65b0\u7ed3\u6784\u5316\u4efb\u52a1\u5217\u8868\uff08\u652f\u6301 phase\/sub-step \u4e24\u7ea7\uff09<\/td>\n<\/tr>\n<tr>\n<td><code>complete_step<\/code><\/td>\n<td>\u5b8c\u6210\u8ba1\u5212\u4e2d\u7684\u6b65\u9aa4\uff08\u9700\u9644\u9a8c\u8bc1\u8bc1\u636e\uff09<\/td>\n<\/tr>\n<tr>\n<td><code>ask<\/code><\/td>\n<td>\u5411\u7528\u6237\u5f39\u51fa\u591a\u9009\u95ee\u9898\uff08\u7528\u4e8e\u771f\u6b63\u7684\u51b3\u7b56\u5206\u53c9\u70b9\uff09<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>4.4 \u7f51\u7edc\u4e0e\u8d44\u6e90\u5de5\u5177<\/h3>\n<table>\n<thead>\n<tr>\n<th>\u5de5\u5177<\/th>\n<th>\u529f\u80fd<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>web_fetch<\/code><\/td>\n<td>\u6293\u53d6 HTTPS URL \u5185\u5bb9\uff08HTML \u8f6c\u4e3a\u53ef\u8bfb\u6587\u672c\uff0cJSON\/\u7eaf\u6587\u672c\u539f\u6837\u8fd4\u56de\uff09<\/td>\n<\/tr>\n<tr>\n<td><code>remember<\/code><\/td>\n<td>\u4fdd\u5b58\u6301\u4e45\u5316\u8bb0\u5fc6\uff08\u7c7b\u578b\uff1auser\/feedback\/project\/reference\uff09<\/td>\n<\/tr>\n<tr>\n<td><code>forget<\/code><\/td>\n<td>\u5220\u9664\u6307\u5b9a\u8bb0\u5fc6<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>4.5 \u6280\u80fd\u4e0e\u914d\u7f6e\u5de5\u5177<\/h3>\n<table>\n<thead>\n<tr>\n<th>\u5de5\u5177<\/th>\n<th>\u529f\u80fd<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>run_skill<\/code><\/td>\n<td>\u8c03\u7528\u6307\u5b9a\u6280\u80fd\uff08\u5b50\u4ee3\u7406\u578b\u5728\u9694\u79bb\u73af\u5883\u6267\u884c\uff09<\/td>\n<\/tr>\n<tr>\n<td><code>read_skill<\/code><\/td>\n<td>\u53ea\u8bfb\u52a0\u8f7d\u6280\u80fd\u5185\u5bb9\uff08\u4e0d\u6267\u884c\uff09<\/td>\n<\/tr>\n<tr>\n<td><code>install_skill<\/code><\/td>\n<td>\u7f16\u5199\u5e76\u4fdd\u5b58\u65b0\u6280\u80fd\uff08\u9879\u76ee\u7ea7\u6216\u5168\u5c40\uff09<\/td>\n<\/tr>\n<tr>\n<td><code>install_source<\/code><\/td>\n<td>\u5b89\u88c5\/\u5378\u8f7d MCP \u670d\u52a1\u5668\u6216\u6280\u80fd\uff08\u5148\u8ba1\u5212\u540e\u6267\u884c\uff09<\/td>\n<\/tr>\n<tr>\n<td><code>slash_command<\/code><\/td>\n<td>\u8c03\u7528\u9879\u76ee\u81ea\u5b9a\u4e49\u659c\u6760\u547d\u4ee4<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>4.6 Notebook \u5de5\u5177<\/h3>\n<table>\n<thead>\n<tr>\n<th>\u5de5\u5177<\/th>\n<th>\u529f\u80fd<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>notebook_edit<\/code><\/td>\n<td>\u7f16\u8f91 Jupyter Notebook (<code>.ipynb<\/code>) \u5355\u5143\u683c\uff08replace\/insert\/delete\uff09<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<hr \/>\n<h2>5. CodeGraph \u667a\u80fd\u4ee3\u7801\u5206\u6790\u5de5\u5177<\/h2>\n<p>\u5728 <code>reasonix.toml<\/code> \u4e2d\u914d\u7f6e <code>[codegraph].enabled = true<\/code> \u5f00\u542f\u3002<strong>\u5bf9\u4e8e\u300cX \u5982\u4f55\u5de5\u4f5c\u300d\/\u67b6\u6784\/\u8c03\u7528\u94fe\u95ee\u9898\u5e94\u4f18\u5148\u4f7f\u7528\u3002<\/strong><\/p>\n<table>\n<thead>\n<tr>\n<th>\u5de5\u5177<\/th>\n<th>\u529f\u80fd<\/th>\n<th>\u4f7f\u7528\u573a\u666f<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>mcp__codegraph__context<\/code><\/td>\n<td><strong>\u9996\u9009\u5de5\u5177<\/strong> \u2014 \u4e00\u6b21\u6027\u8fd4\u56de\u5165\u53e3\u70b9 + \u76f8\u5173\u7b26\u53f7 + \u5173\u952e\u4ee3\u7801<\/td>\n<td>\u7406\u89e3\u67d0\u529f\u80fd\u5982\u4f55\u5de5\u4f5c<\/td>\n<\/tr>\n<tr>\n<td><code>mcp__codegraph__search<\/code><\/td>\n<td>\u6309\u540d\u79f0\u641c\u7d22\u7b26\u53f7\uff08\u53ef\u6309 kind \u8fc7\u6ee4\uff09<\/td>\n<td>\u67e5\u627e\u67d0\u4e2a\u51fd\u6570\/\u7c7b\/\u63a5\u53e3<\/td>\n<\/tr>\n<tr>\n<td><code>mcp__codegraph__node<\/code><\/td>\n<td>\u83b7\u53d6\u5355\u4e2a\u7b26\u53f7\u7684\u4f4d\u7f6e\u3001\u7b7e\u540d\u3001\u8c03\u7528\u8005\/\u88ab\u8c03\u7528\u8005\u94fe\u8def<\/td>\n<td>\u67e5\u770b\u5177\u4f53\u7b26\u53f7\u7ec6\u8282<\/td>\n<\/tr>\n<tr>\n<td><code>mcp__codegraph__trace<\/code><\/td>\n<td>\u4e24\u4e2a\u7b26\u53f7\u4e4b\u95f4\u7684\u5b8c\u6574\u9759\u6001\u8c03\u7528\u8def\u5f84<\/td>\n<td>\u8ffd\u8e2a\u6570\u636e\u6d41\/\u8c03\u7528\u94fe<\/td>\n<\/tr>\n<tr>\n<td><code>mcp__codegraph__explore<\/code><\/td>\n<td>\u6309\u6587\u4ef6\u5206\u7ec4\u83b7\u53d6\u591a\u4e2a\u76f8\u5173\u7b26\u53f7\u7684\u6e90\u7801<\/td>\n<td>\u6279\u91cf\u67e5\u770b\u4e00\u7ec4\u7b26\u53f7<\/td>\n<\/tr>\n<tr>\n<td><code>mcp__codegraph__callers<\/code><\/td>\n<td>\u83b7\u53d6\u8c03\u7528\u6307\u5b9a\u7b26\u53f7\u7684\u6240\u6709\u4f4d\u7f6e<\/td>\n<td>\u5f71\u54cd\u5206\u6790<\/td>\n<\/tr>\n<tr>\n<td><code>mcp__codegraph__callees<\/code><\/td>\n<td>\u83b7\u53d6\u6307\u5b9a\u7b26\u53f7\u8c03\u7528\u7684\u6240\u6709\u7b26\u53f7<\/td>\n<td>\u7406\u89e3\u4f9d\u8d56<\/td>\n<\/tr>\n<tr>\n<td><code>mcp__codegraph__impact<\/code><\/td>\n<td>\u5206\u6790\u4fee\u6539\u67d0\u7b26\u53f7\u4f1a\u5f71\u54cd\u5230\u4ec0\u4e48<\/td>\n<td>\u91cd\u6784\u524d\u8bc4\u4f30<\/td>\n<\/tr>\n<tr>\n<td><code>mcp__codegraph__files<\/code><\/td>\n<td>\u9879\u76ee\u6587\u4ef6\u6811\u53ca\u6bcf\u4e2a\u6587\u4ef6\u7684\u7b26\u53f7\u6570\u91cf<\/td>\n<td>\u9879\u76ee\u7ed3\u6784\u6982\u89c8<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<hr \/>\n<h2>6. LSP \u8bed\u8a00\u670d\u52a1\u5668\u5de5\u5177<\/h2>\n<p>\u5728 <code>reasonix.toml<\/code> \u4e2d\u914d\u7f6e <code>[lsp].enabled = true<\/code> \u5f00\u542f\u3002\u670d\u52a1\u5668\u6309\u9700\u5ef6\u8fdf\u542f\u52a8\u3002<\/p>\n<table>\n<thead>\n<tr>\n<th>\u5de5\u5177<\/th>\n<th>\u529f\u80fd<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>lsp_definition<\/code><\/td>\n<td>\u8df3\u8f6c\u5230\u7b26\u53f7\u7684\u5b9a\u4e49\u4f4d\u7f6e<\/td>\n<\/tr>\n<tr>\n<td><code>lsp_hover<\/code><\/td>\n<td>\u663e\u793a\u7b26\u53f7\u7684\u7c7b\u578b\u7b7e\u540d\u548c\u6587\u6863<\/td>\n<\/tr>\n<tr>\n<td><code>lsp_references<\/code><\/td>\n<td>\u5217\u51fa\u5de5\u4f5c\u533a\u4e2d\u6240\u6709\u5f15\u7528\u4f4d\u7f6e<\/td>\n<\/tr>\n<tr>\n<td><code>lsp_diagnostics<\/code><\/td>\n<td>\u83b7\u53d6\u7f16\u8bd1\u5668\/linter \u7684\u8bca\u65ad\u4fe1\u606f\uff08\u9519\u8bef\/\u8b66\u544a\uff09<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u652f\u6301\u4e3a\u4e0d\u540c\u8bed\u8a00\u914d\u7f6e LSP \u670d\u52a1\u5668\uff0c\u4f8b\u5982 Go\uff1a<\/p>\n<pre><code class=\"language-toml\">[lsp.servers.go]\ncommand = &quot;gopls&quot;\nextensions = [&quot;.go&quot;]<\/code><\/pre>\n<hr \/>\n<h2>7. \u914d\u7f6e\u6587\u4ef6 reference<\/h2>\n<p>\u914d\u7f6e\u6587\u4ef6\u89e3\u6790\u4f18\u5148\u7ea7\uff1a<strong>CLI flag &gt; <code>.\/reasonix.toml<\/code> &gt; <code>~\/.config\/reasonix\/config.toml<\/code> &gt; \u5185\u7f6e\u9ed8\u8ba4\u503c<\/strong><\/p>\n<p>\u5bc6\u94a5\u5fc5\u987b\u901a\u8fc7\u73af\u5883\u53d8\u91cf\uff08<code>api_key_env<\/code>\uff09\u4f20\u5165\uff0c\u4e0d\u5f97\u5199\u5165\u914d\u7f6e\u6587\u4ef6\u3002<\/p>\n<h3>7.1 \u5b8c\u6574\u914d\u7f6e\u793a\u4f8b<\/h3>\n<pre><code class=\"language-toml\">config_version = 2\ndefault_model = &quot;deepseek-flash&quot;\n# language = &quot;zh&quot;   # UI \u8bed\u8a00\uff1b\u7a7a = \u4ece $LANG \/ $REASONIX_LANG \u81ea\u52a8\u68c0\u6d4b\n\n[agent]\nmax_steps         = 0      # executor \u5de5\u5177\u8c03\u7528\u8f6e\u6570\u4e0a\u9650\uff1b0 = \u65e0\u9650\u5236\nplanner_max_steps = 12     # planner \u53ea\u8bfb\u5de5\u5177\u8c03\u7528\u8f6e\u6570\uff1b0 = \u65e0\u9650\u5236\ntemperature       = 0.0\nauto_plan         = &quot;off&quot;  # off | on\uff1boff \u4fdd\u6301\u624b\u52a8\u8ba1\u5212\u6a21\u5f0f\nsoft_compact_ratio  = 0.5  # \u4ec5\u901a\u77e5\uff0c\u4fdd\u6301\u7f13\u5b58\u4f18\u5148\u524d\u7f00\u5b8c\u6574\ncompact_ratio       = 0.8  # prompt \u8fbe\u5230\u6b64\u6bd4\u4f8b\u65f6\u5c1d\u8bd5\u538b\u7f29\ncompact_force_ratio = 0.9  # \u5f3a\u5236\u538b\u7f29\u9ad8\u6c34\u4f4d\u7ebf\n# planner_model     = &quot;mimo&quot;              # \u542f\u7528\u53cc\u6a21\u578b\u534f\u4f5c\uff08planner + executor\uff09\n# auto_plan_classifier = &quot;deepseek-flash&quot;  # \u4ec5\u5bf9\u8fb9\u754c\u4efb\u52a1\u8c03\u7528\n# subagent_model    = &quot;deepseek-pro&quot;      # \u5b50\u4ee3\u7406\u9ed8\u8ba4\u6a21\u578b\n# subagent_models   = { review = &quot;deepseek-pro&quot;, security_review = &quot;deepseek-pro&quot; }\n# subagent_effort   = &quot;high&quot;\n# subagent_efforts  = { review = &quot;max&quot;, task = &quot;high&quot; }\n# output_style      = &quot;explanatory&quot;       # explanatory | learning | concise | custom\n\n[[providers]]\nname        = &quot;deepseek-flash&quot;\nkind        = &quot;openai&quot;\nbase_url    = &quot;https:\/\/api.deepseek.com&quot;\nmodel       = &quot;deepseek-v4-flash&quot;\napi_key_env = &quot;DEEPSEEK_API_KEY&quot;\n\n# \u9884\u7f6e provider\uff1adeepseek-pro, mimo-pro (mimo-v2.5-pro), mimo-flash (mimo-v2-flash)\n\n[tools]\nenabled               = []    # \u7a7a = \u5168\u90e8\u542f\u7528\uff1b\u53ef\u6307\u5b9a\u5217\u8868\nbash_timeout_seconds  = 120   # \u524d\u53f0\u547d\u4ee4\u5b89\u5168\u4e0a\u9650\uff1b0 = \u65e0\u4e0a\u9650\n\n[codegraph]\nenabled      = true   # \u4ee3\u7801\u667a\u80fd\u5206\u6790\uff1b\u9996\u6b21\u8fd0\u884c\u9ed8\u8ba4\u5173\u95ed\nauto_install = true   # \u81ea\u52a8\u62c9\u53d6\u8fd0\u884c\u65f6\n\n[lsp]\nenabled = true        # \u8bed\u8a00\u670d\u52a1\u5668\uff1b\u6309\u9700\u5ef6\u8fdf\u542f\u52a8\n\n[skills]\n# paths            = [&quot;~\/my-skills&quot;]        # \u989d\u5916\u81ea\u5b9a\u4e49\u6280\u80fd\u8def\u5f84\n# excluded_paths   = [&quot;~\/.agents\/skills&quot;]   # \u9690\u85cf\u7ea6\u5b9a\u8def\u5f84\n# max_depth        = 3                      # \u5d4c\u5957\u626b\u63cf\u6df1\u5ea6\n# disabled_skills  = [&quot;review&quot;]             # \u7981\u7528\u6307\u5b9a\u6280\u80fd\n\n[permissions]\nmode  = &quot;ask&quot;                                    # writer \u56de\u9000\u7b56\u7565\uff1aask | allow | deny\n# deny = [&quot;Bash(rm -rf*)&quot;, &quot;Bash(git push*)&quot;]   # \u6240\u6709\u6a21\u5f0f\u786c\u963b\u6b62\nallow = [&quot;Bash(go test:*)&quot;]                      # \u4ece\u4e0d\u63d0\u793a\uff0c\u76f4\u63a5\u653e\u884c\n# ask  = [&quot;Edit(src\/**)&quot;]                         # \u5f3a\u5236\u63d0\u793a\n\n[sandbox]\nbash    = &quot;enforce&quot;   # shell \u6c99\u7bb1\uff08macOS Seatbelt\uff1b\u5176\u4ed6\u5e73\u53f0\u6e10\u8fd1\u56de\u9000\uff09\nnetwork = true        # \u5141\u8bb8\u7f51\u7edc\u51fa\u53e3\n\n[[plugins]]\nname    = &quot;example&quot;\ncommand = &quot;reasonix-plugin-example&quot;<\/code><\/pre>\n<h3>7.2 \u914d\u7f6e\u9879\u901f\u67e5<\/h3>\n<table>\n<thead>\n<tr>\n<th>\u8282<\/th>\n<th>\u5173\u952e\u5b57\u6bb5<\/th>\n<th>\u8bf4\u660e<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>default_model<\/code><\/td>\n<td>\u6a21\u578b\u540d<\/td>\n<td>executor \u9ed8\u8ba4\u6a21\u578b<\/td>\n<\/tr>\n<tr>\n<td><code>[agent]<\/code><\/td>\n<td><code>max_steps<\/code>, <code>planner_model<\/code>, <code>auto_plan<\/code><\/td>\n<td>\u4ee3\u7406\u884c\u4e3a\u63a7\u5236<\/td>\n<\/tr>\n<tr>\n<td><code>[[providers]]<\/code><\/td>\n<td><code>name<\/code>, <code>kind<\/code>, <code>base_url<\/code>, <code>model<\/code>, <code>api_key_env<\/code><\/td>\n<td>\u6a21\u578b\u63d0\u4f9b\u5546\u5b9a\u4e49<\/td>\n<\/tr>\n<tr>\n<td><code>[tools]<\/code><\/td>\n<td><code>enabled<\/code>, <code>bash_timeout_seconds<\/code><\/td>\n<td>\u5de5\u5177\u5f00\u542f\u548c\u9650\u5236<\/td>\n<\/tr>\n<tr>\n<td><code>[codegraph]<\/code><\/td>\n<td><code>enabled<\/code>, <code>auto_install<\/code><\/td>\n<td>CodeGraph \u4ee3\u7801\u5206\u6790\u5f15\u64ce<\/td>\n<\/tr>\n<tr>\n<td><code>[lsp]<\/code><\/td>\n<td><code>enabled<\/code><\/td>\n<td>\u8bed\u8a00\u670d\u52a1\u5668\u914d\u7f6e<\/td>\n<\/tr>\n<tr>\n<td><code>[skills]<\/code><\/td>\n<td><code>paths<\/code>, <code>disabled_skills<\/code><\/td>\n<td>\u81ea\u5b9a\u4e49\u6280\u80fd\u8def\u5f84\u548c\u9ed1\u540d\u5355<\/td>\n<\/tr>\n<tr>\n<td><code>[permissions]<\/code><\/td>\n<td><code>mode<\/code>, <code>deny<\/code>, <code>allow<\/code>, <code>ask<\/code><\/td>\n<td>\u6743\u9650\u7b56\u7565\u89c4\u5219<\/td>\n<\/tr>\n<tr>\n<td><code>[sandbox]<\/code><\/td>\n<td><code>bash<\/code>, <code>network<\/code>, <code>workspace_root<\/code>, <code>allow_write<\/code><\/td>\n<td>\u6c99\u7bb1\u7ea6\u675f<\/td>\n<\/tr>\n<tr>\n<td><code>[[plugins]]<\/code><\/td>\n<td><code>name<\/code>, <code>command<\/code>\/<code>url<\/code>, <code>type<\/code>, <code>headers<\/code><\/td>\n<td>MCP \u63d2\u4ef6\u5b9a\u4e49<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<hr \/>\n<h2>8. MCP \u63d2\u4ef6<\/h2>\n<p>Reasonix \u662f\u539f\u751f MCP \u5ba2\u6237\u7aef\uff0c\u652f\u6301\u4e09\u79cd\u4f20\u8f93\u65b9\u5f0f\uff1a<\/p>\n<h3>stdio\uff08\u672c\u5730\u5b50\u8fdb\u7a0b\uff0c\u9ed8\u8ba4\uff09<\/h3>\n<pre><code class=\"language-toml\">[[plugins]]\nname    = &quot;example&quot;\ncommand = &quot;reasonix-plugin-example&quot;\nargs    = []\nenv     = { KEY = &quot;value&quot; }<\/code><\/pre>\n<h3>http\uff08Streamable HTTP\uff09<\/h3>\n<pre><code class=\"language-toml\">[[plugins]]\nname    = &quot;stripe&quot;\ntype    = &quot;http&quot;\nurl     = &quot;https:\/\/mcp.stripe.com&quot;\nheaders = { Authorization = &quot;Bearer ${STRIPE_KEY}&quot; }<\/code><\/pre>\n<h3>sse\uff08Server-Sent Events\uff09<\/h3>\n<pre><code class=\"language-toml\">[[plugins]]\nname = &quot;my-server&quot;\ntype = &quot;sse&quot;\nurl  = &quot;https:\/\/example.com\/mcp\/sse&quot;<\/code><\/pre>\n<ul>\n<li>\u5de5\u5177\u4ee5 <code>mcp__&lt;server&gt;__&lt;tool&gt;<\/code> \u540d\u79f0\u66b4\u9732\u7ed9\u6a21\u578b<\/li>\n<li>MCP prompt \u4ee5 <code>\/mcp__&lt;server&gt;__&lt;prompt&gt;<\/code> \u659c\u6760\u547d\u4ee4\u51fa\u73b0<\/li>\n<li>\u8d44\u6e90\u901a\u8fc7 <code>@&lt;server&gt;:&lt;uri&gt;<\/code> \u5f15\u7528<\/li>\n<li>\u58f0\u660e <code>readOnlyHint: true<\/code> \u7684\u5de5\u5177\u4f1a\u53c2\u4e0e\u5e76\u884c\u8c03\u5ea6\u4e14\u8d70 reader \u9ed8\u8ba4\u6743\u9650<\/li>\n<li>\u670d\u52a1\u5668\u540e\u53f0\u81ea\u52a8\u8fde\u63a5\uff0c\u7528 <code>\/mcp<\/code> \u67e5\u770b\u72b6\u6001<\/li>\n<\/ul>\n<h3><code>.mcp.json<\/code> \u517c\u5bb9<\/h3>\n<p>\u5728\u9879\u76ee\u6839\u76ee\u5f55\u653e\u7f6e <code>.mcp.json<\/code>\uff0cReasonix \u76f4\u63a5\u8bfb\u53d6\u3002\u4e0e <code>[[plugins]]<\/code> \u5408\u5e76\uff1b\u540d\u79f0\u51b2\u7a81\u65f6 <code>reasonix.toml<\/code> \u4f18\u5148\u3002<\/p>\n<pre><code class=\"language-json\">{\n  &quot;mcpServers&quot;: {\n    &quot;filesystem&quot;: { &quot;command&quot;: &quot;npx&quot;, &quot;args&quot;: [&quot;-y&quot;, &quot;@modelcontextprotocol\/server-filesystem&quot;, &quot;\/path&quot;] },\n    &quot;stripe&quot;: { &quot;type&quot;: &quot;http&quot;, &quot;url&quot;: &quot;https:\/\/mcp.stripe.com&quot;, &quot;headers&quot;: { &quot;Authorization&quot;: &quot;Bearer ${STRIPE_KEY}&quot; } }\n  }\n}<\/code><\/pre>\n<hr \/>\n<h2>9. \u6743\u9650\u7cfb\u7edf<\/h2>\n<p>\u57fa\u4e8e\u89c4\u5219\u7684\u5de5\u5177\u8c03\u7528\u95e8\u63a7\u3002\u4f18\u5148\u7ea7\uff1a<strong>deny &gt; ask &gt; allow &gt; fallback<\/strong>\u3002<\/p>\n<table>\n<thead>\n<tr>\n<th>\u914d\u7f6e<\/th>\n<th>\u542b\u4e49<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>mode = &quot;ask&quot;<\/code><\/td>\n<td>\u65e0\u5339\u914d\u89c4\u5219\u65f6\uff0cwriter \u5de5\u5177\u9700\u7528\u6237\u786e\u8ba4<\/td>\n<\/tr>\n<tr>\n<td><code>deny<\/code><\/td>\n<td>\u786c\u963b\u6b62\uff08\u6240\u6709\u6a21\u5f0f\u751f\u6548\uff09<\/td>\n<\/tr>\n<tr>\n<td><code>allow<\/code><\/td>\n<td>\u4ece\u4e0d\u63d0\u793a<\/td>\n<\/tr>\n<tr>\n<td><code>ask<\/code><\/td>\n<td>\u5f3a\u5236\u63d0\u793a\uff08\u5373\u4f7f\u9ed8\u8ba4 allow\uff09<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u89c4\u5219\u683c\u5f0f\uff1a<code>Tool<\/code> \u6216 <code>Tool(specifier)<\/code>\uff0c\u4f8b\u5982\uff1a<\/p>\n<ul>\n<li><code>Bash(go test:*)<\/code> \u2014 \u5339\u914d <code>go test .\/...<\/code>\u3001<code>go test -run TestX<\/code> \u7b49<\/li>\n<li><code>Edit(src\/**)<\/code> \u2014 \u5339\u914d <code>src\/<\/code> \u4e0b\u6240\u6709\u8def\u5f84\u7684\u7f16\u8f91<\/li>\n<li><code>Bash(rm -rf*)<\/code> \u2014 \u963b\u6b62\u6240\u6709 <code>rm -rf<\/code> \u547d\u4ee4<\/li>\n<\/ul>\n<hr \/>\n<h2>10. \u6c99\u7bb1<\/h2>\n<p>\u6c99\u7bb1\u662f<strong>\u5f3a\u5236\u6267\u884c<\/strong>\u5c42\uff08\u6743\u9650\u662f<strong>\u7b56\u7565<\/strong>\u5c42\uff09\uff1a<\/p>\n<ul>\n<li><strong>\u6587\u4ef6\u5199\u5165\u5668<\/strong>\uff08<code>write_file<\/code>\/<code>edit_file<\/code>\/<code>multi_edit<\/code>\uff09\u62d2\u7edd\u5199\u5165 <code>workspace_root<\/code> \u4e4b\u5916\u7684\u8def\u5f84<\/li>\n<li>\u81ea\u52a8\u89e3\u6790\u7b26\u53f7\u94fe\u63a5\u548c <code>..<\/code> \u9632\u6b62\u9003\u9038<\/li>\n<li>\u8bfb\u53d6\u4e0d\u53d7\u9650\u5236<\/li>\n<li><strong><code>bash<\/code> \u6c99\u7bb1<\/strong>\uff08macOS Seatbelt\uff09\uff1a\u547d\u4ee4\u53ea\u5728\u9879\u76ee\u6839\u548c\u4e34\u65f6\u76ee\u5f55\u5199\u5165\uff0c\u4ec5\u5728 <code>network = true<\/code> \u65f6\u5141\u8bb8\u7f51\u7edc<\/li>\n<li>\u5176\u4ed6\u5e73\u53f0\u5f53\u524d\u56de\u9000\u4e3a\u4e0d\u9650\u5236<\/li>\n<\/ul>\n<hr \/>\n<h2>11. \u53cc\u6a21\u578b\u534f\u4f5c<\/h2>\n<p>\u8bbe\u7f6e <code>planner_model<\/code> \u542f\u7528 planner + executor \u53cc\u6a21\u578b\u6a21\u5f0f\uff1a<\/p>\n<pre><code class=\"language-toml\">[agent]\nplanner_model = &quot;deepseek-pro&quot;   # \u4f4e\u9891 planner\nplanner_max_steps = 12           # planner \u53ea\u8bfb\u5de5\u5177\u8c03\u7528\u8f6e\u6570<\/code><\/pre>\n<ul>\n<li>Planner \u52a0\u8f7d AGENTS.md \u8bb0\u5fc6\uff0c\u4f7f\u7528\u53ea\u8bfb\u5de5\u5177\u7814\u7a76\u4ee3\u7801<\/li>\n<li>Executor \u62e5\u6709\u5168\u90e8 writer \u548c\u5de5\u4f5c\u6d41\u5de5\u5177<\/li>\n<li>\u4e24\u8005\u5404\u81ea\u72ec\u7acb\u4f1a\u8bdd\uff0c\u7f13\u5b58\u7a33\u5b9a<\/li>\n<li>\u8ba1\u5212\u6a21\u5f0f\u4e0b planner \u5148\u8d77\u8349\u65b9\u6848\uff0c\u7b49\u5f85\u7528\u6237\u6279\u51c6\u540e\u518d\u6267\u884c<\/li>\n<\/ul>\n<hr \/>\n<h2>12. @ \u5f15\u7528<\/h2>\n<p>\u5728\u6d88\u606f\u4e2d\u4f7f\u7528 <code>@<\/code> \u5f15\u7528\uff0cReasonix \u5728\u53d1\u9001\u524d\u89e3\u6790\u4e3a\u5e26\u6807\u7b7e\u7684\u4e0a\u4e0b\u6587\u5757\uff1a<\/p>\n<ul>\n<li><code>@path\/to\/file<\/code> \u2014 \u6ce8\u5165\u672c\u5730\u6587\u4ef6\u5185\u5bb9<\/li>\n<li><code>@path\/to\/dir<\/code> \u2014 \u6ce8\u5165\u76ee\u5f55\u5217\u8868<\/li>\n<li><code>@&lt;server&gt;:&lt;uri&gt;<\/code> \u2014 \u6ce8\u5165 MCP \u8d44\u6e90<\/li>\n<li>\u53ea\u6709\u5b9e\u9645\u5b58\u5728\u7684\u8def\u5f84\u624d\u88ab\u89c6\u4f5c\u5f15\u7528\uff0c\u666e\u901a <code>@mention<\/code> \u4fdd\u6301\u539f\u6837<\/li>\n<li>\u8f93\u5165 <code>\/<\/code> \u6216 <code>@<\/code> \u89e6\u53d1\u81ea\u52a8\u8865\u5168\u83dc\u5355<\/li>\n<\/ul>\n<hr \/>\n<h2>13. \u5b89\u88c5\u65b9\u5f0f<\/h2>\n<pre><code class=\"language-sh\"># npm\uff08\u63a8\u8350\uff0c\u8de8\u5e73\u53f0\uff1b\u81ea\u52a8\u62c9\u53d6\u539f\u751f\u4e8c\u8fdb\u5236\uff09\nnpm i -g reasonix\n\n# Homebrew\uff08macOS\uff09\nbrew install esengine\/reasonix\/reasonix\n\n# \u4ece\u6e90\u7801\u6784\u5efa\nmake build       # \u2192 bin\/reasonix(.exe)\nmake cross       # \u2192 dist\/ (darwin|linux|windows \u00d7 amd64|arm64)<\/code><\/pre>\n<p>\u6bcf\u4e2a <a target=\"_blank\" rel=\"noopener\" href=\"https:\/\/github.com\/esengine\/DeepSeek-Reasonix\/releases\">GitHub Release<\/a> \u63d0\u4f9b\u9884\u6784\u5efa\u538b\u7f29\u5305\u3002<\/p>\n<h3>\u5feb\u901f\u4e0a\u624b<\/h3>\n<pre><code class=\"language-sh\">reasonix setup                       # \u914d\u7f6e\u5411\u5bfc \u2192 .\/reasonix.toml\nexport DEEPSEEK_API_KEY=sk-...      # \u6216\u5199\u5165 .env\nreasonix chat                        # \u542f\u52a8\u804a\u5929\uff0c\u7136\u540e\u6267\u884c \/init \u751f\u6210 AGENTS.md\nreasonix run &quot;implement the TODOs in main.go&quot;<\/code><\/pre>\n<hr \/>\n<blockquote>\n<p><strong>\u66f4\u591a\u8d44\u6e90\uff1a<\/strong><\/p>\n<ul>\n<li><a target=\"_blank\" rel=\"noopener\" href=\"https:\/\/github.com\/esengine\/DeepSeek-Reasonix\">GitHub \u4ed3\u5e93<\/a><\/li>\n<li><a target=\"_blank\" rel=\"noopener\" href=\"https:\/\/esengine.github.io\/DeepSeek-Reasonix\/\">\u5b98\u65b9\u7f51\u7ad9<\/a><\/li>\n<li><a target=\"_blank\" rel=\"noopener\" href=\"https:\/\/discord.gg\/XF78rEME2D\">Discord \u793e\u533a<\/a><\/li>\n<li>SPEC.md \u5b8c\u6574\u89c4\u683c\uff08\u4ed3\u5e93 <code>docs\/SPEC.md<\/code>\uff09<\/li>\n<\/ul>\n<\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>Reasonix \u547d\u4ee4\u4f7f\u7528\u624b\u518c Reasonix \u2014 \u4e00\u4e2a\u914d\u7f6e\u9a71\u52a8\u3001\u63d2\u4ef6\u5316\u7684 AI \u7f16\u7a0b\u4ee3\u7406\uff08\u591a\u6a21\u578b\u652f\u6301\uff09\uff0cD [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[16],"tags":[],"class_list":["post-221","post","type-post","status-publish","format-standard","hentry","category-ai-"],"_links":{"self":[{"href":"https:\/\/blog.mumudlin.com\/index.php\/wp-json\/wp\/v2\/posts\/221","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.mumudlin.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.mumudlin.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.mumudlin.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.mumudlin.com\/index.php\/wp-json\/wp\/v2\/comments?post=221"}],"version-history":[{"count":1,"href":"https:\/\/blog.mumudlin.com\/index.php\/wp-json\/wp\/v2\/posts\/221\/revisions"}],"predecessor-version":[{"id":222,"href":"https:\/\/blog.mumudlin.com\/index.php\/wp-json\/wp\/v2\/posts\/221\/revisions\/222"}],"wp:attachment":[{"href":"https:\/\/blog.mumudlin.com\/index.php\/wp-json\/wp\/v2\/media?parent=221"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.mumudlin.com\/index.php\/wp-json\/wp\/v2\/categories?post=221"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.mumudlin.com\/index.php\/wp-json\/wp\/v2\/tags?post=221"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}