dsh-aris-panel 0.1.0 → 0.1.2
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/dsh/client.js +56 -52
- package/dsh/cordis.patch.yml +44 -44
- package/package.json +1 -1
package/dsh/client.js
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
// normal source-and-build setup instead of growing here.
|
|
11
11
|
|
|
12
12
|
window.__ModuleLoader__.load({
|
|
13
|
-
id: 'dsh-aris',
|
|
13
|
+
id: 'dsh-aris-panel',
|
|
14
14
|
factory(require) {
|
|
15
15
|
const React = require('react')
|
|
16
16
|
const h = React.createElement
|
|
@@ -221,6 +221,53 @@ function inferStage(ov) {
|
|
|
221
221
|
return 1
|
|
222
222
|
}
|
|
223
223
|
|
|
224
|
+
const WORKFLOW_CHIPS = [
|
|
225
|
+
{ num: 'W1', label: 'Idea Discovery 想法发现', entry: 'idea-discovery', desc: '文献→头脑风暴→新颖性→GPU试跑→排名' },
|
|
226
|
+
{ num: 'W1.5', label: 'Experiment Bridge 实验桥接', entry: 'experiment-bridge', desc: '计划→实现→审代码→部署→收集' },
|
|
227
|
+
{ num: 'W2', label: 'Auto Review Loop 自动审稿', entry: 'auto-review-loop', desc: '审→修→再审直到≥6分或4轮' },
|
|
228
|
+
{ num: 'W3', label: 'Paper Writing 论文写作', entry: 'paper-writing', desc: '叙事→大纲→图表→LaTeX→PDF→外部审' },
|
|
229
|
+
{ num: 'W4', label: 'Rebuttal 回复审稿', entry: 'rebuttal', desc: '解析意见→策略→起草→压力测试' },
|
|
230
|
+
{ num: 'W5', label: 'Resubmit 换会重投', entry: 'resubmit-pipeline', desc: '硬约束重投,不加实验不改bib' },
|
|
231
|
+
{ num: 'W6', label: 'Conference Talk 会议演讲', entry: 'paper-talk', desc: '论文→Beamer+PPTX+讲稿' },
|
|
232
|
+
]
|
|
233
|
+
const AUDIT_CHIPS = [
|
|
234
|
+
{ label: '实验诚实度审计', skill: 'experiment-audit', desc: 'eval代码是否诚实(假GT/自归一化/幻影结果)' },
|
|
235
|
+
{ label: '结果→声明判定', skill: 'result-to-claim', desc: '结果是否科学地支持声明' },
|
|
236
|
+
{ label: '论文数字核对', skill: 'paper-claim-audit', desc: '论文报告的数字是否与原始结果一致' },
|
|
237
|
+
{ label: '引用真实性审计', skill: 'citation-audit', desc: '每个引用是否存在且上下文正确' },
|
|
238
|
+
{ label: '最强拒稿模拟', skill: 'kill-argument', desc: '200词最强拒稿+独立裁决' },
|
|
239
|
+
]
|
|
240
|
+
const MEMORY_CHIPS = [
|
|
241
|
+
{ label: 'research-wiki 知识库', skill: 'research-wiki', desc: '论文/想法/实验/声明跨会话沉淀' },
|
|
242
|
+
{ label: 'wiki 补全', skill: 'wiki-enrich', desc: '填充paper页面的TODO区' },
|
|
243
|
+
{ label: 'meta-optimize 自我优化', skill: 'meta-optimize', desc: '分析使用日志改进ARIS自身' },
|
|
244
|
+
]
|
|
245
|
+
|
|
246
|
+
function WbChipRow(props) {
|
|
247
|
+
return h('div', { className: 'wb-chip-row' },
|
|
248
|
+
props.items.map(function (it) {
|
|
249
|
+
return h('button', {
|
|
250
|
+
key: it.skill || it.entry,
|
|
251
|
+
className: 'wb-pano-chip',
|
|
252
|
+
onClick: function () { props.onPick(it.skill || it.entry) },
|
|
253
|
+
title: it.desc || '',
|
|
254
|
+
},
|
|
255
|
+
it.num ? h('span', { className: 'wb-pano-num' }, it.num) : null,
|
|
256
|
+
h('span', null, it.label))
|
|
257
|
+
}))
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
function WbPanorama(props) {
|
|
261
|
+
return h('div', { className: 'wb-panorama' },
|
|
262
|
+
h('div', { className: 'wb-guide-title' }, '功能全景:7 个工作流 + 审计链 + 记忆(点击选项卡填充到下方技能触发)'),
|
|
263
|
+
h('div', { className: 'wb-pano-group' }, h('span', { className: 'wb-pano-group-label' }, '工作流'),
|
|
264
|
+
h(WbChipRow, { items: WORKFLOW_CHIPS, onPick: props.onPick })),
|
|
265
|
+
h('div', { className: 'wb-pano-group' }, h('span', { className: 'wb-pano-group-label' }, '审计链'),
|
|
266
|
+
h(WbChipRow, { items: AUDIT_CHIPS, onPick: props.onPick })),
|
|
267
|
+
h('div', { className: 'wb-pano-group' }, h('span', { className: 'wb-pano-group-label' }, '记忆'),
|
|
268
|
+
h(WbChipRow, { items: MEMORY_CHIPS, onPick: props.onPick })))
|
|
269
|
+
}
|
|
270
|
+
|
|
224
271
|
function WbGuide(props) {
|
|
225
272
|
const stage = props.stage
|
|
226
273
|
const onPick = props.onPick
|
|
@@ -483,6 +530,7 @@ function ArisWorkbenchView(props) {
|
|
|
483
530
|
if (error) children.push(h('div', { className: 'wb-error', key: 'err' }, error))
|
|
484
531
|
if (sessionId === undefined && workspaces === undefined) children.push(wbNote('正在连接工作区…'))
|
|
485
532
|
if (sessionId !== undefined) {
|
|
533
|
+
children.push(h(WbPanorama, { key: 'pano', onPick: function (name) { setSkill(name) } }))
|
|
486
534
|
children.push(h(WbGuide, { key: 'guide', stage: stage, onPick: function (name) { setSkill(name) } }))
|
|
487
535
|
children.push(h(WbTrigger, { key: 'trigger', connection: connection, sessionId: sessionId, skills: skills, skill: skill, args: args, skillError: skillError, onSkill: setSkill, onArgs: setArgs }))
|
|
488
536
|
}
|
|
@@ -518,57 +566,13 @@ function ArisWorkbenchButton(props) {
|
|
|
518
566
|
open ? h(ArisWorkbenchView, { connection: props.connection, sessions: props.sessions, sessionId: props.sessionId, onClose: function () { setOpen(false) } }) : null)
|
|
519
567
|
}
|
|
520
568
|
|
|
521
|
-
const WB_CSS = `.wb-
|
|
522
|
-
.wb-
|
|
523
|
-
.wb-
|
|
524
|
-
.wb-
|
|
525
|
-
.wb-
|
|
526
|
-
.wb-
|
|
527
|
-
.wb-
|
|
528
|
-
.wb-btn-copy { background: #e8e8e8; color: #333333; }
|
|
529
|
-
.wb-picker { margin-bottom: 12px; }
|
|
530
|
-
.wb-picker label { color: #333333; }
|
|
531
|
-
.wb-picker select { background: #ffffff; color: #1f1f1f; border: 1px solid #c8c8c8; border-radius: 4px; padding: 4px 8px; font-size: 12px; max-width: 70%; }
|
|
532
|
-
.wb-section { margin-bottom: 20px; border: 1px solid #e4e4e4; border-radius: 6px; padding: 12px 16px; background: #fafafa; }
|
|
533
|
-
.wb-section h3 { margin: 0 0 10px; font-size: 12px; letter-spacing: .05em; text-transform: uppercase; opacity: .6; font-weight: 700; color: #1f1f1f; }
|
|
534
|
-
.wb-row { display: flex; gap: 12px; padding: 2px 0; }
|
|
535
|
-
.wb-key { flex: 0 0 150px; opacity: .7; }
|
|
536
|
-
.wb-val { flex: 1; word-break: break-word; }
|
|
537
|
-
.wb-note { opacity: .55; font-size: 12px; margin: 6px 0; }
|
|
538
|
-
.wb-list { margin: 6px 0; padding-left: 18px; }
|
|
539
|
-
.wb-list li { padding: 1px 0; font-size: 12px; }
|
|
540
|
-
.wb-dot-ok { color: #107c10; }
|
|
541
|
-
.wb-dot-missing { opacity: .35; }
|
|
542
|
-
.wb-error { color: #c42b1c; background: #fdeeee; border: 1px solid #e5b9b5; border-radius: 6px; padding: 8px 12px; margin: 10px 0; font-size: 12px; }
|
|
543
|
-
.wb-pre { background: #f5f5f5; border-radius: 4px; padding: 8px 10px; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 11px; white-space: pre-wrap; word-break: break-word; max-height: 180px; overflow-y: auto; margin: 6px 0; color: #24292e; }
|
|
544
|
-
.wb-file { margin: 6px 0; }
|
|
545
|
-
.wb-file-name { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 12px; color: #0066b8; }
|
|
546
|
-
.wb-meta { opacity: .55; font-size: 11px; margin-left: 8px; }
|
|
547
|
-
.wb-sidebar-entry { padding: 4px 6px; }
|
|
548
|
-
.wb-sidebar-toggle { width: 100%; background: transparent; color: inherit; border: 1px solid transparent; border-radius: 4px; padding: 5px 8px; font-size: 12px; cursor: pointer; text-align: left; }
|
|
549
|
-
.wb-sidebar-toggle:hover { background: rgba(0,0,0,.06); border-color: rgba(0,0,0,.12); }
|
|
550
|
-
.wb-badge { display: inline-block; border-radius: 10px; padding: 1px 8px; font-size: 10px; margin-left: 6px; background: #e8e8e8; border: 1px solid #d0d0d0; color: #1f1f1f; }
|
|
551
|
-
.wb-guide { margin-bottom: 18px; border: 1px solid #e0e0e0; border-radius: 6px; padding: 12px 16px; background: #f7f7f7; }
|
|
552
|
-
.wb-guide-title { font-size: 13px; font-weight: 700; margin-bottom: 10px; color: #1f1f1f; }
|
|
553
|
-
.wb-stages { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 10px; }
|
|
554
|
-
.wb-stage { border: 1px solid #e6e6e6; border-radius: 6px; padding: 8px 10px; opacity: .55; background: #ffffff; }
|
|
555
|
-
.wb-stage-done { opacity: .8; }
|
|
556
|
-
.wb-stage-cur { opacity: 1; border-color: #007acc; background: #e8f4ff; }
|
|
557
|
-
.wb-stage-head { display: flex; align-items: center; gap: 8px; margin-bottom: 4px; }
|
|
558
|
-
.wb-stage-mark { flex: 0 0 20px; height: 20px; line-height: 20px; text-align: center; border-radius: 50%; background: #e8e8e8; font-size: 11px; color: #1f1f1f; }
|
|
559
|
-
.wb-stage-done .wb-stage-mark { background: #107c10; color: #ffffff; }
|
|
560
|
-
.wb-stage-cur .wb-stage-mark { background: #007acc; color: #ffffff; }
|
|
561
|
-
.wb-stage-title { font-size: 13px; font-weight: 600; }
|
|
562
|
-
.wb-stage-desc { font-size: 11px; opacity: .7; margin-bottom: 6px; }
|
|
563
|
-
.wb-stage-skills { display: flex; flex-wrap: wrap; gap: 6px; }
|
|
564
|
-
.wb-skill-chip { background: #eef4fb; color: #0066b8; border: 1px solid #99c9f0; border-radius: 12px; padding: 2px 10px; font-size: 11px; cursor: pointer; }
|
|
565
|
-
.wb-skill-chip:hover { background: #007acc; color: #ffffff; }
|
|
566
|
-
.wb-guide-next { margin-top: 10px; font-size: 12px; opacity: .85; }
|
|
567
|
-
.wb-trigger { margin-bottom: 18px; border: 1px solid #e0e0e0; border-radius: 6px; padding: 12px 16px; background: #f7f7f7; }
|
|
568
|
-
.wb-trigger-row { display: flex; gap: 10px; margin-bottom: 8px; flex-wrap: wrap; }
|
|
569
|
-
.wb-skill-select { flex: 1 1 420px; background: #ffffff; color: #1f1f1f; border: 1px solid #c8c8c8; border-radius: 4px; padding: 6px 10px; font-size: 12px; min-width: 260px; }
|
|
570
|
-
.wb-args { flex: 1 1 280px; background: #ffffff; color: #1f1f1f; border: 1px solid #c8c8c8; border-radius: 4px; padding: 6px 10px; font-size: 12px; min-width: 200px; }
|
|
571
|
-
.wb-status { font-size: 12px; color: #107c10; margin-top: 4px; }`
|
|
569
|
+
const WB_CSS = `.wb-panorama { margin-bottom: 18px; border: 1px solid #e0e0e0; border-radius: 6px; padding: 12px 16px; background: #f7f7f7; }
|
|
570
|
+
.wb-pano-group { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 8px; }
|
|
571
|
+
.wb-pano-group-label { font-size: 11px; letter-spacing: .06em; text-transform: uppercase; opacity: .55; font-weight: 700; flex: 0 0 44px; }
|
|
572
|
+
.wb-chip-row { display: flex; flex-wrap: wrap; gap: 6px; flex: 1; }
|
|
573
|
+
.wb-pano-chip { background: #ffffff; color: #1f1f1f; border: 1px solid #d0d0d0; border-radius: 14px; padding: 3px 12px; font-size: 12px; cursor: pointer; display: inline-flex; align-items: center; gap: 5px; }
|
|
574
|
+
.wb-pano-chip:hover { border-color: #007acc; color: #007acc; background: #eef4fb; }
|
|
575
|
+
.wb-pano-num { font-weight: 800; color: #007acc; font-size: 11px; }`
|
|
572
576
|
|
|
573
577
|
const CSS = `
|
|
574
578
|
.aris-view { padding: 16px 20px; overflow-y: auto; font-size: 13px; line-height: 1.6; }
|
package/dsh/cordis.patch.yml
CHANGED
|
@@ -1,44 +1,44 @@
|
|
|
1
|
-
# ARIS bundle layer for DeepSeek Harness.
|
|
2
|
-
#
|
|
3
|
-
# Applied after the profile's surface bundle. Patch config replacement is
|
|
4
|
-
# whole-value, so rows that adjust shipped configuration restate every field
|
|
5
|
-
# they need.
|
|
6
|
-
|
|
7
|
-
# ARIS review runs on the stronger executor.
|
|
8
|
-
- id: agent-default-model
|
|
9
|
-
config:
|
|
10
|
-
provider: deepseek-official
|
|
11
|
-
model: deepseek-v4-pro
|
|
12
|
-
|
|
13
|
-
- insert:
|
|
14
|
-
# Skill corpus, ARIS_REPO, and the Codex threadId projection.
|
|
15
|
-
- id: aris-skills
|
|
16
|
-
name: 'dsh-aris'
|
|
17
|
-
|
|
18
|
-
# Optional: apply ARIS's scope limits to the executor as well as the
|
|
19
|
-
# reviewer. Off by default — it spends tokens on every request, and the
|
|
20
|
-
# reviewer side is already covered by the skills. Flip to enable.
|
|
21
|
-
- id: aris-scope-limits
|
|
22
|
-
name: 'dsh-aris/scope-limits'
|
|
23
|
-
disabled: true
|
|
24
|
-
|
|
25
|
-
# The independent reviewer. Model and reasoning effort come from the host
|
|
26
|
-
# Codex installation (~/.codex/config.toml) — that file is the reviewer
|
|
27
|
-
# posture contract, and dsh deliberately does not override it.
|
|
28
|
-
- id: aris-codex
|
|
29
|
-
name: '@deepseek-ai/dsh-mcp-client'
|
|
30
|
-
config:
|
|
31
|
-
transport: stdio
|
|
32
|
-
serverName: codex
|
|
33
|
-
command: codex
|
|
34
|
-
args: [mcp-server]
|
|
35
|
-
# Pinned to a directory that outlives the run. Inheriting the Harness's
|
|
36
|
-
# launch directory makes every review depend on it still existing:
|
|
37
|
-
# remove or rename it and Codex fails to load its own configuration,
|
|
38
|
-
# which ARIS survives by degrading to a transport that cannot attest
|
|
39
|
-
# reviewer identity. Review prompts address artifacts absolutely.
|
|
40
|
-
cwd: !!js process.env.HOME
|
|
41
|
-
# dsh defaults to 60s and Codex's progress notifications do not extend it.
|
|
42
|
-
# 20 minutes is ARIS's own threshold for calling a review hung.
|
|
43
|
-
toolCallTimeoutMs: 1200000
|
|
44
|
-
failOnStartupError: true
|
|
1
|
+
# ARIS bundle layer for DeepSeek Harness.
|
|
2
|
+
#
|
|
3
|
+
# Applied after the profile's surface bundle. Patch config replacement is
|
|
4
|
+
# whole-value, so rows that adjust shipped configuration restate every field
|
|
5
|
+
# they need.
|
|
6
|
+
|
|
7
|
+
# ARIS review runs on the stronger executor.
|
|
8
|
+
- id: agent-default-model
|
|
9
|
+
config:
|
|
10
|
+
provider: deepseek-official
|
|
11
|
+
model: deepseek-v4-pro
|
|
12
|
+
|
|
13
|
+
- insert:
|
|
14
|
+
# Skill corpus, ARIS_REPO, and the Codex threadId projection.
|
|
15
|
+
- id: aris-skills
|
|
16
|
+
name: 'dsh-aris-panel'
|
|
17
|
+
|
|
18
|
+
# Optional: apply ARIS's scope limits to the executor as well as the
|
|
19
|
+
# reviewer. Off by default — it spends tokens on every request, and the
|
|
20
|
+
# reviewer side is already covered by the skills. Flip to enable.
|
|
21
|
+
- id: aris-scope-limits
|
|
22
|
+
name: 'dsh-aris-panel/scope-limits'
|
|
23
|
+
disabled: true
|
|
24
|
+
|
|
25
|
+
# The independent reviewer. Model and reasoning effort come from the host
|
|
26
|
+
# Codex installation (~/.codex/config.toml) — that file is the reviewer
|
|
27
|
+
# posture contract, and dsh deliberately does not override it.
|
|
28
|
+
- id: aris-codex
|
|
29
|
+
name: '@deepseek-ai/dsh-mcp-client'
|
|
30
|
+
config:
|
|
31
|
+
transport: stdio
|
|
32
|
+
serverName: codex
|
|
33
|
+
command: codex
|
|
34
|
+
args: [mcp-server]
|
|
35
|
+
# Pinned to a directory that outlives the run. Inheriting the Harness's
|
|
36
|
+
# launch directory makes every review depend on it still existing:
|
|
37
|
+
# remove or rename it and Codex fails to load its own configuration,
|
|
38
|
+
# which ARIS survives by degrading to a transport that cannot attest
|
|
39
|
+
# reviewer identity. Review prompts address artifacts absolutely.
|
|
40
|
+
cwd: !!js process.env.HOME
|
|
41
|
+
# dsh defaults to 60s and Codex's progress notifications do not extend it.
|
|
42
|
+
# 20 minutes is ARIS's own threshold for calling a review hung.
|
|
43
|
+
toolCallTimeoutMs: 1200000
|
|
44
|
+
failOnStartupError: true
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-aris-panel",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "ARIS research-workflow skills + interactive workbench panel for DeepSeek Harness (user fork of dsh-aris: 82 skills, cross-model Codex review, idea/workflow launcher, research status board).",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|