news 2026/9/29 2:46:22

Gentle-AI Neutral 残余 Persona 解析:基于输出风格通道分离语气与工作流指令

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Gentle-AI Neutral 残余 Persona 解析:基于输出风格通道分离语气与工作流指令

【免费下载链接】gentle-ai

Gentle-AI configures the AI coding agents you already use: Claude Code, Cursor, OpenCode, Codex, Pi, and more. Choose persistent memory, Organic-Driven Development, curated skills, MCP servers, personas, and optional bounded review. Open source, no agent lock-in.

项目地址:https://gitcode.com/gh_mirrors/ge/gentle-ai
点击查看免费下载

导读

persona-neutral-residual.md是 Gentle-AI 为 Claude Code 等支持输出风格(Output Style)通道的 Agent 准备的Neutral(中立)残余 Persona:由于语气、语言与教学哲学已经由每个会话都会加载的output-style-neutral.md提供,这份系统提示文件刻意省略了语气类内容,只保留提交规范、响应长度契约、验证纪律、技能按需加载等工具层与工作流层指令,避免同一份系统提示中重复出现互相冲突的语气规则。阅读本文后,你将理解 Gentle-AI 为什么把 Persona 拆分为"残余指令 + 输出风格"两层、残余文件中每一条规则的实际约束力,以及它们如何被 persona 注入组件 在安装与同步时精确写入各 Agent 的系统提示文件。

一、什么是"残余 Persona":设计动机与适用场景

在 Gentle-AI 的 Persona 系统中,一个完整的对话人设通常包含两块内容:

  • 语气/语言/教学哲学:如"用大写强调重点""先说问题再说方案""直接且富有热情"等,属于如何说话;
  • 工具与工作流指令:如提交信息规范、响应长度上限、提问纪律、验证纪律、技能按需加载等,属于做什么与如何工作。

对于 Claude Code 这类实现了输出风格能力的 Agent,Gentle-AI 会把语气类内容单独装入output-style-*.md文件,并通过设置项outputStyle使其每个会话都自动加载(详见 output-style-neutral.md 与 output-style-gentleman.md)。此时,系统提示中的 Persona 区块就不再需要重复语气内容——这份只承载工具与工作流指令的文件,就是"残余 Persona"(residual persona)。

源码中这一决策被显式命名为residualChannel(inject.go):

func residualChannel(adapter agents.Adapter) bool { return adapter.SupportsOutputStyles() || adapter.Agent() == model.AgentKimi }
  • 当 Adapter 支持输出风格(SupportsOutputStyles())时,语气由独立风格通道负责,Persona 区块可以安全地降级为残余版本;
  • Kimi 是显式例外:其KIMI.md会无条件同时 includepersona.md与output-style.md两个 Jinja 模块,因此 Kimi 也使用残余版 Persona(kimi/persona-neutral-residual.md)。

二、Rules:残余 Persona 的核心行为契约

残余 Persona 的第一部分Rules定义了 Agent 在所有会话中必须遵守的通用工作纪律,可归纳为四个维度。

1. 提交与署名规范

Never add "Co-Authored-By" or AI attribution to commits. Use conventional commits only.

  • 禁止在提交信息中写入Co-Authored-By或其他 AI 署名;
  • 提交信息必须遵循 Conventional Commits(如feat:、fix:、refactor:)约定。

这与仓库自身的治理实践一致——本仓库文档(如 CONTRIBUTING.md)同样强调规范的提交格式,避免 AI 署名污染提交历史。

2. 响应长度契约(Response-length contract)

Default to short answers. Start with the minimum useful response, expand only when the user asks or the task genuinely requires it.

长度契约包含四条相互关联的规则:

规则要求
默认短回答先给出最小有用的回复,用户追问或任务确需时才扩展
单问题原则一次最多问一个问题,问完后立即 STOP 等待
拒绝选项轰炸除非存在带实质权衡的真实分叉,否则不罗列选项菜单、穷举列表或多方案
长度不确定时选择更短的回复

这四条规则在残余文件中重复出现,是因为它们属于跨语气的行为硬约束——无论当前激活的是 Gentleman 还是 Neutral 输出风格,回复长度纪律都不应改变。对应的语气版表述可对比 output-style-neutral.md,其中同样声明了"Default to short answers""Ask at most one question at a time, then STOP"。

3. 验证纪律(Verification Discipline)

Never agree with user claims without verification. First say you'll verify in the user's current language, then check code/docs. If user is wrong, explain WHY with evidence. If you were wrong, acknowledge with proof.

这是残余 Persona 中最具分量的规则,其完整闭环是:

  1. 不未经验证就同意用户的任何技术主张;
  2. 先用用户当前语言声明"我会验证",再查阅代码/文档/测试等证据;
  3. 若用户有误,用证据解释为什么错误,并给出正确路径;
  4. 若自己错了,承认错误并指向证据;
  5. 提出替代方案时附带权衡(Always propose alternatives with tradeoffs when relevant);
  6. 陈述技术结论前先验证,不确定就先调查。

该纪律在输出风格文件中也有镜像表述(output-style-neutral.md),可见"验证优先"是 Gentle-AI 各 Persona 共同信奉的底层原则。

三、Expertise:领域专长声明

残余 Persona 的 Expertise 区块声明了 Agent 应具备的领域能力基线:

Clean/Hexagonal/Screaming Architecture, testing, atomic design, container-presentational pattern, LazyVim, Tmux, Zellij.

包括:整洁架构/六边形架构/Screaming Architecture、测试实践、原子设计(atomic design)、容器-展示组件模式(container-presentational pattern),以及 LazyVim、Tmux、Zellij 等开发者工具链。这份专长清单与 generic/persona-neutral.md 完全一致,说明它不随输出风格变化,属于中性人设的固定背景知识声明。

四、Contextual Skill Loading:强制的按需技能加载

残余 Persona 中唯一的全大写标记段落是技能加载纪律,原文明确标注其强制性:

The<available_skills>block in your system prompt is authoritative — it lists every skill installed for this session.Self-check BEFORE every response: does this request match any skill in<available_skills>? If yes, read the matching SKILL.md BEFORE generating your reply. This is a blocking requirement, not optional context. Skipping it is a discipline failure.

关键语义可拆解为三点:

  1. 权威来源:<available_skills>区块是唯一权威的技能清单,它列出本会话已安装的全部技能;
  2. 前置自检:每次回复前必须检查请求是否命中某个技能——命中则先读取对应 SKILL.md 再作答,这是阻塞性要求而非可选上下文;
  3. 多技能并行匹配:多个技能可同时适用,需同时依据文件上下文(扩展名、路径)和任务上下文(用户实际在问什么)进行匹配;
  4. 违反即纪律失败:跳过该步骤被明确定义为"discipline failure"(纪律失败)。

这一设计对应仓库的 skills 组件 与 skillregistry,以及 assets/skills 目录下 30 个内置技能文件。运行时,<available_skills>由安装组件注入到 Agent 的会话上下文中,Persona 则负责在行为层面强制"先读技能、再作答"。

五、Persona Voice:语气归属声明

文件最后一部分明确划清了职责边界:

Your conversational tone, language rules, and teaching philosophy are defined by the active output style (Gentleman/Neutral), which loads every session. This section carries only tooling and workflow directives — it does not restate tone.

  • 会话的语气、语言规则、教学哲学由当前激活的输出风格定义,且每个会话都会加载;
  • 本文件只承载工具与工作流指令,刻意不重复语气。

这正是"残余"二字的精髓:Persona 管"工具与工作流",Output Style 管"语气与教学",两者通过outputStyle设置项各自独立加载,从而避免在同一份系统提示中出现互相重复甚至互相冲突的语气声明。

六、源码级实现:注入链路如何选择残余 Persona

残余文件不是孤立的静态文本,而是由 persona 注入组件 在安装/同步时按策略选配的动态资产。

1. 资源选择链路

neutralPersonaContent(inject.go)按 Agent 与通道能力分派资源:

func neutralPersonaContent(agent model.AgentID, residualContentAvailable bool) string { if agent == model.AgentHermes { return assets.MustRead("hermes/persona-neutral.md") } if residualContentAvailable { switch agent { case model.AgentClaudeCode: return assets.MustRead("claude/persona-neutral-residual.md") case model.AgentKimi: return assets.MustRead("kimi/persona-neutral-residual.md") } } return assets.MustRead("generic/persona-neutral.md") }
  • Claude Code:因为支持输出风格通道(residualChannel为真),注入残余版(即本文讲解的文件);
  • Kimi:因KIMI.md无条件双 include 而显式豁免,同样使用残余版;
  • Hermes 与其他 Agent:分别使用 Hermes 专属版或 generic/persona-neutral.md 全量版(含 Personality、Persona Scope、Language、Tone、Philosophy、Behavior 等完整语气段落)。

由此可推断:残余版是对"具备独立语气通道"的 Agent 的优化形态,而全量版是其余 Agent 的兜底。

2. 输出风格的资源计划

Persona 选择同时决定输出风格文件的管理计划(resources.go):

var managedOutputStyles = []OutputStyle{ {Name: "Gentleman", File: "gentleman.md", AssetPath: "claude/output-style-gentleman.md"}, {Name: "Neutral", File: "neutral.md", AssetPath: "claude/output-style-neutral.md"}, }

选择 Neutral 时,资源计划会:写入neutral.md风格文件、把outputStyle设置项设为Neutral,并退役(移除)旧的 Gentleman 风格文件(retired: []string{managedOutputStyles[0].File}),保证切换后不会残留旧风格的加载入口。

3. 标记区块注入与幂等

注入过程使用<!-- gentle-ai:persona -->/<!-- /gentle-ai:persona -->标记区块(见 section_test.go 的测试用例):

  • 已存在的同标记区块会被替换而非重复追加;
  • 旧版无标记的遗留 Persona 文本会被自动剥离(StripLegacyPersonaBlock,见 inject.go);
  • 文件写入采用原子写入(WriteFileAtomic),天然幂等——内容未变化时不产生写操作。

这意味着gentle-ai install与gentle-ai sync可以反复执行,而不会把残余 Persona 重复堆积进系统提示文件。

七、如何启用 Neutral 残余 Persona

残余 Persona 由安装命令按 Persona 选择自动注入,无需手工拷贝文件。典型用法(来自 install.go 的参数定义):

gentle-ai install --persona neutral --agent claude

参数说明:

参数作用取值示例
--persona选择人设,决定注入哪套 Persona 与输出风格gentleman、neutral、custom
--agent指定目标 Agent,Claude Code 会触发残余版选择claude、cursor、opencode等
--scope安装范围global、workspace(环境变量GENTLE_AI_INSTALL_SCOPE)
--channel发行渠道stable、beta、nightly(环境变量GENTLE_AI_CHANNEL)
--dry-run预览将要写入的内容—

值得注意的细节:

  • neutral与gentleman是规范 Persona ID(见 types.go);遗留别名gentleman-neutral-artifacts会被normalizePersona归一化为neutral(测试见 persona_language_contract_test.go);
  • custom表示用户保留自己的配置,注入器会直接跳过Persona 写入(inject.go);
  • 安装后,Claude Code 的系统提示中会出现由<!-- gentle-ai:persona -->包裹的残余内容,同时settings.json获得"outputStyle": "Neutral"覆盖(inject.go),两者共同构成完整的中性人设。

八、残余版与全量版的取舍对照

为便于读者理解为何不同 Agent 拿到不同形态的 Persona,将 claude/persona-neutral-residual.md 与 generic/persona-neutral.md 对比如下:

内容区块残余版(Claude Code)全量版(Generic 兜底)
Rules(提交规范、长度契约、验证纪律)✅ 完整保留✅ 完整保留
Expertise(架构与工具链专长)✅ 保留✅ 保留
Contextual Skill Loading✅ 保留(含"纪律失败"强约束)✅ 保留
Personality / Persona Scope❌ 省略(交给输出风格)✅ 完整
Language / Tone / Philosophy / Behavior❌ 省略(交给输出风格)✅ 完整
Persona Voice(职责边界声明)✅ 明确指向输出风格❌ 无此区块

结论清晰:残余版不是内容更少,而是职责更聚焦——把"语气"外包给每次会话必加载的output-style-neutral.md,系统提示里只留下不会因风格切换而失效的硬性工作纪律。这种分层设计既避免了同义指令重复占用上下文,也保证了切换输出风格时工作流规则依然稳定生效。

延伸阅读

  • output-style-neutral.md:Neutral 语气的完整定义(长度契约、验证纪律、语言规则、教学行为)
  • output-style-gentleman.md:Gentleman 语气的完整定义,供对照两种风格边界
  • inject.go:残余通道判定、资源分派、标记区块注入与 JSON 设置合并的完整实现
  • resources.go:输出风格资源计划与退役清理逻辑
  • install.go:--persona等安装参数的 CLI 定义
  • persona-language-contract_test.go:Persona ID 归一化与语言契约的测试佐证

【免费下载链接】gentle-ai

Gentle-AI configures the AI coding agents you already use: Claude Code, Cursor, OpenCode, Codex, Pi, and more. Choose persistent memory, Organic-Driven Development, curated skills, MCP servers, personas, and optional bounded review. Open source, no agent lock-in.

项目地址:https://gitcode.com/gh_mirrors/ge/gentle-ai
点击查看免费下载
上一篇:QFramework命令系统详解:如何用CQRS模式构建高内聚游戏架构 🚀
下一篇:Ripple列表渲染优化:Key机制与TrackedArray性能对比

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/29 2:46:04

基于SpringBoot2+Vue3的课程答疑系统设计与实战避坑指南

课程答疑系统听起来简单&#xff0c;真做起来全是坑说实话&#xff0c;凡是在 Java Web 课程设计里做过答疑系统的人&#xff0c;刚开始都把它当“小项目”看——不就一个提问、一个回答、一个用户登录嘛。真正动手之后才发现&#xff0c;光是把提问、回答、评论、通知、权限这…

作者头像 李华
网站建设 2026/9/29 2:43:50

以太网温湿度变送器双协议批量配置实战指南

1. 项目概述&#xff1a;为什么批量配置温湿度变送器成了环境监测项目的“卡脖子”环节在大型智慧园区、冷链仓储中心、洁净车间或生态农业大棚这类场景里&#xff0c;动辄部署上百台甚至上千台以太网温湿度变送器已成常态。我去年参与过一个覆盖32栋单体建筑、总计1476个监测点…

作者头像 李华
网站建设 2026/9/29 2:42:22

MCP化实践:从特征提炼到封装,用TaoToken统一Key打通JSON-RPC与stdio

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/29 2:41:55

Humanizer:一个文件搞定 AI 写作去 AI 化,33 类模式全查

Humanizer&#xff1a;一个文件搞定 AI 写作去 AI 化&#xff0c;33 类模式全查 【免费下载链接】humanizer Agent skill that removes signs of AI-generated writing from text 项目地址: https://gitcode.com/GitHub_Trending/humani/humanizer AI 初稿经常结构完整&…

作者头像 李华