Skip to content

2.0.0#545

Merged
dfwgj merged 51 commits intomainfrom
2.0.0
Feb 26, 2026
Merged

2.0.0#545
dfwgj merged 51 commits intomainfrom
2.0.0

Conversation

@dfwgj
Copy link
Copy Markdown
Collaborator

@dfwgj dfwgj commented Feb 26, 2026

v2.0.0 — AgentX UI + RoleX (V2) + Skills Management
概述

PromptX 2.0.0 是一次重大版本升级,引入全新的 AgentX 对话界面、V2 RoleX 角色系统和全局 Skills 管理三大核心能力,同时完成了桌面端的全面增强与基础设施升级。


✨ 新功能

AgentX UI — 全新对话界面

  • 新增 MCP Office 服务器与本地配置支持
  • 新增文件路径附件支持(发送路径文本,展示为文件卡片)
  • 新增带打字机效果的欢迎页与预设问题
  • 新增 MCP 配置与重启对话框
  • 全面 i18n 国际化支持
  • 优化对话列表布局与助手消息宽度

RoleX — V2 角色系统

  • 系统设置中新增 V2 (RoleX) 功能开关
  • 新增 V1/V2 版本切换,统一角色命名规范
  • 完整角色详情面板(结构、编辑、描述三标签页)
  • V1 角色结构拆分为概览/结构两标签,支持 roleResources=all
  • 新增记忆/认知标签页,支持 engram 编辑与网络图可视化
  • 新增系统角色头像,支持上传
  • V2 关闭时自动降级为 V1 布局

Skills 管理

  • 新增全局技能管理页面
  • 自动同步已启用技能到 ~/.claude/skills/,供 Claude Code 发现
  • 工作目录技能直接链接到 userData skills 目录
  • 设置页 Skills 卡片替换为完整的 SkillsConfig 组件

桌面端 & 基础设施

  • 新增远程 Web 访问,自动检测局域网 IP
  • 新增资源导入/删除,支持 V1/V2
  • mcp-server 新增 --no-v2 参数(默认启用 V2)
  • Windows 内置 git-bash 二进制
  • 使用 process.execPath + ELECTRON_RUN_AS_NODE=1 启动 Claude Code,解决打包环境下 node 不在 PATH 的问题

🐛 Bug 修复

  • 修复 --no-v2 默认值(V2 应默认启用)
  • 修复系统角色头像路径解析
  • 修复 runtime settingSources 未包含 project/user,导致 skills 加载失败
  • 修复 core:版本变更时同步 seed roles 并标记为 system 级别
  • 修复 desktop:打包时未包含 mcp-office,生产环境路径错误
  • 修复 agentx-ui 布局:rolex 展开与窗口尺寸问题

♻️ 重构

  • 将 roles-window / tools-window 拆分为独立子组件
  • 合并 network/cues 标签页,统一 i18n 类型标签
  • 统一 agentx-ui 块宽度,移除废弃组件
  • 工具页增强:编辑信息、广场筛选、标准化元数据
  • 设置 AgentX 为默认页

Base: main ← 2.0.0
Version: 1.28.0 → 2.0.0(所有包 major 升级)

dfwgj and others added 30 commits February 19, 2026 13:47
- Add @promptx/mcp-office package for reading Office documents (docx, xlsx, pptx, pdf)
- Support encoding/codepage configuration for handling Chinese files
- Enable settingSources: ['local'] in runtime to read .claude/settings.local.json
- Configure AgentX with default MCP Office server for new conversations
- Fix Electron 38 Network Service crash with NetworkServiceSandbox disable

Co-Authored-By: Claude Opus 4.5 <[email protected]>
- Add IPC handler for reading files from main process (dialog:readFile)
- Capture file path from Electron drag & drop events
- Include file path in message for AI to access local files
- Filter <file path="..."> tags from user display (AI still sees them)
- Display file attachments using FileBlock component
- Auto open DevTools in development mode

Co-Authored-By: Claude Opus 4.5 <[email protected]>
- Add agentxUI namespace to en.json and zh-CN.json
- Internationalize Chat, ChatHeader, AgentList components
- Internationalize ToolBlock status labels
- Internationalize MessagePane and InputPane
- Support dynamic language switching

Co-Authored-By: Claude Opus 4.5 <[email protected]>
- Hide scrollbar but keep scrolling in conversation list
- Remove Bot icon from conversation list items
- Add delete confirmation dialog for conversations
- Show first user message as conversation title (filter file path tags)
- Fix sidebar width to 12vw for consistency
- Set AgentList sidebar width to 15vw with max 250px

