jfox-cli 0.1.4__tar.gz → 0.2.0__tar.gz

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 (96) hide show
  1. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/.github/workflows/integration-test.yml +116 -21
  2. jfox_cli-0.2.0/CHANGELOG.md +35 -0
  3. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/CLAUDE.md +4 -0
  4. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/PKG-INFO +4 -4
  5. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/README.md +3 -3
  6. jfox_cli-0.2.0/docs/superpowers/plans/2026-04-11-bulk-import-bm25-fix.md +434 -0
  7. jfox_cli-0.2.0/docs/superpowers/plans/2026-04-11-edit-command.md +625 -0
  8. jfox_cli-0.2.0/docs/superpowers/plans/2026-04-11-unify-format-option.md +998 -0
  9. jfox_cli-0.2.0/docs/superpowers/plans/2026-04-12-ci-coverage-optimization.md +228 -0
  10. jfox_cli-0.2.0/docs/superpowers/plans/2026-04-12-edit-content-file.md +496 -0
  11. jfox_cli-0.2.0/docs/superpowers/plans/2026-04-12-fix-index-rebuild-clear.md +299 -0
  12. jfox_cli-0.2.0/docs/superpowers/plans/2026-04-12-fix-index-verify-id-mismatch.md +281 -0
  13. jfox_cli-0.2.0/docs/superpowers/plans/2026-04-12-fix-jfox-health-skill-kb-param.md +186 -0
  14. jfox_cli-0.2.0/docs/superpowers/plans/2026-04-12-index-kb-param.md +472 -0
  15. jfox_cli-0.2.0/docs/superpowers/plans/2026-04-12-lazy-import-perf.md +595 -0
  16. jfox_cli-0.2.0/docs/superpowers/plans/2026-04-12-skill-redesign.md +462 -0
  17. jfox_cli-0.2.0/docs/superpowers/specs/2026-04-12-skill-redesign-design.md +258 -0
  18. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/jfox/__init__.py +1 -1
  19. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/jfox/bm25_index.py +110 -106
  20. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/jfox/cli.py +589 -427
  21. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/jfox/config.py +32 -29
  22. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/jfox/embedding_backend.py +10 -11
  23. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/jfox/formatters.py +55 -66
  24. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/jfox/global_config.py +56 -64
  25. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/jfox/graph.py +54 -57
  26. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/jfox/indexer.py +114 -95
  27. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/jfox/kb_manager.py +62 -67
  28. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/jfox/models.py +40 -37
  29. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/jfox/note.py +289 -111
  30. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/jfox/performance.py +93 -90
  31. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/jfox/search_engine.py +65 -52
  32. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/jfox/template.py +64 -53
  33. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/jfox/template_cli.py +47 -42
  34. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/jfox/vector_store.py +76 -51
  35. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/pyproject.toml +5 -3
  36. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/skills-recommend/README.md +8 -10
  37. jfox_cli-0.2.0/skills-recommend/claude-code/jfox-common/SKILL.md +267 -0
  38. jfox_cli-0.2.0/skills-recommend/claude-code/jfox-ingest/SKILL.md +237 -0
  39. jfox_cli-0.2.0/skills-recommend/claude-code/jfox-organize/SKILL.md +167 -0
  40. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/skills-recommend/claude-code/jfox-search/SKILL.md +1 -1
  41. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/tests/conftest.py +96 -89
  42. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/tests/integration/test_backlinks.py +35 -51
  43. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/tests/performance/test_performance.py +76 -75
  44. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/tests/test_advanced_features.py +58 -29
  45. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/tests/test_cli_format.py +40 -31
  46. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/tests/test_config_unit.py +74 -70
  47. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/tests/test_core_workflow.py +140 -129
  48. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/tests/test_hybrid_search.py +40 -37
  49. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/tests/test_integration.py +11 -11
  50. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/tests/test_kb_current.py +18 -20
  51. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/tests/unit/test_bm25_batch.py +11 -7
  52. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/tests/unit/test_edit.py +178 -13
  53. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/tests/unit/test_format_unify.py +39 -19
  54. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/tests/unit/test_formatters.py +35 -24
  55. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/tests/unit/test_global_config.py +157 -174
  56. jfox_cli-0.2.0/tests/unit/test_index_kb_param.py +92 -0
  57. jfox_cli-0.2.0/tests/unit/test_indexer_clear_before_rebuild.py +69 -0
  58. jfox_cli-0.2.0/tests/unit/test_indexer_verify.py +53 -0
  59. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/tests/unit/test_kb_manager.py +114 -127
  60. jfox_cli-0.2.0/tests/unit/test_lazy_import.py +90 -0
  61. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/tests/unit/test_template.py +32 -43
  62. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/tests/unit/test_template_cli.py +250 -233
  63. jfox_cli-0.2.0/tests/unit/test_vector_store_clear.py +76 -0
  64. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/tests/utils/assertions.py +45 -32
  65. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/tests/utils/jfox_cli.py +88 -105
  66. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/tests/utils/note_generator.py +44 -51
  67. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/tests/utils/temp_kb.py +5 -5
  68. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/uv.lock +1 -1
  69. jfox_cli-0.1.4/skills-recommend/claude-code/jfox-health/SKILL.md +0 -150
  70. jfox_cli-0.1.4/skills-recommend/claude-code/jfox-init/SKILL.md +0 -108
  71. jfox_cli-0.1.4/skills-recommend/claude-code/jfox-insert/SKILL.md +0 -128
  72. jfox_cli-0.1.4/skills-recommend/claude-code/jfox-organize/SKILL.md +0 -124
  73. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/.githooks/pre-push +0 -0
  74. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/.github/workflows/publish.yml +0 -0
  75. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/.gitignore +0 -0
  76. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/.python-version +0 -0
  77. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/AGENTS.md +0 -0
  78. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/DEVELOPMENT_PLAN.md +0 -0
  79. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/SESSION.md +0 -0
  80. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/SESSION_SUMMARY.md +0 -0
  81. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/docs/superpowers/specs/2026-04-03-bugfixes-design.md +0 -0
  82. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/jessica-jones-static-cable.md +0 -0
  83. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/jfox/__main__.py +0 -0
  84. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/pytest.ini +0 -0
  85. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/run_full_test.ps1 +0 -0
  86. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/skill/evals/evals.json +0 -0
  87. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/skill/knowledge-base-notes/SKILL.md +0 -0
  88. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/skill/knowledge-base-workspace/SKILL.md +0 -0
  89. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/tests/COVERAGE_PLAN.md +0 -0
  90. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/tests/MIGRATION.md +0 -0
  91. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/tests/TESTS.md +0 -0
  92. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/tests/integration/__init__.py +0 -0
  93. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/tests/performance/__init__.py +0 -0
  94. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/tests/test_suggest_links.py +0 -0
  95. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/tests/unit/__init__.py +0 -0
  96. {jfox_cli-0.1.4 → jfox_cli-0.2.0}/tests/utils/__init__.py +0 -0
