@zhiman_innies/innies-codex 0.122.61 → 0.122.63

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.
package/README.md CHANGED
@@ -439,6 +439,25 @@ innies app-server # JSON-RPC + WebSocket,供 IDE/系统
439
439
  - `qwen35_35b` 模型权重**不在本仓库**,使用知满推理服务即受其商务条款约束;客户机房私有化部署的权重交付由知满实施团队处理
440
440
  - TUI 品牌字、`Zhiman` 商标属知满科技
441
441
 
442
+ ### 5. 工具默认曝光(设计取舍)
443
+
444
+ 3 个 qwen 模型在 catalog 里 `experimental_supported_tools = []`,意味着:
445
+
446
+ - ✅ **默认开**:`shell` / `exec_command` / `apply_patch`(后者需 `features.apply_patch_freeform = true`,模板已开)
447
+ - ❌ **默认禁**:`list_dir`、`read_file` 等独立工具;模型遇到目录/文件读取需求时会自动 fallback 到 `shell ls` / `shell cat`,功能等价但 token 略多
448
+
449
+ 如确需 `list_dir` 作为独立工具暴露给模型(例如对延迟敏感的批量目录扫描场景),编辑 `~/.inniescoder/catalog.json`:
450
+
451
+ ```jsonc
452
+ {
453
+ "slug": "qwen36_27b",
454
+ // ... 其他字段
455
+ "experimental_supported_tools": ["list_dir"] // 加入想曝光的工具名
456
+ }
457
+ ```
458
+
459
+ > 这是**有意保留**的默认取舍 — 既能维持 prompt 简洁、避免 qwen 模型在工具选择上 over-think,又给需要的用户留出 catalog-level 配置开关。
460
+
442
461
  ---
443
462
 
444
463
  ## 文档
@@ -30,13 +30,24 @@ const INSTALL_SUPERPOWERS_ENV = "INNIES_INSTALL_SUPERPOWERS";
30
30
  const SUPERPOWERS_MARKER_FILENAME = ".innies-superpowers.marker";
31
31
  const ZHIMAN_35B_PROVIDER_HEADER = "[model_providers.zhiman_35b]";
32
32
  const ZHIMAN_27B_PROVIDER_HEADER = "[model_providers.zhiman_27b]";
33
+ // N-BUG8 (2026-06-15): the Rust `bailian` factory only recognises the
34
+ // block header `[model_providers.bailian]`. We previously emitted
35
+ // `[model_providers.dashscope]` as a user-facing alias, but the factory
36
+ // resolved its own name (`bailian`) and silently 401'd at api.openai.com
37
+ // when the user relied on the env-var fallback path. The canonical
38
+ // header is now `bailian`; `dashscope` is kept ONLY as a migration
39
+ // source for the rename-and-rewrite logic in `normalizeInniesConfig`.
33
40
  const DASHSCOPE_PROVIDER_HEADER = "[model_providers.dashscope]";
