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.
- package/README.en.md +34 -32
- package/README.ja.md +47 -47
- package/README.ko.md +47 -47
- package/README.md +13 -10
- package/dist/{account-login-V6FOLHJR.js → account-login-FJYDGZ7D.js} +2 -2
- package/dist/{account-status-KHNPPAFL.js → account-status-GQBCUTXB.js} +4 -4
- package/dist/agent/worker-process/child.js +57 -56
- package/dist/{build-backends-5KXKR2S4.js → build-backends-I2WKCCU5.js} +4 -1
- package/dist/{chain-7MAMFXZ3.js → chain-FYKBOYRC.js} +2 -2
- package/dist/{chunk-2HKD2UFM.js → chunk-2KOY6BE3.js} +122 -5
- package/dist/chunk-2X4QWTJ7.js +1355 -0
- package/dist/{chunk-FFQSZJOO.js → chunk-3BRZMBTX.js} +2 -2
- package/dist/{chunk-73NJ7IT7.js → chunk-3CZLTKD3.js} +9 -6
- package/dist/{chunk-EBJTVRQN.js → chunk-4EUTXGNM.js} +1 -1
- package/dist/{chunk-ZZAWNALS.js → chunk-4FEPWT5X.js} +5 -3
- package/dist/{chunk-BKTQAYO2.js → chunk-4H4TVBEJ.js} +11 -0
- package/dist/{chunk-OUWAC7AQ.js → chunk-4RRJIE3M.js} +85 -3
- package/dist/{chunk-OHSV42QB.js → chunk-4UZYEDDP.js} +7 -0
- package/dist/{chunk-R43HJCDX.js → chunk-5PJ24C3V.js} +43 -13
- package/dist/{chunk-7KUCBNLB.js → chunk-6FQV7XDJ.js} +16 -1
- package/dist/{chunk-4U2ET7ZY.js → chunk-6QMCBQ52.js} +8 -8
- package/dist/{chunk-D54ZWG4T.js → chunk-72OR3KCJ.js} +12 -10
- package/dist/{chunk-V5DHFGI7.js → chunk-7FVNC2ZO.js} +1 -1
- package/dist/chunk-7UAZVVUE.js +146 -0
- package/dist/{chunk-LQQ6XJ2Y.js → chunk-A74OHMQE.js} +7 -6
- package/dist/{chunk-CGOADM2X.js → chunk-AE4JGSIT.js} +1 -1
- package/dist/{chunk-ML3UKMH3.js → chunk-AHH5U5ML.js} +15 -1
- package/dist/{chunk-4J5TZGOE.js → chunk-AJPWMSWO.js} +98 -8
- package/dist/{chunk-5JRZPLI6.js → chunk-BBT73QEI.js} +6 -72
- package/dist/{chunk-OTNHSAGN.js → chunk-BZPTZYOH.js} +154 -27
- package/dist/{chunk-6HSVXHCZ.js → chunk-C4BAI4KE.js} +1 -1
- package/dist/{chunk-X2IK5LVR.js → chunk-D4XOMBWV.js} +524 -17
- package/dist/{chunk-J4U4AW46.js → chunk-DR5VASYC.js} +8 -0
- package/dist/{chunk-35H7GVNR.js → chunk-ENDZ5AQB.js} +2 -2
- package/dist/{chunk-424AP7FM.js → chunk-EZT7EFS7.js} +50 -8
- package/dist/{chunk-DEBI37QB.js → chunk-FL4CIO5T.js} +1 -1
- package/dist/{chunk-CGFZGR7G.js → chunk-G4FU2DI5.js} +13 -0
- package/dist/{chunk-3VGD2FXB.js → chunk-HO4O3QTA.js} +5 -5
- package/dist/{chunk-5B2OCU5P.js → chunk-HUBNFDV3.js} +468 -228
- package/dist/{chunk-JBZHIC6T.js → chunk-IBCC4M6B.js} +66 -59
- package/dist/{chunk-WOE3D7JM.js → chunk-IESISKUX.js} +7 -9
- package/dist/{chunk-AE3P3F6W.js → chunk-INUPBFOY.js} +2 -2
- package/dist/{chunk-T3ED6BY2.js → chunk-JHVIITGR.js} +1 -1
- package/dist/{chunk-NH6VIOAR.js → chunk-K2JLA7G6.js} +1 -1
- package/dist/{chunk-AOYHP3WI.js → chunk-K2W6L3EV.js} +356 -54
- package/dist/{chunk-D4PTYFOG.js → chunk-L2RI3QEW.js} +2 -2
- package/dist/{chunk-ER5JW2QZ.js → chunk-LJJXY43L.js} +182 -105
- package/dist/{chunk-JYV7I2QH.js → chunk-LLYOUH6U.js} +6 -6
- package/dist/{chunk-V5YIPMHV.js → chunk-MI5FRZEQ.js} +73 -29
- package/dist/chunk-MPX7Z4KQ.js +159 -0
- package/dist/{chunk-LA6IPTGH.js → chunk-N4KGRYVB.js} +1 -1
- package/dist/{chunk-KWVTXT5B.js → chunk-NR3LAYJ7.js} +1 -1
- package/dist/{chunk-BXHV3GSB.js → chunk-NWJFB7ZI.js} +487 -86
- package/dist/{chunk-OO3TAHO5.js → chunk-NYDTN5W4.js} +1 -0
- package/dist/{chunk-EHHUASO5.js → chunk-OMMC3KNF.js} +3 -3
- package/dist/{chunk-SEPGEJNK.js → chunk-PKWVEHA2.js} +8 -4
- package/dist/{chunk-ZQKXBUB7.js → chunk-QCEY3WDB.js} +124 -5
- package/dist/{chunk-TVHW77C7.js → chunk-QEWIDRNY.js} +1 -1
- package/dist/{chunk-DWROHPXP.js → chunk-RS3SD2AD.js} +5 -4
- package/dist/{chunk-ILBCKAV6.js → chunk-RV4KPWEU.js} +1 -1
- package/dist/{chunk-THKDVSEC.js → chunk-SINZOIBW.js} +1 -1
- package/dist/chunk-SS5A5ZOD.js +82 -0
- package/dist/{chunk-WMUWEO2C.js → chunk-TI5PMDHA.js} +17 -17
- package/dist/{chunk-B3YEBABJ.js → chunk-TINTPE52.js} +117 -44
- package/dist/{chunk-2E6CK2RC.js → chunk-TVJO4SCJ.js} +5 -6
- package/dist/{chunk-KIOXTQQL.js → chunk-UM5YRM4D.js} +135 -3
- package/dist/chunk-V3HROJN4.js +81 -0
- package/dist/{chunk-UXXS53EA.js → chunk-VAV6JHGO.js} +42 -0
- package/dist/{chunk-UFMN76QD.js → chunk-VSUFQQQW.js} +1 -1
- package/dist/{chunk-4QJ3Y5JM.js → chunk-VU3LIY7Y.js} +256 -80
- package/dist/{chunk-C6ZVZCPP.js → chunk-WBBA3AHA.js} +6 -6
- package/dist/{chunk-UTZYPKBF.js → chunk-X2PGKNNX.js} +1225 -168
- package/dist/{chunk-JRF5L6OD.js → chunk-XZ6BMISO.js} +2 -2
- package/dist/{chunk-AOVQ7VIF.js → chunk-YQJ2GF2E.js} +2 -2
- package/dist/{chunk-4XPFLICE.js → chunk-YRPOGMJW.js} +12 -8
- package/dist/cli/entry.js +1 -1
- package/dist/{connector-L5QQTR6Y.js → connector-ZC33K6GD.js} +3 -2
- package/dist/{context-62DC6EC3.js → context-2YC7D3J3.js} +17 -13
- package/dist/council-convene-IAQ4YP64.js +53 -0
- package/dist/{create-agent-config-ODSQWNVC.js → create-agent-config-R5TBBFH3.js} +20 -19
- package/dist/{default-registry-2PU3BTAU.js → default-registry-66WZEF7D.js} +30 -28
- package/dist/{deliver-task-KONV4C4M.js → deliver-task-3NHRNTXS.js} +26 -20
- package/dist/{delivery-gate-v2-F2YVMVGK.js → delivery-gate-v2-FHGG2CSI.js} +10 -9
- package/dist/{fetch-core-ZPPYDSZH.js → fetch-core-RRVZTH75.js} +4 -3
- package/dist/{galaxy-K72BBDQN.js → galaxy-RTGODYYQ.js} +36 -35
- package/dist/{goal-criteria-SCALAU2D.js → goal-criteria-TKDOWDN3.js} +13 -13
- package/dist/{headless-LSB6I7PT.js → headless-YCYOO4PY.js} +2 -2
- package/dist/{headless-coordinator-VDPDMVUT.js → headless-coordinator-TGYOTZTL.js} +37 -36
- package/dist/{login-flow-CD4ZGXOC.js → login-flow-X6QJ2JZ6.js} +7 -6
- package/dist/{loop-ULZYBDA3.js → loop-O5VMCC3D.js} +28 -26
- package/dist/main.js +81 -80
- package/dist/{manager-ROZBCWPA.js → manager-I2O2QKWC.js} +9 -6
- package/dist/{manager-Z7XFFUOM.js → manager-X6GVRTFN.js} +164 -9
- package/dist/{plugin-loader-ZZKX7ZE6.js → plugin-loader-7VGM6OI4.js} +4 -3
- package/dist/{project-trust-5WS5MOMU.js → project-trust-XZ2NIDIY.js} +7 -1
- package/dist/{provider-cli-ALDQXIT7.js → provider-cli-HFQ4U3US.js} +15 -15
- package/dist/{review-router-BVQZW3MX.js → review-router-D2V7C4M6.js} +2 -2
- package/dist/{serve-X2R2UTLF.js → serve-SJ3ZRCCG.js} +62 -61
- package/dist/{serve-agent-KHSU6RVV.js → serve-agent-EVRAOELG.js} +63 -62
- package/dist/{skill-loader-CK3RMO47.js → skill-loader-KKFWLM6P.js} +2 -1
- package/dist/{spawn-git-4HFU65AH.js → spawn-git-VQGDCYIN.js} +9 -8
- package/dist/{starflow-NOFBMPFU.js → starflow-MLZKTJJG.js} +8 -9
- package/dist/{team-orchestrate-S6NHZP7X.js → team-orchestrate-AMPI4ST4.js} +24 -24
- package/dist/{todo-QDXGRZZP.js → todo-QBYIZPPV.js} +3 -3
- package/dist/{todo-store-V3TTO5AH.js → todo-store-EVMVALBU.js} +2 -2
- package/dist/{tool-preset-LU5BYEDZ.js → tool-preset-6HUAFR3V.js} +7 -6
- package/dist/{wave-checkpoint-XLIIHXQA.js → wave-checkpoint-LVNQD4UZ.js} +17 -8
- package/dist/{web-cli-DUG4I35O.js → web-cli-ALQSU7BW.js} +5 -5
- package/dist/{web-search-3IK542AA.js → web-search-QB64C3F3.js} +7 -4
- package/package.json +2 -2
- package/dist/chunk-CEZNQVWM.js +0 -82
- package/dist/chunk-UHGLFRZE.js +0 -205
- package/dist/chunk-Z5Z3JHJY.js +0 -64
- package/dist/chunk-ZTRINFM2.js +0 -78
- 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 (`
|
|
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
|
|
53
|
-
>
|
|
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 `
|
|
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
|
-
|
|
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, `
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
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` · `
|
|
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: `
|
|
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
|
|
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
|
-
|
|
401
|
-
|
|
402
|
-
|
|
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` / `
|
|
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
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
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 `
|
|
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
|
-
|
|
638
|
-
|
|
639
|
-
|
|
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
|
-
|
|
713
|
-
|
|
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-
|
|
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
|
-
| [@
|
|
1037
|
+
| [@huiliyi37](https://github.com/huiliyi37) | Project creator · Core development |
|
|
1036
1038
|
|
|
1037
|
-
Full list (
|
|
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(`
|
|
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**
|
|
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` で上書き可)→ `
|
|
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
|
-
|
|
171
|
+
tianshu
|
|
172
172
|
```
|
|
173
173
|
|
|
174
|
-
> **Windows のヒント**:インストール後に `
|
|
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** —— `
|
|
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\
|
|
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
|
-
**直接インストールしたユーザーは手動設定不要**——初回 `
|
|
223
|
+
**直接インストールしたユーザーは手動設定不要**——初回 `tianshu` 実行時にまずメイン画面に入り、自動で `/connect` が開きます。そこでプロバイダーを選んで認証を完了。以降いつでも `/connect` で Provider の追加・調整が可能。デスクトップ版では Settings → Provider でも管理できます。
|
|
224
224
|
|
|
225
225
|
**開発者がソースを起動する場合**(または起動前に設定しておきたい場合)だけ手動で行います:
|
|
226
226
|
|
|
227
227
|
```bash
|
|
228
|
-
|
|
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
|
-
|
|
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
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
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` · `
|
|
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
|
-
サブコマンド:`
|
|
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
|
-
調査:① `
|
|
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
|
|
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
|
-
|
|
484
|
-
|
|
485
|
-
|
|
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` / `
|
|
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
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
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`)を指定して `
|
|
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 リソース削減は含まない)。以降 `
|
|
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
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
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
|
-
|
|
799
|
-
|
|
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
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
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` にフォールバック書き込みされることもあります——`
|
|
987
|
+
プロジェクト内には他に `<cwd>/.rivet/knowledge/`、`artifacts/`、`plans/` などの共有データがあります。`sessionId` がないとき、六次元は `<cwd>/.rivet/sensorium.jsonl` にフォールバック書き込みされることもあります——`tianshu logs` が実際のパスを表示します。
|
|
988
988
|
|
|
989
989
|
#### シナリオ別早見
|
|
990
990
|
|
|
991
991
|
| 現象 | まず見るもの |
|
|
992
992
|
|------|------|
|
|
993
|
-
| デスクトップウィンドウは開いたがアシスタントが返事しない | `
|
|
994
|
-
| キャッシュヒット率が異常 / コストが突然上がる | `
|
|
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
|
-
| バグ報告 / 貢献の調査 | `
|
|
996
|
+
| バグ報告 / 貢献の調査 | `tianshu logs --json` をまるごと issue に貼る(会話本文は含まず、パスとサイズのみ) |
|
|
997
997
|
|
|
998
|
-
`RIVET_SESSION_DIR` / `RIVET_DESKTOP_DIR` でセッションツリーとデスクトップツリーをそれぞれ移動可能。有効な上書きは `
|
|
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
|
-
| [@
|
|
1176
|
+
| [@huiliyi37](https://github.com/huiliyi37) | プロジェクト創設者 · コア開発 |
|
|
1177
1177
|
|
|
1178
|
-
完全なリスト(外部コントリビューター
|
|
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-
|
|
1210
|
+
<img src="docs/brand/assets/wechat-donate.png" width="240" alt="WeChat Pay">
|
|
1211
1211
|
|
|
1212
1212
|
## ライセンス
|
|
1213
1213
|
|