tianshu-harness 3.23.0 → 3.24.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 (115) hide show
  1. package/README.en.md +34 -32
  2. package/README.ja.md +47 -47
  3. package/README.ko.md +47 -47
  4. package/README.md +13 -10
  5. package/dist/{account-login-V6FOLHJR.js → account-login-FJYDGZ7D.js} +2 -2
  6. package/dist/{account-status-KHNPPAFL.js → account-status-GQBCUTXB.js} +4 -4
  7. package/dist/agent/worker-process/child.js +57 -56
  8. package/dist/{build-backends-5KXKR2S4.js → build-backends-I2WKCCU5.js} +4 -1
  9. package/dist/{chain-7MAMFXZ3.js → chain-FYKBOYRC.js} +2 -2
  10. package/dist/{chunk-2HKD2UFM.js → chunk-2KOY6BE3.js} +122 -5
  11. package/dist/chunk-2X4QWTJ7.js +1355 -0
  12. package/dist/{chunk-FFQSZJOO.js → chunk-3BRZMBTX.js} +2 -2
  13. package/dist/{chunk-73NJ7IT7.js → chunk-3CZLTKD3.js} +9 -6
  14. package/dist/{chunk-EBJTVRQN.js → chunk-4EUTXGNM.js} +1 -1
  15. package/dist/{chunk-ZZAWNALS.js → chunk-4FEPWT5X.js} +5 -3
  16. package/dist/{chunk-BKTQAYO2.js → chunk-4H4TVBEJ.js} +11 -0
  17. package/dist/{chunk-OUWAC7AQ.js → chunk-4RRJIE3M.js} +85 -3
  18. package/dist/{chunk-OHSV42QB.js → chunk-4UZYEDDP.js} +7 -0
  19. package/dist/{chunk-R43HJCDX.js → chunk-5PJ24C3V.js} +43 -13
  20. package/dist/{chunk-7KUCBNLB.js → chunk-6FQV7XDJ.js} +16 -1
  21. package/dist/{chunk-4U2ET7ZY.js → chunk-6QMCBQ52.js} +8 -8
  22. package/dist/{chunk-D54ZWG4T.js → chunk-72OR3KCJ.js} +12 -10
  23. package/dist/{chunk-V5DHFGI7.js → chunk-7FVNC2ZO.js} +1 -1
  24. package/dist/chunk-7UAZVVUE.js +146 -0
  25. package/dist/{chunk-LQQ6XJ2Y.js → chunk-A74OHMQE.js} +7 -6
  26. package/dist/{chunk-CGOADM2X.js → chunk-AE4JGSIT.js} +1 -1
  27. package/dist/{chunk-ML3UKMH3.js → chunk-AHH5U5ML.js} +15 -1
  28. package/dist/{chunk-4J5TZGOE.js → chunk-AJPWMSWO.js} +98 -8
  29. package/dist/{chunk-5JRZPLI6.js → chunk-BBT73QEI.js} +6 -72
  30. package/dist/{chunk-OTNHSAGN.js → chunk-BZPTZYOH.js} +154 -27
  31. package/dist/{chunk-6HSVXHCZ.js → chunk-C4BAI4KE.js} +1 -1
  32. package/dist/{chunk-X2IK5LVR.js → chunk-D4XOMBWV.js} +524 -17
  33. package/dist/{chunk-J4U4AW46.js → chunk-DR5VASYC.js} +8 -0
  34. package/dist/{chunk-35H7GVNR.js → chunk-ENDZ5AQB.js} +2 -2
  35. package/dist/{chunk-424AP7FM.js → chunk-EZT7EFS7.js} +50 -8
  36. package/dist/{chunk-DEBI37QB.js → chunk-FL4CIO5T.js} +1 -1
  37. package/dist/{chunk-CGFZGR7G.js → chunk-G4FU2DI5.js} +13 -0
  38. package/dist/{chunk-3VGD2FXB.js → chunk-HO4O3QTA.js} +5 -5
  39. package/dist/{chunk-5B2OCU5P.js → chunk-HUBNFDV3.js} +468 -228
  40. package/dist/{chunk-JBZHIC6T.js → chunk-IBCC4M6B.js} +66 -59
  41. package/dist/{chunk-WOE3D7JM.js → chunk-IESISKUX.js} +7 -9
  42. package/dist/{chunk-AE3P3F6W.js → chunk-INUPBFOY.js} +2 -2
  43. package/dist/{chunk-T3ED6BY2.js → chunk-JHVIITGR.js} +1 -1
  44. package/dist/{chunk-NH6VIOAR.js → chunk-K2JLA7G6.js} +1 -1
  45. package/dist/{chunk-AOYHP3WI.js → chunk-K2W6L3EV.js} +356 -54
  46. package/dist/{chunk-D4PTYFOG.js → chunk-L2RI3QEW.js} +2 -2
  47. package/dist/{chunk-ER5JW2QZ.js → chunk-LJJXY43L.js} +182 -105
  48. package/dist/{chunk-JYV7I2QH.js → chunk-LLYOUH6U.js} +6 -6
  49. package/dist/{chunk-V5YIPMHV.js → chunk-MI5FRZEQ.js} +73 -29
  50. package/dist/chunk-MPX7Z4KQ.js +159 -0
  51. package/dist/{chunk-LA6IPTGH.js → chunk-N4KGRYVB.js} +1 -1
  52. package/dist/{chunk-KWVTXT5B.js → chunk-NR3LAYJ7.js} +1 -1
  53. package/dist/{chunk-BXHV3GSB.js → chunk-NWJFB7ZI.js} +487 -86
  54. package/dist/{chunk-OO3TAHO5.js → chunk-NYDTN5W4.js} +1 -0
  55. package/dist/{chunk-EHHUASO5.js → chunk-OMMC3KNF.js} +3 -3
  56. package/dist/{chunk-SEPGEJNK.js → chunk-PKWVEHA2.js} +8 -4
  57. package/dist/{chunk-ZQKXBUB7.js → chunk-QCEY3WDB.js} +124 -5
  58. package/dist/{chunk-TVHW77C7.js → chunk-QEWIDRNY.js} +1 -1
  59. package/dist/{chunk-DWROHPXP.js → chunk-RS3SD2AD.js} +5 -4
  60. package/dist/{chunk-ILBCKAV6.js → chunk-RV4KPWEU.js} +1 -1
  61. package/dist/{chunk-THKDVSEC.js → chunk-SINZOIBW.js} +1 -1
  62. package/dist/chunk-SS5A5ZOD.js +82 -0
  63. package/dist/{chunk-WMUWEO2C.js → chunk-TI5PMDHA.js} +17 -17
  64. package/dist/{chunk-B3YEBABJ.js → chunk-TINTPE52.js} +117 -44
  65. package/dist/{chunk-2E6CK2RC.js → chunk-TVJO4SCJ.js} +5 -6
  66. package/dist/{chunk-KIOXTQQL.js → chunk-UM5YRM4D.js} +135 -3
  67. package/dist/chunk-V3HROJN4.js +81 -0
  68. package/dist/{chunk-UXXS53EA.js → chunk-VAV6JHGO.js} +42 -0
  69. package/dist/{chunk-UFMN76QD.js → chunk-VSUFQQQW.js} +1 -1
  70. package/dist/{chunk-4QJ3Y5JM.js → chunk-VU3LIY7Y.js} +256 -80
  71. package/dist/{chunk-C6ZVZCPP.js → chunk-WBBA3AHA.js} +6 -6
  72. package/dist/{chunk-UTZYPKBF.js → chunk-X2PGKNNX.js} +1225 -168
  73. package/dist/{chunk-JRF5L6OD.js → chunk-XZ6BMISO.js} +2 -2
  74. package/dist/{chunk-AOVQ7VIF.js → chunk-YQJ2GF2E.js} +2 -2
  75. package/dist/{chunk-4XPFLICE.js → chunk-YRPOGMJW.js} +12 -8
  76. package/dist/cli/entry.js +1 -1
  77. package/dist/{connector-L5QQTR6Y.js → connector-ZC33K6GD.js} +3 -2
  78. package/dist/{context-62DC6EC3.js → context-2YC7D3J3.js} +17 -13
  79. package/dist/council-convene-IAQ4YP64.js +53 -0
  80. package/dist/{create-agent-config-ODSQWNVC.js → create-agent-config-R5TBBFH3.js} +20 -19
  81. package/dist/{default-registry-2PU3BTAU.js → default-registry-66WZEF7D.js} +30 -28
  82. package/dist/{deliver-task-KONV4C4M.js → deliver-task-3NHRNTXS.js} +26 -20
  83. package/dist/{delivery-gate-v2-F2YVMVGK.js → delivery-gate-v2-FHGG2CSI.js} +10 -9
  84. package/dist/{fetch-core-ZPPYDSZH.js → fetch-core-RRVZTH75.js} +4 -3
  85. package/dist/{galaxy-K72BBDQN.js → galaxy-RTGODYYQ.js} +36 -35
  86. package/dist/{goal-criteria-SCALAU2D.js → goal-criteria-TKDOWDN3.js} +13 -13
  87. package/dist/{headless-LSB6I7PT.js → headless-YCYOO4PY.js} +2 -2
  88. package/dist/{headless-coordinator-VDPDMVUT.js → headless-coordinator-TGYOTZTL.js} +37 -36
  89. package/dist/{login-flow-CD4ZGXOC.js → login-flow-X6QJ2JZ6.js} +7 -6
  90. package/dist/{loop-ULZYBDA3.js → loop-O5VMCC3D.js} +28 -26
  91. package/dist/main.js +81 -80
  92. package/dist/{manager-ROZBCWPA.js → manager-I2O2QKWC.js} +9 -6
  93. package/dist/{manager-Z7XFFUOM.js → manager-X6GVRTFN.js} +164 -9
  94. package/dist/{plugin-loader-ZZKX7ZE6.js → plugin-loader-7VGM6OI4.js} +4 -3
  95. package/dist/{project-trust-5WS5MOMU.js → project-trust-XZ2NIDIY.js} +7 -1
  96. package/dist/{provider-cli-ALDQXIT7.js → provider-cli-HFQ4U3US.js} +15 -15
  97. package/dist/{review-router-BVQZW3MX.js → review-router-D2V7C4M6.js} +2 -2
  98. package/dist/{serve-X2R2UTLF.js → serve-SJ3ZRCCG.js} +62 -61
  99. package/dist/{serve-agent-KHSU6RVV.js → serve-agent-EVRAOELG.js} +63 -62
  100. package/dist/{skill-loader-CK3RMO47.js → skill-loader-KKFWLM6P.js} +2 -1
  101. package/dist/{spawn-git-4HFU65AH.js → spawn-git-VQGDCYIN.js} +9 -8
  102. package/dist/{starflow-NOFBMPFU.js → starflow-MLZKTJJG.js} +8 -9
  103. package/dist/{team-orchestrate-S6NHZP7X.js → team-orchestrate-AMPI4ST4.js} +24 -24
  104. package/dist/{todo-QDXGRZZP.js → todo-QBYIZPPV.js} +3 -3
  105. package/dist/{todo-store-V3TTO5AH.js → todo-store-EVMVALBU.js} +2 -2
  106. package/dist/{tool-preset-LU5BYEDZ.js → tool-preset-6HUAFR3V.js} +7 -6
  107. package/dist/{wave-checkpoint-XLIIHXQA.js → wave-checkpoint-LVNQD4UZ.js} +17 -8
  108. package/dist/{web-cli-DUG4I35O.js → web-cli-ALQSU7BW.js} +5 -5
  109. package/dist/{web-search-3IK542AA.js → web-search-QB64C3F3.js} +7 -4
  110. package/package.json +2 -2
  111. package/dist/chunk-CEZNQVWM.js +0 -82
  112. package/dist/chunk-UHGLFRZE.js +0 -205
  113. package/dist/chunk-Z5Z3JHJY.js +0 -64
  114. package/dist/chunk-ZTRINFM2.js +0 -78
  115. package/dist/council-convene-NJWPNBDU.js +0 -46