Co-Authored-By: Claude Opus 4.5 <[email protected]>
…tions

- Add WelcomePage component with logo, typewriter tagline, input box and preset cards
- Remove ChatHeader from Chat component
- Add refreshTrigger prop to AgentList for external refresh control
- Support initialMessage in Chat for auto-sending after conversation creation
- Add i18n translations for welcome page (en/zh-CN)

Co-Authored-By: Claude Opus 4.5 <[email protected]>
- Add MCP server configuration UI with JSON format support
- Support both stdio (command/args) and HTTP/SSE (type/url) MCP types
- Display built-in MCP servers (promptx, mcp-office) with lock icon
- Auto-configure PromptX MCP URL from system settings
- Add restart confirmation dialog after saving server config
- Restructure settings page with System and AgentX tabs
- Add AlertDialog component and i18n translations

Co-Authored-By: Claude Opus 4.5 <[email protected]>
- Add targetRole parameter to growup operation for teaching knowledge to specific roles
- Fix agentx-window overflow issues with overflow-hidden
- Update action tool documentation for growup operation

Co-Authored-By: Claude Opus 4.5 <[email protected]>
- Make TextBlock and ToolBlock have consistent full width
- Remove deprecated message components (AssistantMessage, UserMessage, ToolMessage)
- Remove unused ToolCard component

Co-Authored-By: Claude Opus 4.5 <[email protected]>
- Add electron download mirror configuration for China
- Add cross-env for Windows build environment
- Set AgentX as default page in main window

Co-Authored-By: Claude Opus 4.5 <[email protected]>
Files are now sent as path info in text, AI uses MCP tools to read.
Only images are sent as base64 data. This avoids API errors for
unsupported document types.

Co-Authored-By: Claude Opus 4.5 <[email protected]>
Extract file info from <file path="..."> tags and display as cards.
Files are no longer sent as base64 data, only path info as text.

Co-Authored-By: Claude Opus 4.5 <[email protected]>
- Add SkillsConfig component for managing enabled skills
- Add AgentXService methods for skills management
- Add IPC handlers and preload APIs for skills
- Add i18n translations for skills configuration
- Integrate SkillsConfig into settings page

Co-Authored-By: Claude Opus 4.5 <[email protected]>
…ndardized metadata

- Add edit tool info dialog (name/description) for user tools
- Rename "project" filter to "plaza" (广场) for future marketplace feature
- Standardize all system tool metadata: use tool ID as name, clean descriptions
- Fix registry generator to read name/description from getMetadata() instead of JSDoc
- Fix double scrollbar in configure tab edit mode
- Fix text truncation in tool list cards with w-0 flex-1 pattern

Co-Authored-By: Claude Opus 4.6 <[email protected]>
…cheme

Add header "Create Tool" button that navigates to AgentX and triggers
Luban conversation. Replace all orange accent colors with neutral
black/white theme to match other pages.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
…tion

- Add V1/V2 version toggle and source sub-filter to roles page
- Add ResourceVersion type and V2 rolex role processing in repository
- Standardize all system role names to 中文名/英文ID format with descriptions
- Fix registry generator to handle \r\n line endings on Windows
- Update nuwa prompts to enforce naming convention when creating new roles

Co-Authored-By: Claude Opus 4.6 <[email protected]>
…ponents

Split monolithic page files into focused component modules:
- roles-window: RoleListPanel + RoleDetailPanel
- tools-window: ToolListPanel + ToolDetailPanel + EditInfoDialog
- ToolDetailPanel further split into ToolOverviewTab, ToolTestTab, ToolConfigureTab, ToolLogsTab

Co-Authored-By: Claude Opus 4.6 <[email protected]>
- Add goToSendMessage utility using CustomEvent for cross-page navigation
- Replace V1/V2 tags with colored source badges (system/plaza/user) on role cards
- Show edit button only for user-sourced roles
- Role activate now navigates to agentx and sends activation message directly
- Add create role button on roles page header
- Add navigate event listener in main window for decoupled page switching

Co-Authored-By: Claude Opus 4.6 <[email protected]>
…work graph

Implement full Memory tab in Role Detail Panel: overview stats, paginated
engram list with inline edit/delete, d3-force knowledge network graph,
and cue explorer with delete support. Add CognitionWindow IPC handlers
for reading/writing engrams.db, network.json, and state.json. Optimize
recall/remember MCP tool descriptions to trigger memory more reliably.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
…yout with hidden scrollbar

Merge knowledge network and cue explorer into a single tab with
bidirectional node selection highlighting. Internationalize engram type
labels (Atomic/Link/Pattern). Refactor layout to flex chain for proper
space filling, with hidden scrollbars on all scrollable areas.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
…evel