@@ -14,6 +14,7 @@ on:
14
14
  - 'jfox/**'
15
15
  - 'tests/**'
16
16
  - 'pyproject.toml'
17
+ - '.github/workflows/integration-test.yml'
17
18
  # 允许手动触发
18
19
  workflow_dispatch:
19
20
  inputs:
@@ -33,6 +34,32 @@ env:
33
34
  PYTHONUTF8: 1
34
35
 
35
36
  jobs:
37
+ # ============ Lint 检查 ============
38
+ lint:
39
+ runs-on: ubuntu-latest
40
+ steps:
41
+ - name: Checkout code
42
+ uses: actions/checkout@v4
43
+
44
+ - name: Set up Python
45
+ uses: actions/setup-python@v5
46
+ with:
47
+ python-version: '3.11'
48
+
49
+ - uses: astral-sh/setup-uv@v4
50
+ with:
51
+ version: "latest"
52
+ enable-cache: true
53
+
54
+ - name: Install dependencies
55
+ run: uv sync --extra dev
56
+
57
+ - name: Run ruff check
58
+ run: uv run ruff check jfox/ tests/
59
+
60
+ - name: Run black check
61
+ run: uv run black --check jfox/ tests/
62
+
36
63
  # ============ 快速测试(PR 和 push 触发)============
37
64
  test-fast:
38
65
  runs-on: ${{ matrix.os }}
@@ -61,9 +88,15 @@ jobs:
61
88
  run: uv sync --extra dev
62
89
 
63
90
  - name: Run fast tests (no embedding)
91
+ shell: bash
64
92
  run: |
