Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
/**
* Scout's first replies stay short (F60, staging walk 2026-11-02).
*
* Asked what it could do, Scout named five things in one sentence, and the reply
* folded behind "Show more" on a phone. The prompt told it to answer the literal
* question, and the literal answer to "what can you do?" is the whole catalogue.
* Measured offline on the same model before this rule (9 first posts, 3 samples
* each): median 265 characters, 6 of 27 replies past the desktop fold, 19 of 27
* past it at phone width. With it: 181, 0 of 27, 4 of 27.
*/
const { scoutApp } = require('../../../config/native-agents/scout');

describe('Scout reply length', () => {
const prompt = scoutApp.systemPrompt;

it('budgets every reply and names the case that ran long', () => {
expect(prompt).toContain('two or three short sentences, about 200 characters');
expect(prompt).toContain('Never volunteer a list of what you or Commonly can do');
Comment thread
coderabbitai[bot] marked this conversation as resolved.
Resolved
expect(prompt).toContain('name the one thing most useful to them now');
});

it('exempts what the person asked for and every caveat the rules require', () => {
expect(prompt).toContain('a caveat these rules tell you to state, may run longer');
expect(prompt).toContain('Asked which tools, models or paths work, name them');
});

it('repeats the budget in the hard rules, the last thing the model reads, with its exemption', () => {
const hardRules = prompt.slice(prompt.lastIndexOf('ROLE-SPECIFIC HARD RULES:'));
expect(hardRules).toContain('A first impression is also short');
expect(hardRules).toContain('unless a command or a caveat these rules require needs more');
expect(hardRules).toContain('never a tour of what you can do');
});
});
17 changes: 14 additions & 3 deletions backend/config/native-agents/scout.ts
Original file line number Diff line number Diff line change
Expand Up @@ -106,8 +106,8 @@ export const scoutApp = {
+ 'the person\'s own message: '
+ `"${startLabel('ask-scout')}", "${startLabel('connect-agent')}" and "${startLabel('start-pod')}". `
+ `For "${startLabel('ask-scout')}", answer in two or three short sentences: `
+ 'name what you can do for them here, then offer one thing you can do right '
+ 'now in this pod, such as putting their first task on the board. '
+ 'name the one thing most useful to them here, not a list, then offer to do '
+ 'it right now in this pod, such as putting their first task on the board. '
+ `For "${startLabel('connect-agent')}", find out which tool they run `
+ '(Claude Code or Codex) and their operating system, one question per turn, '
+ 'then propose the connect card when the card rule below allows it; in that first reply, also say in one short '
Expand Down Expand Up @@ -316,6 +316,14 @@ export const scoutApp = {
+ 'HOW YOU ANSWER:\n'
+ '- Answer the literal question first, in your first sentence, with the '
+ 'concrete step or command. Then stop.\n'
// F60 (staging walk 2026-11-02): asked what it can do, Scout named five
// things in one sentence, and the reply folded behind "Show more" on a phone.
+ '- Keep a reply to two or three short sentences, about 200 characters, and '
+ 'make the last one the next step. Only a command or step they asked for, or '
+ 'a caveat these rules tell you to state, may run longer. Never volunteer a '
+ 'list of what you or Commonly can do: asked what you can do, what this is, '
+ 'or just greeted, name the one thing most useful to them now and offer to '
+ 'do it. Asked which tools, models or paths work, name them.\n'
+ '- Ask at most one question per turn, and only when the answer truly '
+ 'depends on it (their OS, or which tool they run).\n'
+ '- Before ANY terminal command: if you do not know their operating '
Expand Down Expand Up @@ -365,7 +373,10 @@ export const scoutApp = {
'Never claim the user\'s own agent is connected or working, or that it '
+ 'is not, unless commonly_agent_status said so in this turn. And '
+ 'remember you are the product\'s first impression: an invented product '
+ 'fact from you is worse than one from anyone else.',
+ 'fact from you is worse than one from anyone else. A first impression is '
+ 'also short: two or three short sentences, the last one the next step, '
+ 'unless a command or a caveat these rules require needs more, and never '
+ 'a tour of what you can do.',
),
model: 'deepseek-v4-flash',
triggers: ['mention', 'chat.message'],
Expand Down
Loading