Clear both role directories and rolex.json registry when rolexjs version
changes, ensuring bootstrap properly recreates nuwa/waiter. Seed roles
return source:'system' in listV2Roles, and PromptXResourceRepository
preserves the v2 flag for system roles.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
…nd add roleResources=all

- V1 roles now have three sibling tabs: Overview, Structure, Memory
- Overview: description + role prompt (like tool manual)
- Structure: DPML 3-layer architecture diagram
- Activation now sends { roleResources: "all" } to load all role resources

Co-Authored-By: Claude Opus 4.6 <[email protected]>
… and description

- Fix V1 overview prompt loading (positional args for roleResources)
- Add V1 structure tab with real file tree and viewer/editor dialog
- Add V2 role detail panel: overview, goals, organization, structure tabs
- Add V2 structure tab with .feature file viewer (system roles read-only)
- Add jiangziya to SEED_ROLES and extract Feature name/description from persona file
- Fix V1 edit role button with name+description dialog; V2 edit name only
- Bundle mcp-office via extraResources in electron-builder
- Fix index.ts syntax error (extra closing brace)
- Rebuild @promptx/core dist after SEED_ROLES and description extraction changes

Co-Authored-By: Claude Sonnet 4.6 (1M context) <[email protected]>
- Bundle mcp-office with esbuild into single self-contained CJS file so
  all deps (mammoth, xlsx, pdf-parse) are inlined — no node_modules needed
- Fix electron-builder extraResources from path to point at workspace
  package (../../packages/mcp-office/dist) instead of non-existent
  apps/desktop/node_modules/@promptx/mcp-office
- Use process.execPath + ELECTRON_RUN_AS_NODE=1 to spawn mcp-office so
  it works even when user has no system Node.js installed
- Fix claude-agent-sdk cli.js path: prefer app.asar.unpacked in production
  to avoid subprocess execution failure inside .asar archive
- Capture all console output in main process and persist to @promptx/logger

Co-Authored-By: Claude Sonnet 4.6 (1M context) <[email protected]>
dfwgj and others added 21 commits February 23, 2026 17:06
- Add WebAccessService: HTTP server on port 5201 with token auth, serves web UI and agentxjs bundle
- Add AgentXService.setExternalAccess: restarts WS on 0.0.0.0 for LAN access
- Add web UI (index.html): GPT-inspired responsive chat interface with inline Markdown renderer
- Add WebAccessConfig settings tab with QR code, URL copy, and port config
- Fix getLocalIp: use route table to pick default-gateway interface, skip 169.254.x.x
- Add day/night theme toggle (persisted in localStorage)
- Fix image_update_request: use updates:{name} instead of config:{name} for title persistence
- Derive conversation title from first user message in history on load
- Enable streaming Markdown rendering

Co-Authored-By: Claude Sonnet 4.6 (1M context) <[email protected]>
- Add enableV2 switch to system settings page (server config card)
- Changing the toggle saves config and restarts MCP server so tool
  descriptions update immediately (no stale prompts)
- When disabled: discover hides RoleX V2 section, action tool removes
  all V2 operations from description and inputSchema enum, handler
  skips V2 detection and always uses V1 path
- PROMPTX_ENABLE_V2 env var propagated to @promptx/core so
  RolexBridge.listV2Roles() and isV2Role() return empty/false
- enableV2 persisted in ServerConfigManager (~/.promptx/server-config.json)
  and in desktop ServerConfig domain entity
- createAllTools(enableV2) / createDiscoverTool / createActionTool
  factory functions replace static exports; allTools kept for compat

Co-Authored-By: Claude Sonnet 4.6 (1M context) <[email protected]>
- Read enableV2 from server-config on roles page mount
- When disabled: versionFilter defaults to v1, V1/V2 toggle hidden,
  auto-selects first V1 role instead of first V2 role

Co-Authored-By: Claude Sonnet 4.6 (1M context) <[email protected]>
When V2 is disabled: search input on top, source filter below (same as
tools page). When V2 is enabled: keep original V1/V2 toggle → filter → search order.
Also align filter button sizing/style to match tools page.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <[email protected]>
…t white screen fix

- web-ui: add full zh/en i18n via navigator.language detection
- web-ui: fix mobile header (remove title text, keep flex spacer for alignment)
- web-ui: auto-create conversation on send when none selected
- WebAccessService: persist lastStatus so QR code survives tab switches
- WebAccessConfig: restore QR/URL on re-mount via getStatus IPC
- WebAccessConfig: apply i18n to all hardcoded Chinese strings
- index.ts: hide all windows before app.exit(0) on relaunch to prevent white screen flash