65
93
  # 运行非 embedding 测试(单进程避免知识库冲突)
66
- uv run pytest tests/ -m "not embedding and not slow" --timeout=180 -v --tb=short
94
+ ARGS="-m 'not embedding and not slow' --timeout=180 -v --tb=short"
95
+ if [ "${{ matrix.os }}" = "ubuntu-latest" ]; then
96
+ eval uv run pytest tests/ $ARGS --cov=jfox --cov-report=xml
97
+ else
98
+ eval uv run pytest tests/ $ARGS
99
+ fi
67
100
  timeout-minutes: ${{ matrix.os == 'windows-latest' && 50 || 20 }}
68
101
  env:
69
102
  PYTHONIOENCODING: utf-8
@@ -78,6 +111,14 @@ jobs:
78
111
  .pytest_cache/
79
112
  htmlcov/
80
113
 
114
+ - name: Upload coverage data
115
+ if: matrix.os == 'ubuntu-latest'
116
+ uses: actions/upload-artifact@v4
117
+ with:
118
+ name: coverage-data
119
+ path: coverage.xml
120
+ retention-days: 1
121
+
81
122
  # ============ 核心测试(带 embedding,但只跑核心)============
82
123
  test-core:
83
124
  runs-on: ${{ matrix.os }}
@@ -102,12 +143,20 @@ jobs:
102
143
  version: "latest"
103
144
  enable-cache: true
104
145
 
105
- - name: Cache model
146
+ - name: Cache model (Unix)
147
+ if: runner.os != 'Windows'
106
148
  uses: actions/cache@v4
107
149
  with:
108
150
  path: ~/.cache/torch/sentence_transformers
109
151
  key: ${{ runner.os }}-sentence-transformers-all-MiniLM-L6-v2
110
152
 
153
+ - name: Cache model (Windows)
154
+ if: runner.os == 'Windows'
155
+ uses: actions/cache@v4
156
+ with:
157
+ path: ~\AppData\Local\torch\sentence_transformers
158
+ key: ${{ runner.os }}-sentence-transformers-all-MiniLM-L6-v2
159
+
111
160
  - name: Install dependencies
112
161
  run: uv sync --extra dev
113
162
 
@@ -152,12 +201,20 @@ jobs:
152
201
  version: "latest"
153
202
  enable-cache: true
154
203
 
155
- - name: Cache model
204
+ - name: Cache model (Unix)
205
+ if: runner.os != 'Windows'
156
206
  uses: actions/cache@v4
157
207
  with:
158
208
  path: ~/.cache/torch/sentence_transformers
159
209
  key: ${{ runner.os }}-sentence-transformers-all-MiniLM-L6-v2
160
210
 
211
+ - name: Cache model (Windows)
212
+ if: runner.os == 'Windows'
213
+ uses: actions/cache@v4
214
+ with:
215
+ path: ~\AppData\Local\torch\sentence_transformers
216
+ key: ${{ runner.os }}-sentence-transformers-all-MiniLM-L6-v2
217
+
161
218
  - name: Install dependencies
162
219
  run: uv sync --extra dev
163
220
 
@@ -178,38 +235,76 @@ jobs:
178
235
  path: |
179
236
  .pytest_cache/
180
237
 
181
- # ============ 覆盖率报告汇总 ============
238
+ # ============ 质量门禁(所有必须测试通过才算成功)============
239
+ quality-gate:
240
+ runs-on: ubuntu-latest
241
+ needs: [lint, test-fast]
242
+ if: always()
243
+ steps:
244
+ - name: Check all jobs passed
245
+ run: |
246
+ echo "lint: ${{ needs.lint.result }}"
247
+ echo "test-fast: ${{ needs.test-fast.result }}"
248
+ if [[ "${{ needs.lint.result }}" == "success" && "${{ needs.test-fast.result }}" == "success" ]]; then
249
+ echo "Quality gate passed!"
250
+ exit 0
251
+ else
252
+ echo "Quality gate FAILED!"
253
+ exit 1
254
+ fi
255
+
256
+ # ============ 覆盖率报告(解析 test-fast 的 coverage artifact)============
182
257
  coverage:
183
258
  runs-on: ubuntu-latest
184
259
  needs: [test-fast]
185
260
  if: always() && needs.test-fast.result == 'success'
