boardx / boardx/workspacex

feat(admin): Skill 治理后台缺「文件树+代码编辑」视图 —— 编辑入口只有字段表单,两栏编辑器组件存在但未归并且接的是 fixture 假数据

Open
#848 1 comment 0 reactions 0 assignees View on GitHub
backlog
Dominant language
TypeScript
Stars
0
Forks
0
Avg merge
1h 7m
Merged PRs (30d)
969

Description

## 问题

`/admin/skill`(`apps/web/components/admin/capability-catalog-screen.tsx`)的
Skill 目录页点「编辑」,打开的是 `CapabilityEditForm`
(`apps/web/components/admin/capability-mutate.tsx:212`),**只有「名称」「可见
范围」「归属团队」三个字段**——没有文件浏览器、没有代码编辑/预览。用户从治理
后台点编辑,期望能看到 skill 的真实源码(左文件树、右代码),实际看不到。

## 现状调查(已实测代码,非推测)

两栏「左文件树 + 右代码编辑/预览」组件其实**已经存在**:
`apps/web/components/asset-governance/ag-screens.tsx:535` 的 `Editor`(导出为
`AgSkillEditor`/`AgAgentEditor`),但:

1. **挂在孤立的原型路由下**:`/asset-governance`(对应治理后台左侧导航「资产」,
`apps/web/lib/navigation.ts:137` 标 `isPrototype: true`,UI 上渲染
「原型 · 待归并」徽章),从未接入 `/admin/skill` 的编辑入口。
2. **后端接的是固定 fixture,不是真实 skill 内容**:调用链走
`GetAssetDirectory`/`ReadAssetFile`
(`apps/api/src/interface/controllers/asset-directory.controller.ts`),
最终落到
`apps/api/src/infrastructure/asset/fixture-asset-file-repository.ts`——
该文件头部注释原话:"there is, as of F141, no persisted store anywhere
in this kernel for a skill/agent's actual file bytes"。不管传哪个
`assetId`,一律返回同一份写死的 `SK_TREE`/`AG_TREE` 示例目录,**不是**
目录页里那 5 条真实 skill 记录(abc/beautiful-article/gpt-image-2/
web-design-engineer/web-video-presentation)各自的内容。
3. **后端还有第三条腿,同样没接前端**:
`apps/api/src/application/skill/edit-skill-version-content.ts` +
`POST /admin/skills/:skillId/versions`
(`apps/api/src/interface/controllers/skill-version-edit.controller.ts`)
实现了"编辑已导入 skill 的 `SKILL.md` 内容→落成新版本",但范围明确限定
**单文件、不做目录浏览**;全仓 `apps/web` grep `editSkillVersionContent`/
`skill-version-edit` **零命中**——没有任何前端组件调用这个接口。

## 根因链路 / 关联 issue

- #595(P0,"Agent/Skill 后台管理面太简陋")**已 CLOSED**,但关闭评论明确写
"未交付:目录浏览、编辑保存、前端 + e2e"——验收里"chat 能调用导入的 skill"
那条因 A/B 双模型不收敛而结构性受阻,范围收窄后关闭,**前端这块从没真正
交付过**。
- #598(OPEN):skill 存在两套并存的数据模型(`skill_contracts` vs
`skill_version_files`)没收敛——这是根因之一,不先解决它,就算补了编辑器,
编辑结果也可能对不上 `/chat` 实际执行读取的那张表。
- #784(OPEN):同类"后端有、前端零入口"的另一处缺口(skill URL 导入后台
UI),印证治理后台前端长期滞后于后端不是孤例。

## 建议的收敛方向(供排期参考,不是最终方案)

需要跨两个模块协同,先后端后前端:

1. **`mod-agent-skill-runtime`(apps/api,skill 域)**:先解决 #598 的模型
A/B 收敛;把「目录浏览返回真实内容」和「多文件编辑保存」补成正式能力
(现在只有单文件 `SKILL.md` 编辑 + 假数据目录浏览两个半成品)。
2. **`mod-devportal`(apps/web,治理后台)**:把 `AgSkillEditor` 的两栏 UI
从 `/asset-governance` 原型路由归并到 `/admin/skill` 的编辑入口,改接
收敛后的真实数据源。

## 验收标准草案(需要 requirement-author 精修为可执行 feature)

- 在 `/admin/skill` 点某个 skill 的「编辑」,能看到左文件树、右代码区,展示
的是**这个 skill 真实的文件内容**(不是 fixture)。
- 编辑保存后,`/chat` 里调用该 skill 时执行的确实是编辑后的内容(验证 #598
的模型收敛是否生效)。
- 目录浏览至少支持 skill 的多文件结构(不局限于单个 `SKILL.md`)。

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with #598 and the model paths in apps/api, then inspect apps/api/src/application/skill/edit-skill-version-content.ts, the asset-directory controller, and apps/web/components/asset-governance/ag-screens.tsx. Trace the /admin/skill entry in capability-catalog-screen.tsx and capability-mutate.tsx. Done means the admin editor shows each skill’s real multi-file content, saves it, and /chat uses the edited content.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
full-stack
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
28/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.