@researai/deepscientist 1.5.9 → 1.5.12
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 +112 -99
- package/assets/branding/connector-qq.png +0 -0
- package/assets/branding/connector-rokid.png +0 -0
- package/assets/branding/connector-weixin.png +0 -0
- package/assets/branding/projects.png +0 -0
- package/bin/ds.js +519 -63
- package/docs/assets/branding/projects.png +0 -0
- package/docs/en/00_QUICK_START.md +338 -68
- package/docs/en/01_SETTINGS_REFERENCE.md +14 -0
- package/docs/en/02_START_RESEARCH_GUIDE.md +180 -4
- package/docs/en/04_LINGZHU_CONNECTOR_GUIDE.md +62 -179
- package/docs/en/09_DOCTOR.md +66 -5
- package/docs/en/10_WEIXIN_CONNECTOR_GUIDE.md +137 -0
- package/docs/en/11_LICENSE_AND_RISK.md +256 -0
- package/docs/en/12_GUIDED_WORKFLOW_TOUR.md +446 -0
- package/docs/en/13_CORE_ARCHITECTURE_GUIDE.md +297 -0
- package/docs/en/14_PROMPT_SKILLS_AND_MCP_GUIDE.md +506 -0
- package/docs/en/15_CODEX_PROVIDER_SETUP.md +284 -0
- package/docs/en/99_ACKNOWLEDGEMENTS.md +4 -1
- package/docs/en/README.md +83 -0
- package/docs/images/lingzhu/rokid-agent-platform-create.png +0 -0
- package/docs/images/weixin/weixin-plugin-entry.png +0 -0
- package/docs/images/weixin/weixin-plugin-entry.svg +33 -0
- package/docs/images/weixin/weixin-qr-confirm.svg +30 -0
- package/docs/images/weixin/weixin-quest-media-flow.svg +44 -0
- package/docs/images/weixin/weixin-settings-bind.svg +57 -0
- package/docs/zh/00_QUICK_START.md +345 -72
- package/docs/zh/01_SETTINGS_REFERENCE.md +14 -0
- package/docs/zh/02_START_RESEARCH_GUIDE.md +181 -3
- package/docs/zh/04_LINGZHU_CONNECTOR_GUIDE.md +62 -193
- package/docs/zh/09_DOCTOR.md +68 -5
- package/docs/zh/10_WEIXIN_CONNECTOR_GUIDE.md +144 -0
- package/docs/zh/11_LICENSE_AND_RISK.md +256 -0
- package/docs/zh/12_GUIDED_WORKFLOW_TOUR.md +442 -0
- package/docs/zh/13_CORE_ARCHITECTURE_GUIDE.md +296 -0
- package/docs/zh/14_PROMPT_SKILLS_AND_MCP_GUIDE.md +506 -0
- package/docs/zh/15_CODEX_PROVIDER_SETUP.md +285 -0
- package/docs/zh/99_ACKNOWLEDGEMENTS.md +4 -1
- package/docs/zh/README.md +129 -0
- package/install.sh +0 -34
- package/package.json +2 -2
- package/pyproject.toml +1 -1
- package/src/deepscientist/__init__.py +1 -1
- package/src/deepscientist/annotations.py +343 -0
- package/src/deepscientist/artifact/arxiv.py +484 -37
- package/src/deepscientist/artifact/service.py +574 -108
- package/src/deepscientist/arxiv_library.py +275 -0
- package/src/deepscientist/bash_exec/monitor.py +7 -5
- package/src/deepscientist/bash_exec/service.py +93 -21
- package/src/deepscientist/bridges/builtins.py +2 -0
- package/src/deepscientist/bridges/connectors.py +447 -0
- package/src/deepscientist/channels/__init__.py +2 -0
- package/src/deepscientist/channels/builtins.py +3 -1
- package/src/deepscientist/channels/local.py +3 -3
- package/src/deepscientist/channels/qq.py +8 -8
- package/src/deepscientist/channels/qq_gateway.py +1 -1
- package/src/deepscientist/channels/relay.py +14 -8
- package/src/deepscientist/channels/weixin.py +59 -0
- package/src/deepscientist/channels/weixin_ilink.py +388 -0
- package/src/deepscientist/config/models.py +23 -2
- package/src/deepscientist/config/service.py +539 -67
- package/src/deepscientist/connector/__init__.py +4 -0
- package/src/deepscientist/connector/connector_profiles.py +481 -0
- package/src/deepscientist/connector/lingzhu_support.py +668 -0
- package/src/deepscientist/connector/qq_profiles.py +206 -0
- package/src/deepscientist/connector/weixin_support.py +663 -0
- package/src/deepscientist/connector_profiles.py +1 -374
- package/src/deepscientist/connector_runtime.py +2 -0
- package/src/deepscientist/daemon/api/handlers.py +165 -5
- package/src/deepscientist/daemon/api/router.py +13 -1
- package/src/deepscientist/daemon/app.py +1444 -67
- package/src/deepscientist/doctor.py +4 -5
- package/src/deepscientist/gitops/diff.py +120 -29
- package/src/deepscientist/lingzhu_support.py +1 -182
- package/src/deepscientist/mcp/server.py +135 -7
- package/src/deepscientist/prompts/builder.py +128 -11
- package/src/deepscientist/qq_profiles.py +1 -196
- package/src/deepscientist/quest/node_traces.py +23 -0
- package/src/deepscientist/quest/service.py +359 -74
- package/src/deepscientist/quest/stage_views.py +71 -5
- package/src/deepscientist/runners/codex.py +170 -19
- package/src/deepscientist/runners/runtime_overrides.py +6 -0
- package/src/deepscientist/shared.py +33 -14
- package/src/deepscientist/weixin_support.py +1 -0
- package/src/prompts/connectors/lingzhu.md +3 -1
- package/src/prompts/connectors/qq.md +2 -1
- package/src/prompts/connectors/weixin.md +231 -0
- package/src/prompts/contracts/shared_interaction.md +4 -1
- package/src/prompts/system.md +61 -9
- package/src/skills/analysis-campaign/SKILL.md +46 -6
- package/src/skills/analysis-campaign/references/campaign-plan-template.md +21 -8
- package/src/skills/baseline/SKILL.md +1 -1
- package/src/skills/decision/SKILL.md +1 -1
- package/src/skills/experiment/SKILL.md +1 -1
- package/src/skills/finalize/SKILL.md +1 -1
- package/src/skills/idea/SKILL.md +1 -1
- package/src/skills/intake-audit/SKILL.md +1 -1
- package/src/skills/rebuttal/SKILL.md +74 -1
- package/src/skills/rebuttal/references/response-letter-template.md +55 -11
- package/src/skills/review/SKILL.md +118 -1
- package/src/skills/review/references/experiment-todo-template.md +23 -0
- package/src/skills/review/references/review-report-template.md +16 -0
- package/src/skills/review/references/revision-log-template.md +4 -0
- package/src/skills/scout/SKILL.md +1 -1
- package/src/skills/write/SKILL.md +168 -7
- package/src/skills/write/references/paper-experiment-matrix-template.md +131 -0
- package/src/tui/package.json +1 -1
- package/src/ui/dist/assets/{AiManusChatView-BKZ103sn.js → AiManusChatView-CnJcXynW.js} +156 -48
- package/src/ui/dist/assets/{AnalysisPlugin-mTTzGAlK.js → AnalysisPlugin-DeyzPEhV.js} +1 -1
- package/src/ui/dist/assets/{CliPlugin-BH58n3GY.js → CliPlugin-CB1YODQn.js} +164 -9
- package/src/ui/dist/assets/{CodeEditorPlugin-BKGRUH7e.js → CodeEditorPlugin-B-xicq1e.js} +8 -8
- package/src/ui/dist/assets/{CodeViewerPlugin-BMADwFWJ.js → CodeViewerPlugin-DT54ysXa.js} +5 -5
- package/src/ui/dist/assets/{DocViewerPlugin-ZOnTIHLN.js → DocViewerPlugin-DQtKT-VD.js} +3 -3
- package/src/ui/dist/assets/{GitDiffViewerPlugin-CQ7h1Djm.js → GitDiffViewerPlugin-hqHbCfnv.js} +20 -21
- package/src/ui/dist/assets/{ImageViewerPlugin-GVS5MsnC.js → ImageViewerPlugin-OcVo33jV.js} +5 -5
- package/src/ui/dist/assets/{LabCopilotPanel-BZNv1JML.js → LabCopilotPanel-DdGwhEUV.js} +11 -11
- package/src/ui/dist/assets/{LabPlugin-TWcJsdQA.js → LabPlugin-Ciz1gDaX.js} +2 -1
- package/src/ui/dist/assets/{LatexPlugin-DIjHiR2x.js → LatexPlugin-BhmjNQRC.js} +37 -11
- package/src/ui/dist/assets/{MarkdownViewerPlugin-D3ooGAH0.js → MarkdownViewerPlugin-BzdVH9Bx.js} +4 -4
- package/src/ui/dist/assets/{MarketplacePlugin-DfVfE9hN.js → MarketplacePlugin-DmyHspXt.js} +3 -3
- package/src/ui/dist/assets/{NotebookEditor-DDl0_Mc0.js → NotebookEditor-BMXKrDRk.js} +1 -1
- package/src/ui/dist/assets/{NotebookEditor-s8JhzuX1.js → NotebookEditor-BTVYRGkm.js} +12 -12
- package/src/ui/dist/assets/{PdfLoader-C2Sf6SJM.js → PdfLoader-CvcjJHXv.js} +14 -7
- package/src/ui/dist/assets/{PdfMarkdownPlugin-CXFLoIsa.js → PdfMarkdownPlugin-DW2ej8Vk.js} +73 -6
- package/src/ui/dist/assets/{PdfViewerPlugin-BYTmz2fK.js → PdfViewerPlugin-CmlDxbhU.js} +103 -34
- package/src/ui/dist/assets/PdfViewerPlugin-DQ11QcSf.css +3627 -0
- package/src/ui/dist/assets/{SearchPlugin-CjWBI1O9.js → SearchPlugin-DAjQZPSv.js} +1 -1
- package/src/ui/dist/assets/{TextViewerPlugin-DdOBU3-S.js → TextViewerPlugin-C-nVAZb_.js} +5 -4
- package/src/ui/dist/assets/{VNCViewer-B8HGgLwQ.js → VNCViewer-D7-dIYon.js} +10 -10
- package/src/ui/dist/assets/bot-C_G4WtNI.js +21 -0
- package/src/ui/dist/assets/branding/logo-rokid.png +0 -0
- package/src/ui/dist/assets/browser-BAcuE0Xj.js +2895 -0
- package/src/ui/dist/assets/{code-BWAY76JP.js → code-Cd7WfiWq.js} +1 -1
- package/src/ui/dist/assets/{file-content-C1NwU5oQ.js → file-content-B57zsL9y.js} +1 -1
- package/src/ui/dist/assets/{file-diff-panel-CywslwB9.js → file-diff-panel-DVoheLFq.js} +1 -1
- package/src/ui/dist/assets/{file-socket-B4kzuOBQ.js → file-socket-B5kXFxZP.js} +1 -1
- package/src/ui/dist/assets/{image-D-NZM-6P.js → image-LLOjkMHF.js} +1 -1
- package/src/ui/dist/assets/{index-DGIYDuTv.css → index-BQG-1s2o.css} +40 -13
- package/src/ui/dist/assets/{index-DHZJ_0TI.js → index-C3r2iGrp.js} +12 -12
- package/src/ui/dist/assets/{index-7Chr1g9c.js → index-CLQauncb.js} +15050 -9561
- package/src/ui/dist/assets/index-Dxa2eYMY.js +25 -0
- package/src/ui/dist/assets/{index-BdM1Gqfr.js → index-hOUOWbW2.js} +2 -2
- package/src/ui/dist/assets/{monaco-Cb2uKKe6.js → monaco-BGGAEii3.js} +1 -1
- package/src/ui/dist/assets/{pdf-effect-queue-DSw_D3RV.js → pdf-effect-queue-DlEr1_y5.js} +16 -1
- package/src/ui/dist/assets/pdf.worker.min-yatZIOMy.mjs +21 -0
- package/src/ui/dist/assets/{popover-Bg72DGgT.js → popover-CWJbJuYY.js} +1 -1
- package/src/ui/dist/assets/{project-sync-Ce_0BglY.js → project-sync-CRJiucYO.js} +18 -77
- package/src/ui/dist/assets/select-CoHB7pvH.js +1690 -0
- package/src/ui/dist/assets/{sigma-DPaACDrh.js → sigma-D5aJWR8J.js} +1 -1
- package/src/ui/dist/assets/{index-CDxNdQdz.js → square-check-big-DUK_mnkS.js} +2 -13
- package/src/ui/dist/assets/{trash-BvTgE5__.js → trash-ChU3SEE3.js} +1 -1
- package/src/ui/dist/assets/{useCliAccess-CgPeMOwP.js → useCliAccess-BrJBV3tY.js} +1 -1
- package/src/ui/dist/assets/{useFileDiffOverlay-xPhz7P5B.js → useFileDiffOverlay-C2OQaVWc.js} +1 -1
- package/src/ui/dist/assets/{wrap-text-C3Un3YQr.js → wrap-text-C7Qqh-om.js} +1 -1
- package/src/ui/dist/assets/{zoom-out-BgxLa0Ri.js → zoom-out-rtX0FKya.js} +1 -1
- package/src/ui/dist/index.html +2 -2
- package/src/ui/dist/assets/AutoFigurePlugin-BGxN8Umr.css +0 -3056
- package/src/ui/dist/assets/AutoFigurePlugin-C_wWw4AP.js +0 -8149
- package/src/ui/dist/assets/PdfViewerPlugin-BJXtIwj_.css +0 -260
- package/src/ui/dist/assets/Stepper-B0Dd8CxK.js +0 -158
- package/src/ui/dist/assets/bibtex-CKaefIN2.js +0 -189
- package/src/ui/dist/assets/file-utils-H2fjA46S.js +0 -109
- package/src/ui/dist/assets/message-square-BzjLiXir.js +0 -16
- package/src/ui/dist/assets/pdfjs-DU1YE8WO.js +0 -3
- package/src/ui/dist/assets/tooltip-C_mA6R0w.js +0 -108
|
@@ -16,6 +16,92 @@ Implementation sources:
|
|
|
16
16
|
3. binds an optional reusable baseline
|
|
17
17
|
4. persists a structured `startup_contract` for later prompt building
|
|
18
18
|
|
|
19
|
+
## Worked example: a cleaned-up version of quest 025
|
|
20
|
+
|
|
21
|
+
The quickest way to understand the dialog is to walk through a real example.
|
|
22
|
+
|
|
23
|
+
This example is adapted from a real project input in quest `025`, but normalized into a cleaner public form. The task is:
|
|
24
|
+
|
|
25
|
+
- reproduce the official Mandela-Effect baseline
|
|
26
|
+
- keep the original task and evaluation protocol
|
|
27
|
+
- study stronger truth-preserving collaboration under mixed correct and incorrect social signals
|
|
28
|
+
- use two local OpenAI-compatible endpoints to keep throughput high
|
|
29
|
+
|
|
30
|
+
### Short fields in the current frontend
|
|
31
|
+
|
|
32
|
+
| Field in the dialog | Example value | Why |
|
|
33
|
+
|---|---|---|
|
|
34
|
+
| `Project title` | `Mandela-Effect Reproduction and Truth-Preserving Collaboration` | Clear project title for cards, workspace headers, and later search |
|
|
35
|
+
| `Project ID` | leave blank, or set `025` | Leave blank for automatic sequential ids; only pin it manually if you need a fixed id |
|
|
36
|
+
| `Connector delivery` | `Local only` for the first run, or one QQ target if already configured | The current frontend allows at most one external connector target per quest |
|
|
37
|
+
| `Reusable baseline` | empty for the first run, or the imported official baseline if already available | If selected, derived `baseline_mode` becomes `existing` |
|
|
38
|
+
| `Research paper` | `On` | Keep paper-oriented analysis and writing in scope |
|
|
39
|
+
| `Research intensity` | `Balanced` | Secure the baseline, then probe one justified direction |
|
|
40
|
+
| `Decision mode` | `Autonomous` | Keep moving unless a real blocking decision depends on the user |
|
|
41
|
+
| `Launch mode` | `Standard` | Start from the ordinary research graph |
|
|
42
|
+
| `Language` | `English` | Use English for the kickoff prompt and user-facing artifacts |
|
|
43
|
+
|
|
44
|
+
### Multi-line fields for the same example
|
|
45
|
+
|
|
46
|
+
`Primary research request`
|
|
47
|
+
|
|
48
|
+
```text
|
|
49
|
+
Please reproduce the official Mandela-Effect repository and paper, then study how to improve truth-preserving collaboration under mixed correct and incorrect social signals.
|
|
50
|
+
|
|
51
|
+
The core research question is: how can a multi-agent system remain factually robust under social influence while still learning from correct peers?
|
|
52
|
+
|
|
53
|
+
Keep the task definition and evaluation protocol aligned with the original work. Focus on prompt-based or system-level methods that improve truth preservation without simply refusing all social information.
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
`Baseline links`
|
|
57
|
+
|
|
58
|
+
```text
|
|
59
|
+
https://github.com/bluedream02/Mandela-Effect
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
`Reference papers / repos`
|
|
63
|
+
|
|
64
|
+
```text
|
|
65
|
+
https://arxiv.org/abs/2602.00428
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
`Runtime constraints`
|
|
69
|
+
|
|
70
|
+
```text
|
|
71
|
+
- Keep the task definition and evaluation protocol aligned with the official baseline unless a change is explicitly justified.
|
|
72
|
+
- Use two OpenAI-compatible local inference endpoints for throughput:
|
|
73
|
+
- `http://127.0.0.1:8004/v1`
|
|
74
|
+
- `http://127.0.0.1:8008/v1`
|
|
75
|
+
- Use API key `1234` and model `/model/gpt-oss-120b` on both endpoints.
|
|
76
|
+
- Keep generation settings close to the baseline unless a justified adjustment is required.
|
|
77
|
+
- Implement asynchronous execution, automatic retry on request failure, and resumable scripts.
|
|
78
|
+
- Split requests across both endpoints so throughput stays high without overloading the service.
|
|
79
|
+
- Record failed, degraded, or inconclusive runs honestly instead of hiding them.
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
`Goals`
|
|
83
|
+
|
|
84
|
+
```text
|
|
85
|
+
1. Restore and verify the official Mandela-Effect baseline as a trustworthy starting point.
|
|
86
|
+
2. Measure key metrics and failure modes on the designated `gpt-oss-120b` setup.
|
|
87
|
+
3. Propose at least one literature-grounded direction for stronger truth-preserving collaboration.
|
|
88
|
+
4. Produce experiment and analysis artifacts that are strong enough to support paper writing.
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### What the frontend derives from this example
|
|
92
|
+
|
|
93
|
+
If you leave `Reusable baseline` empty and choose `Balanced`, the current frontend derives:
|
|
94
|
+
|
|
95
|
+
- `scope = baseline_plus_direction`
|
|
96
|
+
- `baseline_mode = restore_from_url`
|
|
97
|
+
- `resource_policy = balanced`
|
|
98
|
+
- `time_budget_hours = 24`
|
|
99
|
+
- `git_strategy = semantic_head_plus_controlled_integration`
|
|
100
|
+
|
|
101
|
+
If you select a reusable baseline entry, only one derived field changes:
|
|
102
|
+
|
|
103
|
+
- `baseline_mode = existing`
|
|
104
|
+
|
|
19
105
|
## Current frontend model
|
|
20
106
|
|
|
21
107
|
### `StartResearchTemplate`
|
|
@@ -29,13 +115,21 @@ type StartResearchTemplate = {
|
|
|
29
115
|
baseline_variant_id: string
|
|
30
116
|
baseline_urls: string
|
|
31
117
|
paper_urls: string
|
|
118
|
+
review_materials: string
|
|
32
119
|
runtime_constraints: string
|
|
33
120
|
objectives: string
|
|
34
121
|
need_research_paper: boolean
|
|
35
122
|
research_intensity: 'light' | 'balanced' | 'sprint'
|
|
36
123
|
decision_policy: 'autonomous' | 'user_gated'
|
|
37
124
|
launch_mode: 'standard' | 'custom'
|
|
38
|
-
custom_profile: 'continue_existing_state' | 'revision_rebuttal' | 'freeform'
|
|
125
|
+
custom_profile: 'continue_existing_state' | 'review_audit' | 'revision_rebuttal' | 'freeform'
|
|
126
|
+
review_followup_policy: 'audit_only' | 'auto_execute_followups' | 'user_gated_followups'
|
|
127
|
+
baseline_execution_policy:
|
|
128
|
+
| 'auto'
|
|
129
|
+
| 'must_reproduce_or_verify'
|
|
130
|
+
| 'reuse_existing_only'
|
|
131
|
+
| 'skip_unless_blocking'
|
|
132
|
+
manuscript_edit_mode: 'none' | 'copy_ready_text' | 'latex_required'
|
|
39
133
|
entry_state_summary: string
|
|
40
134
|
review_summary: string
|
|
41
135
|
custom_brief: string
|
|
@@ -75,6 +169,12 @@ The dialog submits:
|
|
|
75
169
|
title,
|
|
76
170
|
goal: compiled_prompt,
|
|
77
171
|
quest_id,
|
|
172
|
+
requested_connector_bindings: [
|
|
173
|
+
{
|
|
174
|
+
connector,
|
|
175
|
+
conversation_id
|
|
176
|
+
}
|
|
177
|
+
],
|
|
78
178
|
requested_baseline_ref: {
|
|
79
179
|
baseline_id,
|
|
80
180
|
variant_id
|
|
@@ -87,6 +187,9 @@ The dialog submits:
|
|
|
87
187
|
decision_policy,
|
|
88
188
|
launch_mode,
|
|
89
189
|
custom_profile,
|
|
190
|
+
review_followup_policy,
|
|
191
|
+
baseline_execution_policy,
|
|
192
|
+
manuscript_edit_mode,
|
|
90
193
|
scope,
|
|
91
194
|
baseline_mode,
|
|
92
195
|
resource_policy,
|
|
@@ -96,6 +199,7 @@ The dialog submits:
|
|
|
96
199
|
objectives: string[],
|
|
97
200
|
baseline_urls: string[],
|
|
98
201
|
paper_urls: string[],
|
|
202
|
+
review_materials: string[],
|
|
99
203
|
entry_state_summary,
|
|
100
204
|
review_summary,
|
|
101
205
|
custom_brief,
|
|
@@ -130,6 +234,26 @@ The dialog submits:
|
|
|
130
234
|
|
|
131
235
|
- Declares the preferred user-facing language for kickoff and later interaction.
|
|
132
236
|
|
|
237
|
+
### Connector delivery
|
|
238
|
+
|
|
239
|
+
**`requested_connector_bindings`**
|
|
240
|
+
|
|
241
|
+
- Submitted alongside the project create payload, not inside `startup_contract`.
|
|
242
|
+
- The current frontend allows at most one external connector target per quest.
|
|
243
|
+
- Typical shape:
|
|
244
|
+
|
|
245
|
+
```ts
|
|
246
|
+
[
|
|
247
|
+
{
|
|
248
|
+
connector: 'qq',
|
|
249
|
+
conversation_id: 'qq:private:openid-123'
|
|
250
|
+
}
|
|
251
|
+
]
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
- If you keep the project local-only, this array is empty.
|
|
255
|
+
- If the selected target is already bound to another quest, rebinding this project will replace the old binding.
|
|
256
|
+
|
|
133
257
|
### Baseline and references
|
|
134
258
|
|
|
135
259
|
**`baseline_id`**
|
|
@@ -144,12 +268,18 @@ The dialog submits:
|
|
|
144
268
|
|
|
145
269
|
**`baseline_urls`**
|
|
146
270
|
|
|
147
|
-
- Fallback source links when there is no registered reusable baseline.
|
|
271
|
+
- Fallback source links or absolute local file/folder paths when there is no registered reusable baseline.
|
|
148
272
|
- Submitted as `string[]`.
|
|
149
273
|
|
|
150
274
|
**`paper_urls`**
|
|
151
275
|
|
|
152
|
-
- Papers, repos, benchmarks, or
|
|
276
|
+
- Papers, repos, manuscripts, benchmarks, leaderboards, or absolute local file/folder paths that shape early scouting or writing work.
|
|
277
|
+
- Submitted as `string[]`.
|
|
278
|
+
|
|
279
|
+
**`review_materials`**
|
|
280
|
+
|
|
281
|
+
- Only meaningful for `review_audit` or `revision_rebuttal`.
|
|
282
|
+
- Use one URL or one absolute local file/folder path per line for reviewer comments, decision letters, meta-review notes, or revision packets.
|
|
153
283
|
- Submitted as `string[]`.
|
|
154
284
|
|
|
155
285
|
### Constraints and objectives
|
|
@@ -205,12 +335,49 @@ Only meaningful when `launch_mode = custom`.
|
|
|
205
335
|
- `continue_existing_state`
|
|
206
336
|
- start by auditing existing baselines, results, drafts, or mixed project assets
|
|
207
337
|
- prompt builder should steer the agent toward `intake-audit`
|
|
338
|
+
- `review_audit`
|
|
339
|
+
- start from a substantial draft or paper package that needs an independent skeptical audit
|
|
340
|
+
- prompt builder should steer the agent toward `review`
|
|
208
341
|
- `revision_rebuttal`
|
|
209
342
|
- start from reviewer comments, revision packets, or a rebuttal task
|
|
210
343
|
- prompt builder should steer the agent toward `rebuttal`
|
|
211
344
|
- `freeform`
|
|
345
|
+
- use this as the “Other” path
|
|
212
346
|
- follow a custom brief with minimal forced workflow assumptions
|
|
213
347
|
|
|
348
|
+
**`baseline_execution_policy`**
|
|
349
|
+
|
|
350
|
+
- Only meaningful when `launch_mode = custom`.
|
|
351
|
+
- `auto`
|
|
352
|
+
- let the startup contract and current evidence decide
|
|
353
|
+
- `must_reproduce_or_verify`
|
|
354
|
+
- verify or recover the rebuttal-critical baseline/comparator before reviewer-linked follow-up work
|
|
355
|
+
- `reuse_existing_only`
|
|
356
|
+
- trust the current baseline/results unless they are inconsistent or unusable
|
|
357
|
+
- `skip_unless_blocking`
|
|
358
|
+
- skip baseline reruns unless a named review/rebuttal item truly depends on a missing comparator
|
|
359
|
+
|
|
360
|
+
**`review_followup_policy`**
|
|
361
|
+
|
|
362
|
+
- Mainly meaningful for `review_audit`.
|
|
363
|
+
- `audit_only`
|
|
364
|
+
- stop after the audit artifacts and route recommendation
|
|
365
|
+
- `auto_execute_followups`
|
|
366
|
+
- continue automatically into the justified experiments and manuscript deltas after the audit
|
|
367
|
+
- `user_gated_followups`
|
|
368
|
+
- finish the audit first, then ask for approval before expensive follow-up work
|
|
369
|
+
|
|
370
|
+
**`manuscript_edit_mode`**
|
|
371
|
+
|
|
372
|
+
- Mainly meaningful for `review_audit` and `revision_rebuttal`.
|
|
373
|
+
- `none`
|
|
374
|
+
- planning artifacts only
|
|
375
|
+
- `copy_ready_text`
|
|
376
|
+
- produce section-level revision text that is ready to paste into the manuscript
|
|
377
|
+
- `latex_required`
|
|
378
|
+
- prefer the provided LaTeX tree as the writing surface and produce LaTeX-ready replacement text
|
|
379
|
+
- if you choose this mode, it is best to provide the LaTeX source tree via local path / folder input
|
|
380
|
+
|
|
214
381
|
**`entry_state_summary`**
|
|
215
382
|
|
|
216
383
|
- Plain-language summary of what already exists.
|
|
@@ -266,6 +433,9 @@ Custom launch behavior is explicit:
|
|
|
266
433
|
- `custom + continue_existing_state`
|
|
267
434
|
- tells the agent to audit and normalize existing assets first
|
|
268
435
|
- explicitly prefers `intake-audit`
|
|
436
|
+
- `custom + review_audit`
|
|
437
|
+
- tells the agent that the current draft/paper state is the active contract
|
|
438
|
+
- explicitly prefers `review`
|
|
269
439
|
- `custom + revision_rebuttal`
|
|
270
440
|
- tells the agent to interpret reviewer comments and current paper state first
|
|
271
441
|
- explicitly prefers `rebuttal`
|
|
@@ -365,6 +535,9 @@ Custom launch behavior is explicit:
|
|
|
365
535
|
"decision_policy": "user_gated",
|
|
366
536
|
"launch_mode": "custom",
|
|
367
537
|
"custom_profile": "revision_rebuttal",
|
|
538
|
+
"review_followup_policy": "audit_only",
|
|
539
|
+
"baseline_execution_policy": "skip_unless_blocking",
|
|
540
|
+
"manuscript_edit_mode": "latex_required",
|
|
368
541
|
"scope": "baseline_plus_direction",
|
|
369
542
|
"baseline_mode": "restore_from_url",
|
|
370
543
|
"resource_policy": "balanced",
|
|
@@ -378,6 +551,9 @@ Custom launch behavior is explicit:
|
|
|
378
551
|
],
|
|
379
552
|
"baseline_urls": [],
|
|
380
553
|
"paper_urls": [],
|
|
554
|
+
"review_materials": [
|
|
555
|
+
"/absolute/path/to/review-comments.md"
|
|
556
|
+
],
|
|
381
557
|
"entry_state_summary": "A draft and previous experiment outputs already exist.",
|
|
382
558
|
"review_summary": "Reviewers asked for one stronger ablation, one extra baseline, and a clearer limitation paragraph.",
|
|
383
559
|
"custom_brief": "Treat the current manuscript and review packet as the active contract."
|
|
@@ -388,7 +564,7 @@ Custom launch behavior is explicit:
|
|
|
388
564
|
## Operational implications
|
|
389
565
|
|
|
390
566
|
- The startup contract is durable project state, not only UI state.
|
|
391
|
-
- Prompt building later reads `launch_mode`, `custom_profile`, and
|
|
567
|
+
- Prompt building later reads `launch_mode`, `custom_profile`, `review_followup_policy`, `baseline_execution_policy`, `manuscript_edit_mode`, `entry_state_summary`, `review_summary`, `review_materials`, and `custom_brief` again.
|
|
392
568
|
- This means `Start Research` shapes not just the first turn, but later routing decisions too.
|
|
393
569
|
|
|
394
570
|
## Validation checklist
|
|
@@ -1,216 +1,99 @@
|
|
|
1
|
-
# 04 Lingzhu Connector Guide:
|
|
1
|
+
# 04 Lingzhu Connector Guide: Bind Rokid Glasses to DeepScientist
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Lingzhu now uses a minimal one-step binding flow.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
DeepScientist serves the Lingzhu-compatible routes directly on its own daemon / web port:
|
|
6
6
|
|
|
7
|
-
-
|
|
8
|
-
-
|
|
9
|
-
- local probe and SSE smoke test
|
|
10
|
-
- what to paste into the Lingzhu platform
|
|
7
|
+
- `GET /metis/agent/api/health`
|
|
8
|
+
- `POST /metis/agent/api/sse`
|
|
11
9
|
|
|
12
|
-
|
|
10
|
+
For a real device binding, the address registered on Rokid must be the public DeepScientist address that external devices can reach. It cannot be `127.0.0.1`, `localhost`, or a private-network address.
|
|
13
11
|
|
|
14
|
-
|
|
12
|
+
References:
|
|
15
13
|
|
|
16
|
-
- Rokid forum
|
|
17
|
-
-
|
|
18
|
-
- packaged OpenClaw config template: `assets/connectors/lingzhu/openclaw.lingzhu.config.template.json`
|
|
14
|
+
- Rokid developer forum: https://forum.rokid.com/post/detail/2831
|
|
15
|
+
- Rokid agent platform: https://agent-develop.rokid.com/space
|
|
19
16
|
|
|
20
|
-
## 1.
|
|
17
|
+
## 1. Prerequisites
|
|
21
18
|
|
|
22
|
-
|
|
19
|
+
Make sure:
|
|
23
20
|
|
|
24
|
-
-
|
|
25
|
-
-
|
|
26
|
-
-
|
|
27
|
-
- `auth_ak`
|
|
28
|
-
- OpenClaw config snippet
|
|
29
|
-
- local probe `curl`
|
|
21
|
+
- DeepScientist is already running
|
|
22
|
+
- the DeepScientist page you opened is the final public address that external devices should use
|
|
23
|
+
- if the current page is local-only or private-network-only, Lingzhu should not be saved yet
|
|
30
24
|
|
|
31
|
-
|
|
25
|
+
## 2. What the UI keeps now
|
|
32
26
|
|
|
33
|
-
|
|
34
|
-
- keep comment heartbeats alive
|
|
35
|
-
- emit lightweight visible progress heartbeats during long silent upstream phases
|
|
27
|
+
`Settings > Connectors > Lingzhu` now keeps only the necessary pieces:
|
|
36
28
|
|
|
37
|
-
|
|
29
|
+
- one `Add Lingzhu (Rokid Glasses)` entry point
|
|
30
|
+
- the Rokid platform screenshot
|
|
31
|
+
- the auto-generated copyable fields
|
|
32
|
+
- concise binding instructions
|
|
33
|
+
- one save action
|
|
38
34
|
|
|
39
|
-
|
|
35
|
+
You no longer need to manually edit host, port, agent, OpenClaw snippets, or extra probe steps in the main flow.
|
|
40
36
|
|
|
41
|
-
|
|
37
|
+
## 3. What is auto-generated
|
|
42
38
|
|
|
43
|
-
|
|
44
|
-
- your OpenClaw gateway is already running locally
|
|
45
|
-
- the OpenClaw HTTP gateway port is known, usually `18789`
|
|
46
|
-
- you have a public IP or public domain
|
|
39
|
+
After you click `Add Lingzhu (Rokid Glasses)`, the popup shows these copyable values:
|
|
47
40
|
|
|
48
|
-
|
|
41
|
+
- Custom agent ID
|
|
42
|
+
- Custom agent URL
|
|
43
|
+
- Custom agent AK
|
|
44
|
+
- Agent name
|
|
45
|
+
- Category
|
|
46
|
+
- Capability summary
|
|
47
|
+
- Opening message
|
|
48
|
+
- Input type
|
|
49
|
+
- Icon PNG URL
|
|
49
50
|
|
|
50
|
-
|
|
51
|
-
- Lingzhu devices need a public address
|
|
51
|
+
Important details:
|
|
52
52
|
|
|
53
|
-
|
|
53
|
+
- `Custom agent URL` is generated as `https://<your-public-address>/metis/agent/api/sse`
|
|
54
|
+
- `AK` is generated automatically and reused after saving
|
|
55
|
+
- the logo uses a PNG DeepScientist asset so it can be uploaded directly to Rokid
|
|
54
56
|
|
|
55
|
-
|
|
57
|
+