261
+ permissions:
262
+ pull-requests: write
186
263
 
187
264
  steps:
188
265
  - name: Checkout code
189
266
  uses: actions/checkout@v4
190
267
 
191
- - name: Set up Python
192
- uses: actions/setup-python@v5
193
- with:
194
- python-version: '3.11'
195
-
196
- - uses: astral-sh/setup-uv@v4
268
+ - name: Download coverage data
269
+ uses: actions/download-artifact@v4
197
270
  with:
198
- version: "latest"
199
- enable-cache: true
271
+ name: coverage-data
200
272
 
201
- - name: Install dependencies
202
- run: uv sync --extra dev
203
-
204
- - name: Run coverage
273
+ - name: Post coverage comment on PR
274
+ if: github.event_name == 'pull_request'
275
+ env:
276
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
205
277
  run: |
206
- uv run pytest tests/ -m "not embedding and not slow" --cov=jfox --cov-report=xml --cov-report=html -v --timeout=300
207
- timeout-minutes: 25
278
+ python -c "
279
+ import xml.etree.ElementTree as ET
280
+ import subprocess
281
+
282
+ tree = ET.parse('coverage.xml')
283
+ root = tree.getroot()
284
+ rate = float(root.attrib['line-rate'])
285
+ lines_covered = int(root.attrib['lines-covered'])
286
+ lines_valid = int(root.attrib['lines-valid'])
287
+
288
+ rows = []
289
+ for cls in root.iter('class'):
290
+ name = cls.attrib['filename']
291
+ r = float(cls.attrib['line-rate'])
292
+ rows.append((name, r))
293
+ rows.sort(key=lambda x: x[1])
294
+
295
+ comment = '## Test Coverage\n\n'
296
+ comment += '**Overall: {:.1f}%** ({}/{} lines)\n\n'.format(rate * 100, lines_covered, lines_valid)
297
+ comment += '| Module | Coverage | Status |\n|--------|----------|--------|\n'
298
+ for name, r in rows:
299
+ icon = ':green_circle:' if r >= 0.8 else ':yellow_circle:' if r >= 0.5 else ':red_circle:'
300
+ comment += '| {} | {:.1f}% | {} |\n'.format(name, r * 100, icon)
301
+
302
+ pr = '${{ github.event.pull_request.number }}'
303
+ subprocess.run(['gh', 'pr', 'comment', pr, '--body', comment])
304
+ "
208
305
 
209
306
  - name: Upload coverage report
210
307
  uses: actions/upload-artifact@v4
211
308
  with:
212
309
  name: coverage-report