34
- // Default `wire_api` emitted in freshly generated provider blocks. Both
35
- // the private vLLM and the DashScope public cloud only expose the
36
- // OpenAI Chat Completions endpoint (`/v1/chat/completions`); the
37
- // Responses API is not available on either, so chat_completions is
38
- // the only correct default.
39
- const DEFAULT_PROVIDER_WIRE_API = "chat_completions";
41
+ const BAILIAN_PROVIDER_HEADER = "[model_providers.bailian]";
42
+ // Default `wire_api` emitted in freshly generated provider blocks. The
43
+ // user's documented production endpoint for both the private vLLM
44
+ // (`/v1/responses`) and DashScope public cloud is the Responses API;
45
+ // vLLM 0.7 natively serves it, and DashScope's compatible-mode
46
+ // exposes both endpoints. R12 reversed the historical chat_completions
47
+ // default after E2E verification that all 4 paths
48
+ // (ChatCompletions/Responses × 1+1/multi-step) work end-to-end on
49
+ // both providers.
50
+ const DEFAULT_PROVIDER_WIRE_API = "responses";
40
51
  const RESERVED_PROVIDER_HEADERS = Object.freeze([
41
52
  "[model_providers.openai]",
42
53
  "[model_providers.ollama]",
@@ -470,13 +481,24 @@ function normalizeInniesConfig(contents, catalogPath, state) {
470
481
  }
471
482
 
472
483
  updated = normalizeManagedProviderBlocks(stripReservedProviderBlocks(updated));
484
+ // N-BUG8 (2026-06-15): migrate the legacy `[model_providers.dashscope]`
485
+ // user-facing alias to the canonical `[model_providers.bailian]`
486
+ // header that the Rust factory recognises. Also rewrite the
487
+ // `model_provider = "dashscope"` value to `"bailian"` so the
488
+ // block lookup in the Rust resolver matches the block key.
489
+ if (updated.includes(DASHSCOPE_PROVIDER_HEADER)) {
490
+ updated = updated.replace(DASHSCOPE_PROVIDER_HEADER, BAILIAN_PROVIDER_HEADER);
491
+ }
492
+ if (/(^|\n)\s*model_provider\s*=\s*"dashscope"/.test(updated)) {
493
+ updated = updated.replace(/(^|\n)(\s*model_provider\s*=\s*)"dashscope"/, '$1$2"bailian"');
494
+ }
473
495
  if (!updated.includes(ZHIMAN_35B_PROVIDER_HEADER)) {
474
496
  updated = `${updated.trimEnd()}\n\n${defaultZhiman35bProviderBlock()}`;
475
497
  }
476
498
  if (!updated.includes(ZHIMAN_27B_PROVIDER_HEADER)) {
477
499
  updated = `${updated.trimEnd()}\n\n${defaultZhiman27bProviderBlock()}`;
478
500
  }
479
- if (!updated.includes(DASHSCOPE_PROVIDER_HEADER)) {
501
+ if (!updated.includes(BAILIAN_PROVIDER_HEADER) && !updated.includes(DASHSCOPE_PROVIDER_HEADER)) {
480
502
  updated = `${updated.trimEnd()}\n\n${defaultDashscopeProviderBlock()}`;
481
503
  }
482
504
 
@@ -664,8 +686,14 @@ function normalizeManagedProviderBlocks(contents) {
664
686
  updated = normalizeProviderBlock(updated, {
665
687
  providerHeader: ZHIMAN_27B_PROVIDER_HEADER,
666
688
  });
689
+ // N-BUG8+R12 (2026-06-15): normalise the BAILIAN block (not the
690
+ // legacy DASHSCOPE alias). After the migration rename, the dashscope
691
+ // header is gone from the file — using DASHSCOPE_PROVIDER_HEADER here
692
+ // left the `wire_api` line in the freshly-rewritten bailian block
693
+ // stale, so it kept whatever the pre-migration value was (typically
694
+ // `chat_completions`) instead of being updated to the new default.
667
695
  updated = normalizeProviderBlock(updated, {
668
- providerHeader: DASHSCOPE_PROVIDER_HEADER,
696
+ providerHeader: BAILIAN_PROVIDER_HEADER,
669
697
  });
670
698
  // Migration safety net: legacy / typo'd `env_key` names for the
671
699
  // dashscope block. If a user has `env_key = "BAILIAN_API_KEY"` (the
@@ -922,7 +950,7 @@ function defaultDashscopeProviderBlock() {
922
950
  // `request_body_extras` to inject it if you do not want to set
923
951
  // `model_reasoning_effort` at the root.
924
952
  return [
925
- DASHSCOPE_PROVIDER_HEADER,
953
+ BAILIAN_PROVIDER_HEADER,
926
954
  'name = "bailian"',
927
955
  `# base_url = "https://dashscope.aliyuncs.com/compatible-mode/v1" # FILL IN: DashScope OpenAI-compatible endpoint — keep this default if you use the public cloud`,
928
956
  `# env_key = "DASHSCOPE_API_KEY" # FILL IN: the env var NAME holding your DashScope API key (NOT the key itself) — see file header`,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zhiman_innies/innies-codex",
3
- "version": "0.122.61",
3
+ "version": "0.122.63",
4
4
  "license": "Apache-2.0",
5
5
  "bin": {
6
6
  "innies": "bin/innies.js"
@@ -23,9 +23,9 @@
23
23
  "postinstall": "node bin/innies-init.js"
24
24
  },
25
25
  "optionalDependencies": {
26
- "@zhiman_innies/innies-codex-darwin-x64": "0.122.61-darwin-x64",
27
- "@zhiman_innies/innies-codex-darwin-arm64": "0.122.61-darwin-arm64",
28
- "@zhiman_innies/innies-codex-win32-x64": "0.122.61-win32-x64",
29
- "@zhiman_innies/innies-codex-win32-arm64": "0.122.61-win32-arm64"
26
+ "@zhiman_innies/innies-codex-darwin-x64": "0.122.63-darwin-x64",
27
+ "@zhiman_innies/innies-codex-darwin-arm64": "0.122.63-darwin-arm64",
28
+ "@zhiman_innies/innies-codex-win32-x64": "0.122.63-win32-x64",
29
+ "@zhiman_innies/innies-codex-win32-arm64": "0.122.63-win32-arm64"
30
30
  }
31
31
  }