package/README.en.md CHANGED
@@ -34,7 +34,7 @@
34
34
 
35
35
  > **Tianshu** is a TypeScript coding-agent runtime: one agent kernel shared by a **terminal TUI** and a **desktop GUI**. It is built to let models do continuous multi-step engineering work — with cognitive guardrails, multi-agent orchestration, and a DeepSeek V4 prefix-cache-friendly design for cost-efficient long sessions.
36
36
 
37
- - **One kernel, two surfaces** — a pure-ANSI terminal TUI (`rivet`) and a Tauri desktop app (macOS / Windows / Linux) share the same agent core, so capabilities stay consistent across interfaces.
37
+ - **One kernel, two surfaces** — a pure-ANSI terminal TUI (`tianshu`) and a Tauri desktop app (macOS / Windows / Linux) share the same agent core, so capabilities stay consistent across interfaces.
38
38
  - **Cognitive Virtual Machine (CVM)** — 72 runtime hooks across 5 lifecycle phases put an observable, correctable cognitive layer between model output and real tool actions ([A/B evidence](docs/CVM运行时对Agent模型的实证影响.md)).
39
39
  - **Multi-agent orchestration** — from lightweight `/scout` reconnaissance and parallel `/team` execution to `/council` multi-model review and `/galaxy` multi-dimensional attack, complex work runs in waves with review gates.
40
40
  - **Unified project memory** — project knowledge lives in `.rivet/knowledge/memory.jsonl`; automatic injection is limited to governance/constraint/preference memories, while old failures and docs stay explicit-recall-only so they cannot hijack new questions.
@@ -49,8 +49,8 @@
49
49
  </p>
50
50
 
51
51
  > [!NOTE]
52
- > The project was originally codenamed **Rivet**; the installed CLI binary is still
53
- > named `rivet` for backward compatibility.
52
+ > The project was originally codenamed **Rivet**. The primary CLI command is now `tianshu`,
53
+ > with `rivet` kept as a compatibility alias (same entry point); the data directory stays `~/.rivet`.
54
54
 
55
55
  ## Table of contents
56
56
 