213
- path: |
214
- htmlcov/
215
- coverage.xml
310
+ path: coverage.xml
@@ -0,0 +1,35 @@
1
+ # Changelog
2
+
3
+ All notable changes to jfox-cli will be documented in this file.
4
+
5
+ ## [0.2.0] - 2026-04-13
6
+
7
+ ### Features
8
+ - **edit**: add `--content-file` parameter for reading note content from a file (#106)
9
+
10
+ ### Fixes
11
+ - **skill**: add `--kb` parameter support to jfox-health skill
12
+ - **cli**: add `use` as alias for `kb switch` subcommand (#105)
13
+
14
+ ### Changes
15
+ - **skills**: redesign from 5 skills to 4
16
+ - **test**: fix flaky `test_update_content_preserves_id_and_created` (timing race on fast machines)
17
+
18
+ ### Performance
19
+ - **startup**: lazy import optimization to eliminate startup overhead for lightweight commands (#122)
20
+ - **ci**: optimize CI coverage job to avoid rerunning tests (#119)
21
+
22
+ ## [0.1.5] - 2026-04-12
23
+
24
+ ### Fixes
25
+ - **index**: add `--kb` parameter to `jfox index` command (#104) (#113)
26
+ - **index**: fix `index verify` false positives (filename vs index ID format mismatch) (#111)
27
+ - **index**: fix `index rebuild` clearing ChromaDB before re-indexing (#110)
28
+ - **test**: prevent test KB residue in global config (#101)
29
+ - **ci**: resolve Windows path comparison bug and add quality gate
30
+
31
+ ### Changes
32
+ - **style**: auto-fix all ruff/black lint errors (1869 fixed)
33
+
34
+ [0.2.0]: https://github.com/zhuxixi/jfox/compare/v0.1.5...v0.2.0
35
+ [0.1.5]: https://github.com/zhuxixi/jfox/compare/v0.1.4...v0.1.5
@@ -126,6 +126,10 @@ Four jobs in `.github/workflows/integration-test.yml`:
126
126
  - Set `PYTHONUTF8=1` and `chcp 65001` for encoding
127
127
  - HuggingFace mirror for China: `export HF_ENDPOINT=https://hf-mirror.com`
128
128
 
129
+ ## Branch Rules
130
+
131
+ - **main 是保护分支**,不能直接 commit 或 push。所有改动必须通过新分支 + PR 合入。
132
+
129
133
  ## Gotchas
130
134
 
131
135
  - `pytest.ini` `addopts` includes `-v`, so `pytest tests/` already runs verbose — adding `-v` manually is redundant
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: jfox-cli
3
- Version: 0.1.4
3
+ Version: 0.2.0
4
4
  Summary: JFox - Zettelkasten 知识管理 CLI 工具
5
5
  Project-URL: Homepage, https://github.com/zhuxixi/jfox
6
6
  Project-URL: Repository, https://github.com/zhuxixi/jfox
@@ -143,7 +143,7 @@ jfox init --name personal --path ~/my-notes --desc "个人笔记"
143
143
  jfox kb list
144
144
 
145
145
  # 切换默认知识库
146
- jfox kb switch work
146
+ jfox kb use work
147
147
 
148
148
  # 查看知识库详情
149
149
  jfox kb info work
@@ -207,7 +207,7 @@ jfox query "卢曼的方法论"
207
207
  | `jfox init` | 初始化知识库 | `jfox init --name work --desc "工作笔记"` |
208
208
  | `jfox kb list` | 列出所有知识库 | `jfox kb list` |
209
209
  | `jfox kb create <name>` | 创建知识库 | `jfox kb create work --desc "工作笔记"` |
210
- | `jfox kb switch <name>` | 切换默认知识库 | `jfox kb switch work` |
210
+ | `jfox kb use <name>` | 切换默认知识库 | `jfox kb use work` |
211
211
  | `jfox kb info [name]` | 查看知识库详情 | `jfox kb info work` |
212
212
  | `jfox kb rename <old> <new>` | 重命名知识库 | `jfox kb rename work job` |
213
213
  | `jfox kb remove <name>` | 删除知识库 | `jfox kb remove temp --force` |
@@ -321,7 +321,7 @@ $ jfox kb list
321
321
 
322
322
  ```bash
323
323
  # 切换到 work 知识库
324
- jfox kb switch work
324
+ jfox kb use work
325
325
 
326
326
  # 之后的所有操作都在 work 知识库上进行
327
327
  jfox add "新项目想法" --title "项目A"
@@ -106,7 +106,7 @@ jfox init --name personal --path ~/my-notes --desc "个人笔记"
106
106
  jfox kb list
107
107
 
108
108
  # 切换默认知识库
109
- jfox kb switch work
109
+ jfox kb use work
110
110
 
111
111
  # 查看知识库详情
112
112
  jfox kb info work
@@ -170,7 +170,7 @@ jfox query "卢曼的方法论"
170
170
  | `jfox init` | 初始化知识库 | `jfox init --name work --desc "工作笔记"` |
171
171
  | `jfox kb list` | 列出所有知识库 | `jfox kb list` |
172
172
  | `jfox kb create <name>` | 创建知识库 | `jfox kb create work --desc "工作笔记"` |
173
- | `jfox kb switch <name>` | 切换默认知识库 | `jfox kb switch work` |
173
+ | `jfox kb use <name>` | 切换默认知识库 | `jfox kb use work` |
174
174
  | `jfox kb info [name]` | 查看知识库详情 | `jfox kb info work` |
175
175
  | `jfox kb rename <old> <new>` | 重命名知识库 | `jfox kb rename work job` |
176
176
  | `jfox kb remove <name>` | 删除知识库 | `jfox kb remove temp --force` |
@@ -284,7 +284,7 @@ $ jfox kb list
284
284
 
285
285
  ```bash
286
286
  # 切换到 work 知识库
287
- jfox kb switch work
287
+ jfox kb use work
288
288
 
289
289
  # 之后的所有操作都在 work 知识库上进行
290
290
  jfox add "新项目想法" --title "项目A"