Archived
UI③:LLM 工具改为大模型驱动的系统内通用工具 —— 不是模型实例
五件真实存在的:案例决断(loop-turn)/ 步内生成(flow-step)/ 叙述性小结 / 蒸馏归纳 / 连通探针,各标算谁的账。模型实例退成尾注:模型是发动机,这些是装在上面的件。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KeDBx2PHLavbURXB8LJJ7m
This commit is contained in:
@@ -469,6 +469,11 @@
|
|||||||
*/
|
*/
|
||||||
.g-page > * { flex-shrink: 0; }
|
.g-page > * { flex-shrink: 0; }
|
||||||
|
|
||||||
|
/* 正文里的行内跳转:看着是链接、按钮语义(可聚焦、可键盘触发) */
|
||||||
|
.g-link { border: 0; padding: 0; background: none; font: inherit; color: var(--brand); cursor: pointer; text-decoration: underline; text-underline-offset: 2px; }
|
||||||
|
.g-link:hover { color: var(--brand-deep); }
|
||||||
|
.g-link:focus-visible { outline: 2px solid var(--brand); outline-offset: 2px; border-radius: 3px; }
|
||||||
|
|
||||||
/* 蓝图因果链:四库节点卡以真箭头相连 —— 箭头编码真实依赖(流程包→活动→工具→数据),节点即入口 */
|
/* 蓝图因果链:四库节点卡以真箭头相连 —— 箭头编码真实依赖(流程包→活动→工具→数据),节点即入口 */
|
||||||
.g-chain { display: flex; align-items: stretch; gap: 0; margin-bottom: 14px; }
|
.g-chain { display: flex; align-items: stretch; gap: 0; margin-bottom: 14px; }
|
||||||
.g-chain-node { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 8px; padding: 14px 16px; background: var(--card); border: 1px solid var(--cline); border-radius: 13px; box-shadow: var(--cshadow); text-align: left; font: inherit; color: var(--ink); cursor: pointer; transition: border-color var(--t-fast), transform var(--t-fast), box-shadow var(--t-fast); }
|
.g-chain-node { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 8px; padding: 14px 16px; background: var(--card); border: 1px solid var(--cline); border-radius: 13px; box-shadow: var(--cshadow); text-align: left; font: inherit; color: var(--ink); cursor: pointer; transition: border-color var(--t-fast), transform var(--t-fast), box-shadow var(--t-fast); }
|
||||||
|
|||||||
@@ -2,12 +2,12 @@
|
|||||||
* feature `gov-tool` —— 工具箱:**系统能对世界做什么**,一屏四段。
|
* feature `gov-tool` —— 工具箱:**系统能对世界做什么**,一屏四段。
|
||||||
*
|
*
|
||||||
* 功能工具 · 已注册的调用契约(读类自由调,写类登记意向)
|
* 功能工具 · 已注册的调用契约(读类自由调,写类登记意向)
|
||||||
* LLM 工具 · 模型实例(活动只见逻辑名,不触厂商与密钥)
|
* LLM 工具 · 大模型驱动的系统内通用工具(**不是模型**;模型在系统区绑)
|
||||||
* 人类工具 · 工单两模式 + 对话卡三族(调人也是调工具,只是被调的是人)
|
* 人类工具 · 工单两模式 + 对话卡三族(调人也是调工具,只是被调的是人)
|
||||||
* 接入 · 导入自定义工具(与第一方同门两审)/ 连接 MCP
|
* 接入 · 导入自定义工具(与第一方同门两审)/ 连接 MCP
|
||||||
*
|
*
|
||||||
* 三类工具并列不是编排:它是「一件事能交给谁办」的全集 ——
|
* 三类工具并列不是编排:它是「一件事能交给谁办」的全集 ——
|
||||||
* 交给系统(功能工具)、交给模型(LLM)、交给人(人类工具)。少列一类,活动就以为自己没得选。
|
* 交给系统(功能工具)、交给模型(LLM 工具)、交给人(人类工具)。少列一类,活动就以为自己没得选。
|
||||||
*
|
*
|
||||||
* 自 `~/coding/JCAI_PRD/governance/_components/Governance.tsx` 平移:
|
* 自 `~/coding/JCAI_PRD/governance/_components/Governance.tsx` 平移:
|
||||||
* 类名(`g-*` + 色调 `t-*`)与文案沿用;设计台以**卡片**为基调(运营台才以列表为主)。
|
* 类名(`g-*` + 色调 `t-*`)与文案沿用;设计台以**卡片**为基调(运营台才以列表为主)。
|
||||||
@@ -74,6 +74,51 @@ const HUMAN_TOOLS = [
|
|||||||
},
|
},
|
||||||
] as const;
|
] as const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* LLM 工具目录 —— 系统内**由大模型驱动**的通用工具(不是模型本身)。
|
||||||
|
*
|
||||||
|
* 模型是发动机,这些是装在发动机上的件:每一件都有明确的入、出与算账口径。
|
||||||
|
* 它们不在工具目录里注册 —— 与人类工具一样,是基座给的能力,不是谁装上来的。
|
||||||
|
* 跑在哪个模型上由系统区的四元绑定决定(活动只见逻辑名,不触厂商与密钥)。
|
||||||
|
*/
|
||||||
|
const LLM_TOOLS = [
|
||||||
|
{
|
||||||
|
name: '案例决断',
|
||||||
|
mode: 'loop-turn',
|
||||||
|
ico: 'rotate-ccw',
|
||||||
|
desc: '案例活动每一拍:读「当下可为 ∩ 目标所需」,从 调工具 / 调人 / 立监听 里选一个行动',
|
||||||
|
cost: '活动预算',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '步内生成',
|
||||||
|
mode: 'flow-step',
|
||||||
|
ico: 'list-checks',
|
||||||
|
desc: '标准活动的 llm 步:模板 + 出参 schema → 结构化产出;出参必过 schema 校验,不合即不算数',
|
||||||
|
cost: '活动预算',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '叙述性小结',
|
||||||
|
mode: 'system-use',
|
||||||
|
ico: 'file-text',
|
||||||
|
desc: '任务日志 → 200 字阶段小结,只陈述日志里有的事实、不推测',
|
||||||
|
cost: '系统账',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '蒸馏归纳',
|
||||||
|
mode: 'system-use',
|
||||||
|
ico: 'layers',
|
||||||
|
desc: '终态封卷时从任务记忆归纳活动记忆条目:四层归位 + 证据链必挂',
|
||||||
|
cost: '系统账',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '连通探针',
|
||||||
|
mode: 'probe',
|
||||||
|
ico: 'plug',
|
||||||
|
desc: '试一次端点与鉴权,回延迟 —— 绑完模型先探一下,别等活动跑起来才发现调不通',
|
||||||
|
cost: '系统账',
|
||||||
|
},
|
||||||
|
] as const;
|
||||||
|
|
||||||
export function ToolsHome({ nav }: HomeProps) {
|
export function ToolsHome({ nav }: HomeProps) {
|
||||||
const tools = useGovTools();
|
const tools = useGovTools();
|
||||||
const llm = useGovLlm();
|
const llm = useGovLlm();
|
||||||
@@ -131,39 +176,40 @@ export function ToolsHome({ nav }: HomeProps) {
|
|||||||
)}
|
)}
|
||||||
</Sec>
|
</Sec>
|
||||||
|
|
||||||
<Sec ico="cpu" title="LLM 工具" extra="调模型经模型网关一缝 · 活动只见逻辑名,四元绑定在系统区">
|
<Sec ico="cpu" title="LLM 工具" extra="大模型驱动的系统内通用工具 · 调模型经模型网关一缝">
|
||||||
<div className="g-shelf">
|
<div className="g-shelf">
|
||||||
{(llm.data?.instances ?? []).map((m) => (
|
{LLM_TOOLS.map((t) => (
|
||||||
<button
|
<div key={t.name} className="g-tile t-auto">
|
||||||
key={m.id}
|
|
||||||
className={'g-tile t-' + (m.enabled ? 'auto' : 'mute')}
|
|
||||||
onClick={() => nav.jump('system', 'llm', { k: 'llm', id: m.id })}
|
|
||||||
>
|
|
||||||
<span className="g-tile-h">
|
<span className="g-tile-h">
|
||||||
<span className="g-tile-i">
|
<span className="g-tile-i">
|
||||||
<Ico name="cpu" s={16} />
|
<Ico name={t.ico} s={16} />
|
||||||
</span>
|
</span>
|
||||||
<span className="g-tile-t">
|
<span className="g-tile-t">
|
||||||
<b>{m.name}</b>
|
<b>{t.name}</b>
|
||||||
<em>{m.provider}</em>
|
<em>{t.mode}</em>
|
||||||
</span>
|
</span>
|
||||||
<St tone={m.apiKeyBound ? 'ok' : 'danger'} ico={m.apiKeyBound ? 'circle-check' : 'alert-circle'}>
|
<St tone="ok" ico="circle-check">
|
||||||
{m.apiKeyBound ? '已绑密钥' : '未绑密钥'}
|
内置
|
||||||
</St>
|
</St>
|
||||||
</span>
|
</span>
|
||||||
<span className="g-tile-m">
|
<span className="g-tile-m">
|
||||||
<span className="g-tile-d">型号 {m.model}</span>
|
<span className="g-tile-d">{t.desc}</span>
|
||||||
</span>
|
</span>
|
||||||
<span className="g-tile-f">
|
<span className="g-tile-f">
|
||||||
{m.systemUse && <Chip tone="brand">系统用途</Chip>}
|
<Chip tone={t.cost === '系统账' ? 'mute' : 'auto'} ico="coins">
|
||||||
<span className="r">{m.enabled ? '启用中' : '已停用'}</span>
|
计量入{t.cost}
|
||||||
|
</Chip>
|
||||||
</span>
|
</span>
|
||||||
</button>
|
</div>
|
||||||
))}
|
))}
|
||||||
{(llm.data?.instances ?? []).length === 0 && (
|
|
||||||
<Clear>还没有绑定模型 —— 去系统区加一个实例,活动才有模型可用。</Clear>
|
|
||||||
)}
|
|
||||||
</div>
|
</div>
|
||||||
|
<Note>
|
||||||
|
这些是<b>工具</b>,不是模型 —— 模型是它们跑在上面的发动机。
|
||||||
|
当前绑了 {(llm.data?.instances ?? []).length} 个模型实例(
|
||||||
|
{(llm.data?.instances ?? []).map((m) => m.name).join(' · ') || '尚未绑定'});
|
||||||
|
换厂商、换型号只改<button className="g-link" onClick={() => nav.jump('system', 'llm')}>系统区的四元绑定</button>,
|
||||||
|
这些工具与活动一行都不动。
|
||||||
|
</Note>
|
||||||
</Sec>
|
</Sec>
|
||||||
|
|
||||||
<Sec ico="hand" title="人类工具" extra="调人也是调工具 · 打扰上限在契约授权边界,由 Harness 强制">
|
<Sec ico="hand" title="人类工具" extra="调人也是调工具 · 打扰上限在契约授权边界,由 Harness 强制">
|
||||||
|
|||||||
Reference in New Issue
Block a user