@@ -161,7 +161,7 @@ Agent core logic (multi-turn loops, tool pipelines, context compaction) is notor
161
161
  **A. Desktop app (ready to use)** — download from [GitHub Releases](https://github.com/huiliyi37/Tianshu-harness/releases/latest): macOS `.dmg` (Apple Silicon / Intel) · Windows `.exe` setup wizard · Linux `.AppImage`.
162
162
  > **Linux support scope (new in 3.11.2)**: x64 AppImage, no install needed — `chmod +x Tianshu_*.AppImage` and run; requires glibc ≥ 2.35 (Ubuntu 22.04+ / Debian 12+ and other mainstream distros); X11 recommended (Wayland untested). Known limitation: voice input is unavailable on Linux for now (no community whisper build — falls back to browser speech); desktop auto-update works on Linux too.
163
163
 
164
- **B. One-line installer (recommended)** — checks Node ≥ 24 → installs `tianshu-harness` globally (npmmirror registry by default; override via `NPM_CONFIG_REGISTRY`) → launches `rivet`; idempotent, safe to re-run:
164
+ **B. One-line installer (recommended)** — checks Node ≥ 24 → installs `tianshu-harness` globally (npmmirror registry by default; override via `NPM_CONFIG_REGISTRY`) → launches `tianshu`; idempotent, safe to re-run:
165
165
 
166
166
  ```bash
167
167
  # macOS / Linux (bash)
@@ -179,9 +179,11 @@ powershell -ExecutionPolicy Bypass -File scripts\install-tui.ps1 -NoLaunch
179
179
 
180
180
  ```bash
181
181
  npm install -g tianshu-harness
182
- rivet
182
+ tianshu
183
183
  ```
184
184
 
185
+ > **Migrating from the old `tianshu-tui` package**: the old package owns the `rivet` bin link, so a direct install fails with `EEXIST` — uninstall first: `npm uninstall -g tianshu-tui && npm install -g tianshu-harness` (the one-line installer handles this automatically).
186
+
185
187
  **D. Build from source**:
186
188
 
187
189
  ```bash
@@ -194,12 +196,12 @@ npm start # or: node dist/cli/entry.js
194
196
 
195
197
  ### 3. Configure an API Key
196
198
 
197
- **No manual step needed for installed builds** — the first launch walks you through it: the desktop app opens a connection wizard, and the CLI auto-runs a setup wizard when no key is found. Just paste your DeepSeek key. Change it anytime: Settings → Provider on desktop, `rivet config` on the CLI.
199
+ **No manual step needed for installed builds** — the first launch walks you through it: the desktop app opens a connection wizard, and the CLI auto-runs a setup wizard when no key is found. Just paste your DeepSeek key. Change it anytime: Settings → Provider on desktop, `tianshu config` on the CLI.
198
200
 
199
201
  **Manual configuration** is only for developers running from source (or pre-seeding a setup):
200
202
 
201
203
  ```bash
202
- rivet config set-key deepseek sk-xxx # key goes to secrets.json (0600); config.json keeps only a keyRef
204
+ tianshu config set-key deepseek sk-xxx # key goes to secrets.json (0600); config.json keeps only a keyRef
203
205
  export DEEPSEEK_API_KEY=sk-xxx # or: environment variable (current shell only)
204
206
  ```
205
207
 
@@ -209,7 +211,7 @@ export DEEPSEEK_API_KEY=sk-xxx # or: environment variable (current shell
209
211
  ### 4. Launch
210
212
 
211
213
  ```bash
212
- rivet # or: npm start / node dist/cli/entry.js
214
+ tianshu # or: npm start / node dist/cli/entry.js
213
215
  ```
214
216
 
215
217
  You should see the TUI with a `〉` prompt. Type your request and press Enter.
@@ -217,10 +219,10 @@ You should see the TUI with a `〉` prompt. Type your request and press Enter.
217
219
  ### Headless mode (script integration)
218
220
 
219
221
  ```bash
220
- rivet -p "explain src/agent/loop.ts" # one-shot prompt, text output, no TUI
221
- rivet -p "list all TODO comments" --json # JSON output for scripting
222
- rivet --stream-json -p "refactor this module" # NDJSON event stream: text_delta/tool_use/tool_result/turn_complete… (best for CI; output is auto-redacted)
223
- rivet --goal "fix all type errors" --budget 50 # headless goal autonomy, max 50 turns (default 100)
222
+ tianshu -p "explain src/agent/loop.ts" # one-shot prompt, text output, no TUI
223
+ tianshu -p "list all TODO comments" --json # JSON output for scripting
224
+ tianshu --stream-json -p "refactor this module" # NDJSON event stream: text_delta/tool_use/tool_result/turn_complete… (best for CI; output is auto-redacted)
225
+ tianshu --goal "fix all type errors" --budget 50 # headless goal autonomy, max 50 turns (default 100)
224
226
  ```
225
227
 
226
228
  ### Command-line flags
@@ -238,13 +240,13 @@ rivet --goal "fix all type errors" --budget 50 # headless goal autonomy, max 50
238
240
  | `--resume <id\|prefix>` `-r <id\|prefix>` | Resume a specific session (short prefix OK) |
239
241
  | `--resume` `-r` (bare) | Open the session picker after startup |
240
242
  | `--new` | Force a brand-new session |
241
- | `--list` · `rivet sessions` | Print the session list and exit |
243
+ | `--list` · `tianshu sessions` | Print the session list and exit |
242
244
  | `--dangerously-skip-permissions` | One-session Unattended (skip all approvals; write sandbox stays on) |
243
245
  | `--screen-reader` | Screen-reader mode (dynamic segments not rendered; periodic redraw halted) |
244
246
  | `--skip-welcome` | Skip the welcome screen |
245
247
  | `--stream-events <path>` | Mirror this run as NDJSON `SessionEvent`s to a file |
246
248
 
247
- Subcommands: `rivet config` (interactive config), `rivet serve` (sidecar HTTP/SSE server), `rivet sessions` (list sessions), `rivet logs` (log locations), `rivet browser status` / `rivet browser install [--no-mirror]` (chromium health check and one-shot install for `browser_debug`; mirrors by default).
249
+ Subcommands: `tianshu config` (interactive config), `tianshu serve` (sidecar HTTP/SSE server), `tianshu sessions` (list sessions), `tianshu logs` (log locations), `tianshu browser status` / `tianshu browser install [--no-mirror]` (chromium health check and one-shot install for `browser_debug`; mirrors by default).
248
250
 
249
251
  ### Auto-Update
250
252
 
@@ -325,7 +327,7 @@ Tianshu ships 50 built-in tools, assembled in preset tiers (resolution priority:
325
327
  | **taiyi** | 16 | Minimal evaluation tier — high-frequency core + delivery loop, without orchestration/browser/network/vision heavyweights; auto-applies when the taiyi star domain is pinned (explicit config always wins) |
326
328
 
327
329
  ```bash
328
- RIVET_TOOL_PRESET=full rivet # use full for this session
330
+ RIVET_TOOL_PRESET=full tianshu # use full for this session
329
331
  ```
330
332
 
331
333
  ```json
@@ -397,9 +399,9 @@ Long sessions accumulate context; past a point, starting fresh is cheaper than p
397
399
  - **State restore** — side panel, todos, and the active plan all come back
398
400
 
399
401
  ```bash
400
- rivet --continue # resume the most recent session for this cwd
401
- rivet --resume abc123 # resume a specific session (short prefix OK)
402
- rivet --resume # open the session picker after startup
402
+ tianshu --continue # resume the most recent session for this cwd
403
+ tianshu --resume abc123 # resume a specific session (short prefix OK)
404
+ tianshu --resume # open the session picker after startup
403
405
  ```
404
406
 
405
407
  ### Council (Multi-Perspective Review)
@@ -457,7 +459,7 @@ Reusable workflow playbooks. `visual-acceptance` (frontend/UI change acceptance:
457
459
 
458
460
  Create a custom skill by dropping a `.md` file with YAML frontmatter (`name`, `description`, `triggers`) into `.rivet/skills/`.
459
461
 
460
- > `writing-plans` / `executing-plans` are now built-in native flows (planning follows the system prompt's `<plan-mode>` discipline, execution the `<plan-executing>` discipline) — no skill files needed. `agent-harness-testing` / `cognitive-alignment` / `research-spec` left the default distribution and are archived in [`docs/skills/optional/`](docs/skills/optional/) — copy them into `.rivet/skills/` to enable.
462
+ > `writing-plans` / `executing-plans` are now built-in native flows (planning follows the system prompt's `<plan-mode>` discipline, execution the `<plan-executing>` discipline) — no skill files needed. `agent-harness-testing` / `research-spec` left the default distribution and are archived in [`docs/skills/optional/`](docs/skills/optional/) — copy them into `.rivet/skills/` to enable.
461
463
 
462
464
  ### Cross-Session Memory
463
465
 
@@ -487,10 +489,10 @@ Key switches:
487
489
  Connect external tool servers — documentation search, databases, APIs — directly into the agent's tool pipeline. MCP servers auto-discover at startup; their tools appear as `mcp__<serverId>__<toolName>`.
488
490
 
489
491
  ```bash
490
- rivet config mcp add-stdio <server-id> npx -y <package> [args...] # local process
491
- rivet config mcp add-sse <server-id> http://localhost:3001/sse # remote/network
492
- rivet config mcp add-preset context7 # popular preset
493
- rivet config mcp list # list + status
492
+ tianshu config mcp add-stdio <server-id> npx -y <package> [args...] # local process
493
+ tianshu config mcp add-sse <server-id> http://localhost:3001/sse # remote/network
494
+ tianshu config mcp add-preset context7 # popular preset
495
+ tianshu config mcp list # list + status
494
496
  ```
495
497
 
496
498
  Inside a session: `/mcp` (status) and `/debug mcp` (diagnostics). MCP tools respect the same approval mode as built-in tools.
@@ -581,7 +583,7 @@ The desktop app builds a visual interaction layer on top of the TUI's full capab
581
583
 
582
584
  Turn your phone/tablet into a second screen for Tianshu — sessions run on the computer while you watch progress and approve actions from your phone:
583
585
 
584
- - **Enable**: Desktop **Settings → Network → Remote Access** (shows the LAN URL, access token, and a scan-to-connect QR code); or from the CLI side, start `rivet serve` with `RIVET_SERVE_HOST=0.0.0.0` (plus `--mobile-dir` pointing at the desktop build output) to serve `/mobile` on the same port.
586
+ - **Enable**: Desktop **Settings → Network → Remote Access** (shows the LAN URL, access token, and a scan-to-connect QR code); or from the CLI side, start `tianshu serve` with `RIVET_SERVE_HOST=0.0.0.0` (plus `--mobile-dir` pointing at the desktop build output) to serve `/mobile` on the same port.
585
587
  - **Connect**: open `http://<computer-LAN-IP>:3100/mobile` in your phone browser — scanning the QR auto-fills the token (the URL is then immediately cleaned to avoid leaking it); manual token entry also works.
586
588
  - **What you can do**: session list (sessions with pending approvals pinned on top) → read-only live timeline for a session (same folding / auto-reconnect semantics as the desktop) → approval / plan / question cards + abort button. Sending messages is intentionally out of scope.
587
589
  - **Security**: trusted LAN or tunnel only (Tailscale/SSH); in LAN mode the bearer token is the sole credential — treat it like a password; never port-forward to the public internet.
@@ -634,9 +636,9 @@ Registration steps and parameters are covered under “Image generation” in [M
634
636
  Switch providers inside a session with `/model <name>`.
635
637
 
636
638
  ```bash
637
- rivet config # interactive setup (TTY)
638
- rivet config setup codex --default # Codex uses OAuth (browser login on first run)
639
- rivet config show
639
+ tianshu config # interactive setup (TTY)
640
+ tianshu config setup codex --default # Codex uses OAuth (browser login on first run)
641
+ tianshu config show
640
642
  ```
641
643
 
642
644
  Or edit `config.json` directly (only overrides needed, defaults are deep-merged). Location: `~/.rivet/config.json` for the CLI (`%LOCALAPPDATA%\.rivet` on Windows); for the desktop app check Settings → Storage (portable builds use `TianshuData\.rivet` next to the exe):
@@ -709,8 +711,8 @@ Quick reference:
709
711
  ```
710
712
 
711
713
  ```bash
712
- rivet --dangerously-skip-permissions # one-session Unattended
713
- rivet config set-approval auto-safe # persist the default tier
714
+ tianshu --dangerously-skip-permissions # one-session Unattended
715
+ tianshu config set-approval auto-safe # persist the default tier
714
716
  ```
715
717
 
716
718
  - Rules come in `[config]` (persisted) and `[session]` (current session) layers; `deny` always wins.
@@ -1024,7 +1026,7 @@ If Tianshu has been useful and you'd like to say thanks, you can. It stays a cof
1024
1026
 
1025
1027
  - **China mainland** — WeChat Pay (scan the QR code below)
1026
1028
 
1027
- <img src="docs/brand/assets/wechat-pay.jpg" width="240" alt="WeChat Pay">
1029
+ <img src="docs/brand/assets/wechat-donate.png" width="240" alt="WeChat Pay">
1028
1030
 
1029
1031
  ## ✨ Contributors
1030
1032
 
@@ -1032,9 +1034,9 @@ Thank you to everyone who has contributed to Tianshu (ordered by first contribut
1032
1034
 
1033
1035
  | Contributor | Contributions |
1034
1036
  |-------------|---------------|
1035
- | [@banxia](https://github.com/banxia) | Project creator · Core development |
1037
+ | [@huiliyi37](https://github.com/huiliyi37) | Project creator · Core development |
1036
1038
 
1037
- Full list (17 external contributors / 89 PRs) → CONTRIBUTORS.md.
1039
+ Full list (20 external contributors / 122 PRs) → CONTRIBUTORS.md.
1038
1040
 
1039
1041
  External PRs land via a "port" flow; authorship is credited with `Co-authored-by`
1040
1042
  trailers (auto-recorded by scripts/credit-contributors.sh) — contributor wall (full list in CONTRIBUTORS.md):
package/README.ja.md CHANGED
@@ -38,7 +38,7 @@
38
38
 
39
39
  > **天枢**は TypeScript で書かれたコーディングエージェントのランタイムです。**ターミナル TUI** と**デスクトップ GUI** が同一カーネルを共有し、モデルが質問に答えるだけでなく、認知的ガードレール・マルチエージェントオーケストレーション・DeepSeek V4 のプレフィックスキャッシュ向けに設計された低コストの長大セッションを備え、多段階のコーディング作業を継続的に完遂できるようにします。
40
40
 
41
- - **ターミナル × デスクトップ、一つのカーネル** —— 純 ANSI 自前 TUI(`rivet`)と Tauri デスクトップ(macOS / Windows / Linux)が同一エージェントカーネルを共有。両端で能力は一致し、利用シーンに応じて切り替えられます。
41
+ - **ターミナル × デスクトップ、一つのカーネル** —— 純 ANSI 自前 TUI(`tianshu`)と Tauri デスクトップ(macOS / Windows / Linux)が同一エージェントカーネルを共有。両端で能力は一致し、利用シーンに応じて切り替えられます。
42
42
  - **認知仮想マシン(CVM)** —— 5 大フェーズにまたがる 72 のランタイムフックが、モデル出力と実際のアクションの間に観測可能で修正可能な認知レイヤーを挟みます([A/B 実証](docs/CVM运行时对Agent模型的实证影响.md))。
43
43
  - **マルチエージェントオーケストレーション** —— 軽量な `/scout` 読み取り専用偵察、並行 `/team` 施工から、`/council` の複数席会診、`/galaxy` の多次元攻略まで。複雑なタスクは波(wave)単位で実行し、波ごとに検収します。
44
44
  - **統一プロジェクトメモリ** —— プロジェクト知識は `.rivet/knowledge/memory.jsonl` に書き込まれます。自動注入はガバナンス/制約系メモリに限定され、過去の問題やドキュメントは明示的な recall 経由のみ——新しいタスクを乗っ取りません。
@@ -53,7 +53,7 @@
53
53
  </p>
54
54
 
55
55
  > [!NOTE]
56
- > 本プロジェクトの当初の開発コードネームは **Rivet** でした。後方互換性のため、インストール済み CLI のコマンド名は現在も `rivet` のままです。
56
+ > 本プロジェクトの当初の開発コードネームは **Rivet** でした。CLI の主コマンドは現在 `tianshu` で、`rivet` は互換エイリアスとして残っています(同一エントリ)。データディレクトリは引き続き `~/.rivet` です。
57
57
 
58
58
  ## 目次
59
59
 
@@ -150,7 +150,7 @@ Layer 4: RuntimeHookPipeline(72 hooks)→ trap-and-emulate で退化行動
150
150
  > **Windows サポート範囲**:Windows 10(1809+、22H2 推奨)/ Windows 11。画面描画は **WebView2 Runtime(推奨 ≥ 120)** に依存——v3.5 以降のスクロール・描画最適化には新しいランタイムが必要で、古いとセッション領域のスクロールがカクつきます。3.5.3 以降インストーラーは完全なオフラインインストールパッケージを同梱(ネット不要・システムレベル登録)。既存ユーザーが自動更新で古すぎる旨の表示が出た場合:通知バーまたは「設定 → ランタイムとバージョン情報」で「修復ツールを実行」。**ウィンドウが完全に開かない**場合は、スタートメニューの「WebView2 を修復」、または [Releases](https://github.com/huiliyi37/Tianshu-harness/releases/latest) の `windows-repair` ディレクトリから `repair-webview2.cmd` をダブルクリック。[WebView2 オフラインインストールパッケージ](https://go.microsoft.com/fwlink/p/?LinkId=2124703) を手動インストールして再起動しても構いません。
151
151
  > **Win10 タブレットモードの既知動作**:タブレットモードでアプリを切り替えると前のアプリが画面外へスライドします——computer_use のスナップショットは遮へい/バックグラウンド自己修復(PrintWindow 描画)済みで、タブレットモードを切る必要はありません。
152
152
 
153
- **方法 B:ワンラインインストールスクリプト(推奨)** —— Node ≥ 24 を検証 → `tianshu-harness` をグローバルインストール(デフォルトは npmmirror ミラー加速、`NPM_CONFIG_REGISTRY` で上書き可)→ `rivet` を起動。冪等で再実行可能:
153
+ **方法 B:ワンラインインストールスクリプト(推奨)** —— Node ≥ 24 を検証 → `tianshu-harness` をグローバルインストール(デフォルトは npmmirror ミラー加速、`NPM_CONFIG_REGISTRY` で上書き可)→ `tianshu` を起動。冪等で再実行可能:
154
154
 
155
155
  ```bash
156
156
  # macOS / Linux(bash)
@@ -168,10 +168,10 @@ powershell -ExecutionPolicy Bypass -File scripts\install-tui.ps1 -NoLaunch
168
168
 
169
169
  ```bash
170
170
  npm install -g tianshu-harness
171
- rivet
171
+ tianshu
172
172
  ```
173
173
 
174
- > **Windows のヒント**:インストール後に `rivet が認識されない` と出た場合——まず**新しいターミナルを開く**(Node インストール時に開いていたウィンドウは古い PATH のまま)。それでも駄目なら、`npm prefix -g` が出力するディレクトリをユーザー PATH に追加して新しいターミナルを開く。公式インストーラーの Node はデフォルトでこの問題がありません。nvm/fnm/scoop インストールの場合は一度手動追加が必要です。
174
+ > **Windows のヒント**:インストール後に `tianshu が認識されない` と出た場合——まず**新しいターミナルを開く**(Node インストール時に開いていたウィンドウは古い PATH のまま)。それでも駄目なら、`npm prefix -g` が出力するディレクトリをユーザー PATH に追加して新しいターミナルを開く。公式インストーラーの Node はデフォルトでこの問題がありません。nvm/fnm/scoop インストールの場合は一度手動追加が必要です。
175
175
 
176
176
  **方法 D:ソースからビルド**:
177
177
 
@@ -195,7 +195,7 @@ cp completions/rivet.bash ~/.local/share/bash-completion/completions/rivet
195
195
  sudo cp completions/rivet.bash /usr/share/bash-completion/completions/rivet
196
196
  ```
197
197
 
198
- **zsh** —— `rivet.zsh` を `_rivet` という名前で `$fpath` に配置:
198
+ **zsh** —— `tianshu.zsh` を `_rivet` という名前で `$fpath` に配置:
199
199
 
200
200
  ```bash
201
201
  mkdir -p ~/.zsh/completions
@@ -213,19 +213,19 @@ cp completions/rivet.fish ~/.config/fish/completions/rivet.fish
213
213
  **Windows PowerShell** —— `$PROFILE` で dot-source:
214
214
 
215
215
  ```powershell
216
- Add-Content $PROFILE ". C:\path\to\rivet.ps1"
216
+ Add-Content $PROFILE ". C:\path\to\tianshu.ps1"
217
217
  ```
218
218
 
219
219
  > 補完内容は CLI と一致:トップレベルコマンド(`config` / `serve` / `sessions` / `browser` / `logs`)、グローバルフラグ、`config` の全サブコマンド、および `~/.rivet/config.json` から動的に読み込む provider 名。
220
220
 
221
221
  ### 4. API Key を設定(初回は必須)
222
222
 
223
- **直接インストールしたユーザーは手動設定不要**——初回 `rivet` 実行時にまずメイン画面に入り、自動で `/connect` が開きます。そこでプロバイダーを選んで認証を完了。以降いつでも `/connect` で Provider の追加・調整が可能。デスクトップ版では Settings → Provider でも管理できます。
223
+ **直接インストールしたユーザーは手動設定不要**——初回 `tianshu` 実行時にまずメイン画面に入り、自動で `/connect` が開きます。そこでプロバイダーを選んで認証を完了。以降いつでも `/connect` で Provider の追加・調整が可能。デスクトップ版では Settings → Provider でも管理できます。
224
224
 
225
225
  **開発者がソースを起動する場合**(または起動前に設定しておきたい場合)だけ手動で行います:
226
226
 
227
227
  ```bash
228
- rivet config set-key deepseek sk-xxx # キーは secrets.json(0600)に書かれ、config.json には keyRef のみ残る
228
+ tianshu config set-key deepseek sk-xxx # キーは secrets.json(0600)に書かれ、config.json には keyRef のみ残る
229
229
  export DEEPSEEK_API_KEY=sk-xxx # または:環境変数(現在のシェルでのみ有効)
230
230
  ```
231
231
 
@@ -234,7 +234,7 @@ export DEEPSEEK_API_KEY=sk-xxx # または:環境変数(現在のシ
234
234
  ### 5. 起動
235
235
 
236
236
  ```bash
237
- rivet # または:npm start / node dist/cli/entry.js
237
+ tianshu # または:npm start / node dist/cli/entry.js
238
238
  ```
239
239
 
240
240
  `〉` プロンプト付きの TUI が表示されます。要件を入力して Enter を押せば実行されます。
@@ -242,10 +242,10 @@ rivet # または:npm start / node dist/cli/entry.js
242
242
  ### ヘッドレスモード(スクリプト連携)
243
243
 
244
244
  ```bash
245
- rivet -p "src/agent/loop.ts を解説して" # 単発プロンプト、テキスト出力、TUI なし
246
- rivet -p "すべての TODO コメントを列挙して" --json # JSON 出力、スクリプト処理に便利
247
- rivet --stream-json -p "このモジュールをリファクタリングして" # NDJSON イベントストリーム:text_delta/tool_use/tool_result/turn_complete…(CI 連携に最適、出力に組込みのマスキングあり)
248
- rivet --goal "すべての型エラーを修正して" --budget 50 # ヘッドレス目標自律モード、最大 50 ターン(デフォルト 100)
245
+ tianshu -p "src/agent/loop.ts を解説して" # 単発プロンプト、テキスト出力、TUI なし
246
+ tianshu -p "すべての TODO コメントを列挙して" --json # JSON 出力、スクリプト処理に便利
247
+ tianshu --stream-json -p "このモジュールをリファクタリングして" # NDJSON イベントストリーム:text_delta/tool_use/tool_result/turn_complete…(CI 連携に最適、出力に組込みのマスキングあり)
248
+ tianshu --goal "すべての型エラーを修正して" --budget 50 # ヘッドレス目標自律モード、最大 50 ターン(デフォルト 100)
249
249
  ```
250
250
 
251
251
  ### コマンドライン引数
@@ -263,13 +263,13 @@ rivet --goal "すべての型エラーを修正して" --budget 50 # ヘッド
263
263
  | `--resume <id\|プレフィックス>` `-r <id\|プレフィックス>` | 指定セッションを復元(短いプレフィックスで可) |
264
264
  | `--resume` `-r`(裸) | 起動後にセッションセレクタを開く |
265
265
  | `--new` | 強制的に新規セッションを開始 |
266
- | `--list` · `rivet sessions` | セッション一覧を出力して終了 |
266
+ | `--list` · `tianshu sessions` | セッション一覧を出力して終了 |
267
267
  | `--dangerously-skip-permissions` | このセッションだけ全自動(すべての承認をスキップ。サンドボックスは稼働) |
268
268
  | `--screen-reader` | スクリーンリーダーモード(動的セグメントを描画せず、定期再描画を停止) |
269
269
  | `--skip-welcome` | ウェルカム画面をスキップ |
270
270
  | `--stream-events <path>` | この run を NDJSON `SessionEvent` としてファイルにミラーリング |
271
271
 
272
- サブコマンド:`rivet config`(設定コマンドのヘルプを表示。対話型 Provider 設定には TUI `/connect` を使用)、`rivet serve`(sidecar HTTP/SSE を起動)、`rivet sessions`(セッションを列挙)、`rivet logs`(ログの保存先)、`rivet browser status` / `rivet browser install [--no-mirror]`(`browser_debug` に必要な chromium のヘルスチェックとワンクリックインストール、デフォルトで国内ミラーを使用)。
272
+ サブコマンド:`tianshu config`(設定コマンドのヘルプを表示。対話型 Provider 設定には TUI `/connect` を使用)、`tianshu serve`(sidecar HTTP/SSE を起動)、`tianshu sessions`(セッションを列挙)、`tianshu logs`(ログの保存先)、`tianshu browser status` / `tianshu browser install [--no-mirror]`(`browser_debug` に必要な chromium のヘルスチェックとワンクリックインストール、デフォルトで国内ミラーを使用)。
273
273
 
274
274
  ### 自動更新
275
275
 
@@ -299,7 +299,7 @@ DeepSeek はキャッシュミスに 50× の料金を課します。天枢の
299
299
  - **バイト単位の差異** —— メッセージ内容にタイムスタンプ、ランダム ID などの不安定なバイトが含まれる
300
300
  - **境界をまたぐ書き換え** —— `/compact`(`turn===0` のときのみ履歴書き換え)、`/cd` でのプロジェクト切替(新しい user 境界で末尾断絶)
301
301
 
302
- 調査:① `rivet logs`(または TUI 内 `/logs`)でこのセッションのデータルートと `cache-log.jsonl` / `sensorium.jsonl` のパスを直接表示;② セッション `.jsonl` を開いて `cache_read_input_tokens` を検索し各ターンのヒットを確認;③ 全量テレメトリが必要なら `RIVET_DEBUG_TELEMETRY=1`(または任意の非空値)を設定して `sensorium.jsonl` を確認;④ `npm exec -- tsx scripts/verify-cache-hit-rate.ts` で複数ターン会話をシミュレート検証。パス一覧は下記「ログと調査」を参照。
302
+ 調査:① `tianshu logs`(または TUI 内 `/logs`)でこのセッションのデータルートと `cache-log.jsonl` / `sensorium.jsonl` のパスを直接表示;② セッション `.jsonl` を開いて `cache_read_input_tokens` を検索し各ターンのヒットを確認;③ 全量テレメトリが必要なら `RIVET_DEBUG_TELEMETRY=1`(または任意の非空値)を設定して `sensorium.jsonl` を確認;④ `npm exec -- tsx scripts/verify-cache-hit-rate.ts` で複数ターン会話をシミュレート検証。パス一覧は下記「ログと調査」を参照。
303
303
 
304
304
  ### 禅モード(Zen Mode):読みに集中する開始、手を動かせば解除
305
305
 
@@ -357,7 +357,7 @@ DeepSeek はキャッシュミスに 50× の料金を課します。天枢の
357
357
  | **taiyi** | 16 | 最小評価セット——高頻度コア+納品クローズドループ。オーケストレーション/ブラウザ/ネットワーク/ビジュアル等の重いツールを除去。太一星域が固定されると自動でこのセットに(後述「最小ツールセット」) |
358
358
 
359
359
  ```bash
360
- RIVET_TOOL_PRESET=full rivet # このセッションだけ full
360
+ RIVET_TOOL_PRESET=full tianshu # このセッションだけ full
361
361
  ```
362
362
 
363
363
  ```json
@@ -480,9 +480,9 @@ Plan Mode には星域委譲が内蔵——複雑な計画は自動で `delegate
480
480
  - **状態の復元** —— サイドバー、todo、アクティブな計画も一緒に復元
481
481
 
482
482
  ```bash
483
- rivet --continue # 現在の cwd の直近セッションを復元
484
- rivet --resume abc123 # 指定セッションを復元(短いプレフィックスで可)
485
- rivet --resume # 起動後にセッションセレクタを開く
483
+ tianshu --continue # 現在の cwd の直近セッションを復元
484
+ tianshu --resume abc123 # 指定セッションを復元(短いプレフィックスで可)
485
+ tianshu --resume # 起動後にセッションセレクタを開く
486
486
  ```
487
487
 
488
488
  ### 委員会(多視点レビュー)
@@ -505,7 +505,7 @@ rivet --resume # 起動後にセッションセレクタを開
505
505
 
506
506
  `.rivet/skills/` に YAML frontmatter(`name`、`description`、`triggers`)付きの `.md` を置けばカスタム skill にもできます。
507
507
 
508
- > `writing-plans` / `executing-plans` はネイティブフローとして内蔵済み(計画期はシステムプロンプトの `<plan-mode>` 規律、実行期は `<plan-executing>` 規律で実行)。skill ファイルは不要になりました。`agent-harness-testing` / `cognitive-alignment` / `research-spec` はデフォルト配布から外れ、[`docs/skills/optional/`](docs/skills/optional/) にアーカイブ——必要なとき手動で `.rivet/skills/` にコピーすれば有効化できます。
508
+ > `writing-plans` / `executing-plans` はネイティブフローとして内蔵済み(計画期はシステムプロンプトの `<plan-mode>` 規律、実行期は `<plan-executing>` 規律で実行)。skill ファイルは不要になりました。`agent-harness-testing` / `research-spec` はデフォルト配布から外れ、[`docs/skills/optional/`](docs/skills/optional/) にアーカイブ——必要なとき手動で `.rivet/skills/` にコピーすれば有効化できます。
509
509
 
510
510
  ### セッション間メモリ
511
511
 
@@ -535,10 +535,10 @@ rivet --resume # 起動後にセッションセレクタを開
535
535
  外部ツールサーバー——ドキュメント検索、データベース、API——を agent のツールパイプラインに直接接続。起動時に自動発見され、ツールは `mcp__<serverId>__<toolName>` の形で出現します。
536
536
 
537
537
  ```bash
538
- rivet config mcp add-stdio <server-id> npx -y <package> [args...] # ローカルプロセス
539
- rivet config mcp add-sse <server-id> http://localhost:3001/sse # リモート/ネットワーク
540
- rivet config mcp add-preset context7 # よく使うプリセット
541
- rivet config mcp list # 一覧+ステータス
538
+ tianshu config mcp add-stdio <server-id> npx -y <package> [args...] # ローカルプロセス
539
+ tianshu config mcp add-sse <server-id> http://localhost:3001/sse # リモート/ネットワーク
540
+ tianshu config mcp add-preset context7 # よく使うプリセット
541
+ tianshu config mcp list # 一覧+ステータス
542
542
  ```
543
543
 
544
544
  セッション内:`/mcp`(ステータス)、`/debug mcp`(診断)。MCP ツールは内蔵ツールと同じ承認モードに従います。
@@ -629,7 +629,7 @@ TUI は CLI のデフォルトサーフェスです。デスクトップ版(Ta
629
629
 
630
630
  スマホ/タブレットを天枢の「第二の画面」に——セッションは PC 上で実行し、スマホで進捗確認・承認操作ができます:
631
631
 
632
- - **有効化**:デスクトップ **設定 → Network → Remote Access**(LAN URL・アクセストークン・スキャン接続 QR を表示);または CLI 側で `RIVET_SERVE_HOST=0.0.0.0`(+デスクトップのビルド成果物を指す `--mobile-dir`)を指定して `rivet serve` を起動すると、同一ポートで `/mobile` が提供されます
632
+ - **有効化**:デスクトップ **設定 → Network → Remote Access**(LAN URL・アクセストークン・スキャン接続 QR を表示);または CLI 側で `RIVET_SERVE_HOST=0.0.0.0`(+デスクトップのビルド成果物を指す `--mobile-dir`)を指定して `tianshu serve` を起動すると、同一ポートで `/mobile` が提供されます
633
633
  - **接続**:同一 LAN 内のスマホブラウザで `http://<PCのLAN IP>:3100/mobile` を開く——QR スキャンでトークンが自動入力されます(直後に URL から除去され漏えい防止);手動入力にも対応
634
634
  - **できること**:セッション一覧(承認待ちが上位にハイライト)→ 単一セッションの読み取り専用ライブタイムライン(デスクトップと同じ折りたたみ/自動再接続セマンティクス)→ 承認・プラン・質問カード+中止ボタン。メッセージ送信は意図的に範囲外です
635
635
  - **セキュリティ境界**:信頼できる LAN またはトンネル(Tailscale/SSH)のみ。LAN モードではアクセストークンが唯一の資格情報——パスワードと同様に扱い、公開インターネットへのポート公開はしないでください
@@ -689,7 +689,7 @@ TUI は CLI のデフォルトサーフェスです。デスクトップ版(Ta
689
689
 
690
690
  解決チェーン:`RIVET_LEAN` 環境変数(常に優先)→ ドメイン上書き → グローバル runtime。デスクトップ版:設定 → 動作 → Lean リソースセット → ドメイン単位の上書き(ドメインリストは新規星域の追加に合わせて自動拡張)。注意:ドメイン上書きはセッション組立期に有効(起動時にドメインを固定)。実行中の `/domain` 切替はフリーズ済みツールセットと lean に影響しません(ツールフィンガープリント変更でプレフィックスキャッシュが再構築されるため)。
691
691
 
692
- **ファイル編集不要のワンクリック起動**:`/config` → Basics → 「最小セットと星域バインド」——あるドメイン(changgeng や taiyi など)を選択して保存すると、自動で `defaultDomain` にそのドメインを固定+そのドメインの taiyi 最小ツールセット上書き(lean リソース削減は含まない)。以降 `rivet` の素起動でその星域の最小セットセッションに入れます。「デフォルトモデル」フィールド(`agent.defaultModel`、`provider:modelId` 形式)と組み合わせれば完全にパラメータなしで起動可能。バインドをクリアすればデフォルトドメインに復帰(ドメイン上書き設定は保持)。デスクトップ版も同じ項目:設定 → システム → 「最小セットと星域バインド」。
692
+ **ファイル編集不要のワンクリック起動**:`/config` → Basics → 「最小セットと星域バインド」——あるドメイン(changgeng や taiyi など)を選択して保存すると、自動で `defaultDomain` にそのドメインを固定+そのドメインの taiyi 最小ツールセット上書き(lean リソース削減は含まない)。以降 `tianshu` の素起動でその星域の最小セットセッションに入れます。「デフォルトモデル」フィールド(`agent.defaultModel`、`provider:modelId` 形式)と組み合わせれば完全にパラメータなしで起動可能。バインドをクリアすればデフォルトドメインに復帰(ドメイン上書き設定は保持)。デスクトップ版も同じ項目:設定 → システム → 「最小セットと星域バインド」。
693
693
 
694
694
 
695
695
  ### 🎨 画像生成(テキストから画像)
@@ -720,10 +720,10 @@ OpenAI 形式のテキスト→画像エンドポイント(SiliconFlow / OpenA
720
720
  セッション内では `/model <name>` でいつでもプロバイダーを切替。
721
721
 
722
722
  ```bash
723
- rivet # TUI を起動。初回 key 欠如時は自動で /connect を開く
724
- rivet config # 設定コマンドのヘルプを表示
725
- rivet config setup codex --default # Codex は OAuth(初回ブラウザログイン)
726
- rivet config show # 完全な設定を表示
723
+ tianshu # TUI を起動。初回 key 欠如時は自動で /connect を開く
724
+ tianshu config # 設定コマンドのヘルプを表示
725
+ tianshu config setup codex --default # Codex は OAuth(初回ブラウザログイン)
726
+ tianshu config show # 完全な設定を表示
727
727
  ```
728
728
 
729
729
  config.json を直接編集することも可能(上書きしたいフィールドだけを書き、デフォルト値は深くマージされます)。ファイル位置:CLI は `~/.rivet/config.json`(Windows は `%LOCALAPPDATA%\.rivet`)。デスクトップ版は Settings → ストレージ位置に従い、ポータブル版は exe 横の `TianshuData\.rivet`——詳細は[データルートを先に特定](#データルートを先に特定する):
@@ -795,8 +795,8 @@ config.json を直接編集することも可能(上書きしたいフィー
795
795
  ```
796
796
 
797
797
  ```bash
798
- rivet --dangerously-skip-permissions # このセッションだけ全自動
799
- rivet config set-approval auto-safe # デフォルト段階を永続化
798
+ tianshu --dangerously-skip-permissions # このセッションだけ全自動
799
+ tianshu config set-approval auto-safe # デフォルト段階を永続化
800
800
  ```
801
801
 
802
802
  - ルールは `[config]`(永続)と `[session]`(このセッション)の 2 層で、`deny` が常に優先。
@@ -960,11 +960,11 @@ src/
960
960
 
961
961
  ```bash
962
962
  # ターミナル(TUI が起動できなくても使える——agent を初期化せず、設定を読まず、ネットもしない)
963
- rivet logs # このプロジェクトの直近メインセッションの全ログ保存先+生成有無+ゲート説明を一覧
964
- rivet logs --session <id> # 指定セッション
965
- rivet logs --json # 構造化出力、issue に貼れる
966
- rivet logs open # ファイルマネージャでセッションディレクトリを開く
967
- rivet logs open desktop # sidecar ログディレクトリを開く(GUI が起動できないときの第一現場)
963
+ tianshu logs # このプロジェクトの直近メインセッションの全ログ保存先+生成有無+ゲート説明を一覧
964
+ tianshu logs --session <id> # 指定セッション
965
+ tianshu logs --json # 構造化出力、issue に貼れる
966
+ tianshu logs open # ファイルマネージャでセッションディレクトリを開く
967
+ tianshu logs open desktop # sidecar ログディレクトリを開く(GUI が起動できないときの第一現場)
968
968
  ```
969
969
 
970
970
  - **TUI**:`/logs`(同上の一覧)。`/logs open` / `/logs open desktop` でディレクトリを直接開く
@@ -984,18 +984,18 @@ rivet logs open desktop # sidecar ログディレクトリを開く
984
984
  | `desktop/sidecar-exit.json` | sidecar 終了理由のパンくず | 終了時 |
985
985
  | `desktop/sessions/<id>/events.jsonl` | デスクトップ UI イベントストリーム(上記のセッション `.jsonl` とは別データ) | デスクトップの非 ephemeral セッション |
986
986
 
987
- プロジェクト内には他に `<cwd>/.rivet/knowledge/`、`artifacts/`、`plans/` などの共有データがあります。`sessionId` がないとき、六次元は `<cwd>/.rivet/sensorium.jsonl` にフォールバック書き込みされることもあります——`rivet logs` が実際のパスを表示します。
987
+ プロジェクト内には他に `<cwd>/.rivet/knowledge/`、`artifacts/`、`plans/` などの共有データがあります。`sessionId` がないとき、六次元は `<cwd>/.rivet/sensorium.jsonl` にフォールバック書き込みされることもあります——`tianshu logs` が実際のパスを表示します。
988
988
 
989
989
  #### シナリオ別早見
990
990
 
991
991
  | 現象 | まず見るもの |
992
992
  |------|------|
993
- | デスクトップウィンドウは開いたがアシスタントが返事しない | `rivet logs open desktop`、または Settings →「ログディレクトリを開く」。次に `desktop/sidecar-exit.json` |
994
- | キャッシュヒット率が異常 / コストが突然上がる | `rivet logs` → そのセッションの `cache-log.jsonl` と `.jsonl` 内の `cache_read_*` を開く |
993
+ | デスクトップウィンドウは開いたがアシスタントが返事しない | `tianshu logs open desktop`、または Settings →「ログディレクトリを開く」。次に `desktop/sidecar-exit.json` |
994
+ | キャッシュヒット率が異常 / コストが突然上がる | `tianshu logs` → そのセッションの `cache-log.jsonl` と `.jsonl` 内の `cache_read_*` を開く |
995
995
  | 六次元 / advisory が効いたか振り返りたい | `RIVET_DEBUG_TELEMETRY` を確認し、`sensorium.jsonl` を読む |
996
- | バグ報告 / 貢献の調査 | `rivet logs --json` をまるごと issue に貼る(会話本文は含まず、パスとサイズのみ) |
996
+ | バグ報告 / 貢献の調査 | `tianshu logs --json` をまるごと issue に貼る(会話本文は含まず、パスとサイズのみ) |
997
997
 
998
- `RIVET_SESSION_DIR` / `RIVET_DESKTOP_DIR` でセッションツリーとデスクトップツリーをそれぞれ移動可能。有効な上書きは `rivet logs` 出力の先頭に表示されます。
998
+ `RIVET_SESSION_DIR` / `RIVET_DESKTOP_DIR` でセッションツリーとデスクトップツリーをそれぞれ移動可能。有効な上書きは `tianshu logs` 出力の先頭に表示されます。
999
999
 
1000
1000
  ## 🔒 セキュリティ
1001
1001
 
@@ -1173,9 +1173,9 @@ rivet logs open desktop # sidecar ログディレクトリを開く
1173
1173
 
1174
1174
  | コントリビューター | 貢献内容 |
1175
1175
  |--------|----------|
1176
- | [@banxia](https://github.com/banxia) | プロジェクト創設者 · コア開発 |
1176
+ | [@huiliyi37](https://github.com/huiliyi37) | プロジェクト創設者 · コア開発 |
1177
1177
 
1178
- 完全なリスト(外部コントリビューター 17 名 / 89 PR)→ CONTRIBUTORS.md。
1178
+ 完全なリスト(外部コントリビューター 20 名 / 122 PR)→ CONTRIBUTORS.md。
1179
1179
 
1180
1180
  外部 PR は「取り込み(收编)」フローでマージされ、著者署名は `Co-authored-by` で
1181
1181
  コントリビューターグラフに計上されます(scripts/credit-contributors.sh が自動記録)——
@@ -1207,7 +1207,7 @@ rivet logs open desktop # sidecar ログディレクトリを開く
1207
1207
 
1208
1208
  天枢が役に立ったなら、気軽に投げ銭をどうぞ——これは一杯のコーヒーであり、契約ではありません。スポンサーは issue の優先度を変えず、機能スケジュールにも影響しません。
1209
1209
 
1210
- <img src="docs/brand/assets/wechat-pay.jpg" width="240" alt="WeChat Pay">
1210
+ <img src="docs/brand/assets/wechat-donate.png" width="240" alt="WeChat Pay">
1211
1211
 
1212
1212
  ## ライセンス
1213
1213