|
|
56
58
|
|
|
57
|
-
|
|
59
|
+
## 4. What the user does
|
|
58
60
|
|
|
59
|
-
|
|
61
|
+
On the Rokid platform:
|
|
60
62
|
|
|
61
|
-
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
63
|
+
1. Open `Project Development -> Third-party Agent -> Create`
|
|
64
|
+
2. Choose `Custom Agent`
|
|
65
|
+
3. Copy each generated field from the popup into the matching Rokid field
|
|
66
|
+
4. Upload the DeepScientist PNG logo
|
|
67
|
+
5. Return to DeepScientist and click Save
|
|
66
68
|
|
|
67
|
-
|
|
69
|
+
After Save, the Lingzhu binding is complete.
|
|
68
70
|
|
|
69
|
-
##
|
|
71
|
+
## 5. How it is used afterward
|
|
70
72
|
|
|
71
|
-
|
|
73
|
+
The glasses or platform only need to call:
|
|
72
74
|
|
|
73
|
-
|
|
74
|
-
| --- | --- | --- |
|
|
75
|
-
| `Enabled` | `true` | turn on the companion config |
|
|
76
|
-
| `Transport` | `openclaw_sse` | fixed, do not change |
|
|
77
|
-
| `Local host` | `127.0.0.1` | used only for local probe |
|
|
78
|
-
| `Gateway port` | `18789` | match your OpenClaw gateway |
|
|
79
|
-
| `Public base URL` | `http://<public-ip>:18789` | must be reachable from the glasses |
|
|
75
|
+
- `POST /metis/agent/api/sse`
|
|
80
76
|
|
|
81
|
-
|
|
77
|
+
with:
|
|
82
78
|
|
|
83
|
-
- `
|
|
79
|
+
- `Authorization: Bearer <saved-AK>`
|
|
84
80
|
|
|
85
|
-
|
|
81
|
+
Usage rules:
|
|
86
82
|
|
|
87
|
-
|
|
83
|
+
- a new task must start with `我现在的任务是 ...`
|
|
84
|
+
- only the text after that prefix is treated as a fresh DeepScientist task
|
|
85
|
+
- if you only want buffered progress, do not repeat the prefix; just say `找DeepScientist` or `继续`
|
|
88
86
|
|
|
89
|
-
|
|
90
|
-
| --- | --- |
|
|
91
|
-
| `Auth AK` | click `Generate AK` |
|
|
92
|
-
| `Agent ID` | `main` |
|
|
93
|
-
| `Lingzhu system prompt` | optional |
|
|
87
|
+
## 6. Common questions
|
|
94
88
|
|
|
95
|
-
|
|
89
|
+
### Why can’t I use `127.0.0.1`?
|
|
96
90
|
|
|
97
|
-
|
|
98
|
-
- Lingzhu platform config
|
|
91
|
+
Because Rokid and external devices cannot reach your local loopback address. Lingzhu must register a public address.
|
|
99
92
|
|
|
100
|
-
|
|
93
|
+
### Why is `AK` generated automatically?
|
|
101
94
|
|
|
102
|
-
|
|
95
|
+
Because `AK` is the Bearer secret for this external entrypoint. Generating and persisting it is safer and more reliable than asking users to type it manually.
|
|
103
96
|
|
|
104
|
-
|
|
105
|
-
- local SSE URL
|
|
106
|
-
- public SSE URL
|
|
107
|
-
- OpenClaw config snippet
|
|
108
|
-
- probe curl
|
|
97
|
+
### Do I still need to tune a lot of extra parameters after saving?
|
|
109
98
|
|
|
110
|
-
The
|
|
111
|
-
|
|
112
|
-

|
|
113
|
-
|
|
114
|
-
## 7. Update OpenClaw
|
|
115
|
-
|
|
116
|
-
Use either:
|
|
117
|
-
|
|
118
|
-
- the generated snippet in the settings page
|
|
119
|
-
- or the packaged template at `assets/connectors/lingzhu/openclaw.lingzhu.config.template.json`
|
|
120
|
-
|
|
121
|
-
Install the packaged bridge with:
|
|
122
|
-
|
|
123
|
-
```bash
|
|
124
|
-
openclaw plugins install ./assets/connectors/lingzhu/openclaw-bridge
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
At minimum, OpenClaw must expose:
|
|
128
|
-
|
|
129
|
-
```json
|
|
130
|
-
{
|
|
131
|
-
"gateway": {
|
|
132
|
-
"port": 18789,
|
|
133
|
-
"http": {
|
|
134
|
-
"endpoints": {
|
|
135
|
-
"chatCompletions": {
|
|
136
|
-
"enabled": true
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
DeepScientist also generates the full Lingzhu plugin block for you:
|
|
145
|
-
|
|
146
|
-

|
|
147
|
-
|
|
148
|
-
## 8. Run the local probe
|
|
149
|
-
|
|
150
|
-
After saving the values, click:
|
|
151
|
-
|
|
152
|
-
- `Run Lingzhu probe`
|
|
153
|
-
|
|
154
|
-
DeepScientist performs:
|
|
155
|
-
|
|
156
|
-
1. `GET /metis/agent/api/health`
|
|
157
|
-
2. `POST /metis/agent/api/sse`
|
|
158
|
-
|
|
159
|
-
Expected result:
|
|
160
|
-
|
|
161
|
-
- `Connection = reachable`
|
|
162
|
-
- `Auth = ready`
|
|
163
|
-
- probe result returns no errors
|
|
164
|
-
|
|
165
|
-
## 9. What to paste into the Lingzhu platform
|
|
166
|
-
|
|
167
|
-
Use:
|
|
168
|
-
|
|
169
|
-
- `Public SSE URL`
|
|
170
|
-
- `Auth AK`
|
|
171
|
-
|
|
172
|
-
Do not paste:
|
|
173
|
-
|
|
174
|
-
- `127.0.0.1`
|
|
175
|
-
- any local-only host name
|
|
176
|
-
|
|
177
|
-
## 10. Common failure causes
|
|
178
|
-
|
|
179
|
-
### Health is offline
|
|
180
|
-
|
|
181
|
-
Usually means:
|
|
182
|
-
|
|
183
|
-
- OpenClaw is not running
|
|
184
|
-
- wrong `gateway_port`
|
|
185
|
-
- wrong `local_host`
|
|
186
|
-
|
|
187
|
-
### SSE probe fails
|
|
188
|
-
|
|
189
|
-
Usually means:
|
|
190
|
-
|
|
191
|
-
- `auth_ak` mismatch
|
|
192
|
-
- Lingzhu endpoint path is not exposed
|
|
193
|
-
- OpenClaw `chatCompletions.enabled` is still off
|
|
194
|
-
|
|
195
|
-
### Device still cannot connect
|
|
196
|
-
|
|
197
|
-
Usually means:
|
|
198
|
-
|
|
199
|
-
- `Public base URL` is not public
|
|
200
|
-
- firewall or reverse proxy still blocks the port
|
|
201
|
-
|
|
202
|
-
## 11. Practical note
|
|
203
|
-
|
|
204
|
-
This settings surface is intentionally registry-first:
|
|
205
|
-
|
|
206
|
-
- Lingzhu stays in `connectors.yaml`
|
|
207
|
-
- generated values come from the same structured config
|
|
208
|
-
- validation, testing, and frontend rendering consume the same connector record
|
|
209
|
-
|
|
210
|
-
For long-running tasks, the most stable practical behavior is:
|
|
211
|
-
|
|
212
|
-
- immediate bridge-level receipt acknowledgement
|
|
213
|
-
- visible progress heartbeats from the bridge during silent upstream phases
|
|
214
|
-
- preserved per-user session continuity across follow-up turns
|
|
215
|
-
|
|
216
|
-
This improves Lingzhu compatibility, but it still does not remove the platform-side single-request timeout limit.
|
|
99
|
+
No. The goal of the current Lingzhu flow is to show only the necessary values, let the user copy them, and finish with one save.
|
package/docs/en/09_DOCTOR.md
CHANGED
|
@@ -10,21 +10,41 @@ Use `ds doctor` when DeepScientist does not start cleanly after installation.
|
|
|
10
10
|
npm install -g @researai/deepscientist
|
|
11
11
|
```
|
|
12
12
|
|
|
13
|
-
2.
|
|
13
|
+
2. Make sure Codex itself is working first:
|
|
14
|
+
|
|
15
|
+
Default OpenAI path:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
codex --login
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Provider-backed profile path:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
codex --profile minimax
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
If `codex` is missing, repair it explicitly with:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
npm install -g @openai/codex
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
3. Try to start DeepScientist:
|
|
14
34
|
|
|
15
35
|
```bash
|
|
16
36
|
ds
|
|
17
37
|
```
|
|
18
38
|
|
|
19
|
-
|
|
39
|
+
4. If startup fails or looks unhealthy, run:
|
|
20
40
|
|
|
21
41
|
```bash
|
|
22
42
|
ds doctor
|
|
23
43
|
```
|
|
24
44
|
|
|
25
|
-
|
|
45
|
+
5. Read the checks from top to bottom and fix the failed items first.
|
|
26
46
|
|
|
27
|
-
|
|
47
|
+
6. Run `ds doctor` again until all checks are healthy, then run `ds`.
|
|
28
48
|
|
|
29
49
|
## What `ds doctor` checks
|
|
30
50
|
|
|
@@ -49,16 +69,57 @@ Run the package install again so the bundled Codex dependency is present:
|
|
|
49
69
|
npm install -g @researai/deepscientist
|
|
50
70
|
```
|
|
51
71
|
|
|
72
|
+
If `codex` is still unavailable afterward, install it explicitly:
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
npm install -g @openai/codex
|
|
76
|
+
```
|
|
77
|
+
|
|
52
78
|
### Codex is installed but not logged in
|
|
53
79
|
|
|
54
80
|
Run:
|
|
55
81
|
|
|
56
82
|
```bash
|
|
57
|
-
codex
|
|
83
|
+
codex --login
|
|
58
84
|
```
|
|
59
85
|
|
|
86
|
+
If your Codex CLI version does not expose `--login`, run `codex` and finish the interactive setup there.
|
|
87
|
+
|
|
60
88
|
Finish login once, then rerun `ds doctor`.
|
|
61
89
|
|
|
90
|
+
### Codex profile works in the terminal, but DeepScientist still fails
|
|
91
|
+
|
|
92
|
+
Run DeepScientist with the same profile explicitly:
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
ds doctor --codex-profile minimax
|
|
96
|
+
ds --codex-profile minimax
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Replace `minimax` with your real profile name such as `m27`, `glm`, `ark`, or `bailian`.
|
|
100
|
+
|
|
101
|
+
Also check:
|
|
102
|
+
|
|
103
|
+
- the same shell still exports the provider API key
|
|
104
|
+
- the profile points at the provider's Coding Plan endpoint, not the generic API endpoint
|
|
105
|
+
- `~/DeepScientist/config/runners.yaml` uses `model: inherit` if the provider expects the model to come from the profile itself
|
|
106
|
+
|
|
107
|
+
### The configured Codex model is unavailable
|
|
108
|
+
|
|
109
|
+
DeepScientist blocks startup until Codex passes a real startup hello probe. In the current release, that probe first uses the runner model configured in:
|
|
110
|
+
|
|
111
|
+
```text
|
|
112
|
+
~/DeepScientist/config/runners.yaml
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
The default is `gpt-5.4`. If your Codex account or CLI config cannot access that model, DeepScientist now retries with the current Codex default model and persists `model: inherit` for future runs. If you still want a specific model, edit the runner config manually and rerun:
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
ds doctor
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
For provider-backed Codex profiles, `model: inherit` is usually the right default.
|
|
122
|
+
|
|
62
123
|
### `uv` is missing
|
|
63
124
|
|
|
64
125
|
Normally `ds` will bootstrap a local `uv` automatically. If that bootstrap fails, install it manually:
|