@dsh-fly/dsh-plugin-fly-mode 0.1.3 → 0.1.5
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 +6 -2
- package/cordis.patch.yml +188 -2
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -6,7 +6,11 @@
|
|
|
6
6
|
|
|
7
7
|
## 它是什么 / 不是什么
|
|
8
8
|
|
|
9
|
-
-
|
|
9
|
+
- **是**:**两个 preset** 的声明(`- insert:`):
|
|
10
|
+
- **Fly 安全模式** `preset-fly`(行表来自 `dsh-fly` 的 `presets/fly/agent.cordis.yml`,41 行);
|
|
11
|
+
- **Fly 标准模式** `preset-fly-standard`(行表 = **上游 `standard` 的行表** + 一行 smart,33 行)——
|
|
12
|
+
由生成器从**引擎自己的组合结果**里取上游行表(不手抄),所以引擎升级后行表跟着走、漂了 `--check` 会红。
|
|
13
|
+
其中
|
|
10
14
|
**7 个 Fly 工具**(binary / reverse / pwn / diag / recon / blackbox / guard)的源码**内联在包内
|
|
11
15
|
`tools/`**,行表用**本包子路径**引用它们 —— 装这个包**不会**在 npm 上再拉这 7 个包;
|
|
12
16
|
**`fly-smart` 单独一个 plugin**:它是本包 `dependencies` 里**唯一**一项,行表保持裸名,
|
|
@@ -14,7 +18,7 @@
|
|
|
14
18
|
- **不是**:不带 `dsh.client`(模式是 agent 平面,没有浏览器半边);不带 Fly 工作台
|
|
15
19
|
(console / diagnostics / netops / plugins / smart-panel 是各自独立的包);**不带**
|
|
16
20
|
`dsh-plugin-fly-shell`(那会在别人的 UI 上再画一层 Fly 外壳)。
|
|
17
|
-
- **不写 registry 的 `default:`**:默认模式归上游 `standard`。装上它 ≠ 默认变 fly
|
|
21
|
+
- **不写 registry 的 `default:`**:默认模式归上游 `standard`。装上它 ≠ 默认变 fly(或 fly-standard)——
|
|
18
22
|
只是「设置 → Agent 预设」里多出来的一个可选模式。
|
|
19
23
|
- **不含三模型路由**:`brainRoute` / `handRoute` / `reviewRoute` 是**用户机器**上的状态
|
|
20
24
|
(`~/.dsh-fly/smart-routes.json`,面板写),本机那份值还是内网 provider。未被配置时工具会
|
package/cordis.patch.yml
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
# 由仓库脚本生成,别手改:node scripts/build-fly-mode-bundle.mjs --out <本文件>
|
|
2
|
-
#
|
|
2
|
+
# 两个 preset:Fly 安全模式(preset-fly,7 个安全工具内联 + smart)与
|
|
3
|
+
# Fly 标准模式(preset-fly-standard,上游 standard 的行表 + 同一行 smart,无安全工具)。
|
|
4
|
+
# 同源:安全模式那段声明来自 scripts/lib/fly-profile.mjs 的 seedAgentPreset()(dev 装配写进 profile 的
|
|
3
5
|
# 是同一条);8 个工具的行名被改写成**本包的子路径**(tools/**,随包一起发布)。
|
|
4
6
|
# 门禁用 --check 断言本文件与 tools/** 都 == 生成器输出。
|
|
5
7
|
# 不含三模型路由(用户机器状态)、不写 registry default(默认归上游 standard)。
|
|
8
|
+
- insert:
|
|
6
9
|
- insert:
|
|
7
10
|
- id: preset-fly
|
|
8
11
|
name: '@deepseek-ai/dsh-agent-preset'
|
|
@@ -343,8 +346,10 @@
|
|
|
343
346
|
# `inject = ['tools', 'commands', 'systemPrompt']` —— 少一个都会在 apply 里抛,
|
|
344
347
|
# 而抛 = 整棵 preset 挂载被拒(S6 根因,§12.6)。两个模型路由
|
|
345
348
|
# (brainRoute/handRoute)留给设置行配置。
|
|
349
|
+
# 2026-10-12 角色对调:裸名 `dsh-plugin-fly-smart` 现在是**宿主平面的面板**(客户端半边
|
|
350
|
+
# 只对裸名行登记),agent 平面的工具在这一行的子路径上。
|
|
346
351
|
- id: tool-fly-smart
|
|
347
|
-
name: dsh-plugin-fly-smart
|
|
352
|
+
name: dsh-plugin-fly-smart/tools/index.js
|
|
348
353
|
config:
|
|
349
354
|
enabled: true
|
|
350
355
|
# 返工额度是**每阶段**的:一个阶段反复迭代不该把后面阶段的预算吃掉。额度耗尽不是强制
|
|
@@ -397,3 +402,184 @@
|
|
|
397
402
|
- id: tool-fly-guard
|
|
398
403
|
name: '@dsh-fly/dsh-plugin-fly-mode/tools/dsh-plugin-fly-guard/index.js'
|
|
399
404
|
# <<< fly-agent-preset
|
|
405
|
+
- insert:
|
|
406
|
+
- id: preset-fly-standard
|
|
407
|
+
name: '@deepseek-ai/dsh-agent-preset'
|
|
408
|
+
config:
|
|
409
|
+
id: fly-standard
|
|
410
|
+
name: "Fly 标准"
|
|
411
|
+
description: "上游 standard 的全部行 + Fly smart 工作流(不含安全工具链)。"
|
|
412
|
+
order: 11
|
|
413
|
+
plugins:
|
|
414
|
+
- id: persona
|
|
415
|
+
name: '@deepseek-ai/dsh-persona'
|
|
416
|
+
config:
|
|
417
|
+
suffix: Your working directory is {{cwd}}.
|
|
418
|
+
prefix: You are a coding agent powered by the {{model}} model.
|
|
419
|
+
- id: agent-instructions
|
|
420
|
+
name: '@deepseek-ai/dsh-agent-instructions'
|
|
421
|
+
config:
|
|
422
|
+
maxBytes: 65536
|
|
423
|
+
- id: tool-bash
|
|
424
|
+
name: '@deepseek-ai/dsh-tool-bash'
|
|
425
|
+
disabled: !!js process.platform === 'win32'
|
|
426
|
+
- id: tool-pwsh
|
|
427
|
+
name: '@deepseek-ai/dsh-tool-pwsh'
|
|
428
|
+
disabled: !!js process.platform !== 'win32'
|
|
429
|
+
- id: tool-fs
|
|
430
|
+
name: '@deepseek-ai/dsh-tool-fs'
|
|
431
|
+
- id: tool-fs-search
|
|
432
|
+
name: '@deepseek-ai/dsh-tool-fs-search'
|
|
433
|
+
config:
|
|
434
|
+
sampleOverCapGlobResults: false
|
|
435
|
+
- id: tool-jobs
|
|
436
|
+
name: '@deepseek-ai/dsh-tool-jobs'
|
|
437
|
+
- id: skill-filesystem
|
|
438
|
+
name: '@deepseek-ai/dsh-skill-filesystem'
|
|
439
|
+
- id: tool-skill
|
|
440
|
+
name: '@deepseek-ai/dsh-tool-skill'
|
|
441
|
+
- id: command-goal
|
|
442
|
+
name: '@deepseek-ai/dsh-command-goal'
|
|
443
|
+
- id: tool-goal
|
|
444
|
+
name: '@deepseek-ai/dsh-tool-goal'
|
|
445
|
+
- id: planning
|
|
446
|
+
name: cordis:group
|
|
447
|
+
group: true
|
|
448
|
+
isolate:
|
|
449
|
+
planMode: true
|
|
450
|
+
config:
|
|
451
|
+
- id: plan-mode
|
|
452
|
+
name: '@deepseek-ai/dsh-plan-mode'
|
|
453
|
+
config:
|
|
454
|
+
section: >
|
|
455
|
+
You are in plan mode. Stay in plan mode until exit_plan_mode
|
|
456
|
+
succeeds or the user switches the session mode. Imperative
|
|
457
|
+
language to implement changes means plan the implementation, not
|
|
458
|
+
execute it. A user's conversational agreement — including an
|
|
459
|
+
answer confirming something you asked — approves nothing and
|
|
460
|
+
does not end plan mode; fold the confirmed decision into the
|
|
461
|
+
plan and submit it through exit_plan_mode.
|
|
462
|
+
Explore first. Use non-mutating reads, searches, static
|
|
463
|
+
analysis, and checks to ground the plan in the actual
|
|
464
|
+
repository. Do not edit or write files, change configuration,
|
|
465
|
+
run formatters or code generation that rewrites tracked files,
|
|
466
|
+
commit, or otherwise carry out the plan. Prefer existing
|
|
467
|
+
functions and patterns over new machinery.
|
|
468
|
+
The tool catalog stays the same across modes for request-cache
|
|
469
|
+
stability. These plan-mode rules override any later tool
|
|
470
|
+
description or guidance that suggests using mutation tools;
|
|
471
|
+
those tools remain listed to keep the tool catalog unchanged. Do
|
|
472
|
+
not use todo_write to track this planning phase: it tracks
|
|
473
|
+
implementation after an approved plan, while the plan itself
|
|
474
|
+
belongs in exit_plan_mode.
|
|
475
|
+
Resolve discoverable facts by inspection. Use ask_user_question
|
|
476
|
+
only for user-owned choices or material ambiguity that
|
|
477
|
+
inspection cannot answer. Do not ask the user where code lives
|
|
478
|
+
or how current behavior works when you can find out.
|
|
479
|
+
Make the plan decision-complete: state the goal and success
|
|
480
|
+
criteria; group implementation changes by subsystem; identify
|
|
481
|
+
public API, schema, and data-flow changes; cover edge cases,
|
|
482
|
+
failure modes, tests, acceptance criteria, and explicit
|
|
483
|
+
assumptions. Keep it concise enough to review but detailed
|
|
484
|
+
enough that another engineer can implement it without making
|
|
485
|
+
design decisions.
|
|
486
|
+
When ready, call exit_plan_mode with the complete plan markdown,
|
|
487
|
+
starting with a # title. Make exit_plan_mode the only and final
|
|
488
|
+
tool call in that assistant response: it presents the plan for
|
|
489
|
+
approval, and implementation begins only in a later step after
|
|
490
|
+
approval. Do not paste the final plan as a plain reply or ask
|
|
491
|
+
"should I proceed?" through prose or ask_user_question. If
|
|
492
|
+
review rejects it, incorporate the feedback and present again.
|
|
493
|
+
If the review channel is unavailable or aborted, stay in plan
|
|
494
|
+
mode and ask the user to switch modes manually; do not proceed
|
|
495
|
+
with implementation.
|
|
496
|
+
- id: compaction
|
|
497
|
+
name: cordis:group
|
|
498
|
+
group: true
|
|
499
|
+
isolate:
|
|
500
|
+
compaction: true
|
|
501
|
+
toolResultPruner: true
|
|
502
|
+
config:
|
|
503
|
+
- id: compaction-basic
|
|
504
|
+
name: '@deepseek-ai/dsh-compaction-basic'
|
|
505
|
+
- id: command-compact
|
|
506
|
+
name: '@deepseek-ai/dsh-command-compact'
|
|
507
|
+
- id: tool-result-pruner
|
|
508
|
+
name: '@deepseek-ai/dsh-compaction-tool-result-pruner'
|
|
509
|
+
config:
|
|
510
|
+
thresholdChars: 8192
|
|
511
|
+
headChars: 4096
|
|
512
|
+
tailChars: 1024
|
|
513
|
+
- id: delegation
|
|
514
|
+
name: cordis:group
|
|
515
|
+
group: true
|
|
516
|
+
isolate:
|
|
517
|
+
workflowEngine: true
|
|
518
|
+
config:
|
|
519
|
+
- id: tool-subagent-control
|
|
520
|
+
name: '@deepseek-ai/dsh-tool-subagent-control'
|
|
521
|
+
- id: tool-subagent-list-agents
|
|
522
|
+
name: '@deepseek-ai/dsh-tool-subagent-control/list-agents'
|
|
523
|
+
- id: tool-subagent
|
|
524
|
+
name: '@deepseek-ai/dsh-tool-subagent'
|
|
525
|
+
config:
|
|
526
|
+
provider: spawn
|
|
527
|
+
toolName: subagent
|
|
528
|
+
modelSelectionSettings: true
|
|
529
|
+
backgroundMode: continuable
|
|
530
|
+
- id: tool-subagent-fork
|
|
531
|
+
name: '@deepseek-ai/dsh-tool-subagent'
|
|
532
|
+
config:
|
|
533
|
+
provider: fork
|
|
534
|
+
toolName: subagent_fork
|
|
535
|
+
backgroundMode: continuable
|
|
536
|
+
- id: tool-subagent-codex
|
|
537
|
+
name: '@deepseek-ai/dsh-tool-subagent'
|
|
538
|
+
disabled: true
|
|
539
|
+
config:
|
|
540
|
+
provider: codex
|
|
541
|
+
toolName: subagent_codex
|
|
542
|
+
backgroundMode: one-shot
|
|
543
|
+
maxDepth: provider-managed
|
|
544
|
+
- id: tool-subagent-claude-code
|
|
545
|
+
name: '@deepseek-ai/dsh-tool-subagent'
|
|
546
|
+
disabled: true
|
|
547
|
+
config:
|
|
548
|
+
provider: claude-code
|
|
549
|
+
toolName: subagent_claude_code
|
|
550
|
+
backgroundMode: one-shot
|
|
551
|
+
maxDepth: provider-managed
|
|
552
|
+
- id: workflow-ptc
|
|
553
|
+
name: '@deepseek-ai/dsh-workflow-ptc'
|
|
554
|
+
config:
|
|
555
|
+
provider: spawn
|
|
556
|
+
- id: tool-workflow
|
|
557
|
+
name: '@deepseek-ai/dsh-tool-workflow'
|
|
558
|
+
- id: tool-ralph
|
|
559
|
+
name: '@deepseek-ai/dsh-tool-ralph'
|
|
560
|
+
disabled: true
|
|
561
|
+
config:
|
|
562
|
+
subagentProvider: spawn
|
|
563
|
+
maxRounds: 64
|
|
564
|
+
- id: tool-ask-user
|
|
565
|
+
name: '@deepseek-ai/dsh-tool-ask-user'
|
|
566
|
+
- id: tool-todo
|
|
567
|
+
name: '@deepseek-ai/dsh-tool-todo'
|
|
568
|
+
config:
|
|
569
|
+
allowParallelInProgress: true
|
|
570
|
+
- id: tool-web
|
|
571
|
+
name: '@deepseek-ai/dsh-tool-web'
|
|
572
|
+
config:
|
|
573
|
+
fetch: true
|
|
574
|
+
searchTimeoutMs: 60000
|
|
575
|
+
- id: present
|
|
576
|
+
name: '@deepseek-ai/dsh-tool-present'
|
|
577
|
+
- id: tool-plugin-manager
|
|
578
|
+
name: '@deepseek-ai/dsh-plugin-manager/tools'
|
|
579
|
+
disabled: true
|
|
580
|
+
- id: tool-fly-smart
|
|
581
|
+
name: dsh-plugin-fly-smart/tools/index.js
|
|
582
|
+
config:
|
|
583
|
+
enabled: true
|
|
584
|
+
maxRework: 5
|
|
585
|
+
requireConsult: true
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dsh-fly/dsh-plugin-fly-mode",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "Fly
|
|
3
|
+
"version": "0.1.5",
|
|
4
|
+
"description": "Fly 模式作为一个可安装的包:**两个 preset** —— Fly 安全模式(preset-fly,7 个安全工具内联 + smart)与 Fly 标准模式(preset-fly-standard,上游 standard 的行表 + smart,无安全工具);依赖单独发布的 dsh-plugin-fly-smart。",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"repository": {
|
|
@@ -29,6 +29,6 @@
|
|
|
29
29
|
"access": "public"
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"dsh-plugin-fly-smart": "^0.1.
|
|
32
|
+
"dsh-plugin-fly-smart": "^0.1.2"
|
|
33
33
|
}
|
|
34
34
|
}
|