Co-Authored-By: Claude Sonnet 4.6 (1M context) <[email protected]>
…de discovery

Skills configured in PromptX settings were stored in {userData}/skills/ but
never made available to the Claude Code agent. Claude Code natively loads
skills from ~/.claude/skills/, so we sync enabled skills there on startup
and whenever the enabled list changes.

A .promptx-manifest.json tracks which skills are PromptX-managed to avoid
accidentally removing skills the user placed there manually.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <[email protected]>
…aded

settingSources was ["local"] only, which skipped the user settings directory
entirely. Skills live in ~/.claude/skills/ which requires the 'user' source.
Adding it makes Claude Code discover skills configured in PromptX settings.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <[email protected]>
Replace syncSkillsToClaudeDir (copy to ~/.claude/skills/) with a
junction/symlink from workdir's .claude/skills/ → {userData}/skills/.

- Windows: junction (no admin required)
- Unix/macOS: regular symlink
- Skills source dir is auto-created if missing
- Removes file duplication and manifest tracking complexity

Co-Authored-By: Claude Sonnet 4.6 (1M context) <[email protected]>
…port

- buildOptions.ts: settingSources ["local"] → ["project"] so Claude Code
  reads {workdir}/.claude/settings.json and scans .claude/skills/
- AgentXService.ts: rename settings.local.json → settings.json to match
  the project settings source

Co-Authored-By: Claude Sonnet 4.6 (1M context) <[email protected]>
Co-Authored-By: Claude Sonnet 4.6 (1M context) <[email protected]>
- IPC getRoleAvatar: returns base64 data URL from profile.{png,jpg,jpeg,webp}
- IPC uploadRoleAvatar: copies image to role dir (user roles only)
- RoleAvatar.tsx: shared component, lazy-loads avatar, falls back to gradient
- RoleListPanel: show avatar image in role list items
- RoleDetailPanel: hover-upload overlay on header avatar; upload in edit dialog

Co-Authored-By: Claude Sonnet 4.6 (1M context) <[email protected]>
Use require.resolve('@promptx/resource') to get dist/index.js path,
then navigate to dist/resources/role/{id}/ for profile images.
The previous approach used package.json which is not in exports field.
Works in both dev and production (Electron patches fs for asar).

Co-Authored-By: Claude Sonnet 4.6 (1M context) <[email protected]>
- Add profile.png for 8 system roles (dayu, jiangziya, luban, nuwa,
  sean, shaqing, teacheryo, writer)
- i18n: replace Anthropic-specific labels with generic AgentX labels
- i18n: update default model placeholder to claude-opus-4-5-20251101

Co-Authored-By: Claude Sonnet 4.6 (1M context) <[email protected]>
Pass enableV2=false to PromptXMCPServer when --no-v2 is specified.
Usage: npx @promptx/mcp-server --no-v2

Co-Authored-By: Claude Sonnet 4.6 (1M context) <[email protected]>
…p features

- Add PromptX Desktop next-gen features section: AgentX, ResourceX,
  Agent Plaza, memory editor, remote access, sandbox debugging
- Replace Nuwa/Luban section with full 8-role table with avatars
- Add individual role descriptions for all built-in roles
- Add V2 RoleX section: V1 vs V2 comparison, role creation guide,
  --no-v2 flag usage

Co-Authored-By: Claude Sonnet 4.6 (1M context) <[email protected]>
- Refactor ResourceImporter into useImport hook + ImportForm + dialog shell
- Lock resource type per page (roles/tools), show V1/V2 toggle for roles only when enableV2 is on
- Fix import: write metadata.json for custom name/description; V2 roles write to ~/.rolex path
- Fix delete: V2 roles delete from ~/.rolex/roles/<id>/ and sync rolex.json registry
- Fix cache: invalidate Repository memory cache after delete/import so list refreshes immediately
- Add delete button for non-system roles with V1/V2 path routing
- Force page remount on navigation so role/tool lists reload after create/import
- Add coming soon overlay to Agent Shop page
- Add i18n keys for role delete messages

Co-Authored-By: Claude Sonnet 4.6 (1M context) <[email protected]>
@dfwgj dfwgj merged commit fb16413 into main Feb 26, 2026
@dfwgj dfwgj deleted the 2.0.0 branch February 26, 2026 05:56
@dfwgj dfwgj restored the 2.0.0 branch February 26, 2026 06:03
@dfwgj dfwgj deleted the 2.0.0 branch February 26, 2026 06:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant