reasonix 0.36.1 → 0.37.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/README.md +47 -75
  2. package/README.zh-CN.md +47 -32
  3. package/dashboard/dist/app.js +405 -196
  4. package/dashboard/dist/app.js.map +1 -1
  5. package/dist/cli/{chat-7AF5SPAJ.js → chat-7257YAPG.js} +12 -12
  6. package/dist/cli/{chunk-DFP4YSVM.js → chunk-6CXT5JRM.js} +17 -2
  7. package/dist/cli/{chunk-DFP4YSVM.js.map → chunk-6CXT5JRM.js.map} +1 -1
  8. package/dist/cli/{chunk-G3XNWSFN.js → chunk-6NMWJSES.js} +2 -2
  9. package/dist/cli/{chunk-MLXUGPJE.js → chunk-GKZJXYMY.js} +79 -1
  10. package/dist/cli/chunk-GKZJXYMY.js.map +1 -0
  11. package/dist/cli/{chunk-IPCPEZWQ.js → chunk-JGZKTAOH.js} +2 -2
  12. package/dist/cli/{chunk-BJ376EN3.js → chunk-JULZ7JTO.js} +3 -3
  13. package/dist/cli/{chunk-3OBWN2NH.js → chunk-MSKUP6PD.js} +1481 -1033
  14. package/dist/cli/chunk-MSKUP6PD.js.map +1 -0
  15. package/dist/cli/{chunk-QPNZWUZF.js → chunk-S4GF3HPO.js} +26 -1
  16. package/dist/cli/chunk-S4GF3HPO.js.map +1 -0
  17. package/dist/cli/{chunk-QRUQ2BFT.js → chunk-SEFXUF24.js} +119 -51
  18. package/dist/cli/chunk-SEFXUF24.js.map +1 -0
  19. package/dist/cli/{chunk-2MCYGFLK.js → chunk-VF57YX2M.js} +18 -17
  20. package/dist/cli/chunk-VF57YX2M.js.map +1 -0
  21. package/dist/cli/{chunk-KJQIA4US.js → chunk-XOIDSPMQ.js} +71 -32
  22. package/dist/cli/chunk-XOIDSPMQ.js.map +1 -0
  23. package/dist/cli/{chunk-ZU45XW3P.js → chunk-YER7WCHF.js} +21 -6
  24. package/dist/cli/chunk-YER7WCHF.js.map +1 -0
  25. package/dist/cli/{code-SWI4EBME.js → code-64EG5IU2.js} +24 -15
  26. package/dist/cli/code-64EG5IU2.js.map +1 -0
  27. package/dist/cli/{doctor-DKD34EFD.js → doctor-BW5HSQDW.js} +5 -5
  28. package/dist/cli/{events-P27CX7LN.js → events-SQXPVV7B.js} +3 -3
  29. package/dist/cli/index.js +28 -26
  30. package/dist/cli/index.js.map +1 -1
  31. package/dist/cli/prompt-KGIUONO3.js +13 -0
  32. package/dist/cli/{prune-sessions-ERL6B4G5.js → prune-sessions-FCFOYCBP.js} +2 -2
  33. package/dist/cli/{run-FK5UBIIM.js → run-RWCOA32G.js} +8 -8
  34. package/dist/cli/{server-W4XJK4GX.js → server-6ZW4TQUP.js} +95 -49
  35. package/dist/cli/{server-W4XJK4GX.js.map → server-6ZW4TQUP.js.map} +1 -1
  36. package/dist/cli/{sessions-YZXWMIWW.js → sessions-5ISNWFMU.js} +8 -8
  37. package/dist/cli/{setup-IIAJXHP4.js → setup-HJG23NKJ.js} +2 -2
  38. package/dist/cli/{version-DWD6RLIU.js → version-BXAN7Q4V.js} +8 -8
  39. package/dist/index.d.ts +34 -2
  40. package/dist/index.js +295 -62
  41. package/dist/index.js.map +1 -1
  42. package/package.json +1 -1
  43. package/dist/cli/chunk-2MCYGFLK.js.map +0 -1
  44. package/dist/cli/chunk-3OBWN2NH.js.map +0 -1
  45. package/dist/cli/chunk-KJQIA4US.js.map +0 -1
  46. package/dist/cli/chunk-MLXUGPJE.js.map +0 -1
  47. package/dist/cli/chunk-QPNZWUZF.js.map +0 -1
  48. package/dist/cli/chunk-QRUQ2BFT.js.map +0 -1
  49. package/dist/cli/chunk-ZU45XW3P.js.map +0 -1
  50. package/dist/cli/code-SWI4EBME.js.map +0 -1
  51. package/dist/cli/prompt-YEKXMNNV.js +0 -11
  52. /package/dist/cli/{chat-7AF5SPAJ.js.map → chat-7257YAPG.js.map} +0 -0
  53. /package/dist/cli/{chunk-G3XNWSFN.js.map → chunk-6NMWJSES.js.map} +0 -0
  54. /package/dist/cli/{chunk-IPCPEZWQ.js.map → chunk-JGZKTAOH.js.map} +0 -0
  55. /package/dist/cli/{chunk-BJ376EN3.js.map → chunk-JULZ7JTO.js.map} +0 -0
  56. /package/dist/cli/{doctor-DKD34EFD.js.map → doctor-BW5HSQDW.js.map} +0 -0
  57. /package/dist/cli/{events-P27CX7LN.js.map → events-SQXPVV7B.js.map} +0 -0
  58. /package/dist/cli/{prompt-YEKXMNNV.js.map → prompt-KGIUONO3.js.map} +0 -0
  59. /package/dist/cli/{prune-sessions-ERL6B4G5.js.map → prune-sessions-FCFOYCBP.js.map} +0 -0
  60. /package/dist/cli/{run-FK5UBIIM.js.map → run-RWCOA32G.js.map} +0 -0
  61. /package/dist/cli/{sessions-YZXWMIWW.js.map → sessions-5ISNWFMU.js.map} +0 -0
  62. /package/dist/cli/{setup-IIAJXHP4.js.map → setup-HJG23NKJ.js.map} +0 -0
  63. /package/dist/cli/{version-DWD6RLIU.js.map → version-BXAN7Q4V.js.map} +0 -0
package/README.md CHANGED
@@ -9,6 +9,8 @@
9
9
   · 
10
10
  <a href="https://esengine.github.io/DeepSeek-Reasonix/">Website</a>
11
11
  &nbsp;·&nbsp;
12
+ <a href="https://esengine.github.io/DeepSeek-Reasonix/configuration.html">Guide</a>
13
+ &nbsp;·&nbsp;
12
14
  <a href="./docs/ARCHITECTURE.md">Architecture</a>
13
15
  &nbsp;·&nbsp;
14
16
  <a href="./benchmarks/">Benchmarks</a>
@@ -46,49 +48,6 @@
46
48
 
47
49
  <br/>
48
50
 
49
- ## Web search
50
-
51
- Reasonix includes `web_search` and `web_fetch` tools. By default it uses **Mojeek** (no setup required). You can switch to a **self-hosted SearXNG** instance — a metasearch engine that aggregates whatever upstream engines your instance is configured for.
52
-
53
- ### Switching engines (persists to disk)
54
-
55
- The `/search-engine` slash command (alias `/se`) writes your choice to `~/.reasonix/config.json` immediately — it survives restarts:
56
-
57
- ```
58
- /search-engine mojeek # default, no external deps
59
- /search-engine searxng # SearXNG at http://localhost:8080
60
- /search-engine searxng http://192.168.1.100:8888 # custom endpoint
61
- ```
62
-
63
- Equivalent `~/.reasonix/config.json`:
64
-
65
- ```json
66
- {
67
- "webSearchEngine": "searxng",
68
- "webSearchEndpoint": "http://localhost:8080"
69
- }
70
- ```
71
-
72
- The tool picks up the change on the next call — no restart needed.
73
-
74
- ### Starting SearXNG
75
-
76
- ```sh
77
- podman run -d --replace --name searxng -p 8080:8080 docker.io/searxng/searxng
78
- # or: docker run -d -p 8080:8080 searxng/searxng
79
- ```
80
-
81
- Verify it's running:
82
-
83
- ```sh
84
- curl http://localhost:8080/search?q=test
85
- # → HTML search results page
86
- ```
87
-
88
- > **Note:** The endpoint must include the protocol (`http://`). `localhost:8080` alone will fail — the tool will show a clear error telling you to install SearXNG if the server is unreachable.
89
-
90
- <br/>
91
-
92
51
  ## Install
93
52
 
94
53
  ```bash
@@ -96,55 +55,68 @@ cd my-project
96
55
  npx reasonix code # paste a DeepSeek API key on first run; persists after
97
56
  ```
98
57
 
99
- Requires Node ≥ 22. Tested on macOS · Linux · Windows (PowerShell · Git Bash · Windows Terminal). Get a [DeepSeek API key →](https://platform.deepseek.com/api_keys) · `reasonix code --help` for flags.
58
+ Requires Node ≥ 22. Works on macOS · Linux · Windows (PowerShell · Git Bash · Windows Terminal). Grab a [DeepSeek API key →](https://platform.deepseek.com/api_keys) · `reasonix code --help` for flags.
100
59
 
101
- `npx` is the recommended path — no global install, always picks up the latest version. If you'll use Reasonix daily and want `reasonix` on your `PATH`, run `reasonix update` once and it'll do the `npm install -g` for you.
60
+ `npx` is the recommended path — no global install, always latest. If you use Reasonix daily and want it on `PATH`, run `reasonix update` once.
102
61
 
103
- ### Subcommand cheatsheet
104
-
105
- | Command | When to use |
62
+ | Command | When |
106
63
  |---|---|
107
- | `reasonix code [dir]` | Coding agent rooted at a project. **Start here.** |
108
- | `reasonix chat` | Plain chat — no filesystem tools, just a conversation with persisted history. |
109
- | `reasonix run "task"` | One-shot, streams the answer to stdout. Good for shell pipes. |
110
- | `reasonix doctor` | Environment health check (Node version, API key, MCP wiring). |
64
+ | `reasonix code [dir]` | The coding agent. **Start here.** |
65
+ | `reasonix chat` | Plain chat — no filesystem or shell tools. |
66
+ | `reasonix run "task"` | One-shot, streams to stdout. Good for pipes. |
67
+ | `reasonix doctor` | Health check: Node, API key, MCP wiring. |
111
68
  | `reasonix update` | Upgrade Reasonix itself. |
112
69
 
113
- Other subcommands (`replay` · `diff` · `events` · `stats` · `index` · `mcp` · `prune-sessions`) are listed in `reasonix --help` and on the [CLI reference](https://esengine.github.io/DeepSeek-Reasonix/#cli).
70
+ Other subcommands (`replay` · `diff` · `events` · `stats` · `index` · `mcp` · `prune-sessions`) are in `reasonix --help` and the [CLI reference](https://esengine.github.io/DeepSeek-Reasonix/#cli).
114
71
 
115
- #### When to pick `chat` over `code`
72
+ <details>
73
+ <summary><strong>Working in another folder · chat vs. code · author a skill</strong></summary>
116
74
 
117
- `code` is the default it's the only mode that can read, write, or edit files, run shell commands, or apply SEARCH/REPLACE blocks. `chat` strips all of that down to a plain conversation; reach for it when you want a thinking-partner shell without granting filesystem or shell access.
75
+ **Working in a different folder.** Reasonix scopes filesystem tools to the launch directory; pass `--dir` to retarget. Mid-session switching isn't supported by design (memory paths would tangle with stale roots) quit and relaunch.
118
76
 
119
- | What you get | `reasonix code` | `reasonix chat` |
120
- |---|---|---|
121
- | Native filesystem tools (read · write · `edit_file`) | ✓ | — |
122
- | SEARCH/REPLACE edit blocks → `/apply` review | ✓ | — |
123
- | Shell tool (with confirm gate, `/mode yolo` to skip) | ✓ | — |
124
- | Plan mode · `submit_plan` · `/todo` · `/skill new` · `/mcp add` scaffolding | ✓ | — |
125
- | Memory tools (`remember` / `recall_memory`) | project + global | global only |
126
- | Web search · `ask_choice` · MCP servers from config | ✓ | ✓ |
127
- | Coding-focused system prompt (SEARCH/REPLACE, repo etiquette) | ✓ | generic |
128
- | Session scope | per-directory (`code-<basename>`) | shared default |
77
+ ```bash
78
+ npx reasonix code --dir /path/to/project
79
+ ```
129
80
 
130
- `chat` still picks up MCP servers from `~/.reasonix/config.json`, so if all you want is a chat shell with one or two MCP integrations, it's the lighter entrypoint. Otherwise `code` is what every screenshot, benchmark, and slash-command example in the docs assumes.
81
+ **Picking `chat` vs `code`.** `code` is the default and the only mode with filesystem / shell tools and SEARCH/REPLACE review. `chat` is the lighter, tools-off shell reach for it when you want a thinking partner with MCP attached but no disk access.
131
82
 
132
- **Working in a different folder:** Reasonix scopes filesystem tools to the launch directory. To work elsewhere, pass `--dir`:
83
+ | What you get | `code` | `chat` |
84
+ |---|---|---|
85
+ | Filesystem tools + `edit_file` | ✓ | — |
86
+ | SEARCH/REPLACE → `/apply` review | ✓ | — |
87
+ | Shell tool (gated) | ✓ | — |
88
+ | Plan mode · `/todo` · `/skill new` · `/mcp add` | ✓ | — |
89
+ | Memory (`remember` / `recall_memory`) | project + global | global only |
90
+ | MCP servers from config · web search · `ask_choice` | ✓ | ✓ |
91
+ | Coding system prompt | ✓ | generic |
92
+ | Session scope | per-directory | shared default |
93
+
94
+ **Author your first skill.** No remote registry — write them directly. Edit the file (`description:` frontmatter + body), then `/skill list`. Add `runAs: subagent` to spawn an isolated subagent loop instead of inlining the body.
133
95
 
134
96
  ```bash
135
- npx reasonix code --dir /path/to/project # or use a relative path
97
+ /skill new my-skill # <project>/.reasonix/skills/my-skill.md
98
+ /skill new my-skill --global # ~/.reasonix/skills for cross-project use
136
99
  ```
137
100
 
138
- Mid-session switching isn't supported by design (the message log + memory paths get tangled with stale roots). Quit and relaunch with a new `--dir` to retarget. `/status` always shows the current pinned workspace.
101
+ </details>
139
102
 
140
- **Author your first skill:** Skills are markdown playbooks the model can invoke (`/skill <name>`). There's no remote registry yet — you author them directly:
103
+ <br/>
141
104
 
142
- ```bash
143
- /skill new my-skill # scaffolds <project>/.reasonix/skills/my-skill.md
144
- /skill new my-skill --global # or under ~/.reasonix/skills for cross-project use
145
- ```
105
+ ## Configuration
106
+
107
+ One JSON file at `~/.reasonix/config.json` plus per-project overrides under `<project>/.reasonix/`. The full bilingual reference — every key, every slash command, the on-disk shape of skills/memory/hooks — lives at:
146
108
 
147
- Edit the file (`description:` frontmatter + body), then `/skill list` to see it. Add `runAs: subagent` to the frontmatter to spawn an isolated subagent loop instead of inlining the body.
109
+ > 📘 **[Configuration Guide](https://esengine.github.io/DeepSeek-Reasonix/configuration.html)** · [中文](https://esengine.github.io/DeepSeek-Reasonix/configuration.html?lang=zh)
110
+
111
+ | Topic | Quick read |
112
+ |---|---|
113
+ | [MCP servers](https://esengine.github.io/DeepSeek-Reasonix/configuration.html#mcp) | stdio · SSE · Streamable HTTP. One spec format works for both `config.json` and `--mcp`. |
114
+ | [Skills](https://esengine.github.io/DeepSeek-Reasonix/configuration.html#skills) | Markdown playbooks the model can invoke. `inline` or `subagent` mode. |
115
+ | [Memory](https://esengine.github.io/DeepSeek-Reasonix/configuration.html#memory) | User-private knowledge pinned into the prefix. `user` / `feedback` / `project` / `reference` types. |
116
+ | [Hooks](https://esengine.github.io/DeepSeek-Reasonix/configuration.html#hooks) | Shell commands on lifecycle events. `PreToolUse` (gating) · `PostToolUse` · `UserPromptSubmit` · `Stop`. |
117
+ | [Permissions](https://esengine.github.io/DeepSeek-Reasonix/configuration.html#permissions) | Per-workspace shell allowlist. Exact-prefix match. |
118
+ | [Web search](https://esengine.github.io/DeepSeek-Reasonix/configuration.html#search) | Mojeek by default; switch to self-hosted SearXNG with `/search-engine`. |
119
+ | [Semantic index](https://esengine.github.io/DeepSeek-Reasonix/configuration.html#index) | `reasonix index` — local Ollama or any OpenAI-compatible embedding endpoint. |
148
120
 
149
121
  <br/>
150
122
 
package/README.zh-CN.md CHANGED
@@ -9,6 +9,8 @@
9
9
  &nbsp;·&nbsp;
10
10
  <a href="https://esengine.github.io/DeepSeek-Reasonix/">官方网站</a>
11
11
  &nbsp;·&nbsp;
12
+ <a href="https://esengine.github.io/DeepSeek-Reasonix/configuration.html?lang=zh">配置指南</a>
13
+ &nbsp;·&nbsp;
12
14
  <a href="./docs/ARCHITECTURE.md">架构文档</a>
13
15
  &nbsp;·&nbsp;
14
16
  <a href="./benchmarks/">基准测试</a>
@@ -50,55 +52,68 @@ cd my-project
50
52
  npx reasonix code # 首次运行粘贴 DeepSeek API Key,之后会记住
51
53
  ```
52
54
 
53
- 要求 Node ≥ 22。已在 macOS · Linux · Windows(PowerShell · Git Bash · Windows Terminal)测过。[去拿 DeepSeek API Key →](https://platform.deepseek.com/api_keys) · 完整 flag 看 `reasonix code --help`。
54
-
55
- `npx` 是推荐路径 —— 不用全局安装,每次都拿到最新版本。如果你天天用、想把 `reasonix` 装到 `PATH` 上,跑一次 `reasonix update` 就行,它会替你跑 `npm install -g`。
55
+ 要求 Node ≥ 22。在 macOS · Linux · Windows(PowerShell · Git Bash · Windows Terminal)都跑得顺。[去拿 DeepSeek API Key →](https://platform.deepseek.com/api_keys) · 完整 flag 看 `reasonix code --help`。
56
56
 
57
- ### 子命令速查
57
+ `npx` 是推荐路径 —— 不用全局安装,每次都拿最新版。如果你天天用、想把 `reasonix` 装到 `PATH`,跑一次 `reasonix update`。
58
58
 
59
- | 命令 | 适用场景 |
59
+ | 命令 | 何时用 |
60
60
  |---|---|
61
- | `reasonix code [dir]` | 锁在某个项目根目录的编码 agent。**先用这个。** |
62
- | `reasonix chat` | 纯聊天 —— 不挂文件系统工具,只是带历史的对话。 |
63
- | `reasonix run "task"` | 一次性,把答案直接流到 stdout。适合 shell 管道。 |
64
- | `reasonix doctor` | 环境体检(Node 版本、API Key、MCP 接线)。 |
61
+ | `reasonix code [dir]` | 编码 agent。**先用这个。** |
62
+ | `reasonix chat` | 纯聊天 —— 不挂文件系统 / shell 工具。 |
63
+ | `reasonix run "task"` | 一次性,结果流到 stdout。适合 shell 管道。 |
64
+ | `reasonix doctor` | 体检:Node 版本、API Key、MCP 接线。 |
65
65
  | `reasonix update` | 升级 Reasonix 本身。 |
66
66
 
67
- 其他子命令(`replay` · `diff` · `events` · `stats` · `index` · `mcp` · `prune-sessions`)见 `reasonix --help` 和 [CLI 参考](https://esengine.github.io/DeepSeek-Reasonix/#cli)。
67
+ 其他子命令(`replay` · `diff` · `events` · `stats` · `index` · `mcp` · `prune-sessions`)在 `reasonix --help` 和 [CLI 参考](https://esengine.github.io/DeepSeek-Reasonix/#cli)。
68
68
 
69
- #### 什么时候用 `chat` 而不是 `code`
69
+ <details>
70
+ <summary><strong>切换工作区 · chat vs. code · 写第一个 Skill</strong></summary>
70
71
 
71
- `code` 是默认入口 —— 只有它能读写、编辑文件、跑 shell 命令、解析 SEARCH/REPLACE 块。`chat` 把这些全砍掉,只剩一个纯对话外壳;当你只想找模型对一对思路、又不想授予文件系统或 shell 权限时用它。
72
+ **切换工作区。** Reasonix 把文件系统工具作用域绑定在启动目录,传 `--dir` 可以指别处。中途切换是有意不支持的(消息日志和 memory 路径会和旧根目录混在一起)—— 退出再启动。
72
73
 
73
- | 你拿到什么 | `reasonix code` | `reasonix chat` |
74
- |---|---|---|
75
- | 原生文件系统工具(read · write · `edit_file`) | ✓ | — |
76
- | SEARCH/REPLACE 编辑块 → `/apply` 审核 | ✓ | — |
77
- | Shell 工具(带 confirm gate,`/mode yolo` 跳过) | | |
78
- | Plan 模式 · `submit_plan` · `/todo` · `/skill new` · `/mcp add` 脚手架 | ✓ | — |
79
- | 记忆工具(`remember` / `recall_memory`) | 项目 + 全局 | 仅全局 |
80
- | Web 搜索 · `ask_choice` · 从配置加载的 MCP 服务 | ✓ | ✓ |
81
- | 编码导向系统提示词(SEARCH/REPLACE、仓库礼仪) | ✓ | 通用 |
82
- | Session 作用域 | 按目录(`code-<basename>`) | 共享默认 |
74
+ ```bash
75
+ npx reasonix code --dir /path/to/project
76
+ ```
77
+
78
+ **`chat` 还是 `code`?** `code` 是默认入口、唯一带文件系统 / shell 工具和 SEARCH/REPLACE 审阅的模式。`chat` 是更轻量的纯对话壳——想要一个挂着 MCP 但没有磁盘权限的“思路助手”时用它。
83
79
 
84
- `chat` 同样会从 `~/.reasonix/config.json` 读取 MCP 服务器,所以如果你只是想要一个聊天外壳挂一两个 MCP 集成,它是更轻量的入口。其他场景下,文档里所有截图、基准测试、slash 命令例子默认都是 `code`。
80
+ | 你拿到什么 | `code` | `chat` |
81
+ |---|---|---|
82
+ | 文件系统工具 + `edit_file` | ✓ | — |
83
+ | SEARCH/REPLACE → `/apply` 审阅 | ✓ | — |
84
+ | Shell 工具(带 gate) | ✓ | — |
85
+ | Plan 模式 · `/todo` · `/skill new` · `/mcp add` | ✓ | — |
86
+ | Memory(`remember` / `recall_memory`) | 项目 + 全局 | 仅全局 |
87
+ | 配置里的 MCP · web 搜索 · `ask_choice` | ✓ | ✓ |
88
+ | 编码导向系统提示词 | ✓ | 通用 |
89
+ | Session 作用域 | 按目录 | 共享默认 |
85
90
 
86
- **在其他目录工作:** Reasonix 把文件系统工具作用域绑定在启动目录。要在别的目录工作,传 `--dir`:
91
+ **写第一个 Skill。** 暂无在线市场——自己写。编辑文件(`description:` frontmatter + 正文),然后 `/skill list` 就能看到。frontmatter 加 `runAs: subagent` 会以隔离 subagent 跑,而不是把正文内联进父 prompt。
87
92
 
88
93
  ```bash
89
- npx reasonix code --dir /path/to/project # 也可以用相对路径
94
+ /skill new my-skill # <project>/.reasonix/skills/my-skill.md
95
+ /skill new my-skill --global # ~/.reasonix/skills,跨项目共用
90
96
  ```
91
97
 
92
- 中途切换工作区是有意不支持的(消息日志和 memory 路径会和旧的根目录混在一起,状态错乱)。退出后用新的 `--dir` 重新启动来切换。`/status` 始终显示当前锁定的工作区。
98
+ </details>
93
99
 
94
- **写第一个 Skill:** Skills 是模型可以调用的 markdown 剧本(`/skill <name>`)。暂无在线市场 —— 自己写:
100
+ <br/>
95
101
 
96
- ```bash
97
- /skill new my-skill # 在 <project>/.reasonix/skills/my-skill.md 生成模板
98
- /skill new my-skill --global # 或者放到 ~/.reasonix/skills,跨项目共用
99
- ```
102
+ ## 配置
100
103
 
101
- 编辑文件(`description:` frontmatter + 正文),然后 `/skill list` 就能看到。frontmatter 里加 `runAs: subagent` 会以独立 subagent 跑,而不是把正文内联进父 prompt。
104
+ 一个全局 JSON 文件 `~/.reasonix/config.json`,加上项目级 `<project>/.reasonix/` 下的覆盖。完整的双语参考 —— 每一个 key、每一条斜杠命令、skills / memory / hooks 在磁盘上的形状 —— 都在这里:
105
+
106
+ > 📘 **[配置指南](https://esengine.github.io/DeepSeek-Reasonix/configuration.html?lang=zh)** · [English](https://esengine.github.io/DeepSeek-Reasonix/configuration.html)
107
+
108
+ | 主题 | 速读 |
109
+ |---|---|
110
+ | [MCP 服务器](https://esengine.github.io/DeepSeek-Reasonix/configuration.html?lang=zh#mcp) | stdio · SSE · Streamable HTTP。`config.json` 和 `--mcp` 共用同一种 spec 格式。 |
111
+ | [Skills](https://esengine.github.io/DeepSeek-Reasonix/configuration.html?lang=zh#skills) | 模型可以调用的 markdown 剧本。`inline` 或 `subagent` 两种模式。 |
112
+ | [Memory](https://esengine.github.io/DeepSeek-Reasonix/configuration.html?lang=zh#memory) | 用户私有的知识,钉进前缀。`user` / `feedback` / `project` / `reference` 四类。 |
113
+ | [Hooks](https://esengine.github.io/DeepSeek-Reasonix/configuration.html?lang=zh#hooks) | 生命周期事件触发的 shell 命令。`PreToolUse`(拦截)· `PostToolUse` · `UserPromptSubmit` · `Stop`。 |
114
+ | [权限](https://esengine.github.io/DeepSeek-Reasonix/configuration.html?lang=zh#permissions) | 按工作区的 shell 白名单,精确前缀匹配。 |
115
+ | [Web 搜索](https://esengine.github.io/DeepSeek-Reasonix/configuration.html?lang=zh#search) | 默认 Mojeek;用 `/search-engine` 可切到自托管的 SearXNG。 |
116
+ | [语义索引](https://esengine.github.io/DeepSeek-Reasonix/configuration.html?lang=zh#index) | `reasonix index` —— 本地 Ollama,或任何 OpenAI 兼容的 embedding 接口。 |
102
117
 
103
118
  <br/>
104
119